这篇教程C++ virDomainDefFormat函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中virDomainDefFormat函数的典型用法代码示例。如果您正苦于以下问题:C++ virDomainDefFormat函数的具体用法?C++ virDomainDefFormat怎么用?C++ virDomainDefFormat使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了virDomainDefFormat函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: vmwareDomainGetXMLDescstatic char *vmwareDomainGetXMLDesc(virDomainPtr dom, unsigned int flags){ struct vmware_driver *driver = dom->conn->privateData; virDomainObjPtr vm; char *ret = NULL; /* Flags checked by virDomainDefFormat */ vmwareDriverLock(driver); vm = virDomainObjListFindByUUID(driver->domains, dom->uuid); vmwareDriverUnlock(driver); if (!vm) { virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid")); goto cleanup; } ret = virDomainDefFormat(vm->def, flags); cleanup: if (vm) virObjectUnlock(vm); return ret;}
开发者ID:bigclouds,项目名称:libvirt,代码行数:26,
示例2: testQemuHotplugCheckResultstatic inttestQemuHotplugCheckResult(virDomainObjPtr vm, const char *expected, const char *expectedFile, bool fail){ char *actual; int ret; vm->def->id = -1; actual = virDomainDefFormat(vm->def, driver.caps, VIR_DOMAIN_DEF_FORMAT_SECURE); if (!actual) return -1; vm->def->id = QEMU_HOTPLUG_TEST_DOMAIN_ID; if (STREQ(expected, actual)) { if (fail) VIR_TEST_VERBOSE("domain XML should not match the expected result/n"); ret = 0; } else { if (!fail) virtTestDifferenceFull(stderr, expected, expectedFile, actual, NULL); ret = -1; } VIR_FREE(actual); return ret;}
开发者ID:FrankYu,项目名称:libvirt,代码行数:31,
示例3: testCompareXMLToXMLFilesstatic inttestCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live){ char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virDomainDefPtr def = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(def = virDomainDefParseString(inXmlData, driver.caps, driver.xmlopt, QEMU_EXPECTED_VIRT_TYPES, live ? 0 : VIR_DOMAIN_XML_INACTIVE))) goto fail; if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virDomainDefFree(def); return ret;}
开发者ID:hzguanqiang,项目名称:libvirt,代码行数:35,
示例4: bhyveDomainGetXMLDescstatic char *bhyveDomainGetXMLDesc(virDomainPtr domain, unsigned int flags){ bhyveConnPtr privconn = domain->conn->privateData; virDomainObjPtr vm; virCapsPtr caps = NULL; char *ret = NULL; if (!(vm = bhyveDomObjFromDomain(domain))) goto cleanup; if (virDomainGetXMLDescEnsureACL(domain->conn, vm->def, flags) < 0) goto cleanup; caps = bhyveDriverGetCapabilities(privconn); if (!caps) goto cleanup; ret = virDomainDefFormat(vm->def, caps, virDomainDefFormatConvertXMLFlags(flags)); virObjectUnref(caps); cleanup: if (vm) virObjectUnlock(vm); return ret;}
开发者ID:FrankYu,项目名称:libvirt,代码行数:27,
示例5: testQemuHotplugCheckResultstatic inttestQemuHotplugCheckResult(virDomainObjPtr vm, const char *expected, bool fail){ char *actual; int ret; actual = virDomainDefFormat(vm->def, VIR_DOMAIN_XML_SECURE); if (!actual) return -1; if (STREQ(expected, actual)) { if (fail && virTestGetVerbose()) fprintf(stderr, "domain XML should not match the expected result/n"); ret = 0; } else { if (!fail) virtTestDifference(stderr, expected, actual); ret = -1; } VIR_FREE(actual); return ret;}
开发者ID:ISI-apex,项目名称:libvirt-ARM,代码行数:25,
示例6: testCompareXMLToXMLFilesstatic inttestCompareXMLToXMLFiles(const char *inxml, const char *outxml){ char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virDomainDefPtr def = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(def = virDomainDefParseString(driver.caps, inXmlData, VIR_DOMAIN_XML_INACTIVE))) goto fail; if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: free(inXmlData); free(outXmlData); free(actual); virDomainDefFree(def); return ret;}
开发者ID:hw-claudio,项目名称:libvirt,代码行数:35,
示例7: testCompareXMLToXMLFilesstatic int testCompareXMLToXMLFiles(const char *xml) { char xmlData[MAX_FILE]; char *xmlPtr = &(xmlData[0]); char *actual = NULL; int ret = -1; virDomainDefPtr vmdef = NULL; if (virtTestLoadFile(xml, &xmlPtr, MAX_FILE) < 0) goto fail; if (!(vmdef = virDomainDefParseString(driver.caps, xmlData, VIR_DOMAIN_XML_INACTIVE))) goto fail; if (!(actual = virDomainDefFormat(vmdef, 0))) goto fail; if (STRNEQ(xmlData, actual)) { virtTestDifference(stderr, xmlData, actual); goto fail; } ret = 0; fail: free(actual); virDomainDefFree(vmdef); return ret;}
开发者ID:hjwsm1989,项目名称:libvirt,代码行数:29,
示例8: testCompareFilesstatic inttestCompareFiles(const char *vmx, const char *xml){ int ret = -1; char *vmxData = NULL; char *formatted = NULL; virDomainDefPtr def = NULL; if (virtTestLoadFile(vmx, &vmxData) < 0) goto cleanup; if (!(def = virVMXParseConfig(&ctx, xmlopt, vmxData))) goto cleanup; if (!virDomainDefCheckABIStability(def, def)) { fprintf(stderr, "ABI stability check failed on %s", vmx); goto cleanup; } if (!(formatted = virDomainDefFormat(def, VIR_DOMAIN_DEF_FORMAT_SECURE))) goto cleanup; if (virtTestCompareToFile(formatted, xml) < 0) goto cleanup; ret = 0; cleanup: VIR_FREE(vmxData); VIR_FREE(formatted); virDomainDefFree(def); return ret;}
开发者ID:carriercomm,项目名称:libvirt,代码行数:34,
示例9: virLXCProcessReconnectDomainstatic intvirLXCProcessReconnectDomain(virDomainObjPtr vm, void *opaque){ virLXCDriverPtr driver = opaque; virLXCDomainObjPrivatePtr priv; int ret = -1; virObjectLock(vm); VIR_DEBUG("Reconnect id=%d pid=%d state=%d", vm->def->id, vm->pid, vm->state.state); priv = vm->privateData; if (vm->pid != 0) { vm->def->id = vm->pid; virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, VIR_DOMAIN_RUNNING_UNKNOWN); if (!driver->nactive && driver->inhibitCallback) driver->inhibitCallback(true, driver->inhibitOpaque); driver->nactive++; if (!(priv->monitor = virLXCProcessConnectMonitor(driver, vm))) goto error; if (virLXCUpdateActiveUsbHostdevs(driver, vm->def) < 0) goto error; if (virSecurityManagerReserveLabel(driver->securityManager, vm->def, vm->pid) < 0) goto error; /* now that we know it's reconnected call the hook if present */ if (virHookPresent(VIR_HOOK_DRIVER_LXC)) { char *xml = virDomainDefFormat(vm->def, 0); int hookret; /* we can't stop the operation even if the script raised an error */ hookret = virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name, VIR_HOOK_LXC_OP_RECONNECT, VIR_HOOK_SUBOP_BEGIN, NULL, xml, NULL); VIR_FREE(xml); if (hookret < 0) goto error; } } else { vm->def->id = -1; } ret = 0;cleanup: virObjectUnlock(vm); return ret;error: virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED); virDomainAuditStop(vm, "failed"); goto cleanup;}
开发者ID:bigclouds,项目名称:libvirt,代码行数:60,
示例10: vmwareDomainXMLFromNativestatic char *vmwareDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat, const char *nativeConfig, unsigned int flags){ struct vmware_driver *driver = conn->privateData; virVMXContext ctx; virDomainDefPtr def = NULL; char *xml = NULL; virCheckFlags(0, NULL); if (STRNEQ(nativeFormat, "vmware-vmx")) { virReportError(VIR_ERR_INVALID_ARG, _("Unsupported config format '%s'"), nativeFormat); return NULL; } ctx.parseFileName = vmwareCopyVMXFileName; def = virVMXParseConfig(&ctx, driver->caps, nativeConfig); if (def != NULL) xml = virDomainDefFormat(def, VIR_DOMAIN_XML_INACTIVE); virDomainDefFree(def); return xml;}
开发者ID:bigclouds,项目名称:libvirt,代码行数:29,
示例11: testCompareFilesstatic inttestCompareFiles(const char *xml, const char *sexpr){ char *sexprData = NULL; char *gotxml = NULL; int id; char * tty; int vncport; int ret = -1; virDomainDefPtr def = NULL; virConnectPtr conn; struct _xenUnifiedPrivate priv; conn = virGetConnect(); if (!conn) goto fail; if (virTestLoadFile(sexpr, &sexprData) < 0) goto fail; memset(&priv, 0, sizeof(priv)); /* Many puppies died to bring you this code. */ priv.caps = caps; conn->privateData = &priv; if (virMutexInit(&priv.lock) < 0) goto fail; if (xenGetDomIdFromSxprString(sexprData, &id) < 0) goto fail; xenUnifiedLock(&priv); tty = xenStoreDomainGetConsolePath(conn, id); vncport = xenStoreDomainGetVNCPort(conn, id); xenUnifiedUnlock(&priv); if (!(def = xenParseSxprString(sexprData, tty, vncport, caps, xmlopt))) goto fail; if (!virDomainDefCheckABIStability(def, def)) { fprintf(stderr, "ABI stability check failed on %s", xml); goto fail; } if (!(gotxml = virDomainDefFormat(def, caps, 0))) goto fail; if (virTestCompareToFile(gotxml, xml) < 0) goto fail; ret = 0; fail: VIR_FREE(sexprData); VIR_FREE(gotxml); virDomainDefFree(def); virObjectUnref(conn); return ret;}
开发者ID:Archer-sys,项目名称:libvirt,代码行数:59,
示例12: testCompareXMLToArgvFilesstatic int testCompareXMLToArgvFiles(const char *xml, const char *cmdfile, bool expect_warning) { char *expectxml = NULL; char *actualxml = NULL; char *cmd = NULL; int ret = -1; virDomainDefPtr vmdef = NULL; if (virtTestLoadFile(cmdfile, &cmd) < 0) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (!(vmdef = qemuParseCommandLineString(driver.caps, driver.xmlopt, cmd, NULL, NULL, NULL))) goto fail; if (!virtTestOOMActive()) { char *log; if ((log = virtTestLogContentAndReset()) == NULL) goto fail; if ((*log != '/0') != expect_warning) { VIR_FREE(log); goto fail; } VIR_FREE(log); } if (!virDomainDefCheckABIStability(vmdef, vmdef)) { fprintf(stderr, "ABI stability check failed on %s", xml); goto fail; } if (!(actualxml = virDomainDefFormat(vmdef, 0))) goto fail; if (blankProblemElements(expectxml) < 0 || blankProblemElements(actualxml) < 0) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: VIR_FREE(expectxml); VIR_FREE(actualxml); VIR_FREE(cmd); virDomainDefFree(vmdef); return ret;}
开发者ID:TelekomCloud,项目名称:libvirt,代码行数:55,
示例13: testCompareFormatXMLstatic inttestCompareFormatXML(const char *xmcfg, const char *xml, int xendConfigVersion){ char *xmlData = NULL; char *xmcfgData = NULL; char *gotxml = NULL; virConfPtr conf = NULL; int ret = -1; virConnectPtr conn; struct _xenUnifiedPrivate priv; virDomainDefPtr def = NULL; conn = virGetConnect(); if (!conn) goto fail; if (virtTestLoadFile(xml, &xmlData) < 0) goto fail; if (virtTestLoadFile(xmcfg, &xmcfgData) < 0) goto fail; /* Many puppies died to bring you this code. */ priv.xendConfigVersion = xendConfigVersion; priv.caps = caps; conn->privateData = &priv; if (!(conf = virConfReadMem(xmcfgData, strlen(xmcfgData), 0))) goto fail; if (!(def = xenParseXM(conf, priv.xendConfigVersion, priv.caps))) goto fail; if (!(gotxml = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE))) goto fail; if (STRNEQ(xmlData, gotxml)) { virtTestDifference(stderr, xmlData, gotxml); goto fail; } ret = 0; fail: if (conf) virConfFree(conf); VIR_FREE(xmlData); VIR_FREE(xmcfgData); VIR_FREE(gotxml); virDomainDefFree(def); virObjectUnref(conn); return ret;}
开发者ID:miurahr,项目名称:libvirt,代码行数:53,
示例14: testCompareFilesstatic inttestCompareFiles(const char *vmx, const char *xml){ int result = -1; char *vmxData = NULL; char *xmlData = NULL; char *formatted = NULL; virDomainDefPtr def = NULL; virErrorPtr err = NULL; if (virtTestLoadFile(vmx, &vmxData) < 0) { goto failure; } if (virtTestLoadFile(xml, &xmlData) < 0) { goto failure; } def = virVMXParseConfig(&ctx, xmlopt, vmxData); if (def == NULL) { err = virGetLastError(); fprintf(stderr, "ERROR: %s/n", err != NULL ? err->message : "<unknown>"); goto failure; } formatted = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE); if (formatted == NULL) { err = virGetLastError(); fprintf(stderr, "ERROR: %s/n", err != NULL ? err->message : "<unknown>"); goto failure; } if (STRNEQ(xmlData, formatted)) { virtTestDifference(stderr, xmlData, formatted); goto failure; } result = 0; failure: VIR_FREE(vmxData); VIR_FREE(xmlData); VIR_FREE(formatted); virDomainDefFree(def); return result;}
开发者ID:kawamuray,项目名称:libvirt,代码行数:49,
示例15: testCompareXMLToArgvFilesstatic int testCompareXMLToArgvFiles(const char *xml, const char *cmdfile, bool expect_warning) { char *expectxml = NULL; char *actualxml = NULL; char *cmd = NULL; int ret = -1; virDomainDefPtr vmdef = NULL; char *log; if (virtTestLoadFile(cmdfile, &cmd) < 0) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (!(vmdef = qemuParseCommandLineString(driver.caps, cmd))) goto fail; if ((log = virtTestLogContentAndReset()) == NULL) goto fail; if ((*log != '/0') != expect_warning) { free(log); goto fail; } free(log); if (!(actualxml = virDomainDefFormat(vmdef, 0))) goto fail; if (blankProblemElements(expectxml) < 0 || blankProblemElements(actualxml) < 0) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifference(stderr, expectxml, actualxml); goto fail; } ret = 0; fail: free(expectxml); free(actualxml); free(cmd); virDomainDefFree(vmdef); return ret;}
开发者ID:hw-claudio,项目名称:libvirt,代码行数:47,
示例16: libxlDomainMigrationBeginchar *libxlDomainMigrationBegin(virConnectPtr conn, virDomainObjPtr vm, const char *xmlin){ libxlDriverPrivatePtr driver = conn->privateData; libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver); virDomainDefPtr tmpdef = NULL; virDomainDefPtr def; char *xml = NULL; if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; if (xmlin) { if (!(tmpdef = virDomainDefParseString(xmlin, cfg->caps, driver->xmlopt, 1 << VIR_DOMAIN_VIRT_XEN, VIR_DOMAIN_XML_INACTIVE))) goto endjob; if (!libxlDomainDefCheckABIStability(driver, vm->def, tmpdef)) goto endjob; def = tmpdef; } else { def = vm->def; } if (!libxlDomainMigrationIsAllowed(def)) goto endjob; xml = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE); cleanup: if (vm) virObjectUnlock(vm); virDomainDefFree(tmpdef); virObjectUnref(cfg); return xml; endjob: if (!libxlDomainObjEndJob(driver, vm)) vm = NULL; goto cleanup;}
开发者ID:aurex-linux,项目名称:libvirt,代码行数:47,
示例17: testCompareFormatXMLstatic inttestCompareFormatXML(const char *xmcfg, const char *xml){ char *xmcfgData = NULL; char *gotxml = NULL; virConfPtr conf = NULL; int ret = -1; virConnectPtr conn; struct _xenUnifiedPrivate priv; virDomainDefPtr def = NULL; conn = virGetConnect(); if (!conn) goto fail; if (virTestLoadFile(xmcfg, &xmcfgData) < 0) goto fail; /* Many puppies died to bring you this code. */ priv.caps = caps; conn->privateData = &priv; if (!(conf = virConfReadString(xmcfgData, 0))) goto fail; if (!(def = xenParseXM(conf, caps, xmlopt))) goto fail; if (!(gotxml = virDomainDefFormat(def, caps, VIR_DOMAIN_DEF_FORMAT_SECURE))) goto fail; if (virTestCompareToFile(gotxml, xml) < 0) goto fail; ret = 0; fail: if (conf) virConfFree(conf); VIR_FREE(xmcfgData); VIR_FREE(gotxml); virDomainDefFree(def); virObjectUnref(conn); return ret;}
开发者ID:ehabkost,项目名称:libvirt,代码行数:45,
示例18: bhyveDomainGetXMLDescstatic char *bhyveDomainGetXMLDesc(virDomainPtr domain, unsigned int flags){ virDomainObjPtr vm; char *ret = NULL; if (!(vm = bhyveDomObjFromDomain(domain))) goto cleanup; if (virDomainGetXMLDescEnsureACL(domain->conn, vm->def, flags) < 0) goto cleanup; ret = virDomainDefFormat(vm->def, flags); cleanup: virObjectUnlock(vm); return ret;}
开发者ID:vikhyath,项目名称:libvirt-hyperv-r2-2012,代码行数:18,
示例19: testCompareXMLToConfigFilesstatic inttestCompareXMLToConfigFiles(const char *xml, const char *configfile, bool expectError){ int ret = -1; char *config = NULL; char *expectxml = NULL; char *actualxml = NULL; virDomainDefPtr vmdef = NULL; if (virtTestLoadFile(configfile, &config) < 0) goto fail; vmdef = lxcParseConfigString(config, caps, xmlopt); if ((vmdef && expectError) || (!vmdef && !expectError)) goto fail; if (vmdef) { if (!(actualxml = virDomainDefFormat(vmdef, 0))) goto fail; if (virtTestLoadFile(xml, &expectxml) < 0) goto fail; if (blankProblemElements(expectxml) < 0 || blankProblemElements(actualxml) < 0) goto fail; if (STRNEQ(expectxml, actualxml)) { virtTestDifferenceFull(stderr, expectxml, xml, actualxml, NULL); goto fail; } } ret = 0; fail: VIR_FREE(expectxml); VIR_FREE(actualxml); VIR_FREE(config); virDomainDefFree(vmdef); return ret;}
开发者ID:Nemati,项目名称:libvirt,代码行数:44,
示例20: load_profile/* * load (add) a profile. Will create one if necessary */static intload_profile(virSecurityManagerPtr mgr, const char *profile, virDomainDefPtr def, const char *fn, bool append){ int rc = -1; bool create = true; char *xml = NULL; virCommandPtr cmd = NULL; const char *probe = virSecurityManagerGetAllowDiskFormatProbing(mgr) ? "1" : "0"; xml = virDomainDefFormat(def, VIR_DOMAIN_XML_SECURE); if (!xml) goto cleanup; if (profile_status_file(profile) >= 0) create = false; cmd = virCommandNewArgList(VIRT_AA_HELPER, "-p", probe, create ? "-c" : "-r", "-u", profile, NULL); if (!create && fn) { if (append) { virCommandAddArgList(cmd, "-F", fn, NULL); } else { virCommandAddArgList(cmd, "-f", fn, NULL); } } virCommandSetInputBuffer(cmd, xml); rc = virCommandRun(cmd, NULL); cleanup: VIR_FREE(xml); virCommandFree(cmd); return rc;}
开发者ID:hitchiker42,项目名称:libvirt,代码行数:44,
示例21: testCompareFormatXML/* * Parses xl.cfg(5) config to virDomainDef object, which is then converted to * domXML and compared to expected XML. */static inttestCompareFormatXML(const char *xlcfg, const char *xml){ char *xlcfgData = NULL; char *gotxml = NULL; virConfPtr conf = NULL; int ret = -1; virConnectPtr conn; virDomainDefPtr def = NULL; conn = virGetConnect(); if (!conn) goto fail; if (virtTestLoadFile(xlcfg, &xlcfgData) < 0) goto fail; if (!(conf = virConfReadMem(xlcfgData, strlen(xlcfgData), 0))) goto fail; if (!(def = xenParseXL(conf, caps, xmlopt))) goto fail; if (!(gotxml = virDomainDefFormat(def, caps, VIR_DOMAIN_XML_INACTIVE | VIR_DOMAIN_XML_SECURE))) goto fail; if (virtTestCompareToFile(gotxml, xml) < 0) goto fail; ret = 0; fail: if (conf) virConfFree(conf); VIR_FREE(xlcfgData); VIR_FREE(gotxml); virDomainDefFree(def); virObjectUnref(conn); return ret;}
开发者ID:FrankYu,项目名称:libvirt,代码行数:45,
示例22: testCompareXMLToXMLFilesstatic inttestCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live){ char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; int ret = -1; virDomainDefPtr def = NULL; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(def = virDomainDefParseString(inXmlData, caps, xmlopt, 1 << VIR_DOMAIN_VIRT_LXC, live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE))) goto fail; if (!virDomainDefCheckABIStability(def, def)) { fprintf(stderr, "ABI stability check failed on %s", inxml); goto fail; } if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_DEF_FORMAT_SECURE))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virDomainDefFree(def); return ret;}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:40,
示例23: testXML2XMLHelperstatic inttestXML2XMLHelper(const char *inxml, const char *inXmlData, const char *outxml, const char *outXmlData, bool live){ char *actual = NULL; int ret = -1; virDomainDefPtr def = NULL; unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE; unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE; if (!live) format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE; if (!(def = virDomainDefParseString(inXmlData, driver.caps, driver.xmlopt, parse_flags))) goto fail; if (!virDomainDefCheckABIStability(def, def)) { fprintf(stderr, "ABI stability check failed on %s", inxml); goto fail; } if (!(actual = virDomainDefFormat(def, format_flags))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml); goto fail; } ret = 0; fail: VIR_FREE(actual); virDomainDefFree(def); return ret;}
开发者ID:withtreasure,项目名称:libvirt,代码行数:39,
示例24: testCompareXMLToXMLFilesstatic inttestCompareXMLToXMLFiles(const char *inxml, const char *outxml){ char *inXmlData = NULL; char *outXmlData = NULL; char *actual = NULL; virDomainDefPtr def = NULL; int ret = -1; if (virtTestLoadFile(inxml, &inXmlData) < 0) goto fail; if (virtTestLoadFile(outxml, &outXmlData) < 0) goto fail; if (!(def = virDomainDefParseString(inXmlData, driver.caps, driver.xmlopt, 1 << VIR_DOMAIN_VIRT_BHYVE, VIR_DOMAIN_DEF_PARSE_INACTIVE))) goto fail; if (!(actual = virDomainDefFormat(def, VIR_DOMAIN_DEF_FORMAT_INACTIVE))) goto fail; if (STRNEQ(outXmlData, actual)) { virtTestDifference(stderr, outXmlData, actual); goto fail; } ret = 0; fail: VIR_FREE(inXmlData); VIR_FREE(outXmlData); VIR_FREE(actual); virDomainDefFree(def); return ret;}
开发者ID:SvenDowideit,项目名称:clearlinux,代码行数:37,
示例25: testCompareXMLToConfigFilesstatic inttestCompareXMLToConfigFiles(const char *xmlfile, const char *configfile, bool expectError){ int ret = -1; char *config = NULL; char *actualxml = NULL; virDomainDefPtr vmdef = NULL; if (virTestLoadFile(configfile, &config) < 0) goto fail; vmdef = lxcParseConfigString(config, caps, xmlopt); if ((vmdef && expectError) || (!vmdef && !expectError)) goto fail; if (vmdef) { if (testSanitizeDef(vmdef) < 0) goto fail; if (!(actualxml = virDomainDefFormat(vmdef, caps, 0))) goto fail; if (virTestCompareToFile(actualxml, xmlfile) < 0) goto fail; } ret = 0; fail: VIR_FREE(actualxml); VIR_FREE(config); virDomainDefFree(vmdef); return ret;}
开发者ID:Archer-sys,项目名称:libvirt,代码行数:36,
示例26: vmwareDomainDumpXMLstatic char *vmwareDomainDumpXML(virDomainPtr dom, int flags){ struct vmware_driver *driver = dom->conn->privateData; virDomainObjPtr vm; char *ret = NULL; vmwareDriverLock(driver); vm = virDomainFindByUUID(&driver->domains, dom->uuid); vmwareDriverUnlock(driver); if (!vm) { vmwareError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid")); goto cleanup; } ret = virDomainDefFormat(vm->def, flags); cleanup: if (vm) virDomainObjUnlock(vm); return ret;}
开发者ID:rbu,项目名称:libvirt,代码行数:24,
示例27: testCompareXMLToArgvFilesstatic int testCompareXMLToArgvFiles(const char *xmlfile, const char *cmdfile, virQemuXML2ArgvTestFlags flags){ char *actualxml = NULL; char *cmd = NULL; char *log = NULL; int ret = -1; virDomainDefPtr vmdef = NULL; if (virtTestLoadFile(cmdfile, &cmd) < 0) goto fail; if (!(vmdef = qemuParseCommandLineString(driver.caps, driver.xmlopt, cmd, NULL, NULL, NULL))) goto fail; if (!virtTestOOMActive()) { if ((log = virtTestLogContentAndReset()) == NULL) goto fail; if (flags & FLAG_EXPECT_WARNING) { if (*log) { VIR_TEST_DEBUG("Got expected warning from " "qemuParseCommandLineString:/n%s", log); } else { VIR_TEST_DEBUG("qemuParseCommandLineString " "should have logged a warning/n"); goto fail; } } else { /* didn't expect a warning */ if (*log) { VIR_TEST_DEBUG("Got unexpected warning from " "qemuParseCommandLineString:/n%s", log); goto fail; } } } if (testSanitizeDef(vmdef) < 0) goto fail; if (!virDomainDefCheckABIStability(vmdef, vmdef)) { VIR_TEST_DEBUG("ABI stability check failed on %s", xmlfile); goto fail; } if (!(actualxml = virDomainDefFormat(vmdef, driver.caps, 0))) goto fail; if (virtTestCompareToFile(actualxml, xmlfile) < 0) goto fail; ret = 0; fail: VIR_FREE(actualxml); VIR_FREE(cmd); VIR_FREE(log); virDomainDefFree(vmdef); return ret;}
开发者ID:JGulic,项目名称:libvirt,代码行数:63,
示例28: hypervDomainGetXMLDesc//.........这里部分代码省略......... "ResultClass = Msvm_VirtualSystemSettingData", uuid_string); if (hypervGetMsvmVirtualSystemSettingDataList(priv, &query, &virtualSystemSettingData) < 0) { goto cleanup; } if (virtualSystemSettingData == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not lookup %s for domain %s"), "Msvm_VirtualSystemSettingData", computerSystem->data->ElementName); goto cleanup; } /* Get Msvm_ProcessorSettingData */ virBufferAsprintf(&query, "associators of " "{Msvm_VirtualSystemSettingData.InstanceID=/"%s/"} " "where AssocClass = Msvm_VirtualSystemSettingDataComponent " "ResultClass = Msvm_ProcessorSettingData", virtualSystemSettingData->data->InstanceID); if (hypervGetMsvmProcessorSettingDataList(priv, &query, &processorSettingData) < 0) { goto cleanup; } if (processorSettingData == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not lookup %s for domain %s"), "Msvm_ProcessorSettingData", computerSystem->data->ElementName); goto cleanup; } /* Get Msvm_MemorySettingData */ virBufferAsprintf(&query, "associators of " "{Msvm_VirtualSystemSettingData.InstanceID=/"%s/"} " "where AssocClass = Msvm_VirtualSystemSettingDataComponent " "ResultClass = Msvm_MemorySettingData", virtualSystemSettingData->data->InstanceID); if (hypervGetMsvmMemorySettingDataList(priv, &query, &memorySettingData) < 0) { goto cleanup; } if (memorySettingData == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not lookup %s for domain %s"), "Msvm_MemorySettingData", computerSystem->data->ElementName); goto cleanup; } /* Fill struct */ def->virtType = VIR_DOMAIN_VIRT_HYPERV; if (hypervIsMsvmComputerSystemActive(computerSystem, NULL)) { def->id = computerSystem->data->ProcessID; } else { def->id = -1; } if (virUUIDParse(computerSystem->data->Name, def->uuid) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Could not parse UUID from string '%s'"), computerSystem->data->Name); return NULL; } if (VIR_STRDUP(def->name, computerSystem->data->ElementName) < 0) goto cleanup; def->mem.max_balloon = memorySettingData->data->Limit * 1024; /* megabyte to kilobyte */ def->mem.cur_balloon = memorySettingData->data->VirtualQuantity * 1024; /* megabyte to kilobyte */ def->vcpus = processorSettingData->data->VirtualQuantity; def->maxvcpus = processorSettingData->data->VirtualQuantity; if (VIR_STRDUP(def->os.type, "hvm") < 0) goto cleanup; /* FIXME: devices section is totally missing */ xml = virDomainDefFormat(def, flags); cleanup: virDomainDefFree(def); hypervFreeObject(priv, (hypervObject *)computerSystem); hypervFreeObject(priv, (hypervObject *)virtualSystemSettingData); hypervFreeObject(priv, (hypervObject *)processorSettingData); hypervFreeObject(priv, (hypervObject *)memorySettingData); return xml;}
开发者ID:vikhyath,项目名称:libvirt-hyperv-r2-2012,代码行数:101,
示例29: virLXCProcessCleanup/** * virLXCProcessCleanup: * @driver: pointer to driver structure * @vm: pointer to VM to clean up * @reason: reason for switching the VM to shutoff state * * Cleanout resources associated with the now dead VM * */static void virLXCProcessCleanup(virLXCDriverPtr driver, virDomainObjPtr vm, virDomainShutoffReason reason){ size_t i; virLXCDomainObjPrivatePtr priv = vm->privateData; virNetDevVPortProfilePtr vport = NULL; virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver); VIR_DEBUG("Stopping VM name=%s pid=%d reason=%d", vm->def->name, (int)vm->pid, (int)reason); /* now that we know it's stopped call the hook if present */ if (virHookPresent(VIR_HOOK_DRIVER_LXC)) { char *xml = virDomainDefFormat(vm->def, 0); /* we can't stop the operation even if the script raised an error */ virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name, VIR_HOOK_LXC_OP_STOPPED, VIR_HOOK_SUBOP_END, NULL, xml, NULL); VIR_FREE(xml); } /* Stop autodestroy in case guest is restarted */ virCloseCallbacksUnset(driver->closeCallbacks, vm, lxcProcessAutoDestroy); if (priv->monitor) { virLXCMonitorClose(priv->monitor); virObjectUnref(priv->monitor); priv->monitor = NULL; } virPidFileDelete(cfg->stateDir, vm->def->name); virDomainDeleteConfig(cfg->stateDir, NULL, vm); virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, reason); vm->pid = -1; vm->def->id = -1; if (virAtomicIntDecAndTest(&driver->nactive) && driver->inhibitCallback) driver->inhibitCallback(false, driver->inhibitOpaque); virLXCDomainReAttachHostDevices(driver, vm->def); for (i = 0; i < vm->def->nnets; i++) { virDomainNetDefPtr iface = vm->def->nets[i]; vport = virDomainNetGetActualVirtPortProfile(iface); if (iface->ifname) { if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH) ignore_value(virNetDevOpenvswitchRemovePort( virDomainNetGetActualBridgeName(iface), iface->ifname)); ignore_value(virNetDevVethDelete(iface->ifname)); } networkReleaseActualDevice(vm->def, iface); } virDomainConfVMNWFilterTeardown(vm); if (priv->cgroup) { virCgroupRemove(priv->cgroup); virCgroupFree(&priv->cgroup); } /* Get machined to terminate the machine as it may not have cleaned it * properly. See https://bugs.freedesktop.org/show_bug.cgi?id=68370 for * the bug we are working around here. */ virSystemdTerminateMachine(vm->def->name, "lxc", true); /* The "release" hook cleans up additional resources */ if (virHookPresent(VIR_HOOK_DRIVER_LXC)) { char *xml = virDomainDefFormat(vm->def, 0); /* we can't stop the operation even if the script raised an error */ virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name, VIR_HOOK_LXC_OP_RELEASE, VIR_HOOK_SUBOP_END, NULL, xml, NULL); VIR_FREE(xml); } if (vm->newDef) { virDomainDefFree(vm->def); vm->def = vm->newDef; vm->def->id = -1; vm->newDef = NULL; } virObjectUnref(cfg);//.........这里部分代码省略.........
开发者ID:i-ninth,项目名称:libvirt,代码行数:101,
示例30: virLXCProcessStart//.........这里部分代码省略......... } if (!vm->def->resource) { virDomainResourceDefPtr res; if (VIR_ALLOC(res) < 0) goto cleanup; if (VIR_STRDUP(res->partition, "/machine") < 0) { VIR_FREE(res); goto cleanup; } vm->def->resource = res; } if (virAsprintf(&logfile, "%s/%s.log", cfg->logDir, vm->def->name) < 0) return -1; if (!(caps = virLXCDriverGetCapabilities(driver, false))) goto cleanup; /* Do this up front, so any part of the startup process can add * runtime state to vm->def that won't be persisted. This let's us * report implicit runtime defaults in the XML, like vnc listen/socket */ VIR_DEBUG("Setting current domain def as transient"); if (virDomainObjSetDefTransient(caps, driver->xmlopt, vm, true) < 0) goto cleanup; /* Run an early hook to set-up missing devices */ if (virHookPresent(VIR_HOOK_DRIVER_LXC)) { char *xml = virDomainDefFormat(vm->def, 0); int hookret; hookret = virHookCall(VIR_HOOK_DRIVER_LXC, vm->def->name, VIR_HOOK_LXC_OP_PREPARE, VIR_HOOK_SUBOP_BEGIN, NULL, xml, NULL); VIR_FREE(xml); /* * If the script raised an error abort the launch */ if (hookret < 0) goto cleanup; } if (virLXCProcessEnsureRootFS(vm) < 0) goto cleanup; /* Must be run before security labelling */ VIR_DEBUG("Preparing host devices"); if (virLXCPrepareHostDevices(driver, vm->def) < 0) goto cleanup; /* Here we open all the PTYs we need on the host OS side. * The LXC controller will open the guest OS side PTYs * and forward I/O between them. */ nttyFDs = vm->def->nconsoles; if (VIR_ALLOC_N(ttyFDs, nttyFDs) < 0) goto cleanup; for (i = 0; i < vm->def->nconsoles; i++) ttyFDs[i] = -1;
开发者ID:i-ninth,项目名称:libvirt,代码行数:66,
注:本文中的virDomainDefFormat函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ virDomainDefFree函数代码示例 C++ virConnectClose函数代码示例 |