Use full ZKHandler in provisioner

Required due to references to self from Celery that are replaced by the
ZKConnection self instance.
This commit is contained in:
Joshua Boniface 2021-05-30 15:59:37 -04:00
parent 9be426507a
commit 60db800d9c
1 changed files with 12 additions and 5 deletions

View File

@ -26,7 +26,7 @@ import re
from pvcapid.Daemon import config, strtobool from pvcapid.Daemon import config, strtobool
from daemon_lib.zkhandler import ZKConnection from daemon_lib.zkhandler import ZKHandler
import daemon_lib.common as pvc_common import daemon_lib.common as pvc_common
import daemon_lib.node as pvc_node import daemon_lib.node as pvc_node
@ -1051,8 +1051,7 @@ def delete_profile(name):
# #
# Main VM provisioning function - executed by the Celery worker # Main VM provisioning function - executed by the Celery worker
# #
@ZKConnection(config) def create_vm(self, vm_name, vm_profile, define_vm=True, start_vm=True, script_run_args=[]):
def create_vm(self, zkhandler, vm_name, vm_profile, define_vm=True, start_vm=True, script_run_args=[]):
# Runtime imports # Runtime imports
import time import time
import importlib import importlib
@ -1068,8 +1067,13 @@ def create_vm(self, zkhandler, vm_name, vm_profile, define_vm=True, start_vm=Tru
try: try:
db_conn, db_cur = open_database(config) db_conn, db_cur = open_database(config)
except Exception: except Exception:
print('FATAL - failed to connect to Postgres') raise ClusterError('Failed to connect to Postgres')
raise Exception
try:
zkhandler = ZKHandler(config)
zkhandler.connect()
except Exception:
raise ClusterError('Failed to connect to Zookeeper')
# Phase 1 - setup # Phase 1 - setup
# * Get the profile elements # * Get the profile elements
@ -1646,4 +1650,7 @@ def create_vm(self, zkhandler, vm_name, vm_profile, define_vm=True, start_vm=Tru
retcode, retmsg = pvc_vm.start_vm(zkhandler, vm_name) retcode, retmsg = pvc_vm.start_vm(zkhandler, vm_name)
print(retmsg) print(retmsg)
zkhandler.disconnect()
del zkhandler
return {'status': 'VM "{}" with profile "{}" has been provisioned and started successfully'.format(vm_name, vm_profile), 'current': 10, 'total': 10} return {'status': 'VM "{}" with profile "{}" has been provisioned and started successfully'.format(vm_name, vm_profile), 'current': 10, 'total': 10}