From ceb5461f7bd7b4ef104534e60f7201f5bc6f87f7 Mon Sep 17 00:00:00 2001 From: Mikhail Feoktistov Date: Fri, 27 May 2016 11:16:34 -0400 Subject: [PATCH] vz: implementation of domainSetUserPassword callback --- src/vz/vz_driver.c | 20 ++++++++++++++++++++ src/vz/vz_sdk.c | 31 +++++++++++++++++++++++++++++++ src/vz/vz_sdk.h | 5 ++++- 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 6216af4c45..bb0d1b99b6 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -1264,6 +1264,25 @@ static int vzDomainDetachDevice(virDomainPtr domain, 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) { @@ -2737,6 +2756,7 @@ static virHypervisorDriver vzHypervisorDriver = { .domainIsUpdated = vzDomainIsUpdated, /* 1.2.21 */ .domainGetVcpusFlags = vzDomainGetVcpusFlags, /* 1.2.21 */ .domainGetMaxVcpus = vzDomainGetMaxVcpus, /* 1.2.21 */ + .domainSetUserPassword = vzDomainSetUserPassword, /* 1.3.6 */ .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 913fe1e9f5..0e989e6598 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -3534,6 +3534,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 1860c99104..a7d4cb11e5 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);