def pytest_generate_tests(metafunc): # Filter out providers without host provisioning data defined argnames, argvalues, idlist = testgen.providers_by_class( metafunc, [InfraProvider], required_fields=[ ['host_provisioning', 'pxe_server'], ['host_provisioning', 'pxe_image'], ['host_provisioning', 'pxe_image_type'], ['host_provisioning', 'pxe_kickstart'], ['host_provisioning', 'datacenter'], ['host_provisioning', 'cluster'], ['host_provisioning', 'datastores'], ['host_provisioning', 'hostname'], ['host_provisioning', 'root_password'], ['host_provisioning', 'ip_addr'], ['host_provisioning', 'subnet_mask'], ['host_provisioning', 'gateway'], ['host_provisioning', 'dns'], ]) pargnames, pargvalues, pidlist = testgen.pxe_servers(metafunc) argnames = argnames + ['pxe_server', 'pxe_cust_template'] pxe_server_names = [pval[0] for pval in pargvalues] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) try: prov_data = args['provider'].data['host_provisioning'] except KeyError: # No host provisioning data available continue stream = prov_data.get('runs_on_stream', '') if not version.current_version().is_in_series(str(stream)): continue pxe_server_name = prov_data.get('pxe_server', '') if pxe_server_name not in pxe_server_names: continue pxe_cust_template = prov_data.get('pxe_kickstart', '') if pxe_cust_template not in cfme_data.get('customization_templates', {}).keys(): continue argvalues[i].append(get_pxe_server_from_config(pxe_server_name)) argvalues[i].append(get_template_from_config(pxe_cust_template)) new_idlist.append(idlist[i]) new_argvalues.append(argvalues[i]) testgen.parametrize(metafunc, argnames, new_argvalues, ids=new_idlist, scope="module")
def pytest_generate_tests(metafunc): # Filter out providers without provisioning data or hosts defined argnames, argvalues, idlist = testgen.providers_by_class( metafunc, [InfraProvider], required_fields=[['provisioning', 'pxe_server'], ['provisioning', 'pxe_image'], ['provisioning', 'pxe_image_type'], ['provisioning', 'pxe_kickstart'], ['provisioning', 'pxe_template'], ['provisioning', 'datastore'], ['provisioning', 'host'], ['provisioning', 'pxe_root_password'], ['provisioning', 'vlan']]) pargnames, pargvalues, pidlist = testgen.pxe_servers(metafunc) argnames = argnames + ['pxe_server', 'pxe_cust_template'] pxe_server_names = [pval[0] for pval in pargvalues] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) provider = args['provider'] if provider.one_of(SCVMMProvider): continue provisioning_data = provider.data['provisioning'] pxe_server_name = provisioning_data['pxe_server'] if pxe_server_name not in pxe_server_names: continue pxe_cust_template = provisioning_data['pxe_kickstart'] if pxe_cust_template not in cfme_data.get('customization_templates', {}).keys(): continue argvalues[i].append(get_pxe_server_from_config(pxe_server_name)) argvalues[i].append(get_template_from_config(pxe_cust_template)) new_idlist.append(idlist[i]) new_argvalues.append(argvalues[i]) testgen.parametrize(metafunc, argnames, new_argvalues, ids=new_idlist, scope="module")
def pytest_generate_tests(metafunc): # Filter out providers without provisioning data or hosts defined argnames, argvalues, idlist = testgen.infra_providers( metafunc, 'provisioning') pargnames, pargvalues, pidlist = testgen.pxe_servers(metafunc) argnames = argnames + ['pxe_server', 'pxe_cust_template'] pxe_server_names = [pval[0] for pval in pargvalues] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) if not args['provisioning']: # No provisioning data available continue if args['provider'].type == "scvmm": continue # required keys should be a subset of the dict keys set if not { 'pxe_template', 'host', 'datastore', 'pxe_server', 'pxe_image', 'pxe_kickstart', 'pxe_root_password', 'pxe_image_type', 'vlan' }.issubset(args['provisioning'].viewkeys()): # Need all for template provisioning continue pxe_server_name = args['provisioning']['pxe_server'] if pxe_server_name not in pxe_server_names: continue pxe_cust_template = args['provisioning']['pxe_kickstart'] if pxe_cust_template not in cfme_data.get('customization_templates', {}).keys(): continue argvalues[i].append(get_pxe_server_from_config(pxe_server_name)) argvalues[i].append(get_template_from_config(pxe_cust_template)) new_idlist.append(idlist[i]) new_argvalues.append(argvalues[i]) testgen.parametrize(metafunc, argnames, new_argvalues, ids=new_idlist, scope="module")
def pytest_generate_tests(metafunc): # Filter out providers without provisioning data or hosts defined argnames, argvalues, idlist = testgen.providers_by_class( metafunc, [InfraProvider], required_fields=[ ['provisioning', 'pxe_server'], ['provisioning', 'pxe_image'], ['provisioning', 'pxe_image_type'], ['provisioning', 'pxe_kickstart'], ['provisioning', 'pxe_template'], ['provisioning', 'datastore'], ['provisioning', 'host'], ['provisioning', 'pxe_root_password'], ['provisioning', 'vlan'] ] ) pargnames, pargvalues, pidlist = testgen.pxe_servers(metafunc) argnames = argnames + ['pxe_server', 'pxe_cust_template'] pxe_server_names = [pval[0] for pval in pargvalues] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) provider = args['provider'] if provider.one_of(SCVMMProvider): continue provisioning_data = provider.data['provisioning'] pxe_server_name = provisioning_data['pxe_server'] if pxe_server_name not in pxe_server_names: continue pxe_cust_template = provisioning_data['pxe_kickstart'] if pxe_cust_template not in cfme_data.get('customization_templates', {}).keys(): continue argvalues[i].append(get_pxe_server_from_config(pxe_server_name)) argvalues[i].append(get_template_from_config(pxe_cust_template)) new_idlist.append(idlist[i]) new_argvalues.append(argvalues[i]) testgen.parametrize(metafunc, argnames, new_argvalues, ids=new_idlist, scope="module")
def pxe_servers(metafunc): """Provides pxe data based on the server_type Args: server_name: One of the server names to filter by, or 'all'. """ argnames = ["pxe_name", "pxe_server_crud"] argvalues = [] idlist = [] data = cfme_data.get("pxe_servers", {}) for pxe_server in data: argvalues.append([data[pxe_server]["name"], get_pxe_server_from_config(pxe_server)]) idlist.append(pxe_server) return argnames, argvalues, idlist
def pxe_servers(metafunc): """Provides pxe data based on the server_type Args: server_name: One of the server names to filter by, or 'all'. """ argnames = ['pxe_name', 'pxe_server_crud'] argvalues = [] idlist = [] data = cfme_data.get('pxe_servers', {}) for pxe_server in data: argvalues.append([data[pxe_server]['name'], get_pxe_server_from_config(pxe_server)]) idlist.append(pxe_server) return argnames, argvalues, idlist
def pytest_generate_tests(metafunc): # Filter out providers without provisioning data or hosts defined argnames, argvalues, idlist = testgen.infra_providers(metafunc, 'provisioning') pargnames, pargvalues, pidlist = testgen.pxe_servers(metafunc) argnames = argnames + ['pxe_server', 'pxe_cust_template'] pxe_server_names = [pval[0] for pval in pargvalues] new_idlist = [] new_argvalues = [] for i, argvalue_tuple in enumerate(argvalues): args = dict(zip(argnames, argvalue_tuple)) if not args['provisioning']: # No provisioning data available continue if args['provider'].type == "scvmm": continue # required keys should be a subset of the dict keys set if not {'pxe_template', 'host', 'datastore', 'pxe_server', 'pxe_image', 'pxe_kickstart', 'pxe_root_password', 'pxe_image_type', 'vlan'}.issubset(args['provisioning'].viewkeys()): # Need all for template provisioning continue pxe_server_name = args['provisioning']['pxe_server'] if pxe_server_name not in pxe_server_names: continue pxe_cust_template = args['provisioning']['pxe_kickstart'] if pxe_cust_template not in cfme_data.get('customization_templates', {}).keys(): continue argvalues[i].append(get_pxe_server_from_config(pxe_server_name)) argvalues[i].append(get_template_from_config(pxe_cust_template)) new_idlist.append(idlist[i]) new_argvalues.append(argvalues[i]) testgen.parametrize(metafunc, argnames, new_argvalues, ids=new_idlist, scope="module")
def pxe_server(appliance, provider): provisioning_data = provider.data['provisioning'] pxe_server_name = provisioning_data['pxe_server'] return get_pxe_server_from_config(pxe_server_name, appliance=appliance)
def pxe_server_crud(appliance, pxe_name): return get_pxe_server_from_config(pxe_name, appliance=appliance)