admin: Add virAdmConnectLookupServer

It does not have a suffix ByName because there are no other means of
looking up the server and since the name is known, this should be the
preferred one.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
Martin Kletzander 2016-03-01 17:33:37 +01:00
parent cce90a459a
commit b9a3ce95ce
8 changed files with 80 additions and 1 deletions

View File

@ -56,3 +56,13 @@ adminConnectListServers(virNetDaemonPtr dmn,
cleanup: cleanup:
return ret; return ret;
} }
virNetServerPtr
adminConnectLookupServer(virNetDaemonPtr dmn,
const char *name,
unsigned int flags)
{
virCheckFlags(flags, NULL);
return virNetDaemonGetServer(dmn, name);
}

View File

@ -25,9 +25,14 @@
# define __LIBVIRTD_ADMIN_SERVER_H__ # define __LIBVIRTD_ADMIN_SERVER_H__
# include "rpc/virnetdaemon.h" # include "rpc/virnetdaemon.h"
# include "rpc/virnetserver.h"
int adminConnectListServers(virNetDaemonPtr dmn, int adminConnectListServers(virNetDaemonPtr dmn,
virNetServerPtr **servers, virNetServerPtr **servers,
unsigned int flags); unsigned int flags);
virNetServerPtr adminConnectLookupServer(virNetDaemonPtr dmn,
const char *name,
unsigned int flags);
#endif /* __LIBVIRTD_ADMIN_SERVER_H__ */ #endif /* __LIBVIRTD_ADMIN_SERVER_H__ */

View File

@ -106,6 +106,10 @@ int virAdmConnectUnregisterCloseCallback(virAdmConnectPtr conn,
const char *virAdmServerGetName(virAdmServerPtr srv); const char *virAdmServerGetName(virAdmServerPtr srv);
virAdmServerPtr virAdmConnectLookupServer(virAdmConnectPtr conn,
const char *name,
unsigned int flags);
# ifdef __cplusplus # ifdef __cplusplus
} }
# endif # endif

View File

@ -65,6 +65,15 @@ struct admin_connect_list_servers_ret { /* insert@1 */
unsigned int ret; unsigned int ret;
}; };
struct admin_connect_lookup_server_args {
admin_nonnull_string name;
unsigned int flags;
};
struct admin_connect_lookup_server_ret {
admin_nonnull_server srv;
};
/* Define the program number, protocol version and procedure numbers here. */ /* Define the program number, protocol version and procedure numbers here. */
const ADMIN_PROGRAM = 0x06900690; const ADMIN_PROGRAM = 0x06900690;
const ADMIN_PROTOCOL_VERSION = 1; const ADMIN_PROTOCOL_VERSION = 1;
@ -105,5 +114,10 @@ enum admin_procedure {
/** /**
* @generate: both * @generate: both
*/ */
ADMIN_PROC_CONNECT_LIST_SERVERS = 4 ADMIN_PROC_CONNECT_LIST_SERVERS = 4,
/**
* @generate: both
*/
ADMIN_PROC_CONNECT_LOOKUP_SERVER = 5
}; };

View File

@ -19,9 +19,17 @@ struct admin_connect_list_servers_ret {
} servers; } servers;
u_int ret; u_int ret;
}; };
struct admin_connect_lookup_server_args {
admin_nonnull_string name;
u_int flags;
};
struct admin_connect_lookup_server_ret {
admin_nonnull_server srv;
};
enum admin_procedure { enum admin_procedure {
ADMIN_PROC_CONNECT_OPEN = 1, ADMIN_PROC_CONNECT_OPEN = 1,
ADMIN_PROC_CONNECT_CLOSE = 2, ADMIN_PROC_CONNECT_CLOSE = 2,
ADMIN_PROC_CONNECT_GET_LIB_VERSION = 3, ADMIN_PROC_CONNECT_GET_LIB_VERSION = 3,
ADMIN_PROC_CONNECT_LIST_SERVERS = 4, ADMIN_PROC_CONNECT_LIST_SERVERS = 4,
ADMIN_PROC_CONNECT_LOOKUP_SERVER = 5,
}; };

View File

@ -639,3 +639,38 @@ virAdmConnectListServers(virAdmConnectPtr conn,
virDispatchError(NULL); virDispatchError(NULL);
return -1; return -1;
} }
/**
* virAdmConnectLookupServer:
* @conn: daemon connection reference
* @name: name of the server too lookup
* @flags: extra flags; not used yet, so callers should always pass 0
*
* Try to lookup a server on the given daemon based on @name.
*
* virAdmServerFree() should be used to free the resources after the
* server object is no longer needed.
*
* Returns the requested server or NULL in case of failure. If the
* server cannot be found, then VIR_ERR_NO_SERVER error is raised.
*/
virAdmServerPtr
virAdmConnectLookupServer(virAdmConnectPtr conn,
const char *name,
unsigned int flags)
{
virAdmServerPtr ret = NULL;
VIR_DEBUG("conn=%p, name=%s, flags=%x", conn, NULLSTR(name), flags);
virResetLastError();
virCheckAdmConnectGoto(conn, cleanup);
virCheckNonNullArgGoto(name, cleanup);
virCheckFlagsGoto(0, cleanup);
ret = remoteAdminConnectLookupServer(conn, name, flags);
cleanup:
if (!ret)
virDispatchError(NULL);
return ret;
}

View File

@ -9,6 +9,8 @@
xdr_admin_connect_get_lib_version_ret; xdr_admin_connect_get_lib_version_ret;
xdr_admin_connect_list_servers_args; xdr_admin_connect_list_servers_args;
xdr_admin_connect_list_servers_ret; xdr_admin_connect_list_servers_ret;
xdr_admin_connect_lookup_server_args;
xdr_admin_connect_lookup_server_ret;
xdr_admin_connect_open_args; xdr_admin_connect_open_args;
# datatypes.h # datatypes.h

View File

@ -24,4 +24,5 @@ LIBVIRT_ADMIN_1.3.0 {
virAdmConnectListServers; virAdmConnectListServers;
virAdmServerGetName; virAdmServerGetName;
virAdmServerFree; virAdmServerFree;
virAdmConnectLookupServer;
}; };