[libvirt] [PATCH v2] vz: fix building capabilities
Dmitry Guryanov
dguryanov at parallels.com
Mon Jul 6 13:40:16 UTC 2015
On 07/06/2015 03:45 PM, Maxim Nestratov wrote:
> 03.07.2015 20:26, Dmitry Guryanov пишет:
>> There should be at least one domain for each guest
>> in cababilities. And in current code we don't add
>> domain for this guest for example.
>>
>> if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM,
>> VIR_ARCH_X86_64,
>> "vz",
>> NULL, 0, NULL)) == NULL)
>>
>> Anyway, with two virt types it looks a litte messy, so let's
>> move adding guest and domain to a separate function.
>>
>> Signed-off-by: Dmitry Guryanov <dguryanov at parallels.com>
>> ---
>> src/vz/vz_driver.c | 92
>> ++++++++++++++++++++++--------------------------------
>> 1 file changed, 38 insertions(+), 54 deletions(-)
>>
>> diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
>> index 47c5023..8c3c818 100644
>> --- a/src/vz/vz_driver.c
>> +++ b/src/vz/vz_driver.c
>> @@ -78,14 +78,45 @@ vzDriverUnlock(vzConnPtr driver)
>> virMutexUnlock(&driver->lock);
>> }
>> +static int
>> +vzCapsAddGuestDomain(virCapsPtr caps,
>> + virDomainOSType ostype,
>> + virArch arch,
>> + const char * emulator,
>> + virDomainVirtType virt_type)
>> +{
>> + virCapsGuestPtr guest;
>> +
>> + if ((guest = virCapabilitiesAddGuest(caps, ostype, arch, emulator,
>> + NULL, 0, NULL)) == NULL)
>> + return -1;
>> +
>> +
>> + if (virCapabilitiesAddGuestDomain(guest, virt_type,
>> + NULL, NULL, 0, NULL) == NULL)
>> + return -1;
>> +
>> + return 0;
>> +}
>> +
>> static virCapsPtr
>> vzBuildCapabilities(void)
>> {
>> virCapsPtr caps = NULL;
>> virCPUDefPtr cpu = NULL;
>> virCPUDataPtr data = NULL;
>> - virCapsGuestPtr guest;
>> virNodeInfo nodeinfo;
>> + virDomainOSType ostypes[] = {
>> + VIR_DOMAIN_OSTYPE_HVM,
>> + VIR_DOMAIN_OSTYPE_EXE
>> + };
>> + virArch archs[] = { VIR_ARCH_I686, VIR_ARCH_X86_64 };
>> + const char *const emulators[] = { "parallels", "vz" };
>> + virDomainVirtType virt_types[] = {
>> + VIR_DOMAIN_VIRT_PARALLELS,
>> + VIR_DOMAIN_VIRT_VZ
>> + };
>> + size_t i, j, k;
>> if ((caps = virCapabilitiesNew(virArchFromHost(),
>> false, false)) == NULL)
>> @@ -94,59 +125,12 @@ vzBuildCapabilities(void)
>> if (nodeCapsInitNUMA(caps) < 0)
>> goto error;
>> - if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM,
>> - VIR_ARCH_X86_64,
>> - "parallels",
>> - NULL, 0, NULL)) == NULL)
>> - goto error;
>> -
>> - if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM,
>> - VIR_ARCH_I686,
>> - "parallels",
>> - NULL, 0, NULL)) == NULL)
>> - goto error;
>> -
>> -
>> - if (virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_PARALLELS,
>> - NULL, NULL, 0, NULL) == NULL)
>> - goto error;
>> -
>> - if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_EXE,
>> - VIR_ARCH_X86_64,
>> - "parallels",
>> - NULL, 0, NULL)) == NULL)
>> - goto error;
>> -
>> - if (virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_PARALLELS,
>> - NULL, NULL, 0, NULL) == NULL)
>> - goto error;
>> -
>> - if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM,
>> - VIR_ARCH_X86_64,
>> - "vz",
>> - NULL, 0, NULL)) == NULL)
>> - goto error;
>> -
>> - if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_HVM,
>> - VIR_ARCH_I686,
>> - "vz",
>> - NULL, 0, NULL)) == NULL)
>> - goto error;
>> -
>> -
>> - if (virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_VZ,
>> - NULL, NULL, 0, NULL) == NULL)
>> - goto error;
>> -
>> - if ((guest = virCapabilitiesAddGuest(caps, VIR_DOMAIN_OSTYPE_EXE,
>> - VIR_ARCH_X86_64,
>> - "vz",
>> - NULL, 0, NULL)) == NULL)
>> - goto error;
>> -
>> - if (virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_VZ,
>> - NULL, NULL, 0, NULL) == NULL)
>> - goto error;
>> + for (i = 0; i < 2; i++)
>> + for (j = 0; j < 2; j++)
>> + for (k = 0; k < 2; k++)
>> + if (vzCapsAddGuestDomain(caps, ostypes[i], archs[j],
>> + emulators[k],
>> virt_types[k]) < 0)
>> + goto error;
>> if (nodeGetInfo(&nodeinfo))
>> goto error;
> ACK. Looks good.
Thanks, pushed.
More information about the libvir-list
mailing list