void spice_graphHlpThread::run() { if ( NULL==ptr_ConnPtr || NULL==*ptr_ConnPtr ) { emit ptrIsNull(); return; }; if ( virConnectRef(*ptr_ConnPtr)<0 ) { sendConnErrors(); return; }; QStringList nets; virNetworkPtr *networks = NULL; unsigned int flags = VIR_CONNECT_LIST_NETWORKS_ACTIVE | VIR_CONNECT_LIST_NETWORKS_INACTIVE; int ret = virConnectListAllNetworks(*ptr_ConnPtr, &networks, flags); if ( ret<0 ) { sendConnErrors(); } else { // therefore correctly to use for() command, because networks[0] can not exist. for (int i = 0; i < ret; i++) { nets.append( virNetworkGetName(networks[i]) ); virNetworkFree(networks[i]); }; if (networks) free(networks); }; //int devs = virNodeNumOfDevices(ptr_ConnPtr, NULL, 0); if ( virConnectClose(*ptr_ConnPtr)<0 ) { sendConnErrors(); }; emit result(nets); }
void StorageVolControlThread::execAction(uint _num, TASK _task) { number = _num; task = _task; currPoolName = task.args.object; if ( NULL!=task.srcConnPtr ) { // for new virConnect usage create the new virConnectRef[erence] int ret = virConnectRef(*task.srcConnPtr); if ( ret<0 ) { task.srcConnPtr = NULL; sendConnErrors(); keep_alive = false; } else keep_alive = true; }; if ( keep_alive && !isRunning() ) { ptr_ConnPtr = task.srcConnPtr; start(); } else { Result result; result.type = "volume"; result.number = number; result.action = _EMPTY_ACTION; emit resultData(result); }; }
void pci_hostHlpThread::run() { if ( NULL==ptr_ConnPtr || NULL==*ptr_ConnPtr ) { emit ptrIsNull(); return; }; if ( virConnectRef(*ptr_ConnPtr)<0 ) { sendConnErrors(); return; }; QStringList devices; virNodeDevice **nodeDevices = NULL; unsigned int flags = VIR_CONNECT_LIST_NODE_DEVICES_CAP_PCI_DEV; int ret = virConnectListAllNodeDevices(*ptr_ConnPtr, &nodeDevices, flags); if ( ret<0 ) { sendConnErrors(); } else { // therefore correctly to use for() command, because networks[0] can not exist. for (int i = 0; i < ret; i++) { devices.append( QString("%1\n") // flags: extra flags; not used yet, // so callers should always pass 0 .arg(virNodeDeviceGetXMLDesc(nodeDevices[i], 0))); virNodeDeviceFree(nodeDevices[i]); }; if (nodeDevices) free(nodeDevices); }; //int devs = virNodeNumOfDevices(ptr_ConnPtr, NULL, 0); if ( virConnectClose(*ptr_ConnPtr)<0 ) sendConnErrors(); emit result(devices); }
/* public slots */ void NetControlThread::execAction(uint _num, TASK _task) { number = _num; task = _task; keep_alive = false; if ( nullptr!=task.srcConnPtr ) { // for new virConnect usage create the new virConnectRef[erence] int ret = virConnectRef(*task.srcConnPtr); if ( ret<0 ) { task.srcConnPtr = nullptr; sendConnErrors(); } else keep_alive = true; }; if ( keep_alive && !isRunning() ) { ptr_ConnPtr = task.srcConnPtr; start(); } else { Result result; result.type = "network"; result.number = number; result.action = _EMPTY_ACTION; emit resultData(result); }; }
void qwdHelpThread::run() { if ( nullptr==ptr_ConnPtr || nullptr==*ptr_ConnPtr ) { emit ptrIsNull(); return; }; if ( virConnectRef(*ptr_ConnPtr)<0 ) { sendConnErrors(); return; }; connType = QString::fromUtf8( virConnectGetType(*ptr_ConnPtr)) .toLower(); if ( virConnectClose(*ptr_ConnPtr)<0 ) sendConnErrors(); }
/* public slots */ bool ControlThread::setCurrentWorkConnect( virConnectPtr *_connPtrPtr, uint i, QString _name) { keep_alive = true; number = i; currConnName = _name; ptr_ConnPtr = _connPtrPtr; // for new virConnect usage create the new virConnectRef[erence] int ret = virConnectRef(*ptr_ConnPtr); if ( ret<0 ) { ptr_ConnPtr = NULL; sendConnErrors(); keep_alive = false; }; //qDebug()<<"virConnectRef +1"<<"ControlThread"<<currConnName<<(ret+1>0)<<number; //qDebug()<<"net_thread"<<ptr_ConnPtr; return keep_alive; }
static int virLXCProcessReboot(virLXCDriverPtr driver, virDomainObjPtr vm) { virConnectPtr conn = virLXCProcessAutoDestroyGetConn(driver, vm); int reason = vm->state.reason; bool autodestroy = false; int ret = -1; virDomainDefPtr savedDef; VIR_DEBUG("Faking reboot"); if (conn) { virConnectRef(conn); autodestroy = true; } else { conn = virConnectOpen("lxc:///"); /* Ignoring NULL conn which is mostly harmless here */ } /* In a reboot scenario, we need to make sure we continue * to use the current 'def', and not switch to 'newDef'. * So temporarily hide the newDef and then reinstate it */ savedDef = vm->newDef; vm->newDef = NULL; virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN); vm->newDef = savedDef; if (virLXCProcessStart(conn, driver, vm, autodestroy, reason) < 0) { VIR_WARN("Unable to handle reboot of vm %s", vm->def->name); goto cleanup; } if (conn) virConnectClose(conn); ret = 0; cleanup: return ret; }
void StoragePoolControlThread::execAction(uint _num, TASK _task) { number = _num; task = _task; keep_alive = true; // for new virConnect usage create the new virConnectRef[erence] int ret = virConnectRef(task.sourceConn); if ( ret<0 ) { task.sourceConn = NULL; sendConnErrors(); keep_alive = false; }; if ( keep_alive && !isRunning() ) { if ( NULL!=task.sourceConn ) start(); else { Result result; result.type = "pool"; result.number = number; result.action = _EMPTY_ACTION; emit resultData(result); }; }; }