def test_positive_update_default_taxonomies(session, module_org, module_loc): """Change the default organization and location of more than one discovered hosts from 'Select Action' drop down :id: 4b491121-f6ee-4a8c-bb0b-daa3d0a75add :Setup: Host should already be discovered :expectedresults: Default Organization and Location should be successfully changed for multiple hosts :BZ: 1634728 :CaseLevel: Integration :CaseImportance: High """ host_names = [create_discovered_host()['name'] for _ in range(2)] new_org = entities.Organization().create() module_loc.organization.append(new_org) module_loc.update(['organization']) new_loc = entities.Location(organization=[module_org]).create() with session: values = session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) assert set(host_names) == {value['Name'] for value in values} session.discoveredhosts.apply_action( 'Assign Organization', host_names, values=dict(organization=new_org.name) ) assert not session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) session.organization.select(org_name=new_org.name) values = session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) assert set(host_names) == {value['Name'] for value in values} session.discoveredhosts.apply_action( 'Assign Location', host_names, values=dict(location=new_loc.name) ) assert not session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) session.location.select(loc_name=new_loc.name) values = session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) assert set(host_names) == {value['Name'] for value in values}
def test_positive_update_default_taxonomies(session, module_org, module_loc): """Change the default organization and location of more than one discovered hosts from 'Select Action' drop down :id: 4b491121-f6ee-4a8c-bb0b-daa3d0a75add :Setup: Host should already be discovered :expectedresults: Default Organization and Location should be successfully changed for multiple hosts :BZ: 1634728 :CaseImportance: High """ host_names = [create_discovered_host()['name'] for _ in range(2)] new_org = entities.Organization().create() module_loc.organization.append(new_org) module_loc.update(['organization']) new_loc = entities.Location(organization=[module_org]).create() with session: values = session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) assert set(host_names) == {value['Name'] for value in values} session.discoveredhosts.apply_action( 'Assign Organization', host_names, values=dict(organization=new_org.name) ) assert not session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) session.organization.select(org_name=new_org.name) values = session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) assert set(host_names) == {value['Name'] for value in values} session.discoveredhosts.apply_action( 'Assign Location', host_names, values=dict(location=new_loc.name) ) assert not session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) session.location.select(loc_name=new_loc.name) values = session.discoveredhosts.search( 'name = "{0}" or name = "{1}"'.format(*host_names) ) assert set(host_names) == {value['Name'] for value in values}
def test_positive_auto_provision_host_with_rule(session, discovery_org, discovery_location, module_host_group): """Create a new discovery rule and automatically create host from discovered host using that discovery rule. Set query as (e.g IP=IP_of_discovered_host) :id: 4488ab9a-d462-4a62-a1a1-e5656c8a8b99 :Setup: Host should already be discovered :expectedresults: Host should reboot and provision :BZ: 1665471, 1731112 :CaseImportance: High """ host_ip = gen_ipaddr() discovered_host_name = create_discovered_host(ip_address=host_ip)['name'] domain = module_host_group.domain.read() discovery_rule = entities.DiscoveryRule( max_count=1, hostgroup=module_host_group, search_=f'ip = {host_ip}', location=[discovery_location], organization=[discovery_org], ).create() with session: session.discoveredhosts.apply_action('Auto Provision', [discovered_host_name]) host_name = f'{discovered_host_name}.{domain.name}' assert session.host.search(host_name)[0]['Name'] == host_name host_values = session.host.get_details(host_name) assert host_values['properties']['properties_table']['Status'] == 'OK' assert host_values['properties']['properties_table'][ 'IP Address'] == host_ip assert ( host_values['properties']['properties_table']['Comment'] == f"Auto-discovered and provisioned via rule '{discovery_rule.name}'" ) assert not session.discoveredhosts.search( f'name = {discovered_host_name}')
def test_positive_auto_provision_host_with_rule( session, module_org, module_loc, module_host_group): """Create a new discovery rule and automatically create host from discovered host using that discovery rule. Set query as (e.g IP=IP_of_discovered_host) :id: 4488ab9a-d462-4a62-a1a1-e5656c8a8b99 :Setup: Host should already be discovered :expectedresults: Host should reboot and provision :CaseLevel: Integration :CaseImportance: High """ host_ip = gen_ipaddr() discovered_host_name = create_discovered_host(ip_address=host_ip)['name'] domain = module_host_group.domain.read() discovery_rule = entities.DiscoveryRule( max_count=1, hostgroup=module_host_group, search_='ip = {0}'.format(host_ip), location=[module_loc], organization=[module_org], ).create() with session: session.discoveredhosts.apply_action( 'Auto Provision', [discovered_host_name] ) host_name = '{0}.{1}'.format(discovered_host_name, domain.name) assert session.host.search(host_name)[0]['Name'] == host_name host_values = session.host.get_details(host_name) assert host_values['properties']['properties_table']['Status'] == 'OK' assert host_values['properties']['properties_table']['IP Address'] == host_ip assert (host_values['properties']['properties_table']['Comment'] == "Auto-discovered and provisioned via rule '{0}'".format(discovery_rule.name)) assert not session.discoveredhosts.search('name = {0}'.format(discovered_host_name))
def test_positive_list_host_based_on_rule_search_query( session, module_org, module_loc, module_discovery_env): """List all the discovered hosts resolved by given rule's search query e.g. all discovered hosts with cpu_count = 2, and list rule's associated hosts. :id: f7473fa2-7349-42d3-9cdb-f74b55d2f440 :Steps: 1. discovered host with cpu_count = 2 2. Define a rule 'rule1' with search query cpu_count = 2 3. Click on 'Discovered Hosts' from rule1 4. Auto Provision the discovered host 5. Click on 'Associated Hosts' from rule1 :expectedresults: 1. After step 3, the rule's Discovered host should be listed. 2. The rule's Associated Host should be listed. :CaseLevel: Integration """ ip_address = gen_ipaddr() cpu_count = gen_integer(2, 10) rule_search = 'cpu_count = {0}'.format(cpu_count) # any way create a host to be sure that this org has more than one host host = entities.Host(organization=module_org, location=module_loc).create() host_group = entities.HostGroup( organization=[module_org], location=[module_loc], medium=host.medium, root_pass=gen_string('alpha'), operatingsystem=host.operatingsystem, ptable=host.ptable, domain=host.domain, architecture=host.architecture, ).create() discovery_rule = entities.DiscoveryRule( hostgroup=host_group, search_=rule_search, organization=[module_org], location=[module_loc] ).create() discovered_host = create_discovered_host( ip_address=ip_address, options={'physicalprocessorcount': cpu_count} ) # create an other discovered host with an other cpu count create_discovered_host(options={'physicalprocessorcount': cpu_count+1}) provisioned_host_name = '{0}.{1}'.format( discovered_host['name'], host.domain.read().name) with session: session.organization.select(org_name=module_org.name) session.location.select(loc_name=module_loc.name) values = session.discoveryrule.read_all() assert discovery_rule.name in [rule['Name'] for rule in values] values = session.discoveryrule.read_discovered_hosts( discovery_rule.name) assert values['searchbox'] == rule_search assert len(values['table']) == 1 assert values['table'][0]['IP Address'] == ip_address assert values['table'][0]['CPUs'] == str(cpu_count) # auto provision the discovered host session.discoveredhosts.apply_action( 'Auto Provision', [discovered_host['name']]) assert not session.discoveredhosts.search( 'name = "{0}"'.format(discovered_host['name'])) values = session.discoveryrule.read_associated_hosts( discovery_rule.name) assert (values['searchbox'] == 'discovery_rule = "{0}"'.format(discovery_rule.name)) assert len(values['table']) == 1 assert values['table'][0]['Name'] == provisioned_host_name values = session.host.get_details(provisioned_host_name) assert (values['properties']['properties_table']['IP Address'] == ip_address)
def test_positive_list_host_based_on_rule_search_query(session, module_org, module_loc, module_discovery_env): """List all the discovered hosts resolved by given rule's search query e.g. all discovered hosts with cpu_count = 2, and list rule's associated hosts. :id: f7473fa2-7349-42d3-9cdb-f74b55d2f440 :Steps: 1. discovered host with cpu_count = 2 2. Define a rule 'rule1' with search query cpu_count = 2 3. Click on 'Discovered Hosts' from rule1 4. Auto Provision the discovered host 5. Click on 'Associated Hosts' from rule1 :expectedresults: 1. After step 3, the rule's Discovered host should be listed. 2. The rule's Associated Host should be listed. :BZ: 1731112 """ ip_address = gen_ipaddr() cpu_count = gen_integer(2, 10) rule_search = 'cpu_count = {0}'.format(cpu_count) # any way create a host to be sure that this org has more than one host host = entities.Host(organization=module_org, location=module_loc).create() host_group = entities.HostGroup( organization=[module_org], location=[module_loc], medium=host.medium, root_pass=gen_string('alpha'), operatingsystem=host.operatingsystem, ptable=host.ptable, domain=host.domain, architecture=host.architecture, ).create() discovery_rule = entities.DiscoveryRule(hostgroup=host_group, search_=rule_search, organization=[module_org], location=[module_loc]).create() discovered_host = create_discovered_host( ip_address=ip_address, options={'physicalprocessorcount': cpu_count}) # create an other discovered host with an other cpu count create_discovered_host(options={'physicalprocessorcount': cpu_count + 1}) provisioned_host_name = '{0}.{1}'.format(discovered_host['name'], host.domain.read().name) with session: session.organization.select(org_name=module_org.name) session.location.select(loc_name=module_loc.name) values = session.discoveryrule.read_all() assert discovery_rule.name in [rule['Name'] for rule in values] values = session.discoveryrule.read_discovered_hosts( discovery_rule.name) assert values['searchbox'] == rule_search assert len(values['table']) == 1 assert values['table'][0]['IP Address'] == ip_address assert values['table'][0]['CPUs'] == str(cpu_count) # auto provision the discovered host session.discoveredhosts.apply_action('Auto Provision', [discovered_host['name']]) assert not session.discoveredhosts.search('name = "{0}"'.format( discovered_host['name'])) values = session.discoveryrule.read_associated_hosts( discovery_rule.name) assert (values['searchbox'] == 'discovery_rule = "{0}"'.format( discovery_rule.name)) assert len(values['table']) == 1 assert values['table'][0]['Name'] == provisioned_host_name values = session.host.get_details(provisioned_host_name) assert (values['properties']['properties_table']['IP Address'] == ip_address)
def discovered_host(): return create_discovered_host()