예제 #1
0
    def _validate_options(self):
        if self.options.list:
            too_many = False
            if self.options.remove:
                too_many = True
            else:
                for s in list(conf.keys()):
                    section = conf[s]
                    for name, _value in list(section.items()):
                        # Ignore sections and names that are not supported by subscription-manager
                        if hasattr(self.options, s + "." + name):
                            if getattr(self.options, s + "." + name):
                                too_many = True
                                break
                        else:
                            pass
            if too_many:
                system_exit(
                    os.EX_USAGE,
                    _("Error: --list should not be used with any other options for setting or removing configurations."
                      ),
                )

        if not (self.options.list or self.options.remove):
            has = False
            for s in list(conf.keys()):
                section = conf[s]
                for name, _value in list(section.items()):
                    if hasattr(self.options, s + "." + name):
                        test = "{value}".format(
                            value=getattr(self.options, s + "." + name))
                    else:
                        test = "None"
                    has = has or (test != "None")
            if not has:
                # if no options are given, default to --list
                self.options.list = True

        if self.options.remove:
            for r in self.options.remove:
                if "." not in r:
                    system_exit(
                        os.EX_USAGE,
                        _("Error: configuration entry designation for removal must be of format [section.name]"
                          ),
                    )

                section = r.split(".")[0]
                name = r.split(".")[1]
                found = False
                if section in list(conf.keys()):
                    for key, _value in list(conf[section].items()):
                        if name == key:
                            found = True
                if not found:
                    system_exit(
                        os.EX_CONFIG,
                        _("Error: Section {section} and name {name} does not exist."
                          ).format(section=section, name=name),
                    )
예제 #2
0
    def _do_command(self):
        self._validate_options()

        if self.options.list:
            for s in list(conf.keys()):
                section = conf[s]
                print("[{s}]".format(s=s))
                source_list = sorted(section.items())
                for (name, value) in source_list:
                    indicator1 = ""
                    indicator2 = ""
                    if value == section.get_default(name):
                        indicator1 = "["
                        indicator2 = "]"
                    print("   {name} = {indicator1}{value}{indicator2}".format(
                        name=name,
                        indicator1=indicator1,
                        value=value,
                        indicator2=indicator2))
                print()
            print(_("[] - Default value in use"))
            print("\n")
        elif self.options.remove:
            for r in self.options.remove:
                section = r.split(".")[0]
                name = r.split(".")[1]
                try:
                    if not conf[section].has_default(name):
                        conf[section][name] = ""
                        print(
                            _("You have removed the value for section {section} and name {name}."
                              ).format(section=section, name=name))
                    else:
                        conf[section][name] = conf[section].get_default(name)
                        print(
                            _("You have removed the value for section {section} and name {name}."
                              ).format(section=section, name=name))
                        print(
                            _("The default value for {name} will now be used."
                              ).format(name=name))
                except Exception:
                    print(
                        _("Section {section} and name {name} cannot be removed."
                          ).format(section=section, name=name))
            conf.persist()
        else:
            for s in list(conf.keys()):
                section = conf[s]
                for name, value in list(section.items()):
                    if hasattr(self.options, s + "." + name):
                        value = "{name}".format(
                            name=getattr(self.options, s + "." + name))
                        if not value == "None":
                            section[name] = value
            conf.persist()
예제 #3
0
    def __init__(self):
        shortdesc = _(
            "List, set, or remove the configuration parameters in use by this system"
        )
        super(ConfigCommand, self).__init__("config", shortdesc, False)

        self.parser.add_argument(
            "--list",
            action="store_true",
            help=_("list the configuration for this system"))
        self.parser.add_argument(
            "--remove",
            dest="remove",
            action="append",
            help=_("remove configuration entry by section.name"))
        for s in list(conf.keys()):
            section = conf[s]
            for name, _value in list(section.items()):
                # Allow adding CLI options only for sections and names listed in defaults
                if s in rhsm.config.DEFAULTS and name in rhsm.config.DEFAULTS[
                        s]:
                    self.parser.add_argument(
                        "--" + s + "." + name,
                        dest=(s + "." + name),
                        help=_("Section: {s}, Name: {name}").format(s=s,
                                                                    name=name),
                    )