]> xenbits.xensource.com Git - libvirt.git/commitdiff
admin: Add virAdmConnectLookupServer
authorMartin Kletzander <mkletzan@redhat.com>
Tue, 1 Mar 2016 16:33:37 +0000 (17:33 +0100)
committerMartin Kletzander <mkletzan@redhat.com>
Thu, 17 Mar 2016 16:06:22 +0000 (17:06 +0100)
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>
daemon/admin_server.c
daemon/admin_server.h
include/libvirt/libvirt-admin.h
src/admin/admin_protocol.x
src/admin_protocol-structs
src/libvirt-admin.c
src/libvirt_admin_private.syms
src/libvirt_admin_public.syms

index 6eabbe4ae6d50704704b5aa789d3beb96e04cb19..1d16bc9e93795f1b2225787c25fd298dd718a4b4 100644 (file)
@@ -56,3 +56,13 @@ adminConnectListServers(virNetDaemonPtr dmn,
  cleanup:
     return ret;
 }
+
+virNetServerPtr
+adminConnectLookupServer(virNetDaemonPtr dmn,
+                         const char *name,
+                         unsigned int flags)
+{
+    virCheckFlags(flags, NULL);
+
+    return virNetDaemonGetServer(dmn, name);
+}
index b77653f6c384150fea5ba2a655ec68df890b4dc2..9d0adf02c7ad1009c1dfb55be7647a101830b492 100644 (file)
 # define __LIBVIRTD_ADMIN_SERVER_H__
 
 # include "rpc/virnetdaemon.h"
+# include "rpc/virnetserver.h"
 
 int adminConnectListServers(virNetDaemonPtr dmn,
                             virNetServerPtr **servers,
                             unsigned int flags);
 
+virNetServerPtr adminConnectLookupServer(virNetDaemonPtr dmn,
+                                         const char *name,
+                                         unsigned int flags);
+
 #endif /* __LIBVIRTD_ADMIN_SERVER_H__ */
index e9ec3941023a6a21e3df08bb4fbb0c8f2517175a..25bcbf47ddeba2a6288d8f8595b7d01d638f214c 100644 (file)
@@ -106,6 +106,10 @@ int virAdmConnectUnregisterCloseCallback(virAdmConnectPtr conn,
 
 const char *virAdmServerGetName(virAdmServerPtr srv);
 
+virAdmServerPtr virAdmConnectLookupServer(virAdmConnectPtr conn,
+                                          const char *name,
+                                          unsigned int flags);
+
 # ifdef __cplusplus
 }
 # endif
index 205bfe8f7a5249c40e254a1fad02c01296780f88..6590980ce1cacf185e2067f361451b6a0f49e004 100644 (file)
@@ -65,6 +65,15 @@ struct admin_connect_list_servers_ret { /* insert@1 */
     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. */
 const ADMIN_PROGRAM = 0x06900690;
 const ADMIN_PROTOCOL_VERSION = 1;
@@ -105,5 +114,10 @@ enum admin_procedure {
     /**
       * @generate: both
       */
-    ADMIN_PROC_CONNECT_LIST_SERVERS = 4
+    ADMIN_PROC_CONNECT_LIST_SERVERS = 4,
+
+    /**
+      * @generate: both
+      */
+    ADMIN_PROC_CONNECT_LOOKUP_SERVER = 5
 };
index 8f2633ae7ce2067c2cc2dc3840ddf79c101f9efd..d8aca06171471a5420e880bea9d4bfa59708eb7e 100644 (file)
@@ -19,9 +19,17 @@ struct admin_connect_list_servers_ret {
         } servers;
         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 {
         ADMIN_PROC_CONNECT_OPEN = 1,
         ADMIN_PROC_CONNECT_CLOSE = 2,
         ADMIN_PROC_CONNECT_GET_LIB_VERSION = 3,
         ADMIN_PROC_CONNECT_LIST_SERVERS = 4,
+        ADMIN_PROC_CONNECT_LOOKUP_SERVER = 5,
 };
index 8322d0f8fe9673added97bff49df4d2fa5e01f04..54af90cc918fe4045701cd7ebad7b3ce75542ee5 100644 (file)
@@ -639,3 +639,38 @@ virAdmConnectListServers(virAdmConnectPtr conn,
     virDispatchError(NULL);
     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;
+}
index f22137bcc6aff5777d2e0707d3d0c183fb8dc545..268f1e6f2fdda7af11ded883e32c2bf80e9547d5 100644 (file)
@@ -9,6 +9,8 @@
 xdr_admin_connect_get_lib_version_ret;
 xdr_admin_connect_list_servers_args;
 xdr_admin_connect_list_servers_ret;
+xdr_admin_connect_lookup_server_args;
+xdr_admin_connect_lookup_server_ret;
 xdr_admin_connect_open_args;
 
 # datatypes.h
index 52ff2dc1b41113463134b78b50a358904bd92e7e..58d085e1f118df5f8590078496cb2ae5134e871e 100644 (file)
@@ -24,4 +24,5 @@ LIBVIRT_ADMIN_1.3.0 {
         virAdmConnectListServers;
         virAdmServerGetName;
         virAdmServerFree;
+        virAdmConnectLookupServer;
 };