X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwcal%2Fplugins%2Fvala%2Frwcal_openstack%2Frift%2Frwcal%2Fopenstack%2Fprepare_vm.py;h=972457f416cff392755d7bb5b8f172ded17b6bed;hb=refs%2Fchanges%2F77%2F5477%2F1;hp=7f3800bad0fb840bfbe4cdf64ffc9ca822c338e4;hpb=6f1a3fe149e4a6b9803382cb299c902f4cf58ec9;p=osm%2FSO.git diff --git a/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/prepare_vm.py b/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/prepare_vm.py index 7f3800ba..972457f4 100644 --- a/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/prepare_vm.py +++ b/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/prepare_vm.py @@ -28,7 +28,6 @@ import fcntl logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger() - rwlog_handler = rwlogger.RwLogger(category="rw-cal-log", subcategory="openstack",) logger.addHandler(rwlog_handler) @@ -60,21 +59,26 @@ class FileLock: def allocate_floating_ip(drv, argument): #### Allocate a floating_ip - available_ip = [ ip for ip in drv.nova_floating_ip_list() if ip.instance_id == None ] + try: + available_ip = [ ip for ip in drv.nova_floating_ip_list() if ip.instance_id == None ] - if argument.pool_name: - ### Filter further based on IP address - available_ip = [ ip for ip in available_ip if ip.pool == argument.pool_name ] - - if not available_ip: - logger.info(" No free floating_ips available. Allocating fresh from pool: %s" %(os.getpid(), argument.pool_name)) - pool_name = argument.pool_name if argument.pool_name is not None else None - floating_ip = drv.nova_floating_ip_create(pool_name) - else: - floating_ip = random.choice(available_ip) - logger.info(" Selected floating_ip: %s from available free pool" %(os.getpid(), floating_ip)) + if argument.pool_name: + ### Filter further based on IP address + available_ip = [ ip for ip in available_ip if ip.pool == argument.pool_name ] + + if not available_ip: + logger.info(" No free floating_ips available. Allocating fresh from pool: %s" %(os.getpid(), argument.pool_name)) + pool_name = argument.pool_name if argument.pool_name is not None else None + floating_ip = drv.nova_floating_ip_create(pool_name) + else: + floating_ip = random.choice(available_ip) + logger.info(" Selected floating_ip: %s from available free pool" %(os.getpid(), floating_ip)) - return floating_ip + return floating_ip + + except Exception as e: + logger.error("Floating IP Allocation Failed - %s", e) + return None def handle_floating_ip_assignment(drv, server, argument, management_ip): @@ -116,8 +120,12 @@ def assign_floating_ip_address(drv, argument): for n_info in network_info: if 'OS-EXT-IPS:type' in n_info and n_info['OS-EXT-IPS:type'] == 'fixed': management_ip = n_info['addr'] - handle_floating_ip_assignment(drv, server, argument, management_ip) - return + try: + handle_floating_ip_assignment(drv, server, argument, management_ip) + return + except Exception as e: + logger.error("Exception in assign_floating_ip_address : %s", e) + raise else: logger.info("Waiting for management_ip to be assigned to server: %s" %(server['name'])) time.sleep(1) @@ -218,10 +226,13 @@ def prepare_vm_after_boot(drv,argument): else: logger.error("Server %s did not reach active state in %d seconds. Current state: %s" %(server['name'], wait_time, server['status'])) sys.exit(4) - #create_port_metadata(drv, argument) create_volume_metadata(drv, argument) - assign_floating_ip_address(drv, argument) + try: + assign_floating_ip_address(drv, argument) + except Exception as e: + logger.error("Exception in prepare_vm_after_boot : %s", e) + raise def main(): @@ -365,10 +376,23 @@ def main(): region = argument.region) drv = openstack_drv.OpenstackDriver(logger = logger, **kwargs) - prepare_vm_after_boot(drv, argument) - sys.exit(0) + try: + prepare_vm_after_boot(drv, argument) + except Exception as e: + logger.error("Exception in main of prepare_vm : %s", e) + raise if __name__ == "__main__": - main() + try: + main() + # Do not print anything in this script. This is a subprocess spawned by rwmain + # and the following print determines the success or failure of this script. + print("True",end="") + except Exception as e: + logger.error("Exception in prepare_vm : %s", e) + # Do not print anything in this script. This is a subprocess spawned by rwmain + # and the following print determines the success or failure of this script. + print("False+" + str(e),end="") + sys.exit(2)