On Thursday 23 October 2014 19:58:04 Dmitry Guryanov wrote: > This patch series replaces all code, which used prlctl command > to interact with parallels cloud server with calls to > parallels sdk functions. > > The model of this driver remain almost the same - in creates a > list of virDomainObj objects on connect and then functions, which > returns different information get info from this list. > > But functions, which modify domains (change state, define or undefine > domain) don't modify this list directly. On connect driver subscribes > to event from PCS and modify the list from that events handler. It isn't correct, for example you call first virConnectDefineXML to define a new domain and virDomainLookupByName after that. Lookup function may fail, because event from PCS appear slightly later. There are two possible solutions: first is to update privconn->domains in parallelsDomainDefineXML, parallelsDomainCreate, parallelsDomainDestroy e.t.c. So that this list will be up-to-date after modifications, done from the current connections. Disadvantage is that after local modification the list will be updated twice. The second solution is to introduce "dirty" flag in virDomainObj and in the whole list. Functions, which change domain state should set this flag virDomainObj and lookup functions like virDomainObjListFindByUUID should wait until this flag become cleared. It can be done with condition variables. This method is more complex and requires modifications in common libvirt code. So I've implemented the first method. > > So cached list of domains will be always up-to-date either after > modifications from currect connection or after modifications by > another tools (like prlctl) or libvirt connections. > > > > Alexander Burluka (4): > parallels: get domain info with SDK > parallels: handle events from parallels server > parallels: added function virDomainIsActive() > parallels: Add domainCreateWithFlags() function. > > Dmitry Guryanov (8): > parallels: move IS_CT macro to parallels_utils.h > parallels: move parallelsDomNotFoundError to parallels_utils.h > parallels: reimplement functions, which change domain state > parallels: rewrite parallelsApplyConfig with SDK > parallels: create VMs and containers with sdk > parallels: fix parallelsDomainDefineXML > parallels: add cdroms support > parallels: implement domainUndefine and domainUndefineFlags > > src/parallels/parallels_driver.c | 2448 > +++++++------------------------------ src/parallels/parallels_sdk.c | > 2456 ++++++++++++++++++++++++++++++++++++++ src/parallels/parallels_sdk.h > | 19 + > src/parallels/parallels_utils.h | 11 + > 4 files changed, 2939 insertions(+), 1995 deletions(-) -- Dmitry Guryanov -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list