From 09113882ac1620006341983efd43a236b5834c4e Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sun, 17 Jun 2018 22:45:03 -0400 Subject: [PATCH] Use a transaction for node creation --- pvcd.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/pvcd.py b/pvcd.py index 27de767d..25684dc3 100755 --- a/pvcd.py +++ b/pvcd.py @@ -183,21 +183,23 @@ if zk_conn.exists('/nodes/{}'.format(myhostname)): else: print("Node is " + ansiiprint.red() + "absent" + ansiiprint.end() + " in Zookeeper; adding new node") keepalive_time = int(time.time()) - zk_conn.create('/nodes/{}'.format(myhostname), 'hypervisor'.encode('ascii')) + transaction = zk_conn.transaction() + transaction.create('/nodes/{}'.format(myhostname), 'hypervisor'.encode('ascii')) # Basic state information - zk_conn.create('/nodes/{}/daemonstate'.format(myhostname), 'stop'.encode('ascii')) - zk_conn.create('/nodes/{}/domainstate'.format(myhostname), 'ready'.encode('ascii')) - zk_conn.create('/nodes/{}/staticdata'.format(myhostname), ' '.join(staticdata).encode('ascii')) - zk_conn.create('/nodes/{}/memfree'.format(myhostname), '0'.encode('ascii')) - zk_conn.create('/nodes/{}/memused'.format(myhostname), '0'.encode('ascii')) - zk_conn.create('/nodes/{}/cpuload'.format(myhostname), '0.0'.encode('ascii')) - zk_conn.create('/nodes/{}/runningdomains'.format(myhostname), ''.encode('ascii')) - zk_conn.create('/nodes/{}/domainscount'.format(myhostname), '0'.encode('ascii')) + transaction.create('/nodes/{}/daemonstate'.format(myhostname), 'stop'.encode('ascii')) + transaction.create('/nodes/{}/domainstate'.format(myhostname), 'ready'.encode('ascii')) + transaction.create('/nodes/{}/staticdata'.format(myhostname), ' '.join(staticdata).encode('ascii')) + transaction.create('/nodes/{}/memfree'.format(myhostname), '0'.encode('ascii')) + transaction.create('/nodes/{}/memused'.format(myhostname), '0'.encode('ascii')) + transaction.create('/nodes/{}/cpuload'.format(myhostname), '0.0'.encode('ascii')) + transaction.create('/nodes/{}/runningdomains'.format(myhostname), ''.encode('ascii')) + transaction.create('/nodes/{}/domainscount'.format(myhostname), '0'.encode('ascii')) # Keepalives and fencing information - zk_conn.create('/nodes/{}/keepalive'.format(myhostname), str(keepalive_time).encode('ascii')) - zk_conn.create('/nodes/{}/ipmihostname'.format(myhostname), config['ipmi_hostname'].encode('ascii')) - zk_conn.create('/nodes/{}/ipmiusername'.format(myhostname), config['ipmi_username'].encode('ascii')) - zk_conn.create('/nodes/{}/ipmipassword'.format(myhostname), config['ipmi_password'].encode('ascii')) + transaction.create('/nodes/{}/keepalive'.format(myhostname), str(keepalive_time).encode('ascii')) + transaction.create('/nodes/{}/ipmihostname'.format(myhostname), config['ipmi_hostname'].encode('ascii')) + transaction.create('/nodes/{}/ipmiusername'.format(myhostname), config['ipmi_username'].encode('ascii')) + transaction.create('/nodes/{}/ipmipassword'.format(myhostname), config['ipmi_password'].encode('ascii')) + transaction.commit() zk_conn.set('/nodes/{}/daemonstate'.format(myhostname), 'init'.encode('ascii'))