qapi-schema: Rename GlusterServer to SocketAddressFlat

As its documentation says, it's not specific to Gluster.  Rename it,
as I'm going to use it for something else.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
master
Markus Armbruster 2017-03-06 20:00:47 +01:00 committed by Kevin Wolf
parent 85a82e852d
commit 2b733709d7
3 changed files with 58 additions and 64 deletions

View File

@ -321,7 +321,7 @@ static int parse_volume_options(BlockdevOptionsGluster *gconf, char *path)
static int qemu_gluster_parse_uri(BlockdevOptionsGluster *gconf, static int qemu_gluster_parse_uri(BlockdevOptionsGluster *gconf,
const char *filename) const char *filename)
{ {
GlusterServer *gsconf; SocketAddressFlat *gsconf;
URI *uri; URI *uri;
QueryParams *qp = NULL; QueryParams *qp = NULL;
bool is_unix = false; bool is_unix = false;
@ -332,19 +332,19 @@ static int qemu_gluster_parse_uri(BlockdevOptionsGluster *gconf,
return -EINVAL; return -EINVAL;
} }
gconf->server = g_new0(GlusterServerList, 1); gconf->server = g_new0(SocketAddressFlatList, 1);
gconf->server->value = gsconf = g_new0(GlusterServer, 1); gconf->server->value = gsconf = g_new0(SocketAddressFlat, 1);
/* transport */ /* transport */
if (!uri->scheme || !strcmp(uri->scheme, "gluster")) { if (!uri->scheme || !strcmp(uri->scheme, "gluster")) {
gsconf->type = GLUSTER_TRANSPORT_TCP; gsconf->type = SOCKET_ADDRESS_FLAT_TYPE_TCP;
} else if (!strcmp(uri->scheme, "gluster+tcp")) { } else if (!strcmp(uri->scheme, "gluster+tcp")) {
gsconf->type = GLUSTER_TRANSPORT_TCP; gsconf->type = SOCKET_ADDRESS_FLAT_TYPE_TCP;
} else if (!strcmp(uri->scheme, "gluster+unix")) { } else if (!strcmp(uri->scheme, "gluster+unix")) {
gsconf->type = GLUSTER_TRANSPORT_UNIX; gsconf->type = SOCKET_ADDRESS_FLAT_TYPE_UNIX;
is_unix = true; is_unix = true;
} else if (!strcmp(uri->scheme, "gluster+rdma")) { } else if (!strcmp(uri->scheme, "gluster+rdma")) {
gsconf->type = GLUSTER_TRANSPORT_TCP; gsconf->type = SOCKET_ADDRESS_FLAT_TYPE_TCP;
error_report("Warning: rdma feature is not supported, falling " error_report("Warning: rdma feature is not supported, falling "
"back to tcp"); "back to tcp");
} else { } else {
@ -396,7 +396,7 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
struct glfs *glfs; struct glfs *glfs;
int ret; int ret;
int old_errno; int old_errno;
GlusterServerList *server; SocketAddressFlatList *server;
unsigned long long port; unsigned long long port;
glfs = glfs_find_preopened(gconf->volume); glfs = glfs_find_preopened(gconf->volume);
@ -412,7 +412,7 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
glfs_set_preopened(gconf->volume, glfs); glfs_set_preopened(gconf->volume, glfs);
for (server = gconf->server; server; server = server->next) { for (server = gconf->server; server; server = server->next) {
if (server->value->type == GLUSTER_TRANSPORT_UNIX) { if (server->value->type == SOCKET_ADDRESS_FLAT_TYPE_UNIX) {
ret = glfs_set_volfile_server(glfs, "unix", ret = glfs_set_volfile_server(glfs, "unix",
server->value->u.q_unix.path, 0); server->value->u.q_unix.path, 0);
} else { } else {
@ -443,7 +443,7 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
error_setg(errp, "Gluster connection for volume %s, path %s failed" error_setg(errp, "Gluster connection for volume %s, path %s failed"
" to connect", gconf->volume, gconf->path); " to connect", gconf->volume, gconf->path);
for (server = gconf->server; server; server = server->next) { for (server = gconf->server; server; server = server->next) {
if (server->value->type == GLUSTER_TRANSPORT_UNIX) { if (server->value->type == SOCKET_ADDRESS_FLAT_TYPE_UNIX) {
error_append_hint(errp, "hint: failed on socket %s ", error_append_hint(errp, "hint: failed on socket %s ",
server->value->u.q_unix.path); server->value->u.q_unix.path);
} else { } else {
@ -480,8 +480,8 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
QDict *options, Error **errp) QDict *options, Error **errp)
{ {
QemuOpts *opts; QemuOpts *opts;
GlusterServer *gsconf = NULL; SocketAddressFlat *gsconf = NULL;
GlusterServerList *curr = NULL; SocketAddressFlatList *curr = NULL;
QDict *backing_options = NULL; QDict *backing_options = NULL;
Error *local_err = NULL; Error *local_err = NULL;
char *str = NULL; char *str = NULL;
@ -535,9 +535,9 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
goto out; goto out;
} }
gsconf = g_new0(GlusterServer, 1); gsconf = g_new0(SocketAddressFlat, 1);
gsconf->type = qapi_enum_parse(GlusterTransport_lookup, ptr, gsconf->type = qapi_enum_parse(SocketAddressFlatType_lookup, ptr,
GLUSTER_TRANSPORT__MAX, -1, SOCKET_ADDRESS_FLAT_TYPE__MAX, -1,
&local_err); &local_err);
if (local_err) { if (local_err) {
error_append_hint(&local_err, error_append_hint(&local_err,
@ -548,7 +548,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
} }
qemu_opts_del(opts); qemu_opts_del(opts);
if (gsconf->type == GLUSTER_TRANSPORT_TCP) { if (gsconf->type == SOCKET_ADDRESS_FLAT_TYPE_TCP) {
/* create opts info from runtime_tcp_opts list */ /* create opts info from runtime_tcp_opts list */
opts = qemu_opts_create(&runtime_tcp_opts, NULL, 0, &error_abort); opts = qemu_opts_create(&runtime_tcp_opts, NULL, 0, &error_abort);
qemu_opts_absorb_qdict(opts, backing_options, &local_err); qemu_opts_absorb_qdict(opts, backing_options, &local_err);
@ -617,11 +617,11 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
} }
if (gconf->server == NULL) { if (gconf->server == NULL) {
gconf->server = g_new0(GlusterServerList, 1); gconf->server = g_new0(SocketAddressFlatList, 1);
gconf->server->value = gsconf; gconf->server->value = gsconf;
curr = gconf->server; curr = gconf->server;
} else { } else {
curr->next = g_new0(GlusterServerList, 1); curr->next = g_new0(SocketAddressFlatList, 1);
curr->next->value = gsconf; curr->next->value = gsconf;
curr = curr->next; curr = curr->next;
} }
@ -637,7 +637,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
out: out:
error_propagate(errp, local_err); error_propagate(errp, local_err);
qapi_free_GlusterServer(gsconf); qapi_free_SocketAddressFlat(gsconf);
qemu_opts_del(opts); qemu_opts_del(opts);
g_free(str); g_free(str);
QDECREF(backing_options); QDECREF(backing_options);

View File

@ -4100,6 +4100,44 @@
'vsock': 'VsockSocketAddress', 'vsock': 'VsockSocketAddress',
'fd': 'String' } } 'fd': 'String' } }
##
# @SocketAddressFlatType:
#
# Available SocketAddressFlat types
#
# @tcp: Internet address
#
# @unix: Unix domain socket
#
# Since: 2.9
##
{ 'enum': 'SocketAddressFlatType',
'data': [ 'unix', 'tcp' ] }
##
# @SocketAddressFlat:
#
# Captures the address of a socket
#
# @type: Transport type
#
# This is similar to SocketAddress, only distinction:
#
# 1. SocketAddressFlat is a flat union, SocketAddress is a simple union.
# A flat union is nicer than simple because it avoids nesting
# (i.e. more {}) on the wire.
#
# 2. SocketAddressFlat supports only types 'unix' and 'tcp', because
# that's what its current users need.
#
# Since: 2.9
##
{ 'union': 'SocketAddressFlat',
'base': { 'type': 'SocketAddressFlatType' },
'discriminator': 'type',
'data': { 'unix': 'UnixSocketAddress',
'tcp': 'InetSocketAddress' } }
## ##
# @getfd: # @getfd:
# #

View File

@ -2545,50 +2545,6 @@
'*rewrite-corrupted': 'bool', '*rewrite-corrupted': 'bool',
'*read-pattern': 'QuorumReadPattern' } } '*read-pattern': 'QuorumReadPattern' } }
##
# @GlusterTransport:
#
# An enumeration of Gluster transport types
#
# @tcp: TCP - Transmission Control Protocol
#
# @unix: UNIX - Unix domain socket
#
# Since: 2.7
##
{ 'enum': 'GlusterTransport',
'data': [ 'unix', 'tcp' ] }
##
# @GlusterServer:
#
# Captures the address of a socket
#
# Details for connecting to a gluster server
#
# @type: Transport type used for gluster connection
#
# This is similar to SocketAddress, only distinction:
#
# 1. GlusterServer is a flat union, SocketAddress is a simple union.
# A flat union is nicer than simple because it avoids nesting
# (i.e. more {}) on the wire.
#
# 2. GlusterServer lacks case 'fd', since gluster doesn't let you
# pass in a file descriptor.
#
# GlusterServer is actually not Gluster-specific, its a
# compatibility evolved into an alternate for SocketAddress.
#
# Since: 2.7
##
{ 'union': 'GlusterServer',
'base': { 'type': 'GlusterTransport' },
'discriminator': 'type',
'data': { 'unix': 'UnixSocketAddress',
'tcp': 'InetSocketAddress' } }
## ##
# @BlockdevOptionsGluster: # @BlockdevOptionsGluster:
# #
@ -2610,7 +2566,7 @@
{ 'struct': 'BlockdevOptionsGluster', { 'struct': 'BlockdevOptionsGluster',
'data': { 'volume': 'str', 'data': { 'volume': 'str',
'path': 'str', 'path': 'str',
'server': ['GlusterServer'], 'server': ['SocketAddressFlat'],
'*debug': 'int', '*debug': 'int',
'*logfile': 'str' } } '*logfile': 'str' } }