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']})
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']})
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']
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']
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)
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)
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)
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'])
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'])
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'])
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_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'])
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']})
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']})