def test_positive_delete_by_id(self):
        """Create HostGroup with valid values then delete it
        by ID

        @id: fe7dedd4-d7c3-4c70-b70d-c2deff357b76

        @assert: HostGroup is deleted
        """
        for name in valid_hostgroups_list():
            with self.subTest(name):
                hostgroup = make_hostgroup({'name': name})
                HostGroup.delete({'id': hostgroup['id']})
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.info({'id': hostgroup['id']})
    def test_positive_delete_by_id(self):
        """Create HostGroup with valid values then delete it
        by ID

        @feature: HostGroup

        @assert: HostGroup is deleted
        """
        for name in valid_hostgroups_list():
            with self.subTest(name):
                hostgroup = make_hostgroup({'name': name})
                HostGroup.delete({'id': hostgroup['id']})
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.info({'id': hostgroup['id']})
Beispiel #3
0
    def test_positive_delete(self):
        """@test: Create HostGroup with valid values then delete it
        by ID

        @feature: HostGroup

        @assert: HostGroup is deleted
        """
        for name in valid_data_list():
            with self.subTest(name):
                hostgroup = make_hostgroup({"name": name})
                HostGroup.delete({"id": hostgroup["id"]})
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.info({"id": hostgroup["id"]})
    def test_positive_update_content_source(self):
        """Update hostgroup's content source

        :id: c22218a1-4d86-4ac1-ad4b-79b10c9adcde

        :customerscenario: true

        :BZ: 1260697, 1313056

        :expectedresults: Hostgroup was successfully updated with new content
            source

        :CaseImportance: High
        """
        content_source = Proxy.list({
            'search': 'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]
        hostgroup = make_hostgroup({
            'content-source-id': content_source['id'],
            'organization-ids': self.org['id'],
        })
        new_content_source = make_proxy()
        self.addCleanup(capsule_cleanup, new_content_source['id'])
        self.addCleanup(HostGroup.delete, {'id': hostgroup['id']})
        HostGroup.update({
            'id': hostgroup['id'],
            'content-source-id': new_content_source['id'],
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertEqual(
            hostgroup['content-source']['name'], new_content_source['name'])
    def test_negative_update_content_source(self):
        """Attempt to update hostgroup's content source with invalid value

        :id: 4ffe6d18-3899-4bf1-acb2-d55ea09b7a26

        :BZ: 1260697, 1313056

        :expectedresults: Host group was not updated. Content source remains
            the same as it was before update

        :CaseImportance: Medium
        """
        content_source = Proxy.list({
            'search': 'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]
        hostgroup = make_hostgroup({
            'content-source-id': content_source['id'],
            'organization-ids': self.org['id'],
        })
        with self.assertRaises(CLIBaseError):
            HostGroup.update({
                'id': hostgroup['id'],
                'content-source-id': gen_integer(10000, 99999),
            })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertEqual(
            hostgroup['content-source']['name'], content_source['name'])
    def test_positive_update_content_source(self):
        """Update hostgroup's content source

        :id: c22218a1-4d86-4ac1-ad4b-79b10c9adcde

        :customerscenario: true

        :BZ: 1260697, 1313056

        :expectedresults: Hostgroup was successfully updated with new content
            source

        :CaseImportance: High
        """
        content_source = Proxy.list({
            'search':
            'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]
        hostgroup = make_hostgroup({
            'content-source-id': content_source['id'],
            'organization-ids': self.org['id'],
        })
        new_content_source = make_proxy()
        self.addCleanup(capsule_cleanup, new_content_source['id'])
        self.addCleanup(HostGroup.delete, {'id': hostgroup['id']})
        HostGroup.update({
            'id': hostgroup['id'],
            'content-source-id': new_content_source['id'],
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertEqual(hostgroup['content-source']['name'],
                         new_content_source['name'])
    def test_negative_update_content_source(self):
        """Attempt to update hostgroup's content source with invalid value

        :id: 4ffe6d18-3899-4bf1-acb2-d55ea09b7a26

        :BZ: 1260697, 1313056

        :expectedresults: Host group was not updated. Content source remains
            the same as it was before update

        :CaseImportance: Medium
        """
        content_source = Proxy.list({
            'search':
            'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]
        hostgroup = make_hostgroup({
            'content-source-id': content_source['id'],
            'organization-ids': self.org['id'],
        })
        with self.assertRaises(CLIReturnCodeError):
            HostGroup.update({
                'id': hostgroup['id'],
                'content-source-id': gen_integer(10000, 99999),
            })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertEqual(hostgroup['content-source']['name'],
                         content_source['name'])
    def test_positive_delete_by_id(self):
        """Create HostGroup with valid values then delete it
        by ID

        :id: fe7dedd4-d7c3-4c70-b70d-c2deff357b76

        :expectedresults: HostGroup is deleted

        :CaseImportance: Critical
        """
        for name in valid_hostgroups_list():
            with self.subTest(name):
                hostgroup = make_hostgroup({'name': name})
                HostGroup.delete({'id': hostgroup['id']})
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.info({'id': hostgroup['id']})
Beispiel #9
0
def test_positive_update_hostgroup(
    request,
    module_puppet_org,
    env,
    puppet_content_source,
    puppet_classes,
    session_puppet_enabled_sat,
    puppet_proxy_port_range,
):
    """Update hostgroup's content source, name and puppet classes

    :id: c22218a1-4d86-4ac1-ad4b-79b10c9adcde

    :customerscenario: true

    :BZ: 1260697, 1313056

    :expectedresults: Hostgroup was successfully updated with new content
        source, name and puppet classes

    :CaseLevel: Integration
    """
    with session_puppet_enabled_sat:
        hostgroup = make_hostgroup({
            'content-source-id':
            puppet_content_source['id'],
            'organization-ids':
            module_puppet_org.id,
            'environment-id':
            env.id,
            'query-organization-id':
            module_puppet_org.id,
        })
        new_content_source = make_proxy()

        @request.addfinalizer
        def _cleanup():
            with session_puppet_enabled_sat:
                HostGroup.delete({'id': hostgroup['id']})
                capsule_cleanup(new_content_source['id'])

        assert len(hostgroup['puppetclasses']) == 0
        new_name = valid_hostgroups_list()[0]
        puppet_class_names = [puppet['name'] for puppet in puppet_classes]
        HostGroup.update({
            'new-name': new_name,
            'id': hostgroup['id'],
            'content-source-id': new_content_source['id'],
            'puppet-classes': puppet_class_names,
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        assert hostgroup['name'] == new_name
        assert hostgroup['content-source']['name'] == new_content_source[
            'name']
        for puppet_class_name in puppet_class_names:
            assert puppet_class_name in hostgroup['puppetclasses']
Beispiel #10
0
def test_negative_update_name(hostgroup):
    """Create HostGroup then fail to update its name

    :id: 42d208a4-f518-4ff2-9b7a-311adb460abd

    :expectedresults: HostGroup name is not updated
    """
    new_name = invalid_values_list()[0]
    with pytest.raises(CLIReturnCodeError):
        HostGroup.update({'id': hostgroup['id'], 'new-name': new_name})
    result = HostGroup.info({'id': hostgroup['id']})
    assert hostgroup['name'] == result['name']
Beispiel #11
0
    def test_positive_update_name(self):
        """@Test: Successfully update an HostGroup.

        @Feature: HostGroup

        @Assert: HostGroup is updated.
        """
        hostgroup = make_hostgroup()
        for new_name in valid_data_list():
            with self.subTest(new_name):
                HostGroup.update({"id": hostgroup["id"], "new-name": new_name})
                hostgroup = HostGroup.info({"id": hostgroup["id"]})
                self.assertEqual(hostgroup["name"], new_name)
Beispiel #12
0
    def test_negative_update(self):
        """@test: Create HostGroup then fail to update its name

        @feature: HostGroup

        @assert: HostGroup name is not updated
        """
        hostgroup = make_hostgroup()
        for new_name in invalid_values_list():
            with self.subTest(new_name):
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.update({"id": hostgroup["id"], "new-name": new_name})
                result = HostGroup.info({"id": hostgroup["id"]})
                self.assertEqual(hostgroup["name"], result["name"])
    def test_positive_update_name(self):
        """Successfully update an HostGroup.

        @Feature: HostGroup

        @Assert: HostGroup is updated.
        """
        hostgroup = make_hostgroup()
        for new_name in valid_hostgroups_list():
            with self.subTest(new_name):
                HostGroup.update({
                    'id': hostgroup['id'],
                    'new-name': new_name,
                })
                hostgroup = HostGroup.info({'id': hostgroup['id']})
                self.assertEqual(hostgroup['name'], new_name)
Beispiel #14
0
    def test_positive_update_name(self):
        """Successfully update an HostGroup.

        @id: a36e3cbe-83d9-44ce-b8f7-5fab2a2cadf9

        @Assert: HostGroup is updated.
        """
        hostgroup = make_hostgroup()
        for new_name in valid_hostgroups_list():
            with self.subTest(new_name):
                HostGroup.update({
                    'id': hostgroup['id'],
                    'new-name': new_name,
                })
                hostgroup = HostGroup.info({'id': hostgroup['id']})
                self.assertEqual(hostgroup['name'], new_name)
Beispiel #15
0
    def test_positive_update_name(self):
        """Successfully update an HostGroup.

        @Feature: HostGroup

        @Assert: HostGroup is updated.
        """
        hostgroup = make_hostgroup()
        for new_name in valid_hostgroups_list():
            with self.subTest(new_name):
                HostGroup.update({
                    'id': hostgroup['id'],
                    'new-name': new_name,
                })
                hostgroup = HostGroup.info({'id': hostgroup['id']})
                self.assertEqual(hostgroup['name'], new_name)
Beispiel #16
0
    def test_positive_update_name(self):
        """Successfully update an HostGroup.

        @id: a36e3cbe-83d9-44ce-b8f7-5fab2a2cadf9

        @Assert: HostGroup is updated.
        """
        hostgroup = make_hostgroup()
        for new_name in valid_hostgroups_list():
            with self.subTest(new_name):
                HostGroup.update({
                    'id': hostgroup['id'],
                    'new-name': new_name,
                })
                hostgroup = HostGroup.info({'id': hostgroup['id']})
                self.assertEqual(hostgroup['name'], new_name)
Beispiel #17
0
def test_negative_update_content_source(hostgroup, content_source):
    """Attempt to update hostgroup's content source with invalid value

    :id: 4ffe6d18-3899-4bf1-acb2-d55ea09b7a26

    :BZ: 1260697, 1313056

    :expectedresults: Host group was not updated. Content source remains
        the same as it was before update

    :CaseLevel: Integration
    """
    with pytest.raises(CLIReturnCodeError):
        HostGroup.update({'id': hostgroup['id'], 'content-source-id': gen_integer(10000, 99999)})
    hostgroup = HostGroup.info({'id': hostgroup['id']})
    assert hostgroup['content-source']['name'] == content_source['name']
    def test_negative_update_name(self):
        """Create HostGroup then fail to update its name

        @feature: HostGroup

        @assert: HostGroup name is not updated
        """
        hostgroup = make_hostgroup()
        for new_name in invalid_values_list():
            with self.subTest(new_name):
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.update({
                        'id': hostgroup['id'],
                        'new-name': new_name,
                    })
                result = HostGroup.info({'id': hostgroup['id']})
                self.assertEqual(hostgroup['name'], result['name'])
Beispiel #19
0
    def test_negative_update_name(self):
        """Create HostGroup then fail to update its name

        @id: 42d208a4-f518-4ff2-9b7a-311adb460abd

        @assert: HostGroup name is not updated
        """
        hostgroup = make_hostgroup()
        for new_name in invalid_values_list():
            with self.subTest(new_name):
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.update({
                        'id': hostgroup['id'],
                        'new-name': new_name,
                    })
                result = HostGroup.info({'id': hostgroup['id']})
                self.assertEqual(hostgroup['name'], result['name'])
    def test_negative_update_name(self):
        """Create HostGroup then fail to update its name

        :id: 42d208a4-f518-4ff2-9b7a-311adb460abd

        :expectedresults: HostGroup name is not updated

        :CaseImportance: Critical
        """
        hostgroup = make_hostgroup()
        for new_name in invalid_values_list():
            with self.subTest(new_name):
                with self.assertRaises(CLIReturnCodeError):
                    HostGroup.update({
                        'id': hostgroup['id'],
                        'new-name': new_name,
                    })
                result = HostGroup.info({'id': hostgroup['id']})
                self.assertEqual(hostgroup['name'], result['name'])
Beispiel #21
0
    def test_positive_update_hostgroup(self):
        """Update hostgroup's content source, name and puppet classes

        :id: c22218a1-4d86-4ac1-ad4b-79b10c9adcde

        :customerscenario: true

        :BZ: 1260697, 1313056

        :expectedresults: Hostgroup was successfully updated with new content
            source, name and puppet classes

        :CaseLevel: Integration
        """
        hostgroup = make_hostgroup({
            'content-source-id':
            self.content_source['id'],
            'organization-ids':
            self.org['id'],
            'environment-id':
            self.env['id'],
            'content-view-id':
            self.cv['id'],
            'query-organization-id':
            self.org['id'],
        })
        new_content_source = make_proxy()
        self.addCleanup(capsule_cleanup, new_content_source['id'])
        self.addCleanup(HostGroup.delete, {'id': hostgroup['id']})
        self.assertEqual(len(hostgroup['puppetclasses']), 0)
        new_name = valid_hostgroups_list()[0]
        puppet_classes = [puppet['name'] for puppet in self.puppet_classes]
        HostGroup.update({
            'new-name': new_name,
            'id': hostgroup['id'],
            'content-source-id': new_content_source['id'],
            'puppet-classes': puppet_classes,
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertEqual(hostgroup['name'], new_name)
        self.assertEqual(hostgroup['content-source']['name'],
                         new_content_source['name'])
        self.assertEqual(set(puppet_classes), set(hostgroup['puppetclasses']))
    def test_positive_update_puppet_class_by_id(self):
        """Update hostgroup with puppet class by name by id

        :id: 4b044719-431d-4d72-8974-330cc62fd020

        :expectedresults: Puppet class is associated with hostgroup

        :CaseImportance: Critical
        """
        hostgroup = make_hostgroup({
            'environment-id': self.env['id'],
            'content-view-id': self.cv['id'],
            'query-organization-id': self.org['id'],
        })
        self.assertEqual(len(hostgroup['puppetclasses']), 0)
        HostGroup.update({
            'id': hostgroup['id'],
            'puppet-class-ids': self.puppet_classes[0]['id'],
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertIn(self.puppet_classes[0]['name'],
                      hostgroup['puppetclasses'])
Beispiel #23
0
    def test_positive_update_multiple_puppet_classes(self):
        """Update hostgroup with multiple puppet classes by name

        :id: 2e977aed-c0d4-478e-9c84-f07deac912cd

        :expectedresults: All puppet classes are associated with hostgroup

        :BZ: 1264163

        :CaseImportance: Critical
        """
        puppet_classes = [puppet['name'] for puppet in self.puppet_classes]
        hostgroup = make_hostgroup({
            'environment-id': self.env['id'],
            'content-view-id': self.cv['id'],
            'query-organization-id': self.org['id'],
        })
        self.assertEqual(len(hostgroup['puppetclasses']), 0)
        HostGroup.update({
            'id': hostgroup['id'], 'puppet-classes': puppet_classes})
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertEqual(set(puppet_classes), set(hostgroup['puppetclasses']))
    def test_positive_update_puppet_class_by_name(self):
        """Update hostgroup with puppet class by name

        :id: 4c37354f-ef2d-4d54-98ac-906bc611d292

        :expectedresults: Puppet class is associated with hostgroup

        :CaseImportance: Critical
        """
        hostgroup = make_hostgroup({
            'environment-id': self.env['id'],
            'content-view-id': self.cv['id'],
            'query-organization-id': self.org['id'],
        })
        self.assertEqual(len(hostgroup['puppetclasses']), 0)
        HostGroup.update({
            'id': hostgroup['id'],
            'puppet-classes': self.puppet_classes[0]['name'],
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertIn(
            self.puppet_classes[0]['name'], hostgroup['puppetclasses'])
    def test_positive_update_puppet_class_by_id(self):
        """Update hostgroup with puppet class by name by id

        :id: 4b044719-431d-4d72-8974-330cc62fd020

        :expectedresults: Puppet class is associated with hostgroup

        :CaseImportance: Critical
        """
        hostgroup = make_hostgroup({
            'environment-id': self.env['id'],
            'content-view-id': self.cv['id'],
            'query-organization-id': self.org['id'],
        })
        self.assertEqual(len(hostgroup['puppetclasses']), 0)
        HostGroup.update({
            'id': hostgroup['id'],
            'puppet-class-ids': self.puppet_classes[0]['id'],
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertIn(
            self.puppet_classes[0]['name'], hostgroup['puppetclasses'])
    def test_positive_update_puppet_class_by_name(self):
        """Update hostgroup with puppet class by name

        :id: 4c37354f-ef2d-4d54-98ac-906bc611d292

        :expectedresults: Puppet class is associated with hostgroup

        :CaseImportance: Critical
        """
        hostgroup = make_hostgroup({
            'environment-id': self.env['id'],
            'content-view-id': self.cv['id'],
            'query-organization-id': self.org['id'],
        })
        self.assertEqual(len(hostgroup['puppetclasses']), 0)
        HostGroup.update({
            'id': hostgroup['id'],
            'puppet-classes': self.puppet_classes[0]['name'],
        })
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertIn(self.puppet_classes[0]['name'],
                      hostgroup['puppetclasses'])
    def test_positive_update_multiple_puppet_classes(self):
        """Update hostgroup with multiple puppet classes by name

        :id: 2e977aed-c0d4-478e-9c84-f07deac912cd

        :expectedresults: All puppet classes are associated with hostgroup

        :BZ: 1264163

        :CaseImportance: Critical
        """
        puppet_classes = [puppet['name'] for puppet in self.puppet_classes]
        hostgroup = make_hostgroup({
            'environment-id': self.env['id'],
            'content-view-id': self.cv['id'],
            'query-organization-id': self.org['id'],
        })
        self.assertEqual(len(hostgroup['puppetclasses']), 0)
        HostGroup.update({
            'id': hostgroup['id'], 'puppet-classes': puppet_classes})
        hostgroup = HostGroup.info({'id': hostgroup['id']})
        self.assertEqual(set(puppet_classes), set(hostgroup['puppetclasses']))
Beispiel #28
0
def test_positive_update_hostgroup(request, module_org, content_source):
    """Update hostgroup's content source and name

    :id: c22218a1-4d86-4ac1-ad4b-79b10c9adcde

    :customerscenario: true

    :BZ: 1260697, 1313056

    :expectedresults: Hostgroup was successfully updated with new content
        source and name

    :CaseLevel: Integration
    """
    hostgroup = make_hostgroup({
        'content-source-id': content_source['id'],
        'organization-ids': module_org.id,
        'query-organization-id': module_org.id,
    })
    new_content_source = make_proxy()

    @request.addfinalizer
    def _cleanup():
        HostGroup.delete({'id': hostgroup['id']})
        capsule_cleanup(new_content_source['id'])

    assert len(hostgroup['puppetclasses']) == 0
    new_name = valid_hostgroups_list()[0]
    HostGroup.update({
        'new-name': new_name,
        'id': hostgroup['id'],
        'content-source-id': new_content_source['id'],
    })
    hostgroup = HostGroup.info({'id': hostgroup['id']})
    assert hostgroup['name'] == new_name
    assert hostgroup['content-source']['name'] == new_content_source['name']
    def test_positive_create_with_synced_content(self):
        """Check if hostgroup with synced kickstart repository can be created

        :id: 7c51ac72-359c-488a-8658-88b5a94d7e7a

        :customerscenario: true

        :expectedresults: Hostgroup should be created and has proper
            installation content id present

        :BZ: 1415707

        :CaseLevel: Integration
        """
        # Check whether path to kickstart media is set
        if settings.rhel6_os is None:
            raise ValueError(
                'Installation media path is not set in properties file')
        # Common entities
        org = make_org()
        lce = make_lifecycle_environment({'organization-id': org['id']})
        product = make_product({'organization-id': org['id']})
        repo = make_repository({
            u'url': settings.rhel6_os,
            u'product-id': product['id'],
            u'content-type': u'yum',
        })
        Repository.synchronize({'id': repo['id']})

        cv = make_content_view({
            'organization-id': org['id'],
            'repository-ids': [repo['id']],
        })
        ContentView.publish({'id': cv['id']})
        cv = ContentView.info({'id': cv['id']})
        cvv = cv['versions'][0]
        ContentView.version_promote({
            'id': cvv['id'],
            'to-lifecycle-environment-id': lce['id'],
        })

        # Get the Partition table ID
        ptable = PartitionTable.info({'name': DEFAULT_PTABLE})

        # Get the arch ID
        arch = Architecture.list(
            {'search': 'name={0}'.format(DEFAULT_ARCHITECTURE)})[0]

        # Get the OS ID
        os = OperatingSys.list({
            'search':
            'name="RedHat" AND major="{0}" OR major="{1}"'.format(
                RHEL_6_MAJOR_VERSION, RHEL_7_MAJOR_VERSION)
        })[0]

        # Update the OS with found arch and ptable
        OperatingSys.update({
            'id': os['id'],
            'architectures': arch['name'],
            'partition-tables': ptable['name'],
        })
        proxy = Proxy.list({
            'search':
            'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]

        # Search for proper installation repository id
        synced_repo = Repository.list({
            'content-view-version-id': cvv['id'],
            'organization-id': org['id'],
            'environment-id': lce['id'],
        })[0]
        hostgroup = make_hostgroup({
            'lifecycle-environment-id':
            lce['id'],
            'puppet-proxy-id':
            proxy['id'],
            'puppet-ca-proxy-id':
            proxy['id'],
            'content-source-id':
            proxy['id'],
            'content-view-id':
            cv['id'],
            'organization-ids':
            org['id'],
            'architecture-id':
            arch['id'],
            'partition-table-id':
            ptable['id'],
            'operatingsystem-id':
            os['id'],
            'kickstart-repository-id':
            synced_repo['id'],
        })
        hg = HostGroup.info({'id': hostgroup['id']}, output_format='json')
        self.assertEqual(hg['kickstart-repository']['id'], synced_repo['id'])
    def test_positive_create_with_multiple_entities_ids(self):
        """Check if hostgroup with multiple options ids can be created

        :id: 6277613b-0ece-4dee-b9d8-504f8299ac38

        :expectedresults: Hostgroup should be created and has all defined
            entities assigned

        :BZ: 1395254, 1313056

        :CaseLevel: Integration
        """
        # Common entities
        loc = make_location()
        org = make_org()
        env = make_environment({
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        lce = make_lifecycle_environment({'organization-id': org['id']})
        proxy = Proxy.list({
            'search':
            'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]
        # Content View should be promoted to be used with LC Env
        cv = make_content_view({'organization-id': org['id']})
        ContentView.publish({'id': cv['id']})
        cv = ContentView.info({'id': cv['id']})
        ContentView.version_promote({
            'id': cv['versions'][0]['id'],
            'to-lifecycle-environment-id': lce['id'],
        })
        # Network
        domain = make_domain({
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        subnet = make_subnet({
            'domain-ids': domain['id'],
            'organization-ids': org['id'],
        })
        # Operating System
        arch = make_architecture()
        ptable = make_partition_table({
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        os = make_os({
            'architecture-ids': arch['id'],
            'partition-table-ids': ptable['id'],
        })
        media = make_medium({
            'operatingsystem-ids': os['id'],
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        make_hostgroup_params = {
            'location-ids': loc['id'],
            'environment-id': env['id'],
            'lifecycle-environment-id': lce['id'],
            'puppet-proxy-id': proxy['id'],
            'puppet-ca-proxy-id': proxy['id'],
            'content-source-id': proxy['id'],
            'content-view-id': cv['id'],
            'domain-id': domain['id'],
            'subnet-id': subnet['id'],
            'organization-ids': org['id'],
            'architecture-id': arch['id'],
            'partition-table-id': ptable['id'],
            'medium-id': media['id'],
            'operatingsystem-id': os['id'],
        }
        hostgroup = make_hostgroup(make_hostgroup_params)
        self.assertEqual(cv['id'], hostgroup['content-view']['id'])
        self.assertEqual(lce['id'], hostgroup['lifecycle-environment']['id'])
        self.assertEqual(proxy['id'], hostgroup['content-source']['id'])
        # get the json output format
        hostgroup = HostGroup.info({'id': hostgroup['id']},
                                   output_format='json')
        self.assertIn(org['id'], hostgroup['organizations'][0]['id'])
        self.assertIn(loc['id'], hostgroup['locations'][0]['id'])
        self.assertEqual(env['id'], hostgroup['puppet-environment']['id'])
        self.assertEqual(proxy['id'], hostgroup['puppet-master-proxy']['id'])
        self.assertEqual(proxy['id'], hostgroup['puppet-ca-proxy']['id'])
        self.assertEqual(domain['id'], hostgroup['network']['domain']['id'])
        self.assertEqual(subnet['id'],
                         hostgroup['network']['subnet-ipv4']['id'])
        self.assertEqual(arch['id'],
                         hostgroup['operating-system']['architecture']['id'])
        self.assertEqual(
            ptable['id'],
            hostgroup['operating-system']['partition-table']['id'])
        self.assertEqual(media['id'],
                         hostgroup['operating-system']['medium']['id'])
        self.assertEqual(
            os['id'], hostgroup['operating-system']['operating-system']['id'])
    def test_positive_create_with_synced_content(self):
        """Check if hostgroup with synced kickstart repository can be created

        :id: 7c51ac72-359c-488a-8658-88b5a94d7e7a

        :customerscenario: true

        :expectedresults: Hostgroup should be created and has proper
            installation content id present

        :BZ: 1415707

        :CaseLevel: Integration
        """
        # Check whether path to kickstart media is set
        if settings.rhel6_os is None:
            raise ValueError(
                'Installation media path is not set in properties file')
        # Common entities
        org = make_org()
        lce = make_lifecycle_environment({'organization-id': org['id']})
        product = make_product({'organization-id': org['id']})
        repo = make_repository({
            u'url': settings.rhel6_os,
            u'product-id': product['id'],
            u'content-type': u'yum',
        })
        Repository.synchronize({'id': repo['id']})

        cv = make_content_view({
            'organization-id': org['id'],
            'repository-ids': [repo['id']],
        })
        ContentView.publish({'id': cv['id']})
        cv = ContentView.info({'id': cv['id']})
        cvv = cv['versions'][0]
        ContentView.version_promote({
            'id': cvv['id'],
            'to-lifecycle-environment-id': lce['id'],
        })

        # Get the Partition table ID
        ptable = PartitionTable.info({'name': DEFAULT_PTABLE})

        # Get the arch ID
        arch = Architecture.list({
            'search': 'name={0}'.format(DEFAULT_ARCHITECTURE)})[0]

        # Get the OS ID
        os = OperatingSys.list({
            'search': 'name="RedHat" AND major="{0}" OR major="{1}"'.format(
                RHEL_6_MAJOR_VERSION, RHEL_7_MAJOR_VERSION)
        })[0]

        # Update the OS with found arch and ptable
        OperatingSys.update({
            'id': os['id'],
            'architectures': arch['name'],
            'partition-tables': ptable['name'],
        })
        proxy = Proxy.list({
            'search': 'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]

        # Search for proper installation repository id
        synced_repo = Repository.list({
            'content-view-version-id': cvv['id'],
            'organization-id': org['id'],
            'environment-id': lce['id'],
        })[0]
        hostgroup = make_hostgroup({
            'lifecycle-environment-id': lce['id'],
            'puppet-proxy-id': proxy['id'],
            'puppet-ca-proxy-id': proxy['id'],
            'content-source-id': proxy['id'],
            'content-view-id': cv['id'],
            'organization-ids': org['id'],
            'architecture-id': arch['id'],
            'partition-table-id': ptable['id'],
            'operatingsystem-id': os['id'],
            'kickstart-repository-id': synced_repo['id'],
        })
        hg = HostGroup.info({'id': hostgroup['id']}, output_format='json')
        self.assertEqual(
            hg['operating-system']['kickstart_repository_id'],
            synced_repo['id']
        )
    def test_positive_create_with_multiple_entities_ids(self):
        """Check if hostgroup with multiple options ids can be created

        :id: 6277613b-0ece-4dee-b9d8-504f8299ac38

        :expectedresults: Hostgroup should be created and has all defined
            entities assigned

        :BZ: 1395254, 1313056

        :CaseLevel: Integration
        """
        # Common entities
        loc = make_location()
        org = make_org()
        env = make_environment({
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        lce = make_lifecycle_environment({'organization-id': org['id']})
        proxy = Proxy.list({
            'search': 'url = https://{0}:9090'.format(settings.server.hostname)
        })[0]
        # Content View should be promoted to be used with LC Env
        cv = make_content_view({'organization-id': org['id']})
        ContentView.publish({'id': cv['id']})
        cv = ContentView.info({'id': cv['id']})
        ContentView.version_promote({
            'id': cv['versions'][0]['id'],
            'to-lifecycle-environment-id': lce['id'],
        })
        # Network
        domain = make_domain({
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        subnet = make_subnet({
            'domain-ids': domain['id'],
            'organization-ids': org['id'],
        })
        # Operating System
        arch = make_architecture()
        ptable = make_partition_table({
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        os = make_os({
            'architecture-ids': arch['id'],
            'partition-table-ids': ptable['id'],
        })
        media = make_medium({
            'operatingsystem-ids': os['id'],
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        make_hostgroup_params = {
            'location-ids': loc['id'],
            'environment-id': env['id'],
            'lifecycle-environment-id': lce['id'],
            'puppet-proxy-id': proxy['id'],
            'puppet-ca-proxy-id': proxy['id'],
            'content-source-id': proxy['id'],
            'content-view-id': cv['id'],
            'domain-id': domain['id'],
            'subnet-id': subnet['id'],
            'organization-ids': org['id'],
            'architecture-id': arch['id'],
            'partition-table-id': ptable['id'],
            'medium-id': media['id'],
            'operatingsystem-id': os['id'],
        }
        hostgroup = make_hostgroup(make_hostgroup_params)
        self.assertEqual(cv['id'], hostgroup['content-view']['id'])
        self.assertEqual(lce['id'], hostgroup['lifecycle-environment']['id'])
        self.assertEqual(proxy['id'], hostgroup['content-source']['id'])
        # get the json output format
        hostgroup = HostGroup.info(
            {'id': hostgroup['id']}, output_format='json')
        self.assertIn(org['id'], hostgroup['organizations'][0]['id'])
        self.assertIn(loc['id'], hostgroup['locations'][0]['id'])
        self.assertEqual(
            env['id'], hostgroup['puppet-environment']['environment_id'])
        self.assertEqual(proxy['id'], hostgroup['puppet-master-proxy-id'])
        self.assertEqual(proxy['id'], hostgroup['puppet-ca-proxy-id'])
        self.assertEqual(domain['id'], hostgroup['domain']['domain_id'])
        self.assertEqual(
                subnet['id'],
                hostgroup['network']['subnet-ipv4']['id'])
        self.assertEqual(
            arch['id'], hostgroup['architecture']['architecture_id'])
        self.assertEqual(
            ptable['id'], hostgroup['partition-table']['ptable_id'])
        self.assertEqual(media['id'], hostgroup['medium']['medium_id'])
        self.assertEqual(
            os['id'], hostgroup['operating-system']['operatingsystem_id'])
Beispiel #33
0
    def test_positive_create_with_multiple_entities_and_delete(self):
        """Check if hostgroup with multiple options can be created and deleted

        :id: a3ef4f0e-971d-4307-8d0a-35103dff6586

        :expectedresults: Hostgroup should be created, has all defined
            entities assigned and deleted

        :BZ: 1395254, 1313056

        :CaseLevel: Integration

        :CaseImportance: Critical
        """
        # Common entities
        name = valid_hostgroups_list()[0]
        loc = make_location()
        org = make_org()
        orgs = [org, self.org]
        env = make_environment({
            'location-ids': loc['id'],
            'organization-ids': org['id']
        })
        lce = make_lifecycle_environment({'organization-id': org['id']})
        # Content View should be promoted to be used with LC Env
        cv = make_content_view({'organization-id': org['id']})
        ContentView.publish({'id': cv['id']})
        cv = ContentView.info({'id': cv['id']})
        ContentView.version_promote({
            'id': cv['versions'][0]['id'],
            'to-lifecycle-environment-id': lce['id']
        })
        # Network
        domain = make_domain({
            'location-ids': loc['id'],
            'organization-ids': org['id']
        })
        subnet = make_subnet({
            'domain-ids': domain['id'],
            'organization-ids': org['id']
        })
        # Operating System
        arch = make_architecture()
        ptable = make_partition_table({
            'location-ids': loc['id'],
            'organization-ids': org['id']
        })
        os = make_os({
            'architecture-ids': arch['id'],
            'partition-table-ids': ptable['id']
        })
        os_full_name = "{0} {1}.{2}".format(os['name'], os['major-version'],
                                            os['minor-version'])
        media = make_medium({
            'operatingsystem-ids': os['id'],
            'location-ids': loc['id'],
            'organization-ids': org['id'],
        })
        # Note: in the current hammer version there is no content source name
        # option
        make_hostgroup_params = {
            'name': name,
            'organization-ids': [org['id'] for org in orgs],
            'locations': loc['name'],
            'environment': env['name'],
            'lifecycle-environment': lce['name'],
            'puppet-proxy': self.content_source['name'],
            'puppet-ca-proxy': self.content_source['name'],
            'content-source-id': self.content_source['id'],
            'content-view': cv['name'],
            'domain': domain['name'],
            'subnet': subnet['name'],
            'architecture': arch['name'],
            'partition-table': ptable['name'],
            'medium': media['name'],
            'operatingsystem': os_full_name,
            'puppet-classes': self.puppet_classes[0]['name'],
            'query-organization': org['name'],
        }
        hostgroup = make_hostgroup(make_hostgroup_params)
        self.assertEqual(hostgroup['name'], name)
        self.assertEqual(set(org['name'] for org in orgs),
                         set(hostgroup['organizations']))
        self.assertIn(loc['name'], hostgroup['locations'])
        self.assertEqual(env['name'], hostgroup['puppet-environment'])
        self.assertEqual(self.content_source['name'],
                         hostgroup['puppet-master-proxy'])
        self.assertEqual(self.content_source['name'],
                         hostgroup['puppet-ca-proxy'])
        self.assertEqual(domain['name'], hostgroup['network']['domain'])
        self.assertEqual(subnet['name'], hostgroup['network']['subnet-ipv4'])
        self.assertEqual(arch['name'],
                         hostgroup['operating-system']['architecture'])
        self.assertEqual(ptable['name'],
                         hostgroup['operating-system']['partition-table'])
        self.assertEqual(media['name'],
                         hostgroup['operating-system']['medium'])
        self.assertEqual(os_full_name,
                         hostgroup['operating-system']['operating-system'])
        self.assertEqual(cv['name'], hostgroup['content-view']['name'])
        self.assertEqual(lce['name'],
                         hostgroup['lifecycle-environment']['name'])
        self.assertEqual(self.content_source['name'],
                         hostgroup['content-source']['name'])
        self.assertIn(self.puppet_classes[0]['name'],
                      hostgroup['puppetclasses'])
        # delete hostgroup
        HostGroup.delete({'id': hostgroup['id']})
        with self.assertRaises(CLIReturnCodeError):
            HostGroup.info({'id': hostgroup['id']})
Beispiel #34
0
def test_positive_create_with_multiple_entities_and_delete(
        module_puppet_org, puppet_content_source, puppet_classes,
        session_puppet_enabled_sat):
    """Check if hostgroup with multiple options can be created and deleted

    :id: a3ef4f0e-971d-4307-8d0a-35103dff6586

    :expectedresults: Hostgroup should be created, has all defined
        entities assigned and deleted

    :BZ: 1395254, 1313056

    :CaseLevel: Integration

    :CaseImportance: Critical
    """
    with session_puppet_enabled_sat:
        # Common entities
        name = valid_hostgroups_list()[0]
        loc = make_location()
        org_2 = entities.Organization().create()
        orgs = [module_puppet_org, org_2]
        env = make_environment({
            'location-ids': loc['id'],
            'organization-ids': org_2.id
        })
        lce = make_lifecycle_environment({'organization-id': org_2.id})
        # Content View should be promoted to be used with LC Env
        cv = make_content_view({'organization-id': org_2.id})
        ContentView.publish({'id': cv['id']})
        cv = ContentView.info({'id': cv['id']})
        ContentView.version_promote({
            'id': cv['versions'][0]['id'],
            'to-lifecycle-environment-id': lce['id']
        })
        # Network
        domain = make_domain({
            'location-ids': loc['id'],
            'organization-ids': org_2.id
        })
        subnet = make_subnet({
            'domain-ids': domain['id'],
            'organization-ids': org_2.id
        })
        # Operating System
        arch = make_architecture()
        ptable = make_partition_table({
            'location-ids': loc['id'],
            'organization-ids': org_2.id
        })
        os = make_os({
            'architecture-ids': arch['id'],
            'partition-table-ids': ptable['id']
        })
        os_full_name = "{} {}.{}".format(os['name'], os['major-version'],
                                         os['minor-version'])
        media = make_medium({
            'operatingsystem-ids': os['id'],
            'location-ids': loc['id'],
            'organization-ids': org_2.id,
        })
        # Note: in the current hammer version there is no content source name
        # option
        make_hostgroup_params = {
            'name': name,
            'organization-ids': [org.id for org in orgs],
            'locations': loc['name'],
            'puppet-environment': env['name'],
            'lifecycle-environment-id': lce['id'],
            'puppet-proxy': puppet_content_source['name'],
            'puppet-ca-proxy': puppet_content_source['name'],
            'content-source-id': puppet_content_source['id'],
            'content-view': cv['name'],
            'domain': domain['name'],
            'subnet': subnet['name'],
            'architecture': arch['name'],
            'partition-table': ptable['name'],
            'medium': media['name'],
            'operatingsystem': os_full_name,
            'puppet-classes': puppet_classes[0]['name'],
            'query-organization': org_2.name,
        }
        hostgroup = make_hostgroup(make_hostgroup_params)
        assert hostgroup['name'] == name
        assert {org.name for org in orgs} == set(hostgroup['organizations'])
        assert loc['name'] in hostgroup['locations']
        assert env['name'] == hostgroup['puppet-environment']
        assert puppet_content_source['name'] == hostgroup[
            'puppet-master-proxy']
        assert puppet_content_source['name'] == hostgroup['puppet-ca-proxy']
        assert domain['name'] == hostgroup['network']['domain']
        assert subnet['name'] == hostgroup['network']['subnet-ipv4']
        assert arch['name'] == hostgroup['operating-system']['architecture']
        assert ptable['name'] == hostgroup['operating-system'][
            'partition-table']
        assert media['name'] == hostgroup['operating-system']['medium']
        assert os_full_name == hostgroup['operating-system'][
            'operating-system']
        assert cv['name'] == hostgroup['content-view']['name']
        assert lce['name'] == hostgroup['lifecycle-environment']['name']
        assert puppet_content_source['name'] == hostgroup['content-source'][
            'name']
        assert puppet_classes[0]['name'] in hostgroup['puppetclasses']
        # delete hostgroup
        HostGroup.delete({'id': hostgroup['id']})
        with pytest.raises(CLIReturnCodeError):
            HostGroup.info({'id': hostgroup['id']})