]> xenbits.xensource.com Git - libvirt.git/commitdiff
log: daemon: Add remote protocol handling for the log appending API
authorPeter Krempa <pkrempa@redhat.com>
Tue, 7 Jun 2016 14:15:22 +0000 (16:15 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 7 Jun 2016 16:10:29 +0000 (18:10 +0200)
Implement the RPC dispatcher and caller for the new API.

src/libvirt_private.syms
src/logging/log_daemon_dispatch.c
src/logging/log_manager.c
src/logging/log_manager.h
src/logging/log_protocol.x

index 3fd042b8f1d2c58f690edb6e76d2177355ce6c2c..f197f55d3593e4834c216d623a6a21faff7a0fe7 100644 (file)
@@ -1048,6 +1048,7 @@ virLockManagerRelease;
 
 
 # logging/log_manager.h
+virLogManagerDomainAppendMessage;
 virLogManagerDomainGetLogFilePosition;
 virLogManagerDomainOpenLogFile;
 virLogManagerDomainReadLogFile;
index b00cee2b8165cf5bbe4a485b104c6509d59fd608..ec691127ab703565c27c353b34af71500ea1c186 100644 (file)
@@ -143,3 +143,29 @@ virLogManagerProtocolDispatchDomainReadLogFile(virNetServerPtr server ATTRIBUTE_
         virNetMessageSaveError(rerr);
     return rv;
 }
+
+
+static int
+virLogManagerProtocolDispatchDomainAppendLogFile(virNetServerPtr server ATTRIBUTE_UNUSED,
+                                                 virNetServerClientPtr client ATTRIBUTE_UNUSED,
+                                                 virNetMessagePtr msg ATTRIBUTE_UNUSED,
+                                                 virNetMessageErrorPtr rerr,
+                                                 virLogManagerProtocolDomainAppendLogFileArgs *args,
+                                                 virLogManagerProtocolDomainAppendLogFileRet *ret)
+{
+    int rv;
+
+    if ((rv = virLogHandlerDomainAppendLogFile(virLogDaemonGetHandler(logDaemon),
+                                               args->driver,
+                                               (unsigned char *)args->dom.uuid,
+                                               args->dom.name,
+                                               args->path,
+                                               args->message,
+                                               args->flags)) < 0) {
+        virNetMessageSaveError(rerr);
+        return -1;
+    }
+
+    ret->ret = rv;
+    return 0;
+}
index 7c37ba17d448914faa8ba79ba2e09be8dc08624b..e84abdbef927772a81611a84fcea4dcd12c4c9d9 100644 (file)
@@ -282,3 +282,37 @@ virLogManagerDomainReadLogFile(virLogManagerPtr mgr,
  cleanup:
     return rv;
 }
+
+
+int
+virLogManagerDomainAppendMessage(virLogManagerPtr mgr,
+                                 const char *driver,
+                                 const unsigned char *domuuid,
+                                 const char *domname,
+                                 const char *path,
+                                 const char *message,
+                                 unsigned int flags)
+{
+    struct virLogManagerProtocolDomainAppendLogFileArgs args;
+    struct virLogManagerProtocolDomainAppendLogFileRet ret;
+
+    memset(&args, 0, sizeof(args));
+
+    args.driver = (char *)driver;
+    memcpy(args.dom.uuid, domuuid, VIR_UUID_BUFLEN);
+    args.dom.name = (char *)domname;
+    args.path = (char *)path;
+    args.message = (char *)message;
+    args.flags = flags;
+
+    if (virNetClientProgramCall(mgr->program,
+                                mgr->client,
+                                mgr->serial++,
+                                VIR_LOG_MANAGER_PROTOCOL_PROC_DOMAIN_APPEND_LOG_FILE,
+                                0, NULL, NULL, NULL,
+                                (xdrproc_t)xdr_virLogManagerProtocolDomainAppendLogFileArgs, &args,
+                                (xdrproc_t)xdr_virLogManagerProtocolDomainAppendLogFileRet, &ret) < 0)
+        return -1;
+
+    return ret.ret;
+}
index 7deaba77f292a8da03e22593ed3b2c0b498e4993..7f8e51838b705d864712263dd67c2c36b64759d7 100644 (file)
@@ -57,4 +57,12 @@ char *virLogManagerDomainReadLogFile(virLogManagerPtr mgr,
                                      size_t maxlen,
                                      unsigned int flags);
 
+int virLogManagerDomainAppendMessage(virLogManagerPtr mgr,
+                                     const char *driver,
+                                     const unsigned char *domuuid,
+                                     const char *domname,
+                                     const char *path,
+                                     const char *message,
+                                     unsigned int flags);
+
 #endif /* __VIR_LOG_MANAGER_H__ */
index 0363c756c8e031169ffbbe4aa6d8c9316a53c850..24340433d615652b5a471fec2229537d105d8bf7 100644 (file)
@@ -68,6 +68,18 @@ struct virLogManagerProtocolDomainReadLogFileRet {
     virLogManagerProtocolNonNullString data;
 };
 
+struct virLogManagerProtocolDomainAppendLogFileArgs {
+    virLogManagerProtocolNonNullString driver;
+    virLogManagerProtocolDomain dom;
+    virLogManagerProtocolNonNullString path;
+    virLogManagerProtocolNonNullString message;
+    unsigned int flags;
+};
+
+struct virLogManagerProtocolDomainAppendLogFileRet {
+    int ret;
+};
+
 /* Define the program number, protocol version and procedure numbers here. */
 const VIR_LOG_MANAGER_PROTOCOL_PROGRAM = 0x87539319;
 const VIR_LOG_MANAGER_PROTOCOL_PROGRAM_VERSION = 1;
@@ -115,5 +127,11 @@ enum virLogManagerProtocolProcedure {
      * @generate: none
      * @acl: none
      */
-    VIR_LOG_MANAGER_PROTOCOL_PROC_DOMAIN_READ_LOG_FILE = 3
+    VIR_LOG_MANAGER_PROTOCOL_PROC_DOMAIN_READ_LOG_FILE = 3,
+
+    /**
+     * @generate: none
+     * @acl: none
+     */
+    VIR_LOG_MANAGER_PROTOCOL_PROC_DOMAIN_APPEND_LOG_FILE = 4
 };