def create_vm(vms, source_vapp_resource, vm_cfg, master_name, master=False): try: global lastMasterIp vm = vapp.get_vm(vm_cfg['name']) vm_obj = VM(client, resource=vm) ip = vm_obj.list_nics()[0]['ip_address'].ljust(20) if master: #gen_key(vm_cfg['name'],os.environ['SSH_USERNAME'],os.environ['SSH_PASSWORD'], ip) lastMasterIp = ip if vm_obj.is_powered_on() == True: print(" VM '{0}' ... OK".format(vm_cfg['name'])) else: print(" VM '{0}' ... DOWN -> starting ...\r".format( vm_cfg['name']), end='') result = vm_obj.power_on() handle_task(client, result) print(" VM '{0}' ... UP {1}".format(vm_cfg['name'], "".ljust(20))) except EntityNotFoundException: print(" VM '{0}' ... NONE -> marked for creation ...".format( vm_cfg['name'])) spec = { 'source_vm_name': vm_cfg['source_vm_name'], 'vapp': source_vapp_resource } spec['target_vm_name'] = vm_cfg['name'] spec['hostname'] = vm_cfg['hostname'] vms.append(spec)
def get_all_host(host, org, user, password, vdc): #Linux guest hosts linux_os_list = ['CentOS 7 (64-bit)', 'Ubuntu Linux (64-bit)', 'CentOS 8 (64-bit)'] #Windows guest hosts win_os_list = ['Microsoft Windows Server 2016 or later (64-bit)', 'Microsoft Windows Server 2019 (64-bit)'] #Host list of all Vapps host_list = {} client = Client(host, verify_ssl_certs=True,#SSL log_requests=False, log_headers=False, log_bodies=False) client.set_highest_supported_version() client.set_credentials(BasicLoginCredentials(user, org, password)) org_resource = client.get_org() org = Org(client, resource=org_resource) vdc_resource = org.get_vdc(vdc) vdc = VDC(client, resource=vdc_resource) vapps = vdc.list_resources() win_list = [] linux_list = [] other_os_list = [] hostvars = {} for vapp in vapps: if vapp["type"] == "application/vnd.vmware.vcloud.vApp+xml": currentHref = vdc.get_vapp_href(vapp["name"]) currentVapp = VApp(client, href=currentHref) for vm in currentVapp.get_all_vms(): vmName = vm.get('name') vmOs = VM(client, resource=vm) vOs = vmOs.get_operating_system_section() try: vmIp = currentVapp.get_primary_ip(vmName) except: pass if vmOs.is_powered_on(): if vOs.Description in win_os_list: win_list.append(vmName) hostvars.update({vmName:{'ansible_host':vmIp}}) elif vOs.Description in linux_os_list: linux_list.append(vmName) hostvars.update({vmName:{'ansible_host':vmIp}}) else: other_os_list.append(vmName) hostvars.update({vmName:{'ansible_host':vmIp}}) host_list.update({'windows':{'hosts':win_list}}) host_list.update({'linux':{'hosts':linux_list}}) host_list.update({'others':{'hosts':other_os_list}}) host_list.update({'_meta':{'hostvars':hostvars}}) return host_list
def test_0060_vm_power_operations(self): """Test the method related to power operations in vm.py. This test passes if all the power operations are successful. """ logger = Environment.get_default_logger() vm_name = TestVM._test_vapp_first_vm_name vm = VM(client=TestVM._client, href=TestVM._test_vapp_first_vm_href) # make sure the vm is powered on before running tests logger.debug('Making sure vm ' + vm_name + ' is powered on.') if vm.is_suspended(): task = vm.deploy() TestVM._client.get_task_monitor().wait_for_success(task=task) vm.reload() if not vm.is_powered_on(): task = vm.power_on() TestVM._client.get_task_monitor().wait_for_success(task=task) vm.reload() logger.debug('Un-deploying vm ' + vm_name) task = vm.undeploy() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Deploying vm ' + vm_name) vm.reload() task = vm.deploy(power_on=False) result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering on vm ' + vm_name) vm.reload() task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Reseting (power) vm ' + vm_name) vm.reload() task = vm.power_reset() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering off vm ' + vm_name) vm.reload() task = vm.power_off() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering back on vm ' + vm_name) vm.reload() task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value)
def test_0071_consolidate(self): """Test the method related to consolidate in vm.py. This test passes if consolidate operation is successful. """ logger = Environment.get_default_logger() vm_name = TestVM._test_vapp_first_vm_name vm = VM(TestVM._sys_admin_client, href=TestVM._test_vapp_first_vm_href) vm.reload() if vm.is_powered_on(): task = vm.power_off() result = TestVM._sys_admin_client.\ get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) vm.reload() logger.debug('Consolidating VM: ' + vm_name) task = vm.consolidate() result = TestVM._sys_admin_client.\ get_task_monitor().wait_for_success(task=task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value)
def test_0210_poweron_and_force_recustomization(self): """Test the method related to power_on_and_force_recustomization in vm.py. This test passes if force customization at power on operation is successful. """ vm = VM(TestVM._sys_admin_client, href=TestVM._test_vapp_vmtools_vm_href) if vm.is_powered_on(): task = vm.power_off() TestVM._sys_admin_client. \ get_task_monitor().wait_for_success(task=task) task = vm.undeploy() TestVM._sys_admin_client. \ get_task_monitor().wait_for_success(task=task) vm.reload() task = vm.power_on_and_force_recustomization() result = TestVM._sys_admin_client. \ get_task_monitor().wait_for_success(task=task) status = vm.get_guest_customization_status() self.assertEqual(status, 'GC_PENDING')
create_slave_vm(vms, vm_cfg['name'], source_slave_vapp_resource, vm_slave_cfg) print("Creating (if needed) ...") result = vapp.add_vms(vms) handle_task(client, result) print("Statuses ...") while (vapp.get_all_vms() is None or len(vapp.get_all_vms()) < len(cfg.vapp['vms'])): print(" VMs ... {0}\r".format("waiting full start ...".ljust(20)), end='') vapp.reload() for vm in vapp.get_all_vms(): vm_obj = VM(client, resource=vm) while (vm_obj.is_powered_on() == False): print(" VM '{0}' ... {1}\r".format(vm.get('name'), "DOWN (waiting)".ljust(20)), end='') vm_obj.reload() time.sleep(5) print(" VM '{0}' ... {1}\r".format(vm.get('name'), "UP").ljust(20), end='') while (vm_obj.list_nics() is None or (len(vm_obj.list_nics()) == 0) or ('ip_address' not in vm_obj.list_nics()[0].keys())): print(" VM '{0}' ... {1} - IP = {2}\r".format( vm.get('name'), "UP", "... (waiting)".ljust(20)), end='') vm_obj.reload() time.sleep(5) print(" VM '{0}' ... {1} - IP = {2}".format(
except Exception: print(" VDC '{0}' ... KO. Exiting.".format(os.environ['VCLOUD_VDC_NAME'])) exit(0) vdc.reload() vapp_resource = vdc.get_vapp(cfg.vapp['name']) vapp = VApp(client, resource=vapp_resource) vms = [] for vm_cfg in cfg.vapp['vms']: try: vm = vapp.get_vm(vm_cfg['name']) vm_obj = VM(client, resource=vm) if vm_obj.is_powered_on() == True: print(" VM '{0}' ... OK".format(vm_cfg['name'])) else: print(" VM '{0}' ... DOWN".format(vm_cfg['name']), end='') except EntityNotFoundException: print(" VM '{0}' ... NONE ".format(vm_cfg['name'])) print("Statuses ...") while (vapp.get_all_vms() is None or len(vapp.get_all_vms()) < len(cfg.vapp['vms'])): print(" VMs ... {0}\r".format("waiting full start ...".ljust(20)), end='') vapp.reload() time.sleep(5) for vm in vapp.get_all_vms(): vm_obj = VM(client, resource=vm)
def test_0060_vm_power_operations(self): """Test the method related to power operations in vm.py. This test passes if all the power operations are successful. """ logger = Environment.get_default_logger() vm_name = TestVM._test_vapp_first_vm_name vm = VM(client=TestVM._client, href=TestVM._test_vapp_first_vm_href) # make sure the vm is powered on before running tests logger.debug('Making sure vm ' + vm_name + ' is powered on.') if vm.is_suspended(): task = vm.deploy() TestVM._client.get_task_monitor().wait_for_success(task=task) vm.reload() if not vm.is_powered_on(): task = vm.power_on() TestVM._client.get_task_monitor().wait_for_success(task=task) vm.reload() logger.debug('Un-deploying vm ' + vm_name) task = vm.undeploy() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Deploying vm ' + vm_name) vm.reload() task = vm.deploy(power_on=False) result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering on vm ' + vm_name) vm.reload() task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Reseting (power) vm ' + vm_name) vm.reload() task = vm.power_reset() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering off vm ' + vm_name) vm.reload() task = vm.power_off() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering back on vm ' + vm_name) vm.reload() task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Suspend a vm ' + vm_name) vm.reload() task = vm.suspend() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Discard suspended state of a vm ' + vm_name) vm.reload() if vm.is_suspended(): task = vm.discard_suspended_state() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering back on vm ' + vm_name) vm.reload() if not vm.is_powered_on(): task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value)
def test_0060_vm_power_operations(self): """Test the method related to power operations in vm.py. This test passes if all the power operations are successful. """ logger = Environment.get_default_logger() vm_name = TestVM._test_vapp_first_vm_name vm = VM(client=TestVM._client, href=TestVM._test_vapp_first_vm_href) # make sure the vm is powered on before running tests logger.debug('Making sure vm ' + vm_name + ' is powered on.') if vm.is_suspended(): task = vm.deploy() TestVM._client.get_task_monitor().wait_for_success(task=task) vm.reload() if not vm.is_powered_on(): task = vm.power_on() TestVM._client.get_task_monitor().wait_for_success(task=task) vm.reload() logger.debug('Un-deploying vm ' + vm_name) task = vm.undeploy() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Deploying vm ' + vm_name) vm.reload() task = vm.deploy(power_on=False) result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering on vm ' + vm_name) vm.reload() task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Reseting (power) vm ' + vm_name) vm.reload() task = vm.power_reset() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering off vm ' + vm_name) vm.reload() task = vm.power_off() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) logger.debug('Powering back on vm ' + vm_name) vm.reload() task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) # discard suspend state sometime show inconsistent behavior and puts # VM in partially suspended state. Commenting theis scenerio to avoid # this failure. # logger.debug('Suspend a vm ' + vm_name) # vm.reload() # task = vm.suspend() # result = TestVM._client.get_task_monitor().wait_for_success(task) # self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) # logger.debug('Discard suspended state of a vm ' + vm_name) # vm.reload() # if vm.is_suspended(): # task = vm.discard_suspended_state() # result = TestVM._client.get_task_monitor().wait_for_success(task) # self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value) # logger.debug('Powering back on vm ' + vm_name) vm.reload() if not vm.is_powered_on(): task = vm.power_on() result = TestVM._client.get_task_monitor().wait_for_success(task) self.assertEqual(result.get('status'), TaskStatus.SUCCESS.value)