[libvirt] [PATCH] parallels: implement containers creation
Daniel Veillard
veillard at redhat.com
Thu Sep 13 13:21:09 UTC 2012
On Wed, Sep 12, 2012 at 04:40:54PM +0400, Dmitry Guryanov wrote:
> Add separate function parallelsCreateCt, which creates container.
> Also add example xml configuration domain-parallels-ct-simple.xml.
>
> Signed-off-by: Dmitry Guryanov <dguryanov at parallels.com>
> ---
> src/parallels/parallels_driver.c | 41 +++++++++++++++++++-
> .../domain-parallels-ct-simple.xml | 27 +++++++++++++
> 2 files changed, 67 insertions(+), 1 deletions(-)
> create mode 100644 tests/domainschemadata/domain-parallels-ct-simple.xml
>
> diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c
> index 9eb2526..0dd13fe 100644
> --- a/src/parallels/parallels_driver.c
> +++ b/src/parallels/parallels_driver.c
> @@ -1663,6 +1663,36 @@ parallelsCreateVm(virConnectPtr conn, virDomainDefPtr def)
> return -1;
> }
>
> +static int
> +parallelsCreateCt(virConnectPtr conn ATTRIBUTE_UNUSED, virDomainDefPtr def)
> +{
> + char uuidstr[VIR_UUID_STRING_BUFLEN];
> +
> + virUUIDFormat(def->uuid, uuidstr);
> +
> + if (def->nfss != 1 ||
> + def->fss[0]->type != VIR_DOMAIN_FS_TYPE_TEMPLATE) {
> +
> + virReportError(VIR_ERR_INVALID_ARG, "%s",
> + _("There must be only 1 template FS for "
> + "container creation"));
> + goto error;
> + }
> +
> + if (parallelsCmdRun(PRLCTL, "create", def->name, "--vmtype", "ct",
> + "--uuid", uuidstr,
> + "--ostemplate", def->fss[0]->src, NULL) < 0)
> + goto error;
> +
> + if (parallelsCmdRun(PRLCTL, "set", def->name, "--vnc-mode", "auto", NULL) < 0)
> + goto error;
> +
> + return 0;
> +
> +error:
> + return -1;
> +}
> +
> static virDomainPtr
> parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
> {
> @@ -1703,8 +1733,17 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
>
> def = NULL;
> } else {
> - if (parallelsCreateVm(conn, def))
> + if (STREQ(def->os.type, "hvm")) {
> + if (parallelsCreateVm(conn, def))
> + goto cleanup;
> + } else if (STREQ(def->os.type, "exe")) {
> + if (parallelsCreateCt(conn, def))
> + goto cleanup;
> + } else {
> + virReportError(VIR_ERR_INVALID_ARG,
> + _("Unsupported OS type: %s"), def->os.type);
> goto cleanup;
> + }
> if (parallelsLoadDomains(privconn, def->name))
> goto cleanup;
> dom = virDomainFindByName(&privconn->domains, def->name);
> diff --git a/tests/domainschemadata/domain-parallels-ct-simple.xml b/tests/domainschemadata/domain-parallels-ct-simple.xml
> new file mode 100644
> index 0000000..a2b87ce
> --- /dev/null
> +++ b/tests/domainschemadata/domain-parallels-ct-simple.xml
> @@ -0,0 +1,27 @@
> +<domain type='parallels'>
> + <name>1010</name>
> + <uuid>88576506-d611-41c2-b6b6-c9043704a0dd</uuid>
> + <description></description>
> + <memory unit='KiB'>262144</memory>
> + <currentMemory unit='KiB'>262144</currentMemory>
> + <vcpu placement='static'>8</vcpu>
> + <os>
> + <type arch='x86_64'>exe</type>
> + <init>/sbin/init</init>
> + </os>
> + <clock offset='utc'/>
> + <on_poweroff>destroy</on_poweroff>
> + <on_reboot>destroy</on_reboot>
> + <on_crash>destroy</on_crash>
> + <devices>
> + <filesystem type='template'>
> + <source name='centos-6-x86_64'/>
> + <target dir='/'/>
> + </filesystem>
> + <video>
> + <model type='vga' vram='16777216' heads='1'>
> + <acceleration accel3d='no' accel2d='no'/>
> + </model>
> + </video>
> + </devices>
> +</domain>
Seems to be the 4/4 part of the series
ACK, looks fine, I pushed the 4 patches set as a result
thanks !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list