def pytest_generate_tests(metafunc): argnames, argvalues, idlist = testgen.provider_by_type( metafunc, ['virtualcenter']) argnames = argnames + ["_host_provider"] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) if args['provider'].type != "virtualcenter": continue hosts = args['provider'].data.get("hosts", []) if not hosts: continue version = args['provider'].data.get("version", None) if version is None: # No version, no test continue if Version(version) < "5.0": # Ignore lesser than 5 continue host = hosts[0] creds = credentials[host["credentials"]] ip_address = resolve_hostname(host["name"]) cred = VMwareProvider.Credential(principal=creds["username"], secret=creds["password"], verify_secret=creds["password"]) # 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["credentials"] = host["credentials"] 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 host_provider = VMwareProvider( name=host["name"], hostname=host["name"], ip_address=ip_address, credentials={'default': cred}, 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 ip_address(self): if hasattr(self.default_endpoint, 'ipaddress'): return self.default_endpoint.ipaddress else: if self.hostname: return resolve_hostname(self.hostname) else: return None
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", None) if version is None: # No version, no test continue if Version(version) < "5.0": # Ignore lesser than 5 continue host = hosts[0] creds = credentials[host["credentials"]] ip_address = resolve_hostname(host["name"]) cred = VMwareProvider.Credential( principal=creds["username"], secret=creds["password"], verify_secret=creds["password"] ) # 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["credentials"] = host["credentials"] 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 host_provider = VMwareProvider( name=host["name"], hostname=host["name"], ip_address=ip_address, credentials={'default': cred}, 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(soft_assert, setup_a_provider): 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_mgmt_by_name(provider_name) 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 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", None) 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 = DefaultEndpoint(credentials=host["credentials"], hostname=host["name"]) # 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 host_provider = VMwareProvider(name=host["name"], ip_address=ip_address, 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(soft_assert, setup_a_provider): 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_mgmt_by_name(provider_name) 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 pytest_generate_tests(metafunc): arg_names = "provider", "provider_data", "original_provider_key" arg_values = [] arg_ids = [] for provider_key, provider in cfme_data.get("management_systems", {}).iteritems(): if provider["type"] != "virtualcenter": continue hosts = provider.get("hosts", []) if not hosts: continue version = provider.get("version", None) if version is None: # No version, no test continue if Version(version) < "5.0": # Ignore lesser than 5 continue host = random.choice(hosts) creds = credentials[host["credentials"]] ip_address = resolve_hostname(host["name"]) cred = VMwareProvider.Credential( principal=creds["username"], secret=creds["password"], verify_secret=creds["password"] ) # Mock provider data provider_data = {} provider_data.update(provider) provider_data["name"] = host["name"] provider_data["hostname"] = host["name"] provider_data["ipaddress"] = ip_address provider_data["credentials"] = host["credentials"] 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 host_provider = VMwareProvider( name=host["name"], hostname=host["name"], ip_address=ip_address, credentials={'default': cred}, provider_data=provider_data, ) arg_values.append([host_provider, provider_data, provider_key]) arg_ids.append("{}/random_host".format(provider_key)) metafunc.parametrize(arg_names, arg_values, ids=arg_ids, scope="module")
def ip_address(self): return getattr(self.default_endpoint, "ipaddress", resolve_hostname(str(self.hostname)))