diff --git a/library/packaging/rhn_register b/library/packaging/rhn_register index 85ccacdac2..552dfcc580 100644 --- a/library/packaging/rhn_register +++ b/library/packaging/rhn_register @@ -84,10 +84,14 @@ try: except ImportError, e: module.fail_json(msg="Unable to import up2date_client. Is 'rhn-client-tools' installed?\n%s" % e) +# INSERT REDHAT SNIPPETS +from ansible.module_utils.redhat import * +# INSERT COMMON SNIPPETS +from ansible.module_utils.basic import * class Rhn(RegistrationBase): - def __init__(self, module, username=None, password=None): + def __init__(self, username=None, password=None): RegistrationBase.__init__(self, username, password) self.config = self.load_config() @@ -193,21 +197,26 @@ class Rhn(RegistrationBase): Register system to RHN. If enable_eus=True, extended update support will be requested. ''' - register_cmd = "/usr/sbin/rhnreg_ks --username '%s' --password '%s' --force" % (self.username, self.password) + register_cmd = "/usr/sbin/rhnreg_ks --username='%s' --password='%s' --force" % (self.username, self.password) + if self.module.params.get('server_url', None): + register_cmd += " --serverUrl=%s" % self.module.params.get('server_url') if enable_eus: register_cmd += " --use-eus-channel" if activationkey is not None: register_cmd += " --activationkey '%s'" % activationkey # FIXME - support --profilename # FIXME - support --systemorgid - rc, stdout, stderr = self.module.run_command(register_command, check_rc=True) + rc, stdout, stderr = self.module.run_command(register_cmd, check_rc=True, use_unsafe_shell=True) def api(self, method, *args): ''' Convenience RPC wrapper ''' if not hasattr(self, 'server') or self.server is None: - url = "https://xmlrpc.%s/rpc/api" % self.hostname + if self.hostname != 'rhn.redhat.com': + url = "https://%s/rpc/api" % self.hostname + else: + url = "https://xmlrpc.%s/rpc/api" % self.hostname self.server = xmlrpclib.Server(url, verbose=0) self.session = self.server.auth.login(self.username, self.password) @@ -270,6 +279,7 @@ def main(): rhn.configure(module.params['server_url']) activationkey = module.params['activationkey'] channels = module.params['channels'] + rhn.module = module # Ensure system is registered if state == 'present': @@ -288,10 +298,10 @@ def main(): rhn.enable() rhn.register(module.params['enable_eus'] == True, activationkey) rhn.subscribe(channels) - except CommandException, e: + except Exception, e: module.fail_json(msg="Failed to register with '%s': %s" % (rhn.hostname, e)) - else: - module.exit_json(changed=True, msg="System successfully registered to '%s'." % rhn.hostname) + + module.exit_json(changed=True, msg="System successfully registered to '%s'." % rhn.hostname) # Ensure system is *not* registered if state == 'absent': @@ -300,14 +310,10 @@ def main(): else: try: rhn.unregister() - except CommandException, e: + except Exception, e: module.fail_json(msg="Failed to unregister: %s" % e) - else: - module.exit_json(changed=True, msg="System successfully unregistered from %s." % rhn.hostname) + module.exit_json(changed=True, msg="System successfully unregistered from %s." % rhn.hostname) -# import module snippets -from ansible.module_utils.basic import * -from ansible.module_utils.redhat import * main()