Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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')
Ejemplo n.º 7
0
        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(
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
 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)