def test_hostname_with_scheme(self):
     # this is the default, so test it here
     local_url = "https://subscription.rhn.redhat.com/subscription"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("subscription.rhn.redhat.com", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals("/subscription", prefix)
    def apply(self):
        server = self.server_entry.get_text()
        try:
            (hostname, port, prefix) = parse_server_info(server)
            CFG.set('server', 'hostname', hostname)
            CFG.set('server', 'port', port)
            CFG.set('server', 'prefix', prefix)

            try:
                if not is_valid_server_info(hostname, port, prefix):
                    show_error_window(_("Unable to reach the server at %s:%s%s") %
                                      (hostname, port, prefix),
                                      self._parent.window)
                    return DONT_CHANGE
            except MissingCaCertException:
                show_error_window(_("CA certificate for subscription service has not been installed."),
                                  self._parent.window)
                return DONT_CHANGE

        except ServerUrlParseError:
            show_error_window(_("Please provide a hostname with optional port and/or prefix: hostname[:port][/prefix]"),
                              self._parent.window)
            return DONT_CHANGE

        log.info("Writing server data to rhsm.conf")
        CFG.save()
        self._backend.update()
        if self.activation_key_checkbox.get_active():
            return ACTIVATION_KEY_PAGE
        else:
            return CREDENTIALS_PAGE
 def test_hostname_with_scheme(self):
     # this is the default, so test it here
     local_url = "https://subscription.rhn.redhat.com/subscription"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("subscription.rhn.redhat.com", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals("/subscription", prefix)
Beispiel #4
0
    def apply(self):
        server = self.server_entry.get_text()
        try:
            (hostname, port, prefix) = parse_server_info(server)
            CFG.set('server', 'hostname', hostname)
            CFG.set('server', 'port', port)
            CFG.set('server', 'prefix', prefix)

            try:
                if not is_valid_server_info(hostname, port, prefix):
                    show_error_window(
                        _("Unable to reach the server at %s:%s%s") %
                        (hostname, port, prefix), self._parent.window)
                    return DONT_CHANGE
            except MissingCaCertException:
                show_error_window(
                    _("CA certificate for subscription service has not been installed."
                      ), self._parent.window)
                return DONT_CHANGE

        except ServerUrlParseError:
            show_error_window(
                _("Please provide a hostname with optional port and/or prefix: hostname[:port][/prefix]"
                  ), self._parent.window)
            return DONT_CHANGE

        log.info("Writing server data to rhsm.conf")
        CFG.save()
        self._backend.update()
        if self.activation_key_checkbox.get_active():
            return ACTIVATION_KEY_PAGE
        else:
            return CREDENTIALS_PAGE
    def test_hostname_prefix_config(self):
        self.stubConfig.set("server", "prefix", "/test-prefix")

        local_url = "myhost.example.com:500"
        (hostname, port, prefix) = parse_server_info(local_url, config.Config(self.stubConfig))
        self.assertEqual("myhost.example.com", hostname)
        self.assertEqual("500", port)
        self.assertEqual("/test-prefix", prefix)
    def test_hostname_port_config(self):
        self.stubConfig.set("server", "port", "600")

        local_url = "myhost.example.com/myapp"
        (hostname, port, prefix) = parse_server_info(local_url, config.Config(self.stubConfig))
        self.assertEqual("myhost.example.com", hostname)
        self.assertEqual("600", port)
        self.assertEqual("/myapp", prefix)
    def test_hostname_prefix_config(self):
        self.stubConfig.set("server", "prefix", "/test-prefix")

        local_url = "myhost.example.com:500"
        (hostname, port, prefix) = parse_server_info(local_url, self.stubConfig)
        self.assertEquals("myhost.example.com", hostname)
        self.assertEquals("500", port)
        self.assertEquals("/test-prefix", prefix)
    def test_hostname_port_config(self):
        self.stubConfig.set("server", "port", "600")

        local_url = "myhost.example.com/myapp"
        (hostname, port, prefix) = parse_server_info(local_url, self.stubConfig)
        self.assertEquals("myhost.example.com", hostname)
        self.assertEquals("600", port)
        self.assertEquals("/myapp", prefix)
Beispiel #9
0
    def test_hostname_only_config(self):
        self.stubConfig.set("server", "port", "344")
        self.stubConfig.set("server", "prefix", "/test-prefix")

        local_url = "myhost.example.com"
        (hostname, port, prefix) = parse_server_info(local_url, config.Config(self.stubConfig))
        self.assertEqual("myhost.example.com", hostname)
        self.assertEqual("344", port)
        self.assertEqual("/test-prefix", prefix)
 def test_short_name(self):
     # could argue anything could be a local hostname, and we should
     # use default port and path. You could also argue it should
     # throw an error, especially if it's not a valid hostname
     local_url = "a"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("a", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals(DEFAULT_PREFIX, prefix)
 def test_short_name(self):
     # could argue anything could be a local hostname, and we should
     # use default port and path. You could also argue it should
     # throw an error, especially if it's not a valid hostname
     local_url = "a"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("a", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals(DEFAULT_PREFIX, prefix)
 def _get_connection_info(self):
     try:
         if self.options.serverurl is None:
             hostname = self.rhsmcfg.get("server", "hostname")
             port = self.rhsmcfg.get_int("server", "port")
             prefix = self.rhsmcfg.get("server", "prefix")
         else:
             (hostname, port, prefix) = parse_server_info(self.options.serverurl)
     except ServerUrlParseError, e:
         system_exit(-1, _("Error parsing server URL: %s") % e.msg)
Beispiel #13
0
 def _get_connection_info(self):
     try:
         if self.options.serverurl is None:
             hostname = self.rhsmcfg.get('server', 'hostname')
             port = self.rhsmcfg.get_int('server', 'port')
             prefix = self.rhsmcfg.get('server', 'prefix')
         else:
             (hostname, port,
              prefix) = parse_server_info(self.options.serverurl)
     except ServerUrlParseError, e:
         system_exit(-1, _("Error parsing server URL: %s") % e.msg)
    def refresh(self):
        """Update gui widgets to reflect state of self.data.

        This is called whenever a user returns to a Spoke to update the
        info displayed, since the data could have been changed or updated
        by another spoke or by actions that completed in the mean time.

        Here it is used to populate RHSMSpokes registerGui.RegisterInfo self.info,
        since changes there are applied to RegisterWidget self.register_widget
        by RegisterWidget itself.

        The RHSM 'ks' spoke can read values from the kickstart files read by
        initial-setup, and stored in self._addon_data. So this method will
        seed RHSMSpokes gui with any values set there.
        """

        if self._addon_data.serverurl:
            (hostname, port, prefix) = utils.parse_server_info(self._addon_data.serverurl)
            self.info.set_property('hostname', hostname)
            self.info.set_property('port', port)
            self.info.set_property('prefix', prefix)

        if self._addon_data.username:
            self.info.set_property('username',
                                   self._addon_data.username)

        if self._addon_data.password:
            self.info.set_property('password',
                                   self._addon_data.password)

        if self._addon_data.org:
            self.info.set_property('owner_key',
                                   self._addon_data.org)

        if self._addon_data.activationkeys:
            self.info.set_property('activation_keys',
                                   self._addon_data.activationkeys)

        # TODO: support a ordered list of sla preferences?
        if self._addon_data.servicelevel:
            # NOTE: using the first sla in servicelevel only currently
            self.info.set_property('preferred_sla',
                                   self._addon_data.servicelevel[0])

        if self._addon_data.force:
            self.info.set_property('force', True)

        self.register_widget.populate_screens()
Beispiel #15
0
    def refresh(self):
        """Update gui widgets to reflect state of self.data.

        This is called whenever a user returns to a Spoke to update the
        info displayed, since the data could have been changed or updated
        by another spoke or by actions that completed in the mean time.

        Here it is used to populate RHSMSpokes registerGui.RegisterInfo self.info,
        since changes there are applied to RegisterWidget self.register_widget
        by RegisterWidget itself.

        The RHSM 'ks' spoke can read values from the kickstart files read by
        initial-setup, and stored in self._addon_data. So this method will
        seed RHSMSpokes gui with any values set there.
        """

        if self._addon_data.serverurl:
            (hostname, port, prefix) = utils.parse_server_info(self._addon_data.serverurl)
            self.info.set_property('hostname', hostname)
            self.info.set_property('port', port)
            self.info.set_property('prefix', prefix)

        if self._addon_data.username:
            self.info.set_property('username',
                                   self._addon_data.username)

        if self._addon_data.password:
            self.info.set_property('password',
                                   self._addon_data.password)

        if self._addon_data.org:
            self.info.set_property('owner_key',
                                   self._addon_data.org)

        if self._addon_data.activationkeys:
            self.info.set_property('activation_keys',
                                   self._addon_data.activationkeys)

        # TODO: support a ordered list of sla preferences?
        if self._addon_data.servicelevel:
            # NOTE: using the first sla in servicelevel only currently
            self.info.set_property('preferred_sla',
                                   self._addon_data.servicelevel[0])

        if self._addon_data.force:
            self.info.set_property('force', True)

        self.register_widget.populate_screens()
    def _server_selected(self):
        if self.rhn_radio.get_active():
            CFG.set('server', 'hostname', config.DEFAULT_HOSTNAME)
            CFG.set('server', 'port', config.DEFAULT_PORT)
            CFG.set('server', 'prefix', config.DEFAULT_PREFIX)
        elif self.offline_radio.get_active():
            # We'll signal the user set offline by setting an empty hostname:
            CFG.set('server', 'hostname', '')
            CFG.set('server', 'port', config.DEFAULT_PORT)
            CFG.set('server', 'prefix', config.DEFAULT_PREFIX)
        elif self.local_radio.get_active():
            local_server = self.local_entry.get_text()
            try:
                (hostname, port, prefix) = parse_server_info(local_server)
                CFG.set('server', 'hostname', hostname)
                CFG.set('server', 'port', port)
                CFG.set('server', 'prefix', prefix)

                try:
                    if not is_valid_server_info(hostname, port, prefix):
                        errorWindow(
                            _("Unable to reach the server at %s:%s%s" %
                              (hostname, port, prefix)))
                        return
                except MissingCaCertException:
                    errorWindow(
                        _("CA certificate for subscription service has not been installed."
                          ))
                    return

            except ServerUrlParseError:
                errorWindow(
                    _("Please provide a hostname with optional port and/or prefix: hostname[:port][/prefix]"
                      ), self.registerWin)
                return

        log.info("Writing server data to rhsm.conf")
        CFG.save()
        self.backend.update()

        if self.offline_radio.get_active():
            # Because the user selected offline, the whole registration process
            # must end here.
            self._offline_selected()
        else:
            self._show_credentials_page()
Beispiel #17
0
 def _on_server_entry_changed(self, widget):
     """
     Disable the activation key checkbox if the user is registering
     to hosted.
     """
     server = self.server_entry.get_text()
     try:
         (hostname, port, prefix) = parse_server_info(server)
         if re.search('subscription\.rhn\.(.*\.)*redhat\.com', hostname):
             sensitive = False
             self.activation_key_checkbox.set_active(False)
         else:
             sensitive = True
         self.activation_key_checkbox.set_sensitive(sensitive)
     except ServerUrlParseError:
         # This may seem like it should be False, but we don't want
         # the checkbox blinking on and off as the user types a value
         # that is first unparseable and then later parseable.
         self.activation_key_checkbox.set_sensitive(True)
 def _on_server_entry_changed(self, widget):
     """
     Disable the activation key checkbox if the user is registering
     to hosted.
     """
     server = self.server_entry.get_text()
     try:
         (hostname, port, prefix) = parse_server_info(server)
         if re.search('subscription\.rhn\.(.*\.)*redhat\.com', hostname):
             sensitive = False
             self.activation_key_checkbox.set_active(False)
         else:
             sensitive = True
         self.activation_key_checkbox.set_sensitive(sensitive)
     except ServerUrlParseError:
         # This may seem like it should be False, but we don't want
         # the checkbox blinking on and off as the user types a value
         # that is first unparseable and then later parseable.
         self.activation_key_checkbox.set_sensitive(True)
    def _server_selected(self):
        if self.rhn_radio.get_active():
            CFG.set('server', 'hostname', config.DEFAULT_HOSTNAME)
            CFG.set('server', 'port', config.DEFAULT_PORT)
            CFG.set('server', 'prefix', config.DEFAULT_PREFIX)
        elif self.offline_radio.get_active():
            # We'll signal the user set offline by setting an empty hostname:
            CFG.set('server', 'hostname', '')
            CFG.set('server', 'port', config.DEFAULT_PORT)
            CFG.set('server', 'prefix', config.DEFAULT_PREFIX)
        elif self.local_radio.get_active():
            local_server = self.local_entry.get_text()
            try:
                (hostname, port, prefix) = parse_server_info(local_server)
                CFG.set('server', 'hostname', hostname)
                CFG.set('server', 'port', port)
                CFG.set('server', 'prefix', prefix)

                try:
                    if not is_valid_server_info(hostname, port, prefix):
                        errorWindow(_("Unable to reach the server at %s:%s%s" %
                            (hostname, port, prefix)))
                        return
                except MissingCaCertException:
                    errorWindow(_("CA certificate for subscription service has not been installed."))
                    return

            except ServerUrlParseError:
                errorWindow(_("Please provide a hostname with optional port and/or prefix: hostname[:port][/prefix]"), self.registerWin)
                return

        log.info("Writing server data to rhsm.conf")
        CFG.save()
        self.backend.update()

        if self.offline_radio.get_active():
            # Because the user selected offline, the whole registration process
            # must end here.
            self._offline_selected()
        else:
            self._show_credentials_page()
Beispiel #20
0
 def test_hostname_just_slash(self):
     local_url = "/"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEqual(DEFAULT_HOSTNAME, hostname)
     self.assertEqual(DEFAULT_PORT, port)
     self.assertEqual("/", prefix)
Beispiel #21
0
 def test_hostname_only(self):
     local_url = "myhost.example.com"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEqual("myhost.example.com", hostname)
     self.assertEqual("443", port)
     self.assertEqual(DEFAULT_PREFIX, prefix)
 def test_hostname_no_scheme_port_no_prefix(self):
     local_url = "myhost.example.com:8443"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("8443", port)
     self.assertEquals("/subscription", prefix)
 def test_hostname_with_scheme_no_prefix(self):
     local_url = "https://myhost.example.com"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals("/subscription", prefix)
 def test_hostname_slash_no_prefix(self):
     local_url = "http://myhost.example.com/"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("443", port)
     self.assertEquals("/", prefix)
 def test_host_named_http_port_prefix(self):
     local_url = "https://https:8000/prefix"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("https", hostname)
     self.assertEquals("8000", port)
     self.assertEquals('/prefix', prefix)
 def test_hostname_slash_no_prefix(self):
     local_url = "http://myhost.example.com/"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("443", port)
     self.assertEquals("/", prefix)
 def test_hostname_port(self):
     local_url = "myhost.example.com:500"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("500", port)
     self.assertEquals(DEFAULT_PREFIX, prefix)
 def test_host_named_http_port_prefix(self):
     local_url = "https://https:8000/prefix"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("https", hostname)
     self.assertEquals("8000", port)
     self.assertEquals('/prefix', prefix)
 def test_hostname_no_scheme_port_no_prefix(self):
     local_url = "myhost.example.com:8443"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("8443", port)
     self.assertEquals("/subscription", prefix)
 def test_just_prefix(self):
     local_url = "/myapp"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEqual(DEFAULT_HOSTNAME, hostname)
     self.assertEqual(DEFAULT_PORT, port)
     self.assertEqual("/myapp", prefix)
 def test_hostname_only(self):
     local_url = "myhost.example.com"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEqual("myhost.example.com", hostname)
     self.assertEqual("443", port)
     self.assertEqual(DEFAULT_PREFIX, prefix)
 def test_fully_specified(self):
     local_url = "myhost.example.com:900/myapp"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("900", port)
     self.assertEquals("/myapp", prefix)
 def test_host_named_http(self):
     local_url = "http://http/prefix"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("http", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals('/prefix', prefix)
 def test_hostname_just_slash(self):
     local_url = "/"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals(DEFAULT_HOSTNAME, hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals("/", prefix)
 def test_hostname_port(self):
     local_url = "myhost.example.com:500"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("500", port)
     self.assertEquals(DEFAULT_PREFIX, prefix)
 def test_hostname_nested_prefix(self):
     local_url = "myhost.example.com/myapp/subapp"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("443", port)
     self.assertEquals("/myapp/subapp", prefix)
 def test_hostname_nested_prefix(self):
     local_url = "myhost.example.com/myapp/subapp"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("443", port)
     self.assertEquals("/myapp/subapp", prefix)
Beispiel #38
0
    def main(self, args=None):

        # TODO: For now, we disable the CLI entirely. We may want to allow some commands in the future.
        if rhsm.config.in_container():
            system_exit(
                os.EX_CONFIG,
                _("subscription-manager is disabled when running inside a container. Please refer to your host system for subscription management.\n"
                  ))

        config_changed = False

        # In testing we sometimes specify args, otherwise use the default:
        if not args:
            args = sys.argv[1:]

        (self.options, self.args) = self.parser.parse_known_args(args)

        # we dont need argv[0] in this list...
        self.args = self.args[1:]
        # check for unparsed arguments
        if self.args:
            for arg in self.args:
                print(_("cannot parse argument: {}").format(arg))
            system_exit(os.EX_USAGE)

        if hasattr(self.options, "insecure") and self.options.insecure:
            conf["server"]["insecure"] = "1"
            config_changed = True

        if hasattr(self.options, "server_url") and self.options.server_url:
            try:
                (self.server_hostname, self.server_port,
                 self.server_prefix) = parse_server_info(
                     self.options.server_url, conf)
            except ServerUrlParseError as e:
                print(_("Error parsing serverurl:"))
                handle_exception("Error parsing serverurl:", e)

            conf["server"]["hostname"] = self.server_hostname
            conf["server"]["port"] = self.server_port
            conf["server"]["prefix"] = self.server_prefix
            if self.server_port:
                self.server_port = int(self.server_port)
            config_changed = True

        if hasattr(self.options, "base_url") and self.options.base_url:
            try:
                (baseurl_server_hostname, baseurl_server_port,
                 baseurl_server_prefix) = parse_baseurl_info(
                     self.options.base_url)
            except ServerUrlParseError as e:
                print(_("Error parsing baseurl:"))
                handle_exception("Error parsing baseurl:", e)

            conf["rhsm"]["baseurl"] = format_baseurl(baseurl_server_hostname,
                                                     baseurl_server_port,
                                                     baseurl_server_prefix)
            config_changed = True

        # support foo.example.com:3128 format
        if hasattr(self.options, "proxy_url") and self.options.proxy_url:
            parts = remove_scheme(self.options.proxy_url).split(':')
            self.proxy_hostname = parts[0]
            # no ':'
            if len(parts) > 1:
                self.proxy_port = int(parts[1])
            else:
                # if no port specified, use the one from the config, or fallback to the default
                self.proxy_port = conf['server'].get_int(
                    'proxy_port') or rhsm.config.DEFAULT_PROXY_PORT
            config_changed = True

        if hasattr(self.options, "proxy_user") and self.options.proxy_user:
            self.proxy_user = self.options.proxy_user
        if hasattr(self.options,
                   "proxy_password") and self.options.proxy_password:
            self.proxy_password = self.options.proxy_password
        if hasattr(self.options, "no_proxy") and self.options.no_proxy:
            self.no_proxy = self.options.no_proxy

        # Proxy information isn't written to the config, so we have to make sure
        # the sorter gets it
        connection_info = {}
        if self.proxy_hostname:
            connection_info['proxy_hostname_arg'] = self.proxy_hostname
        if self.proxy_port:
            connection_info['proxy_port_arg'] = self.proxy_port
        if self.proxy_user:
            connection_info['proxy_user_arg'] = self.proxy_user
        if self.proxy_password:
            connection_info['proxy_password_arg'] = self.proxy_password
        if self.server_hostname:
            connection_info['host'] = self.server_hostname
        if self.server_port:
            connection_info['ssl_port'] = self.server_port
        if self.server_prefix:
            connection_info['handler'] = self.server_prefix
        if self.no_proxy:
            connection_info['no_proxy_arg'] = self.no_proxy

        self.cp_provider = inj.require(inj.CP_PROVIDER)
        self.cp_provider.set_connection_info(**connection_info)
        self.log.debug("X-Correlation-ID: {id}".format(id=self.correlation_id))
        self.cp_provider.set_correlation_id(self.correlation_id)

        self.log_client_version()

        if self.require_connection():
            # make sure we pass in the new server info, otherwise we
            # we use the defaults from connection module init
            # we've set self.proxy* here, so we'll use them if they
            # are set
            self.cp = self.cp_provider.get_consumer_auth_cp()

            # no auth cp for get / (resources) and
            # get /status (status and versions)
            self.no_auth_cp = self.cp_provider.get_no_auth_cp()

            self.entcertlib = EntCertActionInvoker()

            if config_changed:
                try:
                    # catch host/port issues; does not catch auth issues
                    if not self.test_proxy_connection():
                        system_exit(
                            os.EX_UNAVAILABLE,
                            _("Proxy connection failed, please check your settings."
                              ))

                    # this tries to actually connect to the server and ping it
                    if not is_valid_server_info(self.no_auth_cp):
                        system_exit(
                            os.EX_UNAVAILABLE,
                            _("Unable to reach the server at {host}:{port}{handler}"
                              ).format(host=self.no_auth_cp.host,
                                       port=self.no_auth_cp.ssl_port,
                                       handler=self.no_auth_cp.handler))

                except MissingCaCertException:
                    system_exit(
                        os.EX_CONFIG,
                        _("Error: CA certificate for subscription service has not been installed."
                          ))
                except ProxyException:
                    system_exit(
                        os.EX_UNAVAILABLE,
                        _("Proxy connection failed, please check your settings."
                          ))

        else:
            self.cp = None

        # do the work, catch most common errors here:
        try:

            return_code = self._do_command()

            # Only persist the config changes if there was no exception
            if config_changed and self.persist_server_options():
                conf.persist()

            if return_code is not None:
                return return_code
        except (CertificateException, ssl.SSLError) as e:
            log.error(e)
            system_exit(os.EX_SOFTWARE,
                        _('System certificates corrupted. Please reregister.'))
        except connection.GoneException as ge:
            if ge.deleted_id == self.identity.uuid:
                log.critical(
                    "Consumer profile \"{uuid}\" has been deleted from the server."
                    .format(uuid=self.identity.uuid))
                system_exit(
                    os.EX_UNAVAILABLE,
                    _("Consumer profile \"{uuid}\" has been deleted from the server. You can use command clean or unregister to remove local profile."
                      ).format(uuid=self.identity.uuid))
            else:
                raise ge
        except InvalidCLIOptionError as err:
            # This exception is handled in cli module
            raise err
        except Exception as err:
            handle_exception("exception caught in subscription-manager", err)
 def test_hostname_with_scheme_no_prefix(self):
     local_url = "https://myhost.example.com"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals("/subscription", prefix)
 def test_fully_specified(self):
     local_url = "myhost.example.com:900/myapp"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("myhost.example.com", hostname)
     self.assertEquals("900", port)
     self.assertEquals("/myapp", prefix)
 def test_just_prefix(self):
     local_url = "/myapp"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals(DEFAULT_HOSTNAME, hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals("/myapp", prefix)
 def test_host_named_http(self):
     local_url = "http://http/prefix"
     (hostname, port, prefix) = parse_server_info(local_url)
     self.assertEquals("http", hostname)
     self.assertEquals(DEFAULT_PORT, port)
     self.assertEquals('/prefix', prefix)