Exemplo n.º 1
0
    def __init__(self, definition_cfg, default_archive_policy, plugin_manager):
        self._default_archive_policy = default_archive_policy
        self.cfg = definition_cfg

        for field, field_type in self.MANDATORY_FIELDS.items():
            if field not in self.cfg:
                raise declarative.ResourceDefinitionException(
                    _LE("Required field %s not specified") % field, self.cfg)
            if not isinstance(self.cfg[field], field_type):
                raise declarative.ResourceDefinitionException(
                    _LE("Required field %(field)s should be a %(type)s") % {
                        'field': field,
                        'type': field_type
                    }, self.cfg)

        self._attributes = {}
        for name, attr_cfg in self.cfg.get('attributes', {}).items():
            self._attributes[name] = declarative.Definition(
                name, attr_cfg, plugin_manager)

        self._event_attributes = {}
        for name, attr_cfg in self.cfg.get('event_attributes', {}).items():
            self._event_attributes[name] = declarative.Definition(
                name, attr_cfg, plugin_manager)

        self.metrics = {}
        for t in self.cfg['metrics']:
            archive_policy = self.cfg.get('archive_policy',
                                          self._default_archive_policy)
            if archive_policy is None:
                self.metrics[t] = {}
            else:
                self.metrics[t] = dict(archive_policy_name=archive_policy)
Exemplo n.º 2
0
 def _check_required_and_types(expected, definition):
     for field, field_types in expected.items():
         if field not in definition:
             raise declarative.ResourceDefinitionException(
                 _("Required field %s not specified") % field, definition)
         if not isinstance(definition[field], field_types):
             raise declarative.ResourceDefinitionException(
                 _("Required field %(field)s should be a %(type)s") %
                 {'field': field, 'type': field_types}, definition)