4f87a14c7e
We used to have source as a publisher argument, but this anyway ends being included in its Sample itself. So rather than complicating the internal publishing API, simplify it and just include source as a Sample field. Change-Id: Idb9d0c2b5969318dd16394a81d7d61c67f613892
102 lines
3.1 KiB
Python
Executable File
102 lines
3.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- encoding: utf-8 -*-
|
|
#
|
|
# Copyright © 2012-2013 Julien Danjou
|
|
#
|
|
# Author: Julien Danjou <julien@danjou.info>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""Command line tool for creating counter for Ceilometer.
|
|
"""
|
|
|
|
import logging
|
|
import sys
|
|
|
|
from oslo.config import cfg
|
|
|
|
from ceilometer import sample
|
|
from ceilometer import pipeline
|
|
from ceilometer import service
|
|
from ceilometer import transformer
|
|
from ceilometer.openstack.common import timeutils
|
|
from ceilometer.openstack.common import context
|
|
|
|
|
|
cfg.CONF.register_cli_opts([
|
|
cfg.StrOpt('counter-name',
|
|
short='n',
|
|
help='counter name',
|
|
required=True),
|
|
cfg.StrOpt('counter-type',
|
|
short='y',
|
|
help='counter type (gauge, delta, cumulative)',
|
|
default='gauge',
|
|
required=True),
|
|
cfg.StrOpt('counter-unit',
|
|
short='U',
|
|
help='counter unit',
|
|
default=None),
|
|
cfg.IntOpt('counter-volume',
|
|
short='l',
|
|
help='counter volume value',
|
|
default=1),
|
|
cfg.StrOpt('counter-resource',
|
|
short='r',
|
|
help='counter resource id',
|
|
required=True),
|
|
cfg.StrOpt('counter-user',
|
|
short='u',
|
|
help='counter user id'),
|
|
cfg.StrOpt('counter-project',
|
|
short='p',
|
|
help='counter project id'),
|
|
cfg.StrOpt('counter-timestamp',
|
|
short='i',
|
|
help='counter timestamp',
|
|
default=timeutils.utcnow().isoformat()),
|
|
cfg.StrOpt('counter-metadata',
|
|
short='m',
|
|
help='counter metadata'),
|
|
])
|
|
|
|
service.prepare_service()
|
|
|
|
# Set up logging to use the console
|
|
console = logging.StreamHandler(sys.stderr)
|
|
console.setLevel(logging.DEBUG)
|
|
formatter = logging.Formatter('%(message)s')
|
|
console.setFormatter(formatter)
|
|
root_logger = logging.getLogger('')
|
|
root_logger.addHandler(console)
|
|
root_logger.setLevel(logging.DEBUG)
|
|
|
|
pipeline_manager = pipeline.setup_pipeline(
|
|
transformer.TransformerExtensionManager(
|
|
'ceilometer.transformer',
|
|
),
|
|
)
|
|
|
|
with pipeline_manager.publisher(context.get_admin_context()) as p:
|
|
p([sample.Sample(
|
|
name=cfg.CONF.counter_name,
|
|
type=cfg.CONF.counter_type,
|
|
unit=cfg.CONF.counter_unit,
|
|
volume=cfg.CONF.counter_volume,
|
|
user_id=cfg.CONF.counter_user,
|
|
project_id=cfg.CONF.counter_project,
|
|
resource_id=cfg.CONF.counter_resource,
|
|
timestamp=cfg.CONF.counter_timestamp,
|
|
resource_metadata=cfg.CONF.counter_metadata and eval(
|
|
cfg.CONF.counter_metadata))])
|