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}
Beispiel #3
0
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)
Beispiel #6
0
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()
Beispiel #8
0
def discovered_host():
    return create_discovered_host()