Beispiel #1
0
    def _load_definitions(self):
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        meters_cfg = declarative.load_definitions(
            self.manager.conf, {},
            self.manager.conf.meter.meter_definitions_cfg_file,
            pkg_resources.resource_filename(__name__, "data/meters.yaml"))

        definitions = {}
        disable_non_metric_meters = (
            self.manager.conf.notification.disable_non_metric_meters)
        for meter_cfg in reversed(meters_cfg['metric']):
            if meter_cfg.get('name') in definitions:
                # skip duplicate meters
                LOG.warning(
                    _LW("Skipping duplicate meter definition %s") % meter_cfg)
                continue
            if (meter_cfg.get('volume') != 1 or not disable_non_metric_meters):
                try:
                    md = MeterDefinition(meter_cfg, plugin_manager)
                except declarative.DefinitionException as e:
                    errmsg = _LE("Error loading meter definition: %s")
                    LOG.error(errmsg, six.text_type(e))
                else:
                    definitions[meter_cfg['name']] = md
        return definitions.values()
Beispiel #2
0
 def _load_resources_definitions(cls, conf):
     plugin_manager = extension.ExtensionManager(namespace="ceilometer.event.trait_plugin")
     data = declarative.load_definitions({}, conf.dispatcher_gnocchi.resources_definition_file)
     return [
         ResourcesDefinition(r, conf.dispatcher_gnocchi.archive_policy, plugin_manager)
         for r in data.get("resources", [])
     ]
Beispiel #3
0
    def _load_definitions():
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        meters_cfg = declarative.load_definitions(
            {}, cfg.CONF.meter.meter_definitions_cfg_file,
            pkg_resources.resource_filename(__name__, "data/meters.yaml"))

        definitions = {}
        for meter_cfg in reversed(meters_cfg['metric']):
            if meter_cfg.get('name') in definitions:
                # skip duplicate meters
                LOG.warning(_LW("Skipping duplicate meter definition %s")
                            % meter_cfg)
                continue
            if (meter_cfg.get('volume') != 1
                    or not cfg.CONF.notification.disable_non_metric_meters):
                try:
                    md = MeterDefinition(meter_cfg, plugin_manager)
                except declarative.DefinitionException as me:
                    errmsg = (_LE("Error loading meter definition : %(err)s")
                              % dict(err=six.text_type(me)))
                    LOG.error(errmsg)
                else:
                    definitions[meter_cfg['name']] = md
        return definitions.values()
Beispiel #4
0
def setup_events(trait_plugin_mgr):
    """Setup the event definitions from yaml config file."""
    return NotificationEventsConverter(
        declarative.load_definitions(cfg.CONF, [],
                                     cfg.CONF.event.definitions_cfg_file),
        trait_plugin_mgr,
        add_catchall=not cfg.CONF.event.drop_unmatched_notifications)
Beispiel #5
0
def setup_events(conf, trait_plugin_mgr):
    """Setup the event definitions from yaml config file."""
    return NotificationEventsConverter(
        conf,
        declarative.load_definitions(conf, [],
                                     conf.event.definitions_cfg_file),
        trait_plugin_mgr)
Beispiel #6
0
def setup_events(conf, trait_plugin_mgr):
    """Setup the event definitions from yaml config file."""
    return NotificationEventsConverter(
        conf,
        declarative.load_definitions(conf, [],
                                     conf.event.definitions_cfg_file),
        trait_plugin_mgr)
Beispiel #7
0
    def _load_definitions(self):
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        definitions = {}
        mfs = []
        for dir in self.manager.conf.meter.meter_definitions_dirs:
            for filepath in sorted(glob.glob(os.path.join(dir, "*.yaml"))):
                if filepath is not None:
                    mfs.append(filepath)
        if self.manager.conf.meter.meter_definitions_cfg_file is not None:
            mfs.append(
                pkg_resources.resource_filename(
                    self.manager.conf.meter.meter_definitions_cfg_file))
        for mf in mfs:
            meters_cfg = declarative.load_definitions(self.manager.conf, {},
                                                      mf)

            for meter_cfg in reversed(meters_cfg['metric']):
                if meter_cfg.get('name') in definitions:
                    # skip duplicate meters
                    LOG.warning("Skipping duplicate meter definition %s" %
                                meter_cfg)
                    continue
                try:
                    md = MeterDefinition(meter_cfg, self.manager.conf,
                                         plugin_manager)
                except declarative.DefinitionException as e:
                    errmsg = "Error loading meter definition: %s"
                    LOG.error(errmsg, six.text_type(e))
                else:
                    definitions[meter_cfg['name']] = md
        return definitions.values()
Beispiel #8
0
 def _load_resources_definitions(cls, conf):
     plugin_manager = extension.ExtensionManager(
         namespace='ceilometer.event.trait_plugin')
     data = declarative.load_definitions(
         {}, conf.dispatcher_gnocchi.resources_definition_file)
     return [ResourcesDefinition(r, conf.dispatcher_gnocchi.archive_policy,
                                 plugin_manager)
             for r in data.get('resources', [])]
Beispiel #9
0
def setup_events(conf, trait_plugin_mgr):
    """Setup the event definitions from yaml config file."""
    return NotificationEventsConverter(
        conf,
        declarative.load_definitions(
            conf, [], conf.event.definitions_cfg_file,
            pkg_resources.resource_filename(
                'ceilometer', "pipeline/data/event_definitions.yaml")),
        trait_plugin_mgr)
Beispiel #10
0
 def _setup_meter_def_file(self, cfg):
     cfg = cfg.encode('utf-8')
     meter_cfg_file = fileutils.write_to_tempfile(content=cfg,
                                                  prefix="snmp",
                                                  suffix="yaml")
     self.conf.set_override('meter_definitions_file',
                            meter_cfg_file,
                            group='hardware')
     cfg = declarative.load_definitions(
         self.conf, {}, self.conf.hardware.meter_definitions_file)
     return cfg
Beispiel #11
0
 def _setup_meter_def_file(self, cfg):
     if six.PY3:
         cfg = cfg.encode('utf-8')
     meter_cfg_file = fileutils.write_to_tempfile(content=cfg,
                                                  prefix="snmp",
                                                  suffix="yaml")
     self.conf.set_override(
         'meter_definitions_file',
         meter_cfg_file, group='hardware')
     cfg = declarative.load_definitions(
         {}, self.conf.hardware.meter_definitions_file)
     return cfg
Beispiel #12
0
    def build_pollsters(cls):
        if not cls.mapping:
            definition_cfg = declarative.load_definitions(
                {}, cfg.CONF.hardware.meter_definitions_file,
                pkg_resources.resource_filename(__name__, "data/snmp.yaml"))
            cls.mapping = load_definition(definition_cfg)

        pollsters = []
        for name in cls.mapping:
            pollster = cls()
            pollster._update_meter_definition(cls.mapping[name])
            pollsters.append((name, pollster))
        return pollsters
Beispiel #13
0
    def build_pollsters(cls, conf):
        if not cls.mapping:
            definition_cfg = declarative.load_definitions(
                conf, {}, conf.hardware.meter_definitions_file,
                pkg_resources.resource_filename(__name__, "data/snmp.yaml"))
            cls.mapping = load_definition(definition_cfg)

        pollsters = []
        for name in cls.mapping:
            pollster = cls(conf)
            pollster._update_meter_definition(cls.mapping[name])
            pollsters.append((name, pollster))
        return pollsters
Beispiel #14
0
 def _load_resources_definitions(cls, conf):
     plugin_manager = extension.ExtensionManager(
         namespace='ceilometer.event.trait_plugin')
     data = declarative.load_definitions(
         {}, conf.dispatcher_gnocchi.resources_definition_file)
     resource_defs = []
     for resource in data.get('resources', []):
         try:
             resource_defs.append(
                 ResourcesDefinition(resource,
                                     conf.dispatcher_gnocchi.archive_policy,
                                     plugin_manager))
         except Exception as exc:
             LOG.error(_LE("Failed to load resource due to error %s") % exc)
     return resource_defs
Beispiel #15
0
 def _load_resources_definitions(cls, conf):
     plugin_manager = extension.ExtensionManager(
         namespace='ceilometer.event.trait_plugin')
     data = declarative.load_definitions(
         {}, conf.dispatcher_gnocchi.resources_definition_file)
     resource_defs = []
     for resource in data.get('resources', []):
         try:
             resource_defs.append(ResourcesDefinition(
                 resource,
                 conf.dispatcher_gnocchi.archive_policy, plugin_manager))
         except Exception as exc:
             LOG.error(_LE("Failed to load resource due to error %s") %
                       exc)
     return resource_defs
Beispiel #16
0
 def _load_resources_definitions(conf, archive_policy,
                                 resources_definition_file):
     plugin_manager = extension.ExtensionManager(
         namespace='ceilometer.event.trait_plugin')
     data = declarative.load_definitions(
         conf, {}, resources_definition_file,
         pkg_resources.resource_filename(__name__,
                                         "data/gnocchi_resources.yaml"))
     resource_defs = []
     for resource in data.get('resources', []):
         try:
             resource_defs.append(
                 ResourcesDefinition(resource, archive_policy,
                                     plugin_manager))
         except Exception as exc:
             LOG.error("Failed to load resource due to error %s" % exc)
     return resource_defs
Beispiel #17
0
    def _load_definitions():
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        meters_cfg = declarative.load_definitions(
            {}, cfg.CONF.meter.meter_definitions_cfg_file,
            pkg_resources.resource_filename(__name__, "data/meters.yaml"))

        definitions = []
        for meter_cfg in reversed(meters_cfg['metric']):
            if (meter_cfg['volume'] != 1
                    or not cfg.CONF.notification.disable_non_metric_meters):
                try:
                    md = MeterDefinition(meter_cfg, plugin_manager)
                except declarative.DefinitionException as me:
                    errmsg = (_LE("Error loading meter definition : %(err)s")
                              % dict(err=six.text_type(me)))
                    LOG.error(errmsg)
                else:
                    definitions.append(md)
        return definitions
Beispiel #18
0
    def _load_definitions():
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        meters_cfg = declarative.load_definitions(
            {}, cfg.CONF.meter.meter_definitions_cfg_file,
            pkg_resources.resource_filename(__name__, "data/meters.yaml"))

        definitions = []
        for meter_cfg in reversed(meters_cfg['metric']):
            if (meter_cfg['volume'] != 1
                    or not cfg.CONF.notification.disable_non_metric_meters):
                try:
                    md = MeterDefinition(meter_cfg, plugin_manager)
                except declarative.DefinitionException as me:
                    errmsg = (_LE("Error loading meter definition : %(err)s")
                              % dict(err=six.text_type(me)))
                    LOG.error(errmsg)
                else:
                    definitions.append(md)
        return definitions
Beispiel #19
0
    def _load_definitions(conf, archive_policy_override,
                          resources_definition_file):
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        data = declarative.load_definitions(
            conf, {}, resources_definition_file,
            pkg_resources.resource_filename(__name__,
                                            "data/gnocchi_resources.yaml"))

        archive_policy_default = data.get("archive_policy_default",
                                          "ceilometer-low")
        resource_defs = []
        for resource in data.get('resources', []):
            try:
                resource_defs.append(
                    ResourcesDefinition(resource, archive_policy_default,
                                        archive_policy_override,
                                        plugin_manager))
            except Exception:
                LOG.error("Failed to load resource due to error",
                          exc_info=True)
        return resource_defs, data.get("archive_policies", [])
Beispiel #20
0
    def _load_definitions(conf, archive_policy_override,
                          resources_definition_file):
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        data = declarative.load_definitions(
            conf, {}, resources_definition_file,
            pkg_resources.resource_filename(__name__,
                                            "data/gnocchi_resources.yaml"))

        archive_policy_default = data.get("archive_policy_default",
                                          "ceilometer-low")
        resource_defs = []
        for resource in data.get('resources', []):
            try:
                resource_defs.append(ResourcesDefinition(
                    resource,
                    archive_policy_default,
                    archive_policy_override,
                    plugin_manager))
            except Exception:
                LOG.error("Failed to load resource due to error",
                          exc_info=True)
        return resource_defs, data.get("archive_policies", [])
Beispiel #21
0
    def _load_definitions(self):
        plugin_manager = extension.ExtensionManager(
            namespace='ceilometer.event.trait_plugin')
        meters_cfg = declarative.load_definitions(
            self.manager.conf, {},
            self.manager.conf.meter.meter_definitions_cfg_file,
            pkg_resources.resource_filename(__name__, "data/meters.yaml"))

        definitions = {}
        for meter_cfg in reversed(meters_cfg['metric']):
            if meter_cfg.get('name') in definitions:
                # skip duplicate meters
                LOG.warning(_LW("Skipping duplicate meter definition %s")
                            % meter_cfg)
                continue
            try:
                md = MeterDefinition(meter_cfg, plugin_manager)
            except declarative.DefinitionException as e:
                errmsg = _LE("Error loading meter definition: %s")
                LOG.error(errmsg, six.text_type(e))
            else:
                definitions[meter_cfg['name']] = md
        return definitions.values()
Beispiel #22
0
def setup_events(trait_plugin_mgr):
    """Setup the event definitions from yaml config file."""
    return NotificationEventsConverter(
        declarative.load_definitions([], cfg.CONF.event.definitions_cfg_file),
        trait_plugin_mgr,
        add_catchall=not cfg.CONF.event.drop_unmatched_notifications)
Beispiel #23
0
    def create_dynamic_pollsters(self):
        """Creates dynamic pollsters

        This method Creates dynamic pollsters based on configurations placed on
        'pollsters_definitions_dirs'

        :return: a list with the dynamic pollsters defined by the operator.
        """

        pollsters_definitions_dirs = self.conf.pollsters_definitions_dirs
        if not pollsters_definitions_dirs:
            LOG.info("Variable 'pollsters_definitions_dirs' not defined.")
            return []

        LOG.info("Looking for dynamic pollsters configurations at [%s].",
                 pollsters_definitions_dirs)
        pollsters_definitions_files = []
        for directory in pollsters_definitions_dirs:
            files = glob.glob(os.path.join(directory, "*.yaml"))
            if not files:
                LOG.info("No dynamic pollsters found in folder [%s].",
                         directory)
                continue
            for filepath in sorted(files):
                if filepath is not None:
                    pollsters_definitions_files.append(filepath)

        if not pollsters_definitions_files:
            LOG.info("No dynamic pollsters file found in dirs [%s].",
                     pollsters_definitions_dirs)
            return []

        pollsters_definitions = {}
        for pollsters_definitions_file in pollsters_definitions_files:
            pollsters_cfg = declarative.load_definitions(
                self.conf, {}, pollsters_definitions_file)

            LOG.info("File [%s] has [%s] dynamic pollster configurations.",
                     pollsters_definitions_file, len(pollsters_cfg))

            for pollster_cfg in pollsters_cfg:
                pollster_name = pollster_cfg['name']
                if pollster_name not in pollsters_definitions:
                    LOG.info("Loading dynamic pollster [%s] from file [%s].",
                             pollster_name, pollsters_definitions_file)
                    try:
                        pollsters_definitions[pollster_name] =\
                            dynamic_pollster.DynamicPollster(
                                pollster_cfg, self.conf)
                    except Exception as e:
                        LOG.error(
                            "Error [%s] while loading dynamic pollster [%s].",
                            e, pollster_name)

                else:
                    LOG.info(
                        "Dynamic pollster [%s] is already defined."
                        "Therefore, we are skipping it.", pollster_name)

        LOG.debug("Total of dynamic pollsters [%s] loaded.",
                  len(pollsters_definitions))
        return pollsters_definitions.values()