diff --git a/robottelo/cli/activationkey.py b/robottelo/cli/activationkey.py index 8a58b2f7bb2..521c1d46674 100644 --- a/robottelo/cli/activationkey.py +++ b/robottelo/cli/activationkey.py @@ -40,12 +40,6 @@ def add_host_collection(cls, options=None): cls.command_sub = 'add-host-collection' return cls.execute(cls._construct_command(options)) - @classmethod - def add_subscription(cls, options=None): - """Add subscription""" - cls.command_sub = 'add-subscription' - return cls.execute(cls._construct_command(options)) - @classmethod def content_override(cls, options=None): """Override product content defaults""" @@ -81,15 +75,3 @@ def remove_repository(cls, options=None): """Disassociate a resource""" cls.command_sub = 'remove-repository' return cls.execute(cls._construct_command(options)) - - @classmethod - def remove_subscription(cls, options=None): - """Remove subscription""" - cls.command_sub = 'remove-subscription' - return cls.execute(cls._construct_command(options)) - - @classmethod - def subscriptions(cls, options=None, output_format=None): - """List associated subscriptions""" - cls.command_sub = 'subscriptions' - return cls.execute(cls._construct_command(options), output_format=output_format) diff --git a/robottelo/cli/host.py b/robottelo/cli/host.py index e82f89af49c..ac5ddb506b4 100644 --- a/robottelo/cli/host.py +++ b/robottelo/cli/host.py @@ -407,45 +407,6 @@ def subscription_unregister(cls, options=None): cls.command_sub = 'subscription unregister' return cls.execute(cls._construct_command(options)) - @classmethod - def subscription_attach(cls, options=None): - """Attach a subscription to host - - Usage:: - - hammer host subscription attach [OPTIONS] - - Options:: - - --host HOST_NAME Name to search by - --host-id HOST_ID Host ID - --quantity Quantity Quantity of this subscriptions to - add. Defaults to 1 - --subscription-id SUBSCRIPTION_ID ID of subscription - """ - cls.command_sub = 'subscription attach' - return cls.execute(cls._construct_command(options)) - - @classmethod - def subscription_remove(cls, options=None): - """Remove a subscription from host - - Usage:: - - hammer host subscription remove [OPTIONS] - - Options:: - - --host HOST_NAME Name to search by - --host-id HOST_ID - --quantity Quantity Remove the first instance of a - subscription with matching id - and quantity - --subscription-id SUBSCRIPTION_ID ID of subscription - """ - cls.command_sub = 'subscription remove' - return cls.execute(cls._construct_command(options)) - @classmethod def sc_params(cls, options=None): """List all smart class parameters diff --git a/robottelo/host_helpers/cli_factory.py b/robottelo/host_helpers/cli_factory.py index 637de8cb926..a477724f044 100644 --- a/robottelo/host_helpers/cli_factory.py +++ b/robottelo/host_helpers/cli_factory.py @@ -546,34 +546,6 @@ def make_template(self, options=None): return create_object(self._satellite.cli.Template, args, options) - def activationkey_add_subscription_to_repo(self, options=None): - """Helper function that adds subscription to an activation key""" - # List the subscriptions in given org - subscriptions = self._satellite.cli.Subscription.list( - {'organization-id': options['organization-id']}, per_page=False - ) - # Add subscription to activation-key - if options['subscription'] not in (sub['name'] for sub in subscriptions): - raise CLIFactoryError( - 'Subscription {} not found in the given org'.format(options['subscription']) - ) - for subscription in subscriptions: - if subscription['name'] == options['subscription']: - if subscription['quantity'] != 'Unlimited' and int(subscription['quantity']) == 0: - raise CLIFactoryError('All the subscriptions are already consumed') - try: - self._satellite.cli.ActivationKey.add_subscription( - { - 'id': options['activationkey-id'], - 'subscription-id': subscription['id'], - 'quantity': 1, - } - ) - except CLIReturnCodeError as err: - raise CLIFactoryError( - f'Failed to add subscription to activation key\n{err.msg}' - ) from err - def override_repos_for_activation_key(self, ak_id, repos, value=True): """Hammer override satellite repo(s) to value for Activation Key. @@ -722,15 +694,6 @@ def setup_org_for_a_custom_repo(self, options=None): f'Failed to associate activation-key with CV\n{err.msg}' ) from err - # Add custom_product subscription to activation-key, if SCA mode is disabled - if self._satellite.is_sca_mode_enabled(org_id) is False: - self.activationkey_add_subscription_to_repo( - { - 'activationkey-id': activationkey_id, - 'organization-id': org_id, - 'subscription': custom_product['name'], - } - ) # Override custom product to true ( turned off by default in 6.14 ) custom_repo = self._satellite.cli.Repository.info({'id': custom_repo['id']}) self._satellite.cli.ActivationKey.content_override( @@ -874,17 +837,6 @@ def _setup_org_for_a_rh_repo(self, options=None, force=False): f'Failed to associate activation-key with CV\n{err.msg}' ) from err - # Add default subscription to activation-key, if SCA mode is disabled - if self._satellite.is_sca_mode_enabled(org_id) is False: - self.activationkey_add_subscription_to_repo( - { - 'organization-id': org_id, - 'activationkey-id': activationkey_id, - 'subscription': options.get( - 'subscription', constants.DEFAULT_SUBSCRIPTION_NAME - ), - } - ) # Override RHST product to true ( turned off by default in 6.14 ) rhel_repo = self._satellite.cli.Repository.info({'id': rhel_repo['id']}) self._satellite.cli.ActivationKey.content_override( @@ -1058,7 +1010,6 @@ def setup_cdn_and_custom_repos_content( lce_id=None, repos=None, download_policy='on_demand', - rh_subscriptions=None, default_cv=False, ): """Setup cdn and custom repositories, content view and activations key @@ -1069,14 +1020,10 @@ def setup_cdn_and_custom_repos_content( :param bool default_cv: whether to use the Default Organization CV :param str download_policy: update the repositories with this download policy - :param list rh_subscriptions: a list of RH subscription to attach to - activation key :return: a dict containing the activation key, content view and repos info """ if repos is None: repos = [] - if rh_subscriptions is None: - rh_subscriptions = [] custom_product, repos_info = self.setup_cdn_and_custom_repositories( org_id=org_id, repos=repos, download_policy=download_policy diff --git a/robottelo/host_helpers/repository_mixins.py b/robottelo/host_helpers/repository_mixins.py index 5d99fe0b6aa..dfee89e8aa1 100644 --- a/robottelo/host_helpers/repository_mixins.py +++ b/robottelo/host_helpers/repository_mixins.py @@ -716,34 +716,6 @@ def setup_activation_key( 'value': int(override), } ) - if self.satellite.is_sca_mode_enabled(org_id): - return activation_key - # Add subscriptions to activation-key - # Get organization subscriptions - subscriptions = self.satellite.cli.Subscription.list( - {'organization-id': org_id}, per_page=False - ) - added_subscription_names = [] - for subscription in subscriptions: - if ( - subscription['name'] in subscription_names - and subscription['name'] not in added_subscription_names - ): - self.satellite.cli.ActivationKey.add_subscription( - { - 'id': activation_key['id'], - 'subscription-id': subscription['id'], - 'quantity': 1, - } - ) - added_subscription_names.append(subscription['name']) - if len(added_subscription_names) == len(subscription_names): - break - missing_subscription_names = set(subscription_names).difference( - set(added_subscription_names) - ) - if missing_subscription_names: - raise ValueError(f'Missing subscriptions: {missing_subscription_names}') return activation_key def organization_has_manifest(self, organization_id): @@ -760,7 +732,6 @@ def setup_content( org_id, lce_id, download_policy='on_demand', - rh_subscriptions=None, override=None, ): """ @@ -769,34 +740,15 @@ def setup_content( :param org_id: The organization id :param lce_id: The lifecycle environment id :param download_policy: The repositories download policy - :param rh_subscriptions: The RH subscriptions to be added to activation key :param override: Content override (True = enable, False = disable, None = no action) """ if self._repos_info: raise RepositoryAlreadyCreated('Repositories already created can not setup content') - if rh_subscriptions is None: - rh_subscriptions = [] - if self.need_subscription and not rh_subscriptions: - # add the default subscription if no subscription provided - rh_subscriptions = [constants.DEFAULT_SUBSCRIPTION_NAME] custom_product, repos_info = self.setup(org_id=org_id, download_policy=download_policy) content_view, lce = self.setup_content_view(org_id, lce_id) - custom_product_name = custom_product['name'] if custom_product else None - subscription_names = list(rh_subscriptions) - if custom_product_name: - subscription_names.append(custom_product_name) - if not self.satellite.is_sca_mode_enabled(org_id): - activation_key = self.setup_activation_key( - org_id, - content_view['id'], - lce_id, - subscription_names=subscription_names, - override=override, - ) - else: - activation_key = self.setup_activation_key( - org_id, content_view['id'], lce_id, override=override - ) + activation_key = self.setup_activation_key( + org_id, content_view['id'], lce_id, override=override + ) setup_content_data = dict( activation_key=activation_key, content_view=content_view, diff --git a/robottelo/hosts.py b/robottelo/hosts.py index 33bed747cf2..3d3137d302f 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -1344,7 +1344,6 @@ def virt_who_hypervisor_config( org['id'], lce['id'], repos, - rh_subscriptions=[constants.DEFAULT_SUBSCRIPTION_NAME], ) activation_key = content_setup_data['activation_key'] content_view = content_setup_data['content_view'] @@ -1447,20 +1446,8 @@ def virt_who_hypervisor_config( if len(org_hosts) == 0: raise CLIFactoryError(f'Failed to find hypervisor host:\n{result.stderr}') virt_who_hypervisor_host = org_hosts[0] - subscription_id = None - if hypervisor_hostname and subscription_name: - subscriptions = satellite.cli.Subscription.list( - {'organization-id': org_id}, per_page=False - ) - for subscription in subscriptions: - if subscription['name'] == subscription_name: - subscription_id = subscription['id'] - Host.subscription_attach( - {'host': virt_who_hypervisor_hostname, 'subscription-id': subscription_id} - ) - break return { - 'subscription_id': subscription_id, + 'subscription_id': None, 'subscription_name': subscription_name, 'activation_key_id': activation_key['id'], 'organization_id': org['id'], @@ -2481,22 +2468,8 @@ def register_host_custom_repo(self, module_org, rhel_contenthost, repo_urls): rhsm_id = rhel_contenthost.execute('subscription-manager identity') assert module_org.name in rhsm_id.stdout, 'Host is not registered to expected organization' rhel_contenthost._satellite = self - - # Attach product subscriptions to contenthost, only if SCA mode is disabled - if self.is_sca_mode_enabled(module_org.id) is False: - subs = self.api.Subscription(organization=module_org, name=prod.name).search() - assert len(subs), f'Subscription for sat client product: {prod.name} was not found.' - subscription = subs[0] - - rhel_contenthost.nailgun_host.bulk_add_subscriptions( - data={ - "organization_id": module_org.id, - "included": {"ids": [rhel_contenthost.nailgun_host.id]}, - "subscriptions": [{"id": subscription.id, "quantity": 1}], - } - ) - # refresh repository metadata on the host - rhel_contenthost.execute('subscription-manager repos --list') + # refresh repository metadata on the host + rhel_contenthost.execute('subscription-manager repos --list') # Override the repos to enabled rhel_contenthost.execute(r'subscription-manager repos --enable \*') diff --git a/tests/foreman/api/test_subscription.py b/tests/foreman/api/test_subscription.py index efcc363e864..f6dc299bb5b 100644 --- a/tests/foreman/api/test_subscription.py +++ b/tests/foreman/api/test_subscription.py @@ -23,11 +23,9 @@ from nailgun.config import ServerConfig from nailgun.entity_mixins import TaskFailedError import pytest -from requests.exceptions import HTTPError from robottelo.config import settings from robottelo.constants import ( - DEFAULT_SUBSCRIPTION_NAME, FAKE_0_CUSTOM_PACKAGE_NAME, PRDS, REPOS, @@ -226,19 +224,6 @@ def test_sca_end_to_end( ) assert result.status == 0, f'Failed to register host: {result.stderr}' assert rhel_contenthost.subscribed - # Verify that you cannot attach a subscription to an activation key in SCA Mode - subscription = target_sat.api.Subscription(organization=module_sca_manifest_org).search( - query={'search': f'name="{DEFAULT_SUBSCRIPTION_NAME}"'} - )[0] - with pytest.raises(HTTPError) as ak_context: - module_ak.add_subscriptions(data={'quantity': 1, 'subscription_id': subscription.id}) - assert 'Simple Content Access' in ak_context.value.response.text - # Verify that you cannot attach a subscription to an Host in SCA Mode - with pytest.raises(HTTPError) as host_context: - target_sat.api.HostSubscription(host=rhel_contenthost.nailgun_host.id).add_subscriptions( - data={'subscriptions': [{'id': subscription.id, 'quantity': 1}]} - ) - assert 'Simple Content Access' in host_context.value.response.text # Create a content view with repos and check to see that the client has access content_view = target_sat.api.ContentView(organization=module_sca_manifest_org).create() content_view.repository = [rh_repo, custom_repo] diff --git a/tests/foreman/cli/test_activationkey.py b/tests/foreman/cli/test_activationkey.py index 44dcb7b222b..2ac8703a8d3 100644 --- a/tests/foreman/cli/test_activationkey.py +++ b/tests/foreman/cli/test_activationkey.py @@ -1672,15 +1672,3 @@ def test_syspurpose_end_to_end( assert host['subscription-information']['system-purpose']['purpose-role'] == "test-role2" assert host['subscription-information']['system-purpose']['purpose-usage'] == "test-usage2" assert host['subscription-information']['system-purpose']['service-level'] == "Self-Support2" - - rhel_contenthost.unregister() - with pytest.raises(CLIReturnCodeError): - # raise error that the host was not registered by - # subscription-manager register - target_sat.cli.ActivationKey.subscriptions( - { - 'organization-id': module_org.id, - 'id': activation_key.id, - 'host-id': host['id'], - } - ) diff --git a/tests/foreman/cli/test_host.py b/tests/foreman/cli/test_host.py index ffef65fa489..b46c1f4f700 100644 --- a/tests/foreman/cli/test_host.py +++ b/tests/foreman/cli/test_host.py @@ -1847,17 +1847,6 @@ def test_positive_register( assert len(hosts) > 0 host = target_sat.cli.Host.info({'id': hosts[0]['id']}) assert host['name'] == rhel_contenthost.hostname - # note: when not registered the following command lead to exception, - # see unregister - host_subscriptions = target_sat.cli.ActivationKey.subscriptions( - { - 'organization-id': module_org.id, - 'id': module_ak_with_cv.id, - 'host-id': host['id'], - }, - output_format='json', - ) - assert len(host_subscriptions) == 0 # -------------------------- MULTI-CV SCENARIOS ------------------------- diff --git a/tests/foreman/cli/test_rhcloud_iop.py b/tests/foreman/cli/test_rhcloud_iop.py index 662bc48f5db..09b0d6f919f 100644 --- a/tests/foreman/cli/test_rhcloud_iop.py +++ b/tests/foreman/cli/test_rhcloud_iop.py @@ -149,7 +149,6 @@ def test_positive_install_iop_custom_certs( service_level='Self-Support', purpose_usage='test-usage', purpose_role='test-role', - auto_attach=False, ).create() host.configure_rex(satellite=satellite, org=org, register=False) @@ -198,7 +197,6 @@ def test_disable_enable_iop(satellite_iop, module_sca_manifest, rhel_contenthost service_level='Self-Support', purpose_usage='test-usage', purpose_role='test-role', - auto_attach=False, ).create() host.configure_rex(satellite=satellite, org=org, register=False) diff --git a/tests/foreman/cli/test_subscription.py b/tests/foreman/cli/test_subscription.py index ba155cae68b..b103d9e46a4 100644 --- a/tests/foreman/cli/test_subscription.py +++ b/tests/foreman/cli/test_subscription.py @@ -201,32 +201,6 @@ def test_positive_subscription_status_disabled_golden_ticket(): """ -@pytest.mark.stubbed -def test_positive_candlepin_events_processed_by_STOMP(): - """Verify that Candlepin events are being read and processed by - attaching subscriptions, validating host subscriptions status, - and viewing processed and failed Candlepin events - - :id: d54a7652-f87d-4277-a0ec-a153e27b4487 - - :steps: - - 1. Register Content Host without subscriptions attached - 2. Verify subscriptions status is invalid - 3. Import a Manifest - 4. Attach subs to content host - 5. Verify subscription status is green, "valid", with - "hammer subscription list --host-id x" - 6. Check for processed and failed Candlepin events - - :expectedresults: Candlepin events are being read and processed - correctly without any failures - :BZ: 1826515 - - :CaseImportance: High - """ - - def test_negative_check_katello_reimport(request, target_sat, function_org): """Verify katello:reimport trace should not fail with an TypeError diff --git a/tests/foreman/endtoend/test_api_endtoend.py b/tests/foreman/endtoend/test_api_endtoend.py index 42818aaec18..03a90ab4b77 100644 --- a/tests/foreman/endtoend/test_api_endtoend.py +++ b/tests/foreman/endtoend/test_api_endtoend.py @@ -37,13 +37,11 @@ '/katello/api/activation_keys/:id', '/katello/api/activation_keys/:id', '/katello/api/activation_keys/:id', - '/katello/api/activation_keys/:id/add_subscriptions', '/katello/api/activation_keys/:id/content_override', '/katello/api/activation_keys/:id/copy', '/katello/api/activation_keys/:id/host_collections/available', '/katello/api/activation_keys/:id/product_content', '/katello/api/activation_keys/:id/releases', - '/katello/api/activation_keys/:id/remove_subscriptions', ), 'advisor_engine': ( '/api/advisor_engine/host_details', @@ -424,8 +422,6 @@ 'host_subscriptions': ( '/api/hosts/:host_id/subscriptions', '/api/hosts/:host_id/subscriptions', - '/api/hosts/:host_id/subscriptions/add_subscriptions', - '/api/hosts/:host_id/subscriptions/remove_subscriptions', '/api/hosts/:host_id/subscriptions/available_release_versions', '/api/hosts/:host_id/subscriptions/enabled_repositories', '/api/hosts/:host_id/subscriptions/content_override', @@ -489,8 +485,6 @@ '/api/hosts/bulk/assign_location', '/api/hosts/bulk/add_host_collections', '/api/hosts/bulk/remove_host_collections', - '/api/hosts/bulk/add_subscriptions', - '/api/hosts/bulk/remove_subscriptions', '/api/hosts/bulk/applicable_errata', '/api/hosts/bulk/installable_errata', '/api/hosts/bulk/available_incremental_updates', diff --git a/tests/new_upgrades/test_errata.py b/tests/new_upgrades/test_errata.py index f642d348d94..10db61c4b93 100644 --- a/tests/new_upgrades/test_errata.py +++ b/tests/new_upgrades/test_errata.py @@ -164,11 +164,6 @@ def generate_errata_for_client_setup( environment=environment, ).create() test_data.activation_key = ak.name - if not target_sat.is_sca_mode_enabled(org.id): - subscription = target_sat.api.Subscription(organization=org).search( - query={'search': f'name={product.name}'} - )[0] - ak.add_subscriptions(data={'subscription_id': subscription.id}) # Override/enable all AK repos (disabled by default since 6.15) c_labels = [ i['label'] for i in ak.product_content(data={'content_access_mode_all': '1'})['results'] diff --git a/tests/new_upgrades/test_repository.py b/tests/new_upgrades/test_repository.py index 38c5d2ec637..73fc2b2207d 100644 --- a/tests/new_upgrades/test_repository.py +++ b/tests/new_upgrades/test_repository.py @@ -79,11 +79,6 @@ def custom_repo_check_setup(sat_upgrade_chost, content_upgrade_shared_satellite, ak = target_sat.api.ActivationKey( content_view=content_view, organization=org.id, environment=lce, name=test_name ).create() - if not target_sat.is_sca_mode_enabled(org.id): - subscription = target_sat.api.Subscription(organization=org).search( - query={'search': f'name={product.name}'} - )[0] - ak.add_subscriptions(data={'subscription_id': subscription.id}) sat_upgrade_chost.api_register( target_sat, organization=org, activation_keys=[ak.name], location=None ) diff --git a/tests/upgrades/test_errata.py b/tests/upgrades/test_errata.py index f151dc0c504..5c96ba557a6 100644 --- a/tests/upgrades/test_errata.py +++ b/tests/upgrades/test_errata.py @@ -150,11 +150,6 @@ def test_pre_scenario_generate_errata_for_client( ak = target_sat.api.ActivationKey( content_view=content_view, organization=function_org, environment=environment ).create() - if not target_sat.is_sca_mode_enabled(function_org.id): - subscription = target_sat.api.Subscription(organization=function_org).search( - query={'search': f'name={product.name}'} - )[0] - ak.add_subscriptions(data={'subscription_id': subscription.id}) # Override/enable all AK repos (disabled by default since 6.15) c_labels = [ i['label'] for i in ak.product_content(data={'content_access_mode_all': '1'})['results'] diff --git a/tests/upgrades/test_repository.py b/tests/upgrades/test_repository.py index d1d92daf749..a8139ba8be5 100644 --- a/tests/upgrades/test_repository.py +++ b/tests/upgrades/test_repository.py @@ -145,11 +145,6 @@ def test_pre_scenario_custom_repo_check(self, target_sat, sat_upgrade_chost, sav ak = target_sat.api.ActivationKey( content_view=content_view, organization=org.id, environment=lce ).create() - if not target_sat.is_sca_mode_enabled(org.id): - subscription = target_sat.api.Subscription(organization=org).search( - query={'search': f'name={product.name}'} - )[0] - ak.add_subscriptions(data={'subscription_id': subscription.id}) # Override/enable all AK repos (disabled by default since 6.15) c_labels = [ i['label'] for i in ak.product_content(data={'content_access_mode_all': '1'})['results']