def test_cluster_relationships(appliance, soft_assert): """Tests vm power options from on Metadata: test_flag: inventory Polarion: assignee: pvala casecomponent: Reporting caseimportance: high initialEstimate: 1/6h """ report = appliance.collections.reports.instantiate( type="Relationships", subtype="Virtual Machines, Folders, Clusters", menu_name="Cluster Relationships").queue(wait_for_finish=True) for relation in report.data.rows: name = relation["Name"] provider_name = relation["Provider Name"] if not provider_name.strip(): # If no provider name specified, ignore it continue provider = get_crud_by_name(provider_name) host_name = relation["Host Name"].strip() cluster_list = provider.mgmt.list_clusters() if isinstance( provider, SCVMMProvider) else provider.mgmt.list_cluster() verified_cluster = [item for item in cluster_list if name in item] soft_assert(verified_cluster, "Cluster {} not found in {}".format(name, provider_name)) if not host_name: continue # No host name host_ip = resolve_hostname(host_name, force=True) if host_ip is None: # Don't check continue host_list = provider.mgmt.list_host() for host in host_list: if ip_address.match(host) is None: host_is_ip = False ip_from_provider = resolve_hostname(host, force=True) else: host_is_ip = True ip_from_provider = host if not host_is_ip: # Strings first if host == host_name: break elif host_name.startswith(host): break elif ip_from_provider is not None and ip_from_provider == host_ip: break else: if host_ip == ip_from_provider: break else: soft_assert( False, "Hostname {} not found in {}".format(host_name, provider_name))
def test_cluster_relationships(appliance, soft_assert): """Tests vm power options from on Metadata: test_flag: inventory Polarion: assignee: pvala casecomponent: Reporting caseimportance: high initialEstimate: 1/6h """ report = appliance.collections.reports.instantiate( type="Relationships", subtype="Virtual Machines, Folders, Clusters", menu_name="Cluster Relationships" ).queue(wait_for_finish=True) for relation in report.data.rows: name = relation["Name"] provider_name = relation["Provider Name"] if not provider_name.strip(): # If no provider name specified, ignore it continue provider = get_crud_by_name(provider_name) host_name = relation["Host Name"].strip() cluster_list = provider.mgmt.list_clusters() if isinstance( provider, SCVMMProvider) else provider.mgmt.list_cluster() verified_cluster = [item for item in cluster_list if name in item] soft_assert(verified_cluster, "Cluster {} not found in {}".format(name, provider_name)) if not host_name: continue # No host name host_ip = resolve_hostname(host_name, force=True) if host_ip is None: # Don't check continue host_list = provider.mgmt.list_hosts() if isinstance( provider, SCVMMProvider) else provider.mgmt.list_host() for host in host_list: if ip_address.match(host) is None: host_is_ip = False ip_from_provider = resolve_hostname(host, force=True) else: host_is_ip = True ip_from_provider = host if not host_is_ip: # Strings first if host == host_name: break elif host_name.startswith(host): break elif ip_from_provider is not None and ip_from_provider == host_ip: break else: if host_ip == ip_from_provider: break else: soft_assert(False, "Hostname {} not found in {}".format(host_name, provider_name))
def test_cluster_relationships(soft_assert): path = [ "Relationships", "Virtual Machines, Folders, Clusters", "Cluster Relationships" ] report = CannedSavedReport.new(path) for relation in report.data.rows: name = relation["Name"] provider_name = relation["Provider Name"] if not provider_name.strip(): # If no provider name specified, ignore it continue provider = get_crud_by_name(provider_name).mgmt host_name = relation["Host Name"].strip() verified_cluster = [ item for item in provider.list_cluster() if name in item ] soft_assert(verified_cluster, "Cluster {} not found in {}".format(name, provider_name)) if not host_name: continue # No host name host_ip = resolve_hostname(host_name, force=True) if host_ip is None: # Don't check continue for host in provider.list_host(): if ip_address.match(host) is None: host_is_ip = False ip_from_provider = resolve_hostname(host, force=True) else: host_is_ip = True ip_from_provider = host if not host_is_ip: # Strings first if host == host_name: break elif host_name.startswith(host): break elif ip_from_provider is not None and ip_from_provider == host_ip: break else: if host_ip == ip_from_provider: break else: soft_assert( False, "Hostname {} not found in {}".format(host_name, provider_name))
def pytest_generate_tests(metafunc): argnames, argvalues, idlist = testgen.providers_by_class( metafunc, [VMwareProvider]) argnames = argnames + ["_host_provider"] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) # TODO # All this should be replaced with a proper ProviderFilter passed to testgen.providers() if args['provider'].type != "virtualcenter": continue hosts = args['provider'].data.get("hosts", []) if not hosts: continue version = args['provider'].data.get("version") if version is None: # No version, no test continue if Version(version) < "5.0": # Ignore lesser than 5 continue host = hosts[0] ip_address = resolve_hostname(host["name"]) endpoint = VirtualCenterEndpoint( credentials=host["credentials"]["default"], hostname=host["name"], ip_address=ip_address) # Mock provider data provider_data = {} provider_data.update(args['provider'].data) provider_data["name"] = host["name"] provider_data["hostname"] = host["name"] provider_data["ipaddress"] = ip_address provider_data.pop("host_provisioning", None) provider_data["hosts"] = [host] provider_data["discovery_range"] = {} provider_data["discovery_range"]["start"] = ip_address provider_data["discovery_range"]["end"] = ip_address appliance = find_appliance(metafunc, require=False) host_provider = appliance.collections.infra_providers.instantiate( prov_class=VMwareProvider, name=host["name"], endpoints=endpoint, provider_data=provider_data) argvalues[i].append(host_provider) idlist[i] = "{}/{}".format(args['provider'].key, host["name"]) new_idlist.append(idlist[i]) new_argvalues.append(argvalues[i]) testgen.parametrize(metafunc, argnames, new_argvalues, ids=new_idlist, scope="module")
def test_cluster_relationships(appliance, soft_assert): report = appliance.collections.reports.instantiate( type="Relationships", subtype="Virtual Machines, Folders, Clusters", menu_name="Cluster Relationships").queue(wait_for_finish=True) for relation in report.data.rows: name = relation["Name"] provider_name = relation["Provider Name"] if not provider_name.strip(): # If no provider name specified, ignore it continue provider = get_crud_by_name(provider_name).mgmt host_name = relation["Host Name"].strip() verified_cluster = [ item for item in provider.list_cluster() if name in item ] soft_assert(verified_cluster, "Cluster {} not found in {}".format(name, provider_name)) if not host_name: continue # No host name host_ip = resolve_hostname(host_name, force=True) if host_ip is None: # Don't check continue for host in provider.list_host(): if ip_address.match(host) is None: host_is_ip = False ip_from_provider = resolve_hostname(host, force=True) else: host_is_ip = True ip_from_provider = host if not host_is_ip: # Strings first if host == host_name: break elif host_name.startswith(host): break elif ip_from_provider is not None and ip_from_provider == host_ip: break else: if host_ip == ip_from_provider: break else: soft_assert( False, "Hostname {} not found in {}".format(host_name, provider_name))
def pytest_generate_tests(metafunc): argnames, argvalues, idlist = testgen.providers_by_class(metafunc, [VMwareProvider]) argnames = argnames + ["_host_provider"] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) # TODO # All this should be replaced with a proper ProviderFilter passed to testgen.providers() if args['provider'].type != "virtualcenter": continue hosts = args['provider'].data.get("hosts", []) if not hosts: continue version = args['provider'].data.get("version") if version is None: # No version, no test continue if Version(version) < "5.0": # Ignore lesser than 5 continue host = hosts[0] ip_address = resolve_hostname(host["name"]) endpoint = VirtualCenterEndpoint( credentials=host["credentials"]["default"], hostname=host["name"], ip_address=ip_address ) # Mock provider data provider_data = {} provider_data.update(args['provider'].data) provider_data["name"] = host["name"] provider_data["hostname"] = host["name"] provider_data["ipaddress"] = ip_address provider_data.pop("host_provisioning", None) provider_data["hosts"] = [host] provider_data["discovery_range"] = {} provider_data["discovery_range"]["start"] = ip_address provider_data["discovery_range"]["end"] = ip_address appliance = find_appliance(metafunc, require=False) host_provider = appliance.collections.infra_providers.instantiate( prov_class=VMwareProvider, name=host["name"], endpoints=endpoint, provider_data=provider_data) argvalues[i].append(host_provider) idlist[i] = "{}/{}".format(args['provider'].key, host["name"]) new_idlist.append(idlist[i]) new_argvalues.append(argvalues[i]) testgen.parametrize(metafunc, argnames, new_argvalues, ids=new_idlist, scope="module")
def test_cluster_relationships(appliance, soft_assert): report = appliance.collections.reports.instantiate( type="Relationships", subtype="Virtual Machines, Folders, Clusters", menu_name="Cluster Relationships" ).queue(wait_for_finish=True) for relation in report.data.rows: name = relation["Name"] provider_name = relation["Provider Name"] if not provider_name.strip(): # If no provider name specified, ignore it continue provider = get_crud_by_name(provider_name).mgmt host_name = relation["Host Name"].strip() verified_cluster = [item for item in provider.list_cluster() if name in item] soft_assert(verified_cluster, "Cluster {} not found in {}".format(name, provider_name)) if not host_name: continue # No host name host_ip = resolve_hostname(host_name, force=True) if host_ip is None: # Don't check continue for host in provider.list_host(): if ip_address.match(host) is None: host_is_ip = False ip_from_provider = resolve_hostname(host, force=True) else: host_is_ip = True ip_from_provider = host if not host_is_ip: # Strings first if host == host_name: break elif host_name.startswith(host): break elif ip_from_provider is not None and ip_from_provider == host_ip: break else: if host_ip == ip_from_provider: break else: soft_assert(False, "Hostname {} not found in {}".format(host_name, provider_name))
def test_cluster_relationships(soft_assert): path = ["Relationships", "Virtual Machines, Folders, Clusters", "Cluster Relationships"] report = CannedSavedReport.new(path) for relation in report.data.rows: name = relation["Name"] provider_name = relation["Provider Name"] if not provider_name.strip(): # If no provider name specified, ignore it continue provider = get_crud_by_name(provider_name).mgmt host_name = relation["Host Name"].strip() soft_assert(name in provider.list_cluster(), "Cluster {} not found in {}".format( name, provider_name )) if not host_name: continue # No host name host_ip = resolve_hostname(host_name, force=True) if host_ip is None: # Don't check continue for host in provider.list_host(): if ip_address.match(host) is None: host_is_ip = False ip_from_provider = resolve_hostname(host, force=True) else: host_is_ip = True ip_from_provider = host if not host_is_ip: # Strings first if host == host_name: break elif host_name.startswith(host): break elif ip_from_provider is not None and ip_from_provider == host_ip: break else: if host_ip == ip_from_provider: break else: soft_assert(False, "Hostname {} not found in {}".format(host_name, provider_name))
def ip_address(self): return getattr(self.default_endpoint, "ipaddress", resolve_hostname(str(self.hostname)))
def check_ip(): ip = self._vm_mgmt.ip # get_ip_address might return None return ip if ip and resolve_hostname(ip) else False