示例#1
0
    def _load_folder_rulesets(self, folder, only_varname=None):
        path = folder.rules_file_path()

        config_dict = {
            "ALL_HOSTS": ALL_HOSTS,
            "ALL_SERVICES": ALL_SERVICES,
            "NEGATE": NEGATE,
            "FOLDER_PATH": folder.path(),
        }

        # Prepare empty rulesets so that rules.mk has something to
        # append to. We need to initialize all variables here, even
        # when only loading with only_varname.
        for varname in rulespec_registry.keys():
            if ':' in varname:
                dictname, _subkey = varname.split(":")
                config_dict[dictname] = {}
            else:
                config_dict[varname] = []

        # Initialize rulesets once
        self._initialize_rulesets(only_varname=only_varname)

        if os.path.exists(path):
            self.from_config(folder, store.load_mk_file(path, config_dict),
                             only_varname)
示例#2
0
    def _load_folder_rulesets(
        self, folder: CREFolder, only_varname: Optional[RulesetName] = None
    ) -> None:
        path = folder.rules_file_path()

        if not os.path.exists(path):
            return  # Do not initialize rulesets when no rule at all exists

        config_dict = {
            "ALL_HOSTS": ALL_HOSTS,
            "ALL_SERVICES": ALL_SERVICES,
            "NEGATE": NEGATE,
            "FOLDER_PATH": folder.path(),
        }

        # Prepare empty rulesets so that rules.mk has something to
        # append to. We need to initialize all variables here, even
        # when only loading with only_varname.
        for varname in rulespec_registry.keys():
            if ":" in varname:
                dictname, _subkey = varname.split(":")
                config_dict[dictname] = {}
            else:
                config_dict[varname] = []

        self.from_config(folder, store.load_mk_file(path, config_dict), only_varname)
示例#3
0
 def _initialize_rulesets(self,
                          only_varname: Optional[RulesetName] = None
                          ) -> None:
     varnames = [only_varname] if only_varname else rulespec_registry.keys()
     self._rulesets = {
         varname: Ruleset(varname, self._tag_to_group_map)
         for varname in varnames
     }
示例#4
0
    def _initialize_rulesets(self, only_varname=None):
        if only_varname:
            varnames = [only_varname]
        else:
            varnames = rulespec_registry.keys()

        for varname in varnames:
            if varname in self._rulesets:
                continue
            self._rulesets[varname] = Ruleset(varname, self._tag_to_group_map)
示例#5
0
    def from_config(self, folder, rulesets_config, only_varname=None):
        for varname in rulespec_registry.keys():
            if only_varname and varname != only_varname:
                continue  # skip unwanted options

            ruleset = self._rulesets.setdefault(varname, Ruleset(varname))

            if ':' in varname:
                dictname, subkey = varname.split(":")
                ruleset_config = rulesets_config.get(dictname, {})
                if subkey in ruleset_config:
                    ruleset.from_config(folder, ruleset_config[subkey])
            else:
                ruleset.from_config(folder, rulesets_config.get(varname, []))
示例#6
0
    def from_config(self, folder, rulesets_config, only_varname=None):
        if only_varname:
            varnames = [only_varname]
        else:
            varnames = rulespec_registry.keys()

        for varname in varnames:
            if varname not in self._rulesets:
                self._rulesets[varname] = Ruleset(varname, self._tag_to_group_map)
            if ':' in varname:
                dictname, subkey = varname.split(":")
                ruleset_config = rulesets_config.get(dictname, {})
                if subkey in ruleset_config:
                    self._rulesets[varname].from_config(folder, ruleset_config[subkey])
            else:
                self._rulesets[varname].from_config(folder, rulesets_config.get(varname, []))
示例#7
0
    def from_config(self, folder, rulesets_config, only_varname=None):
        varnames = [only_varname] if only_varname else rulespec_registry.keys()
        for varname in varnames:
            if ':' in varname:
                config_varname, subkey = varname.split(":", 1)  # type: Tuple[str, Optional[str]]
                rulegroup_config = rulesets_config.get(config_varname, {})
                if subkey not in rulegroup_config:
                    continue  # Nothing configured: nothing left to do

                ruleset_config = rulegroup_config[subkey]
            else:
                config_varname, subkey = varname, None
                ruleset_config = rulesets_config.get(config_varname, [])

            if not ruleset_config:
                continue  # Nothing configured: nothing left to do

            self._rulesets[varname].from_config(folder, ruleset_config)
示例#8
0
    def from_config(
        self, folder: CREFolder, rulesets_config, only_varname: Optional[RulesetName] = None
    ) -> None:
        varnames = [only_varname] if only_varname else rulespec_registry.keys()
        config_varname: str
        subkey: Optional[str]
        for varname in varnames:
            if ":" in varname:
                config_varname, subkey = varname.split(":", 1)
                rulegroup_config = rulesets_config.get(config_varname, {})
                if subkey not in rulegroup_config:
                    continue  # Nothing configured: nothing left to do

                ruleset_config = rulegroup_config[subkey]
            else:
                config_varname, subkey = varname, None
                ruleset_config = rulesets_config.get(config_varname, [])

            if not ruleset_config:
                continue  # Nothing configured: nothing left to do

            self._rulesets[varname].from_config(folder, ruleset_config)