43 lines
1.5 KiB
Python
Executable File
43 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import kazoo.client, socket, time
|
|
from lxml import objectify
|
|
|
|
def help():
|
|
print("pvc - Parallel Virtual Cluster command-line utility")
|
|
|
|
def define_domain(domxmlfile):
|
|
with open(domxmlfile, 'r') as f_domxmlfile:
|
|
data = f_domxmlfile.read()
|
|
f_domxmlfile.close()
|
|
|
|
parsed_xml = objectify.fromstring(data)
|
|
domuuid = parsed_xml.uuid
|
|
print('Adding domain %s to database' % domuuid)
|
|
|
|
zk = kazoo.client.KazooClient(hosts='127.0.0.1:2181')
|
|
zk.start()
|
|
transaction = zk.transaction()
|
|
transaction.create('/domains/%s' % domuuid, "".encode('ascii'))
|
|
transaction.create('/domains/%s/state' % domuuid, "stop".encode('ascii'))
|
|
transaction.create('/domains/%s/hypervisor' % domuuid, socket.gethostname().encode('ascii'))
|
|
transaction.create('/domains/%s/xml' % domuuid, data.encode('ascii'))
|
|
results = transaction.commit()
|
|
zk.stop()
|
|
zk.close()
|
|
|
|
def migrate_domain(domuuid, target):
|
|
zk = kazoo.client.KazooClient(hosts='127.0.0.1:2181')
|
|
zk.start()
|
|
transaction = zk.transaction()
|
|
# transaction.set_data('/domains/%s/state' % domuuid, 'migrate'.encode('ascii'))
|
|
transaction.set_data('/domains/%s/hypervisor' % domuuid, target.encode('ascii'))
|
|
results = transaction.commit()
|
|
zk.stop()
|
|
zk.close()
|
|
|
|
|
|
#define_domain('/var/home/joshua/debian9.xml')
|
|
#migrate_domain('b1dc4e21-544f-47aa-9bb7-8af0bc443b78', 'test1.i.bonilan.net')
|
|
migrate_domain('b1dc4e21-544f-47aa-9bb7-8af0bc443b78', 'test2.i.bonilan.net')
|