Example #1
0
    def load_config(self, raw_config):
        if 'groups' not in raw_config:
            raise InvalidConfig("'groups' not defined in config")

        if 'rules' not in raw_config:
            raise InvalidConfig("'rules' not defined in config")

        for raw_group in raw_config['groups']:
            group = parsers.parse_group(raw_group)
            self.groups_by_name[group.name] = group

            for member in group.members:
                self.group_names_by_member[member].append(group.name)

        for raw_rule in raw_config['rules']:
            rule = parsers.parse_rule(raw_rule)
            if rule.group not in self.groups_by_name:
                raise InvalidConfig(
                    "Rule defined for group '{0}', but no such group is defined"
                    .format(rule.group))

            self.rules.append(rule)

        log.info("Successfully loaded %d groups: %s", len(self.groups_by_name),
                 ", ".join(self.groups_by_name.keys()))
        log.info("Successfully loaded %d rules", len(self.rules))

        self.has_been_initialized = True
def test_normal_group_parses_ok(group_data):
    group = parsers.parse_group(group_data)

    assert group.name == group_data['name']
    assert group.members == group_data['members']
def test_missing_members_in_group_errors(group_data):
    del group_data['members']
    with pytest.raises(exceptions.InvalidConfig):
        parsers.parse_group(group_data)