Commit 03c81fdc authored by Scott Moser's avatar Scott Moser

rh_subscription: only check subscription if configured

The rh_subscription config module would attempt to connect to the RHN servers
even when no config is provided.
Now, instead check to make sure that valid config is provided first.
That consists of username and password or a activation key.

LP: #1536706
parents 5cfe3d6f 578fed15
......@@ -19,10 +19,14 @@
from cloudinit import util
def handle(_name, cfg, _cloud, log, _args):
def handle(name, cfg, _cloud, log, _args):
sm = SubscriptionManager(cfg)
sm.log = log
if not sm.is_registered:
if not sm.is_configured():
log.debug("%s: module not configured.", name)
return None
if not sm.is_registered():
verify, verify_msg = sm._verify_keys()
if verify is not True:
......@@ -95,7 +99,6 @@ class SubscriptionManager(object):
self.disable_repo = self.rhel_cfg.get('disable-repo')
self.servicelevel = self.rhel_cfg.get('service-level')
self.subman = ['subscription-manager']
self.is_registered = self._is_registered()
def log_success(self, msg):
'''Simple wrapper for logging info messages. Useful for unittests'''
......@@ -134,7 +137,7 @@ class SubscriptionManager(object):
return False, no_auto
return True, None
def _is_registered(self):
def is_registered(self):
Checks if the system is already registered and returns
True if so, else False
......@@ -400,3 +403,6 @@ class SubscriptionManager(object):
self.log.debug("Disabled the following repos: %s" %
(", ".join(disable_list)).replace('--disable=', ''))
return True
def is_configured(self):
return bool((self.userid and self.password) or self.activation_key)
......@@ -126,7 +126,8 @@ class TestBadInput(unittest.TestCase):
'enable-repo': 'not_a_list'
config_badkey = {'rh_subscription':
{'activation_key': 'abcdef1234',
{'activation-key': 'abcdef1234',
'fookey': 'bar',
'org': '123',
......@@ -138,7 +139,11 @@ class TestBadInput(unittest.TestCase):
Attempt to register without the password key/value
self.SM._sub_man_cli = mock.MagicMock(
side_effect=[util.ProcessExecutionError, (self.reg, 'bar')])
self.handle(, self.config_no_password, self.cloud_init,
self.log, self.args)
self.assertEqual(self.SM._sub_man_cli.call_count, 0)
def test_no_org(self):
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment