[libvirt] [PATCH] vz: fix building capabilities
Dmitry Guryanov
dguryanov at parallels.com
Fri Jul 3 17:27:19 UTC 2015
On 07/03/2015 08:22 PM, Maxim Nestratov wrote:
> 03.07.2015 19:00, 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.
>> ---
>> src/vz/vz_driver.c | 92
>> +++++++++++++++++++++------------------------------
>> 1 files changed, 38 insertions(+), 54 deletions(-)
>>
>> diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
>> index 47c5023..a86ae28 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 < 1; i++)
>> + for (j = 0; j < 1; j++)
>> + for (k = 0; k < 1; k++)
>> + if (vzCapsAddGuestDomain(caps, ostypes[i], archs[j],
>> + emulators[k],
>> virt_types[k]) < 0)
>> + goto error;
> I guess here should be 2 instead of 1.
>
Yes it is, thanks.
>> if (nodeGetInfo(&nodeinfo))
>> goto error;
>
More information about the libvir-list
mailing list