[libvirt] [PATCH] vz: implementation of domainSetUserPassword callback

Mikhail Feoktistov mfeoktistov at virtuozzo.com
Fri May 27 15:16:34 UTC 2016


---
 .gnulib            |  2 +-
 src/vz/vz_driver.c | 20 ++++++++++++++++++++
 src/vz/vz_sdk.c    | 31 +++++++++++++++++++++++++++++++
 src/vz/vz_sdk.h    |  5 ++++-
 4 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/.gnulib b/.gnulib
index 8d807a9..6cc32c6 160000
--- a/.gnulib
+++ b/.gnulib
@@ -1 +1 @@
-Subproject commit 8d807a99c6e8eecd2a9cf7c7b5d48ec0b2c934f8
+Subproject commit 6cc32c63e80bc1a30c521b2f07f2b54909b59892
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
index 177a57a..b204248 100644
--- a/src/vz/vz_driver.c
+++ b/src/vz/vz_driver.c
@@ -1252,6 +1252,25 @@ static int vzDomainDetachDevice(virDomainPtr dom, const char *xml)
                                      VIR_DOMAIN_AFFECT_CONFIG | VIR_DOMAIN_AFFECT_LIVE);
 }
 
+static int
+vzDomainSetUserPassword(virDomainPtr domain,
+                        const char *user,
+                        const char *password,
+                        unsigned int flags)
+{
+    virDomainObjPtr dom = NULL;
+    int ret = -1;
+
+    virCheckFlags(0, -1);
+    if (!(dom = vzDomObjFromDomain(domain)))
+        return -1;
+
+    ret = prlsdkDomainSetUserPassword(dom, user, password);
+
+    virObjectUnlock(dom);
+    return ret;
+}
+
 static unsigned long long
 vzDomainGetMaxMemory(virDomainPtr domain)
 {
@@ -2716,6 +2735,7 @@ static virHypervisorDriver vzHypervisorDriver = {
     .domainIsUpdated = vzDomainIsUpdated,     /* 1.2.21 */
     .domainGetVcpusFlags = vzDomainGetVcpusFlags, /* 1.2.21 */
     .domainGetMaxVcpus = vzDomainGetMaxVcpus, /* 1.2.21 */
+    .domainSetUserPassword = vzDomainSetUserPassword, /* 1.2.16 */
     .connectDomainEventRegisterAny = vzConnectDomainEventRegisterAny, /* 1.2.10 */
     .connectDomainEventDeregisterAny = vzConnectDomainEventDeregisterAny, /* 1.2.10 */
     .nodeGetCPUMap = vzNodeGetCPUMap, /* 1.2.8 */
diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index 7eb78ca..4e06b7f 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -3565,6 +3565,37 @@ prlsdkSetBootOrderVm(PRL_HANDLE sdkdom, virDomainDefPtr def)
     return 0;
 }
 
+int
+prlsdkDomainSetUserPassword(virDomainObjPtr dom,
+                            const char *user,
+                            const char *password)
+{
+    int ret = -1;
+    vzDomObjPtr privdom = dom->privateData;
+    PRL_HANDLE job = PRL_INVALID_HANDLE;
+
+    job = PrlVm_BeginEdit(privdom->sdkdom);
+    if (PRL_FAILED(waitJob(job)))
+        goto cleanup;
+
+    job = PrlVm_SetUserPasswd(privdom->sdkdom,
+                              user,
+                              password,
+                              0);
+
+    if (PRL_FAILED(waitJob(job)))
+        goto cleanup;
+
+    job = PrlVm_CommitEx(privdom->sdkdom, 0);
+    if (PRL_FAILED(waitJob(job)))
+        goto cleanup;
+
+    ret = 0;
+
+ cleanup:
+    return ret;
+}
+
 static int
 prlsdkDoApplyConfig(vzDriverPtr driver,
                     PRL_HANDLE sdkdom,
diff --git a/src/vz/vz_sdk.h b/src/vz/vz_sdk.h
index f570560..a3c423a 100644
--- a/src/vz/vz_sdk.h
+++ b/src/vz/vz_sdk.h
@@ -82,7 +82,10 @@ void
 prlsdkDomObjFreePrivate(void *p);
 /* memsize is in MiB */
 int prlsdkSetMemsize(virDomainObjPtr dom, unsigned int memsize);
-
+int
+prlsdkDomainSetUserPassword(virDomainObjPtr dom,
+                            const char *user,
+                            const char *password);
 virDomainSnapshotObjListPtr prlsdkLoadSnapshots(virDomainObjPtr dom);
 int prlsdkCreateSnapshot(virDomainObjPtr dom, const char *description);
 int prlsdkDeleteSnapshot(virDomainObjPtr dom, const char *uuid, bool children);
-- 
1.8.3.1




More information about the libvir-list mailing list