diff --git a/robottelo/constants/__init__.py b/robottelo/constants/__init__.py index 0f18f181b32..095aa8af7a4 100644 --- a/robottelo/constants/__init__.py +++ b/robottelo/constants/__init__.py @@ -312,6 +312,7 @@ 'current': 'Overall Status: Current', 'invalid': 'Overall Status: Invalid', 'insufficient': 'Overall Status: Insufficient', + 'disabled': 'Overall Status: Disabled', 'unknown': 'Overall Status: Unknown', } diff --git a/robottelo/hosts.py b/robottelo/hosts.py index 81aa6fadb96..95df8e63bc5 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -52,6 +52,7 @@ RHSSO_RESET_PASSWORD, RHSSO_USER_UPDATE, SATELLITE_VERSION, + SM_OVERALL_STATUS, ) from robottelo.exceptions import CLIFactoryError, DownloadFileError, HostPingFailed from robottelo.host_helpers import CapsuleMixins, ContentHostMixins, SatelliteMixins @@ -1513,8 +1514,6 @@ def install_tracer(self): def register_to_cdn(self, pool_ids=None, enable_proxy=False): """Subscribe satellite to CDN""" - if pool_ids is None: - pool_ids = [settings.subscription.rhn_poolid] self.remove_katello_ca() cmd_result = self.register_contenthost( org=None, @@ -1527,11 +1526,17 @@ def register_to_cdn(self, pool_ids=None, enable_proxy=False): raise ContentHostError( f'Error during registration, command output: {cmd_result.stdout}' ) - cmd_result = self.subscription_manager_attach_pool(pool_ids)[0] - if cmd_result.status != 0: - raise ContentHostError( - f'Error during pool attachment, command output: {cmd_result.stdout}' - ) + # Attach a pool only if the Org isn't SCA yet + sub_status = self.subscription_manager_status().stdout + if SM_OVERALL_STATUS['disabled'] not in sub_status: + if pool_ids in [None, []]: + pool_ids = [settings.subscription.rhn_poolid] + for pid in pool_ids: + int(pid, 16) # raises ValueError if not a HEX number + cmd_result = self.subscription_manager_attach_pool(pool_ids) + for res in cmd_result: + if res.status != 0: + raise ContentHostError(f'Pool attachment failed with output: {res.stdout}') def ping_host(self, host): """Check the provisioned host status by pinging the ip of host