static bool cmdNetworkCreate(vshControl *ctl, const vshCmd *cmd) { virNetworkPtr network; const char *from = NULL; bool ret = true; char *buffer; virshControlPtr priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) return false; network = virNetworkCreateXML(priv->conn, buffer); VIR_FREE(buffer); if (network != NULL) { vshPrint(ctl, _("Network %s created from %s\n"), virNetworkGetName(network), from); virNetworkFree(network); } else { vshError(ctl, _("Failed to create network from %s"), from); ret = false; } return ret; }
static int testNetworkCreateXML(const void *data) { const objecteventTest *test = data; lifecycleEventCounter counter; virNetworkPtr net; int id; int ret = 0; lifecycleEventCounter_reset(&counter); id = virConnectNetworkEventRegisterAny(test->conn, NULL, VIR_NETWORK_EVENT_ID_LIFECYCLE, VIR_NETWORK_EVENT_CALLBACK(&networkLifecycleCb), &counter, NULL); net = virNetworkCreateXML(test->conn, networkDef); if (virEventRunDefaultImpl() < 0) { ret = -1; goto cleanup; } if (counter.startEvents != 1 || counter.unexpectedEvents > 0) { ret = -1; goto cleanup; } cleanup: virConnectNetworkEventDeregisterAny(test->conn, id); virNetworkDestroy(net); virNetworkFree(net); return ret; }
Result NetControlThread::createNetwork() { Result result; QString path = task.args.path; QByteArray xmlData; if ( task.srcConnPtr==nullptr ) { result.result = false; result.err = "Connection pointer is NULL."; return result; }; QFile f; f.setFileName(path); if ( !f.open(QIODevice::ReadOnly) ) { QString msg = QString("File \"%1\"\nnot opened.").arg(path); emit errorMsg( msg, number ); result.err = msg; return result; }; xmlData = f.readAll(); f.close(); virNetworkPtr network = virNetworkCreateXML( *task.srcConnPtr, xmlData.data()); if ( network==nullptr ) { result.err = sendConnErrors(); return result; }; result.name = QString().fromUtf8( virNetworkGetName(network) ); result.result = true; result.msg.append(QString("'<b>%1</b>' Network from\n\"%2\"\nis created.") .arg(result.name).arg(path)); virNetworkFree(network); return result; }
static PromiseResult CreateVirtNetwork(EvalContext *ctx, virConnectPtr vc, char **networks, Attributes a, const Promise *pp) { virNetworkPtr network; char *xml_file; char defaultxml[CF_MAXVARSIZE]; int i, found = false; snprintf(defaultxml, CF_MAXVARSIZE - 1, "<network>" "<name>%s</name>" "<bridge name=\"virbr0\" />" "<forward mode=\"nat\"/>" "<ip address=\"192.168.122.1\" netmask=\"255.255.255.0\">" "<dhcp>" "<range start=\"192.168.122.2\" end=\"192.168.122.254\" />" "</dhcp>" "</ip>" "</network>", pp->promiser); for (i = 0; networks[i] != NULL; i++) { Log(LOG_LEVEL_VERBOSE, "Discovered a running network '%s'", networks[i]); if (strcmp(networks[i], pp->promiser) == 0) { found = true; } } if (found) { cfPS(ctx, LOG_LEVEL_VERBOSE, PROMISE_RESULT_NOOP, pp, a, "Network '%s' exists - promise kept", pp->promiser); return PROMISE_RESULT_NOOP; } if (a.env.spec) { xml_file = xstrdup(a.env.spec); } else { xml_file = xstrdup(defaultxml); } PromiseResult result = PROMISE_RESULT_NOOP; if ((network = virNetworkCreateXML(vc, xml_file)) == NULL) { cfPS(ctx, LOG_LEVEL_ERR, PROMISE_RESULT_FAIL, pp, a, "Unable to create network '%s'", pp->promiser); free(xml_file); return PROMISE_RESULT_FAIL; } else { cfPS(ctx, LOG_LEVEL_INFO, PROMISE_RESULT_CHANGE, pp, a, "Created network '%s' - promise repaired", pp->promiser); result = PromiseResultUpdate(result, PROMISE_RESULT_CHANGE); } free(xml_file); virNetworkFree(network); return result; }
static int CreateVirtNetwork(virConnectPtr vc, char **networks, Attributes a, Promise *pp) { virNetworkPtr network; char *xml_file; char defaultxml[CF_MAXVARSIZE]; int i, found = false; snprintf(defaultxml, CF_MAXVARSIZE - 1, "<network>" "<name>%s</name>" "<bridge name=\"virbr0\" />" "<forward mode=\"nat\"/>" "<ip address=\"192.168.122.1\" netmask=\"255.255.255.0\">" "<dhcp>" "<range start=\"192.168.122.2\" end=\"192.168.122.254\" />" "</dhcp>" "</ip>" "</network>", pp->promiser); for (i = 0; networks[i] != NULL; i++) { CfOut(cf_verbose, "", " -> Discovered a running network \"%s\"", networks[i]); if (strcmp(networks[i], pp->promiser) == 0) { found = true; } } if (found) { cfPS(cf_verbose, CF_NOP, "", pp, a, " -> Network \"%s\" exists - promise kept\n", pp->promiser); return true; } if (a.env.spec) { xml_file = xstrdup(a.env.spec); } else { xml_file = xstrdup(defaultxml); } if ((network = virNetworkCreateXML(vc, xml_file)) == NULL) { cfPS(cf_error, CF_FAIL, "", pp, a, " !! Unable to create network \"%s\"\n", pp->promiser); free(xml_file); return false; } else { cfPS(cf_inform, CF_CHG, "", pp, a, " -> Created network \"%s\" - promise repaired\n", pp->promiser); } free(xml_file); virNetworkFree(network); return true; }