diff -Nru ceilometer-2014.1~b3/ceilometer/alarm/evaluator/__init__.py ceilometer-2014.1~rc1/ceilometer/alarm/evaluator/__init__.py --- ceilometer-2014.1~b3/ceilometer/alarm/evaluator/__init__.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/alarm/evaluator/__init__.py 2014-03-31 15:32:25.000000000 +0000 @@ -58,6 +58,7 @@ os_username=auth_config.os_username, os_cacert=auth_config.os_cacert, os_endpoint_type=auth_config.os_endpoint_type, + insecure=auth_config.insecure, ) self.api_client = ceiloclient.get_client(2, **creds) return self.api_client diff -Nru ceilometer-2014.1~b3/ceilometer/alarm/service.py ceilometer-2014.1~rc1/ceilometer/alarm/service.py --- ceilometer-2014.1~b3/ceilometer/alarm/service.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/alarm/service.py 2014-03-31 15:32:25.000000000 +0000 @@ -28,13 +28,11 @@ from ceilometer.alarm.partition import coordination from ceilometer.alarm import rpc as rpc_alarm from ceilometer.openstack.common.gettextutils import _ # noqa -from ceilometer.openstack.common import importutils from ceilometer.openstack.common import log from ceilometer.openstack.common import network_utils from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher from ceilometer.openstack.common.rpc import service as rpc_service from ceilometer.openstack.common import service as os_service -from ceilometer import service OPTS = [ @@ -45,9 +43,6 @@ ' collection of underlying metrics.', deprecated_opts=[cfg.DeprecatedOpt( 'threshold_evaluation_interval', group='alarm')]), - cfg.StrOpt('evaluation_service', - default='ceilometer.alarm.service.SingletonAlarmService', - help='Class to launch as alarm evaluation service.'), ] cfg.CONF.register_opts(OPTS, group='alarm') @@ -86,6 +81,7 @@ os_username=auth_config.os_username, os_cacert=auth_config.os_cacert, os_endpoint_type=auth_config.os_endpoint_type, + insecure=auth_config.insecure, ) self.api_client = ceiloclient.get_client(2, **creds) return self.api_client @@ -138,12 +134,6 @@ 'value': True}]) -def alarm_evaluator(): - service.prepare_service() - eval_service = importutils.import_object(cfg.CONF.alarm.evaluation_service) - os_service.launch(eval_service).wait() - - cfg.CONF.import_opt('host', 'ceilometer.service') @@ -281,9 +271,3 @@ data.get('current'), data.get('reason'), data.get('reason_data')) - - -def alarm_notifier(): - service.prepare_service() - os_service.launch(AlarmNotifierService( - cfg.CONF.host, 'ceilometer.alarm')).wait() diff -Nru ceilometer-2014.1~b3/ceilometer/api/app.py ceilometer-2014.1~rc1/ceilometer/api/app.py --- ceilometer-2014.1~b3/ceilometer/api/app.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/api/app.py 2014-03-31 15:32:25.000000000 +0000 @@ -18,8 +18,10 @@ import logging import os +import socket from wsgiref import simple_server +import netaddr from oslo.config import cfg import pecan @@ -28,7 +30,6 @@ from ceilometer.api import hooks from ceilometer.api import middleware from ceilometer.openstack.common import log -from ceilometer import service from ceilometer import storage LOG = log.getLogger(__name__) @@ -106,15 +107,28 @@ return self.v2(environ, start_response) -def start(): - service.prepare_service() +def get_server_cls(host): + """Return an appropriate WSGI server class base on provided host + :param host: The listen host for the ceilometer API server. + """ + server_cls = simple_server.WSGIServer + if netaddr.valid_ipv6(host): + # NOTE(dzyu) make sure use IPv6 sockets if host is in IPv6 pattern + if getattr(server_cls, 'address_family') == socket.AF_INET: + class server_cls(server_cls): + address_family = socket.AF_INET6 + return server_cls + + +def build_server(): # Build the WSGI app root = VersionSelectorApplication() # Create the WSGI server and start it host, port = cfg.CONF.api.host, cfg.CONF.api.port - srv = simple_server.make_server(host, port, root) + server_cls = get_server_cls(host) + srv = simple_server.make_server(host, port, root, server_cls) LOG.info(_('Starting server in PID %s') % os.getpid()) LOG.info(_("Configuration:")) @@ -127,5 +141,4 @@ else: LOG.info(_("serving on http://%(host)s:%(port)s") % ( {'host': host, 'port': port})) - - srv.serve_forever() + return srv diff -Nru ceilometer-2014.1~b3/ceilometer/api/controllers/v2.py ceilometer-2014.1~rc1/ceilometer/api/controllers/v2.py --- ceilometer-2014.1~b3/ceilometer/api/controllers/v2.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/api/controllers/v2.py 2014-03-31 15:32:25.000000000 +0000 @@ -272,9 +272,10 @@ class ProjectNotAuthorized(ClientSideError): - def __init__(self, id): + def __init__(self, id, aspect='project'): + params = dict(aspect=aspect, id=id) super(ProjectNotAuthorized, self).__init__( - _("Not Authorized to access project %s") % id, + _("Not Authorized to access %(aspect)s %(id)s") % params, status_code=401) @@ -332,7 +333,29 @@ def _validate_query(query, db_func, internal_keys=[], - is_timestamp_valid=True): + allow_timestamps=True): + """Validates the syntax of the query and verifies that the query + request is authorized for the included project. + + :param query: Query expression that should be validated + :param db_func: the function on the storage level, of which arguments + will form the valid_keys list, which defines the valid fields for a + query expression + :param internal_keys: internally used field names, that should not be + used for querying + :param allow_timestamps: defines whether the timestamp-based constraint is + applicable for this query or not + + :returns: None, if the query is valid + + :raises InvalidInput: if an operator is not supported for a given field + :raises InvalidInput: if timestamp constraints are allowed, but + search_offset was included without timestamp constraint + :raises: UnknownArgument: if a field name is not a timestamp field, nor + in the list of valid keys + + """ + _verify_query_segregation(query) valid_keys = inspect.getargspec(db_func)[0] @@ -345,45 +368,73 @@ has_timestamp_query = _validate_timestamp_fields(query, 'timestamp', ('lt', 'le', 'gt', 'ge'), - is_timestamp_valid) + allow_timestamps) has_search_offset_query = _validate_timestamp_fields(query, 'search_offset', ('eq'), - is_timestamp_valid) + allow_timestamps) if has_search_offset_query and not has_timestamp_query: raise wsme.exc.InvalidInput('field', 'search_offset', "search_offset cannot be used without " + "timestamp") + def _is_field_metadata(field): + return (field.startswith('metadata.') or + field.startswith('resource_metadata.')) + for i in query: if i.field not in ('timestamp', 'search_offset'): - if i.op == 'eq': - if i.field == 'enabled': - i._get_value_as_type('boolean') - elif (i.field.startswith('metadata.') or - i.field.startswith('resource_metadata.')): - i._get_value_as_type() + key = translation.get(i.field, i.field) + operator = i.op + if (key in valid_keys or _is_field_metadata(i.field)): + if operator == 'eq': + if key == 'enabled': + i._get_value_as_type('boolean') + elif _is_field_metadata(key): + i._get_value_as_type() else: - key = translation.get(i.field, i.field) - if key not in valid_keys: - msg = ("unrecognized field in query: %s, " - "valid keys: %s") % (query, valid_keys) - raise wsme.exc.UnknownArgument(key, msg) + raise wsme.exc.InvalidInput('op', i.op, + 'unimplemented operator for ' + '%s' % i.field) else: - raise wsme.exc.InvalidInput('op', i.op, - 'unimplemented operator for %s' % - i.field) + msg = ("unrecognized field in query: %s, " + "valid keys: %s") % (query, valid_keys) + raise wsme.exc.UnknownArgument(key, msg) def _validate_timestamp_fields(query, field_name, operator_list, - is_timestamp_valid): + allow_timestamps): + """Validates the timestamp related constraints in a query expression, if + there are any. + + :param query: query expression that may contain the timestamp fields + :param field_name: timestamp name, which should be checked (timestamp, + search_offset) + :param operator_list: list of operators that are supported for that + timestamp, which was specified in the parameter field_name + :param allow_timestamps: defines whether the timestamp-based constraint is + applicable to this query or not + + :returns: True, if there was a timestamp constraint, containing + a timestamp field named as defined in field_name, in the query and it + was allowed and syntactically correct. + :returns: False, if there wasn't timestamp constraint, containing a + timestamp field named as defined in field_name, in the query + + :raises InvalidInput: if an operator is unsupported for a given timestamp + field + :raises UnknownArgument: if the timestamp constraint is not allowed in + the query + + """ + for item in query: if item.field == field_name: #If *timestamp* or *search_offset* field was specified in the #query, but timestamp is not supported on that resource, on #which the query was invoked, then raise an exception. - if not is_timestamp_valid: + if not allow_timestamps: raise wsme.exc.UnknownArgument(field_name, "not valid for " + "this resource") @@ -396,9 +447,9 @@ def _query_to_kwargs(query, db_func, internal_keys=[], - is_timestamp_valid=True): + allow_timestamps=True): _validate_query(query, db_func, internal_keys=internal_keys, - is_timestamp_valid=is_timestamp_valid) + allow_timestamps=allow_timestamps) query = _sanitize_query(query, db_func) internal_keys.append('self') valid_keys = set(inspect.getargspec(db_func)[0]) - set(internal_keys) @@ -848,6 +899,8 @@ kwargs['meter'] = self.meter_name f = storage.SampleFilter(**kwargs) g = _validate_groupby_fields(groupby) + + aggregate = utils.uniq(aggregate, ['func', 'param']) computed = pecan.request.storage_conn.get_meter_statistics(f, period, g, @@ -930,7 +983,7 @@ """ #Timestamp field is not supported for Meter queries kwargs = _query_to_kwargs(q, pecan.request.storage_conn.get_meters, - is_timestamp_valid=False) + allow_timestamps=False) return [Meter.from_db_model(m) for m in pecan.request.storage_conn.get_meters(**kwargs)] @@ -1088,14 +1141,14 @@ order_directions = _list_to_regexp(order_directions, regexp_prefix) timestamp_fields = ["timestamp", "state_timestamp"] - name_mapping = {"user": "user_id", - "project": "project_id", - "resource": "resource_id"} - def __init__(self, query, db_model, additional_valid_keys, + def __init__(self, query, db_model, additional_name_mapping={}, metadata_allowed=False): + self.name_mapping = {"user": "user_id", + "project": "project_id"} + self.name_mapping.update(additional_name_mapping) valid_keys = db_model.get_field_names() - valid_keys = list(valid_keys) + additional_valid_keys + valid_keys = list(valid_keys) + self.name_mapping.keys() valid_fields = _list_to_regexp(valid_keys) if metadata_allowed: @@ -1333,10 +1386,10 @@ "The ID of the user who created the resource or updated it last" first_sample_timestamp = datetime.datetime - "UTC date & time of the first sample associated with the resource" + "UTC date & time not later than the first sample known for this resource" last_sample_timestamp = datetime.datetime - "UTC date & time of the last sample associated with the resource" + "UTC date & time not earlier than the last sample known for this resource" metadata = {wtypes.text: wtypes.text} "Arbitrary metadata associated with the resource" @@ -1374,14 +1427,15 @@ class ResourcesController(rest.RestController): """Works on resources.""" - def _resource_links(self, resource_id): + def _resource_links(self, resource_id, meter_links=1): links = [_make_link('self', pecan.request.host_url, 'resources', resource_id)] - for meter in pecan.request.storage_conn.get_meters(resource= - resource_id): - query = {'field': 'resource_id', 'value': resource_id} - links.append(_make_link(meter.name, pecan.request.host_url, - 'meters', meter.name, query=query)) + if meter_links: + for meter in pecan.request.storage_conn.get_meters(resource= + resource_id): + query = {'field': 'resource_id', 'value': resource_id} + links.append(_make_link(meter.name, pecan.request.host_url, + 'meters', meter.name, query=query)) return links @wsme_pecan.wsexpose(Resource, unicode) @@ -1398,16 +1452,18 @@ return Resource.from_db_and_links(resources[0], self._resource_links(resource_id)) - @wsme_pecan.wsexpose([Resource], [Query]) - def get_all(self, q=[]): + @wsme_pecan.wsexpose([Resource], [Query], int) + def get_all(self, q=[], meter_links=1): """Retrieve definitions of all of the resources. :param q: Filter rules for the resources to be returned. + :param meter_links: option to include related meter links """ kwargs = _query_to_kwargs(q, pecan.request.storage_conn.get_resources) resources = [ Resource.from_db_and_links(r, - self._resource_links(r.resource_id)) + self._resource_links(r.resource_id, + meter_links)) for r in pecan.request.storage_conn.get_resources(**kwargs)] return resources @@ -1442,7 +1498,7 @@ "The number of historical periods to evaluate the threshold" exclude_outliers = wsme.wsattr(bool, default=False) - "Whether datapoints with anomolously low sample counts are excluded" + "Whether datapoints with anomalously low sample counts are excluded" def __init__(self, query=None, **kwargs): if query: @@ -1461,7 +1517,7 @@ #statistics queries as the sliding evaluation window advances #over time. _validate_query(threshold_rule.query, storage.SampleFilter.__init__, - is_timestamp_valid=False) + allow_timestamps=False) return threshold_rule @property @@ -1662,17 +1718,8 @@ @staticmethod def validate(alarm): - if (alarm.threshold_rule in (wtypes.Unset, None) - and alarm.combination_rule in (wtypes.Unset, None)): - error = _("either threshold_rule or combination_rule " - "must be set") - raise ClientSideError(error) - - if alarm.threshold_rule and alarm.combination_rule: - error = _("threshold_rule and combination_rule " - "cannot be set at the same time") - raise ClientSideError(error) + Alarm.check_rule(alarm) if alarm.threshold_rule: # ensure an implicit constraint on project_id is added to # the query if not already present @@ -1691,8 +1738,26 @@ if not alarms: raise EntityNotFound(_('Alarm'), id) + tc_names = [tc.name for tc in alarm.time_constraints] + if len(tc_names) > len(set(tc_names)): + error = _("Time constraint names must be " + "unique for a given alarm.") + raise ClientSideError(error) + return alarm + @staticmethod + def check_rule(alarm): + rule = '%s_rule' % alarm.type + if getattr(alarm, rule) in (wtypes.Unset, None): + error = _("%(rule)s must be set for %(type)s" + " type alarm") % {"rule": rule, "type": alarm.type} + raise ClientSideError(error) + if alarm.threshold_rule and alarm.combination_rule: + error = _("threshold_rule and combination_rule " + "cannot be set at the same time") + raise ClientSideError(error) + @classmethod def sample(cls): return cls(alarm_id=None, @@ -1850,6 +1915,15 @@ else: data.state_timestamp = alarm_in.state_timestamp + # make sure alarms are unique by name per project. + if alarm_in.name != data.name: + alarms = list(self.conn.get_alarms(name=data.name, + project=data.project_id)) + if alarms: + raise ClientSideError( + _("Alarm with name=%s exists") % data.name, + status_code=409) + old_alarm = Alarm.from_db_model(alarm_in).as_dict(storage.models.Alarm) updated_alarm = data.as_dict(storage.models.Alarm) try: @@ -1969,15 +2043,24 @@ now = timeutils.utcnow() data.alarm_id = str(uuid.uuid4()) - user, project = acl.get_limited_to(pecan.request.headers) - if user: - data.user_id = user - elif data.user_id == wtypes.Unset: - data.user_id = pecan.request.headers.get('X-User-Id') - if project: - data.project_id = project - elif data.project_id == wtypes.Unset: - data.project_id = pecan.request.headers.get('X-Project-Id') + user_limit, project_limit = acl.get_limited_to(pecan.request.headers) + + def _set_ownership(aspect, owner_limitation, header): + attr = '%s_id' % aspect + requested_owner = getattr(data, attr) + explicit_owner = requested_owner != wtypes.Unset + caller = pecan.request.headers.get(header) + if (owner_limitation and explicit_owner + and requested_owner != caller): + raise ProjectNotAuthorized(requested_owner, aspect) + + actual_owner = (owner_limitation or + requested_owner if explicit_owner else caller) + setattr(data, attr, actual_owner) + + _set_ownership('user', user_limit, 'X-User-Id') + _set_ownership('project', project_limit, 'X-Project-Id') + data.timestamp = now data.state_timestamp = now @@ -2010,7 +2093,7 @@ #Timestamp is not supported field for Simple Alarm queries kwargs = _query_to_kwargs(q, pecan.request.storage_conn.get_alarms, - is_timestamp_valid=False) + allow_timestamps=False) return [Alarm.from_db_model(m) for m in pecan.request.storage_conn.get_alarms(**kwargs)] @@ -2254,9 +2337,15 @@ :param body: Query rules for the samples to be returned. """ + sample_name_mapping = {"resource": "resource_id", + "meter": "counter_name", + "type": "counter_type", + "unit": "counter_unit", + "volume": "counter_volume"} + query = ValidatedComplexQuery(body, storage.models.Sample, - ["user", "project", "resource"], + sample_name_mapping, metadata_allowed=True) query.validate(visibility_field="project_id") conn = pecan.request.storage_conn @@ -2276,8 +2365,7 @@ :param body: Query rules for the alarm history to be returned. """ query = ValidatedComplexQuery(body, - storage.models.AlarmChange, - ["user", "project"]) + storage.models.AlarmChange) query.validate(visibility_field="on_behalf_of") conn = pecan.request.storage_conn return [AlarmChange.from_db_model(s) @@ -2298,8 +2386,7 @@ :param body: Query rules for the alarms to be returned. """ query = ValidatedComplexQuery(body, - storage.models.Alarm, - ["user", "project"]) + storage.models.Alarm) query.validate(visibility_field="project_id") conn = pecan.request.storage_conn return [Alarm.from_db_model(s) @@ -2373,6 +2460,9 @@ @wsme_pecan.wsexpose(Capabilities) def get(self): + """Returns a flattened dictionary of API capabilities supported + by the currently configured storage driver. + """ # variation in API capabilities is effectively determined by # the lack of strict feature parity across storage drivers driver_capabilities = pecan.request.storage_conn.get_capabilities() diff -Nru ceilometer-2014.1~b3/ceilometer/central/manager.py ceilometer-2014.1~rc1/ceilometer/central/manager.py --- ceilometer-2014.1~b3/ceilometer/central/manager.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/central/manager.py 2014-03-31 15:32:25.000000000 +0000 @@ -20,9 +20,8 @@ from oslo.config import cfg from ceilometer import agent +from ceilometer.openstack.common.gettextutils import _ # noqa from ceilometer.openstack.common import log -from ceilometer.openstack.common import service as os_service -from ceilometer import service cfg.CONF.import_group('service_credentials', 'ceilometer.service') @@ -35,19 +34,18 @@ super(AgentManager, self).__init__('central') def interval_task(self, task): - self.keystone = ksclient.Client( - username=cfg.CONF.service_credentials.os_username, - password=cfg.CONF.service_credentials.os_password, - tenant_id=cfg.CONF.service_credentials.os_tenant_id, - tenant_name=cfg.CONF.service_credentials.os_tenant_name, - cacert=cfg.CONF.service_credentials.os_cacert, - auth_url=cfg.CONF.service_credentials.os_auth_url, - region_name=cfg.CONF.service_credentials.os_region_name, - insecure=cfg.CONF.service_credentials.insecure) + try: + self.keystone = ksclient.Client( + username=cfg.CONF.service_credentials.os_username, + password=cfg.CONF.service_credentials.os_password, + tenant_id=cfg.CONF.service_credentials.os_tenant_id, + tenant_name=cfg.CONF.service_credentials.os_tenant_name, + cacert=cfg.CONF.service_credentials.os_cacert, + auth_url=cfg.CONF.service_credentials.os_auth_url, + region_name=cfg.CONF.service_credentials.os_region_name, + insecure=cfg.CONF.service_credentials.insecure) + except Exception as e: + LOG.error(_('Skip interval_task because Keystone error: %s'), e) + return super(AgentManager, self).interval_task(task) - - -def agent_central(): - service.prepare_service() - os_service.launch(AgentManager()).wait() diff -Nru ceilometer-2014.1~b3/ceilometer/cli.py ceilometer-2014.1~rc1/ceilometer/cli.py --- ceilometer-2014.1~b3/ceilometer/cli.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/cli.py 2014-03-31 15:32:25.000000000 +0000 @@ -19,19 +19,110 @@ """Command line tool for creating meter for Ceilometer. """ - import logging import sys +import eventlet +# NOTE(jd) We need to monkey patch the socket and select module for, +# at least, oslo.rpc, otherwise everything's blocked on its first read() +# or select() +eventlet.monkey_patch(socket=True, select=True, thread=True) + + from oslo.config import cfg +from ceilometer.alarm import service as alarm_service +from ceilometer.api import app +from ceilometer.central import manager as central_manager +from ceilometer import collector +from ceilometer.compute import manager as compute_manager +from ceilometer import notification from ceilometer.openstack.common import context +from ceilometer.openstack.common import importutils +from ceilometer.openstack.common import service as os_service from ceilometer.openstack.common import timeutils from ceilometer import pipeline from ceilometer import sample from ceilometer import service +from ceilometer import storage from ceilometer import transformer +OPTS = [ + cfg.StrOpt('evaluation_service', + default='ceilometer.alarm.service.SingletonAlarmService', + help='Class to launch as alarm evaluation service.'), +] + +cfg.CONF.register_opts(OPTS, group='alarm') +cfg.CONF.import_opt('time_to_live', 'ceilometer.storage', + group='database') + +LOG = logging.getLogger(__name__) + + +def alarm_notifier(): + service.prepare_service() + os_service.launch(alarm_service.AlarmNotifierService( + cfg.CONF.host, 'ceilometer.alarm')).wait() + + +def alarm_evaluator(): + service.prepare_service() + eval_service = importutils.import_object(cfg.CONF.alarm.evaluation_service) + os_service.launch(eval_service).wait() + + +def agent_central(): + service.prepare_service() + os_service.launch(central_manager.AgentManager()).wait() + + +def agent_compute(): + service.prepare_service() + os_service.launch(compute_manager.AgentManager()).wait() + + +def agent_notification(): + service.prepare_service() + launcher = os_service.ProcessLauncher() + launcher.launch_service( + notification.NotificationService(cfg.CONF.host, + 'ceilometer.agent.notification'), + workers=service.get_workers('notification')) + launcher.wait() + + +def api(): + service.prepare_service() + srv = app.build_server() + srv.serve_forever() + + +def collector_service(): + service.prepare_service() + launcher = os_service.ProcessLauncher() + launcher.launch_service( + collector.CollectorService(cfg.CONF.host, + 'ceilometer.collector'), + workers=service.get_workers('collector')) + launcher.wait() + + +def storage_dbsync(): + service.prepare_service() + storage.get_connection(cfg.CONF).upgrade() + + +def storage_expirer(): + service.prepare_service() + if cfg.CONF.database.time_to_live > 0: + LOG.debug(_("Clearing expired metering data")) + storage_conn = storage.get_connection(cfg.CONF) + storage_conn.clear_expired_metering_data( + cfg.CONF.database.time_to_live) + else: + LOG.info(_("Nothing to clean, database time to live is disabled")) + def send_sample(): cfg.CONF.register_cli_opts([ diff -Nru ceilometer-2014.1~b3/ceilometer/collector.py ceilometer-2014.1~rc1/ceilometer/collector.py --- ceilometer-2014.1~b3/ceilometer/collector.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/collector.py 2014-03-31 15:32:25.000000000 +0000 @@ -25,7 +25,6 @@ from ceilometer.openstack.common import log from ceilometer.openstack.common.rpc import dispatcher as rpc_dispatcher from ceilometer.openstack.common.rpc import service as rpc_service -from ceilometer.openstack.common import service as os_service from ceilometer.openstack.common import units from ceilometer import service @@ -106,9 +105,3 @@ """ self.dispatcher_manager.map_method('record_metering_data', data=data) - - -def collector(): - service.prepare_service() - os_service.launch(CollectorService(cfg.CONF.host, - 'ceilometer.collector')).wait() diff -Nru ceilometer-2014.1~b3/ceilometer/compute/manager.py ceilometer-2014.1~rc1/ceilometer/compute/manager.py --- ceilometer-2014.1~b3/ceilometer/compute/manager.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/manager.py 2014-03-31 15:32:25.000000000 +0000 @@ -19,8 +19,6 @@ from ceilometer import agent from ceilometer.compute.virt import inspector as virt_inspector from ceilometer.openstack.common import log -from ceilometer.openstack.common import service as os_service -from ceilometer import service LOG = log.getLogger(__name__) @@ -34,8 +32,3 @@ @property def inspector(self): return self._inspector - - -def agent_compute(): - service.prepare_service() - os_service.launch(AgentManager()).wait() diff -Nru ceilometer-2014.1~b3/ceilometer/compute/notifications/cpu.py ceilometer-2014.1~rc1/ceilometer/compute/notifications/cpu.py --- ceilometer-2014.1~b3/ceilometer/compute/notifications/cpu.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/notifications/cpu.py 2014-03-31 15:32:25.000000000 +0000 @@ -73,14 +73,14 @@ class CpuFrequency(ComputeMetricsNotificationBase): """Handle CPU current frequency message.""" metric = 'cpu.frequency' - sample_type = sample.TYPE_GAUGE, + sample_type = sample.TYPE_GAUGE unit = 'MHz' class CpuUserTime(ComputeMetricsNotificationBase): """Handle CPU user mode time message.""" metric = 'cpu.user.time' - sample_type = sample.TYPE_CUMULATIVE, + sample_type = sample.TYPE_CUMULATIVE unit = 'ns' @@ -88,53 +88,53 @@ """Handle CPU kernel time message.""" metric = 'cpu.kernel.time' unit = 'ns' - sample_type = sample.TYPE_CUMULATIVE, + sample_type = sample.TYPE_CUMULATIVE class CpuIdleTime(ComputeMetricsNotificationBase): """Handle CPU idle time message.""" metric = 'cpu.idle.time' unit = 'ns' - sample_type = sample.TYPE_CUMULATIVE, + sample_type = sample.TYPE_CUMULATIVE class CpuIowaitTime(ComputeMetricsNotificationBase): """Handle CPU I/O wait time message.""" metric = 'cpu.iowait.time' unit = 'ns' - sample_type = sample.TYPE_CUMULATIVE, + sample_type = sample.TYPE_CUMULATIVE class CpuKernelPercent(ComputeMetricsNotificationBase): """Handle CPU kernel percentage message.""" metric = 'cpu.kernel.percent' unit = '%' - sample_type = sample.TYPE_GAUGE, + sample_type = sample.TYPE_GAUGE class CpuIdlePercent(ComputeMetricsNotificationBase): """Handle CPU idle percentage message.""" metric = 'cpu.idle.percent' unit = '%' - sample_type = sample.TYPE_GAUGE, + sample_type = sample.TYPE_GAUGE class CpuUserPercent(ComputeMetricsNotificationBase): """Handle CPU user mode percentage message.""" metric = 'cpu.user.percent' unit = '%' - sample_type = sample.TYPE_GAUGE, + sample_type = sample.TYPE_GAUGE class CpuIowaitPercent(ComputeMetricsNotificationBase): """Handle CPU I/O wait percentage message.""" metric = 'cpu.iowait.percent' unit = '%' - sample_type = sample.TYPE_GAUGE, + sample_type = sample.TYPE_GAUGE class CpuPercent(ComputeMetricsNotificationBase): """Handle generic CPU utilization message.""" metric = 'cpu.percent' unit = '%' - sample_type = sample.TYPE_GAUGE, + sample_type = sample.TYPE_GAUGE diff -Nru ceilometer-2014.1~b3/ceilometer/compute/notifications/instance.py ceilometer-2014.1~rc1/ceilometer/compute/notifications/instance.py --- ceilometer-2014.1~b3/ceilometer/compute/notifications/instance.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/notifications/instance.py 2014-03-31 15:32:25.000000000 +0000 @@ -20,14 +20,45 @@ """Converters for producing compute sample messages from notification events. """ +import abc +import six + from ceilometer.compute import notifications +from ceilometer.compute import util from ceilometer import sample -class InstanceScheduled(notifications.ComputeNotificationBase): - event_types = ['scheduler.run_instance.scheduled'] +@six.add_metaclass(abc.ABCMeta) +class UserMetadataAwareInstanceNotificationBase( + notifications.ComputeNotificationBase): + """Consumes notifications containing instance user metadata. + """ def process_notification(self, message): + instance_properties = self.get_instance_properties(message) + if 'metadata' in instance_properties: + src_metadata = instance_properties['metadata'] + del instance_properties['metadata'] + util.add_reserved_user_metadata(src_metadata, instance_properties) + return self.get_sample(message) + + def get_instance_properties(self, message): + """Retrieve instance properties from notification payload.""" + return message['payload'] + + @abc.abstractmethod + def get_sample(self, message): + """Derive sample from notification payload.""" + + +class InstanceScheduled(UserMetadataAwareInstanceNotificationBase): + event_types = ['scheduler.run_instance.scheduled'] + + def get_instance_properties(self, message): + """Retrieve instance properties from notification payload.""" + return message['payload']['request_spec']['instance_properties'] + + def get_sample(self, message): yield sample.Sample.from_notification( name='instance.scheduled', type=sample.TYPE_DELTA, @@ -41,14 +72,15 @@ message=message) -class ComputeInstanceNotificationBase(notifications.ComputeNotificationBase): +class ComputeInstanceNotificationBase( + UserMetadataAwareInstanceNotificationBase): """Convert compute.instance.* notifications into Samples """ event_types = ['compute.instance.*'] class Instance(ComputeInstanceNotificationBase): - def process_notification(self, message): + def get_sample(self, message): yield sample.Sample.from_notification( name='instance', type=sample.TYPE_GAUGE, @@ -61,7 +93,7 @@ class Memory(ComputeInstanceNotificationBase): - def process_notification(self, message): + def get_sample(self, message): yield sample.Sample.from_notification( name='memory', type=sample.TYPE_GAUGE, @@ -74,7 +106,7 @@ class VCpus(ComputeInstanceNotificationBase): - def process_notification(self, message): + def get_sample(self, message): yield sample.Sample.from_notification( name='vcpus', type=sample.TYPE_GAUGE, @@ -87,7 +119,7 @@ class RootDiskSize(ComputeInstanceNotificationBase): - def process_notification(self, message): + def get_sample(self, message): yield sample.Sample.from_notification( name='disk.root.size', type=sample.TYPE_GAUGE, @@ -100,7 +132,7 @@ class EphemeralDiskSize(ComputeInstanceNotificationBase): - def process_notification(self, message): + def get_sample(self, message): yield sample.Sample.from_notification( name='disk.ephemeral.size', type=sample.TYPE_GAUGE, @@ -113,7 +145,7 @@ class InstanceFlavor(ComputeInstanceNotificationBase): - def process_notification(self, message): + def get_sample(self, message): instance_type = message.get('payload', {}).get('instance_type') if instance_type: yield sample.Sample.from_notification( @@ -134,7 +166,7 @@ event_types = ['compute.instance.delete.samples'] - def process_notification(self, message): + def get_sample(self, message): for s in message['payload'].get('samples', []): yield sample.Sample.from_notification( name=s['name'], diff -Nru ceilometer-2014.1~b3/ceilometer/compute/plugin.py ceilometer-2014.1~rc1/ceilometer/compute/plugin.py --- ceilometer-2014.1~b3/ceilometer/compute/plugin.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/plugin.py 2014-03-31 15:32:25.000000000 +0000 @@ -21,6 +21,7 @@ import abc import six +from ceilometer.openstack.common import timeutils from ceilometer import plugin @@ -37,3 +38,16 @@ :param cache: A dictionary for passing data between plugins :param resources: The resources to examine (expected to be instances) """ + + def _record_poll_time(self): + """Method records current time as the poll time. + + :return: time in seconds since the last poll time was recorded + """ + current_time = timeutils.utcnow() + duration = None + if hasattr(self, '_last_poll_time'): + duration = timeutils.delta_seconds(self._last_poll_time, + current_time) + self._last_poll_time = current_time + return duration diff -Nru ceilometer-2014.1~b3/ceilometer/compute/pollsters/cpu.py ceilometer-2014.1~rc1/ceilometer/compute/pollsters/cpu.py --- ceilometer-2014.1~b3/ceilometer/compute/pollsters/cpu.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/pollsters/cpu.py 2014-03-31 15:32:25.000000000 +0000 @@ -36,9 +36,9 @@ instance_name = util.instance_name(instance) try: cpu_info = manager.inspector.inspect_cpus(instance_name) - LOG.info(_("CPUTIME USAGE: %(instance)s %(time)d") % ( + LOG.info(_("CPUTIME USAGE: %(instance)s %(time)d"), {'instance': instance.__dict__, - 'time': cpu_info.time})) + 'time': cpu_info.time}) cpu_num = {'cpu_number': cpu_info.number} yield util.make_sample_from_instance( instance, @@ -51,7 +51,42 @@ except virt_inspector.InstanceNotFoundException as err: # Instance was deleted while getting samples. Ignore it. LOG.debug(_('Exception while getting samples %s'), err) + except NotImplementedError: + # Selected inspector does not implement this pollster. + LOG.debug(_('Obtaining CPU time is not implemented for %s' + ), manager.inspector.__class__.__name__) except Exception as err: LOG.error(_('could not get CPU time for %(id)s: %(e)s') % ( {'id': instance.id, 'e': err})) LOG.exception(err) + + +class CPUUtilPollster(plugin.ComputePollster): + + def get_samples(self, manager, cache, resources): + self._inspection_duration = self._record_poll_time() + for instance in resources: + LOG.debug(_('Checking CPU util for instance %s'), instance.id) + try: + cpu_info = manager.inspector.inspect_cpu_util( + instance, self._inspection_duration) + LOG.debug(_("CPU UTIL: %(instance)s %(util)d"), + ({'instance': instance.__dict__, + 'util': cpu_info.util})) + yield util.make_sample_from_instance( + instance, + name='cpu_util', + type=sample.TYPE_GAUGE, + unit='%', + volume=cpu_info.util, + ) + except virt_inspector.InstanceNotFoundException as err: + # Instance was deleted while getting samples. Ignore it. + LOG.debug(_('Exception while getting samples %s'), err) + except NotImplementedError: + # Selected inspector does not implement this pollster. + LOG.debug(_('Obtaining CPU Util is not implemented for %s' + ), manager.inspector.__class__.__name__) + except Exception as err: + LOG.error(_('Could not get CPU Util for %(id)s: %(e)s'), ( + {'id': instance.id, 'e': err})) diff -Nru ceilometer-2014.1~b3/ceilometer/compute/pollsters/disk.py ceilometer-2014.1~rc1/ceilometer/compute/pollsters/disk.py --- ceilometer-2014.1~b3/ceilometer/compute/pollsters/disk.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/pollsters/disk.py 2014-03-31 15:32:25.000000000 +0000 @@ -95,6 +95,12 @@ except virt_inspector.InstanceNotFoundException as err: # Instance was deleted while getting samples. Ignore it. LOG.debug(_('Exception while getting samples %s'), err) + except NotImplementedError: + # Selected inspector does not implement this pollster. + LOG.debug(_('%(inspector)s does not provide data for ' + ' %(pollster)s'), ({ + 'inspector': manager.inspector.__class__.__name__, + 'pollster': self.__class__.__name__})) except Exception as err: LOG.warning(_('Ignoring instance %(name)s: %(error)s') % ( {'name': instance_name, 'error': err})) @@ -151,3 +157,107 @@ unit='B', volume=c_data.w_bytes, ) + + +@six.add_metaclass(abc.ABCMeta) +class _DiskRatesPollsterBase(plugin.ComputePollster): + + CACHE_KEY_DISK_RATE = 'diskio-rate' + + def _populate_cache(self, inspector, cache, instance): + i_cache = cache.setdefault(self.CACHE_KEY_DISK_RATE, {}) + if instance.id not in i_cache: + r_bytes_rate = 0 + r_requests_rate = 0 + w_bytes_rate = 0 + w_requests_rate = 0 + disk_rates = inspector.inspect_disk_rates( + instance, self._inspection_duration) + for disk, info in disk_rates: + r_bytes_rate += info.read_bytes_rate + r_requests_rate += info.read_requests_rate + w_bytes_rate += info.write_bytes_rate + w_requests_rate += info.write_requests_rate + i_cache[instance.id] = virt_inspector.DiskRateStats( + r_bytes_rate, + r_requests_rate, + w_bytes_rate, + w_requests_rate + ) + return i_cache[instance.id] + + @abc.abstractmethod + def _get_sample(self, instance, disk_rates_info): + """Return one Sample.""" + + def get_samples(self, manager, cache, resources): + self._inspection_duration = self._record_poll_time() + for instance in resources: + try: + disk_rates_info = self._populate_cache( + manager.inspector, + cache, + instance, + ) + yield self._get_sample(instance, disk_rates_info) + except virt_inspector.InstanceNotFoundException as err: + # Instance was deleted while getting samples. Ignore it. + LOG.debug(_('Exception while getting samples %s'), err) + except NotImplementedError: + # Selected inspector does not implement this pollster. + LOG.debug(_('%(inspector)s does not provide data for ' + ' %(pollster)s'), ({ + 'inspector': manager.inspector.__class__.__name__, + 'pollster': self.__class__.__name__})) + except Exception as err: + instance_name = util.instance_name(instance) + LOG.error(_('Ignoring instance %(name)s: %(error)s') % ( + {'name': instance_name, 'error': err})) + + +class ReadBytesRatePollster(_DiskRatesPollsterBase): + + def _get_sample(self, instance, disk_rates_info): + return util.make_sample_from_instance( + instance, + name='disk.read.bytes.rate', + type=sample.TYPE_GAUGE, + unit='B/s', + volume=disk_rates_info.read_bytes_rate, + ) + + +class ReadRequestsRatePollster(_DiskRatesPollsterBase): + + def _get_sample(self, instance, disk_rates_info): + return util.make_sample_from_instance( + instance, + name='disk.read.requests.rate', + type=sample.TYPE_GAUGE, + unit='requests/s', + volume=disk_rates_info.read_requests_rate, + ) + + +class WriteBytesRatePollster(_DiskRatesPollsterBase): + + def _get_sample(self, instance, disk_rates_info): + return util.make_sample_from_instance( + instance, + name='disk.write.bytes.rate', + type=sample.TYPE_GAUGE, + unit='B/s', + volume=disk_rates_info.write_bytes_rate, + ) + + +class WriteRequestsRatePollster(_DiskRatesPollsterBase): + + def _get_sample(self, instance, disk_rates_info): + return util.make_sample_from_instance( + instance, + name='disk.write.requests.rate', + type=sample.TYPE_GAUGE, + unit='requests/s', + volume=disk_rates_info.write_requests_rate, + ) diff -Nru ceilometer-2014.1~b3/ceilometer/compute/pollsters/memory.py ceilometer-2014.1~rc1/ceilometer/compute/pollsters/memory.py --- ceilometer-2014.1~b3/ceilometer/compute/pollsters/memory.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/pollsters/memory.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,54 @@ +# Copyright (c) 2014 VMware, Inc. +# All Rights Reserved. +# +# 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. + +from ceilometer.compute import plugin +from ceilometer.compute.pollsters import util +from ceilometer.compute.virt import inspector as virt_inspector +from ceilometer.openstack.common.gettextutils import _ # noqa +from ceilometer.openstack.common import log +from ceilometer import sample + +LOG = log.getLogger(__name__) + + +class MemoryUsagePollster(plugin.ComputePollster): + + def get_samples(self, manager, cache, resources): + self._inspection_duration = self._record_poll_time() + for instance in resources: + LOG.debug(_('Checking memory usage for instance %s'), instance.id) + try: + memory_info = manager.inspector.inspect_memory_usage( + instance, self._inspection_duration) + LOG.debug(_("MEMORY USAGE: %(instance)s %(usage)f"), + ({'instance': instance.__dict__, + 'usage': memory_info.usage})) + yield util.make_sample_from_instance( + instance, + name='memory.usage', + type=sample.TYPE_GAUGE, + unit='MB', + volume=memory_info.usage, + ) + except virt_inspector.InstanceNotFoundException as err: + # Instance was deleted while getting samples. Ignore it. + LOG.debug(_('Exception while getting samples %s'), err) + except NotImplementedError: + # Selected inspector does not implement this pollster. + LOG.debug(_('Obtaining Memory Usage is not implemented for %s' + ), manager.inspector.__class__.__name__) + except Exception as err: + LOG.error(_('Could not get Memory Usage for %(id)s: %(e)s'), ( + {'id': instance.id, 'e': err})) diff -Nru ceilometer-2014.1~b3/ceilometer/compute/pollsters/net.py ceilometer-2014.1~rc1/ceilometer/compute/pollsters/net.py --- ceilometer-2014.1~b3/ceilometer/compute/pollsters/net.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/pollsters/net.py 2014-03-31 15:32:25.000000000 +0000 @@ -64,37 +64,75 @@ CACHE_KEY_VNIC = 'vnics' - def _get_vnics_for_instance(self, cache, inspector, instance_name): + def _get_vnic_info(self, inspector, instance): + instance_name = util.instance_name(instance) + return inspector.inspect_vnics(instance_name) + + def _get_rx_info(self, info): + return info.rx_bytes + + def _get_tx_info(self, info): + return info.tx_bytes + + def _get_vnics_for_instance(self, cache, inspector, instance): + instance_name = util.instance_name(instance) i_cache = cache.setdefault(self.CACHE_KEY_VNIC, {}) if instance_name not in i_cache: i_cache[instance_name] = list( - inspector.inspect_vnics(instance_name) + self._get_vnic_info(inspector, instance) ) return i_cache[instance_name] def get_samples(self, manager, cache, resources): + self._inspection_duration = self._record_poll_time() for instance in resources: instance_name = util.instance_name(instance) - LOG.info(_('checking instance %s'), instance.id) + LOG.debug(_('checking net info for instance %s'), instance.id) try: vnics = self._get_vnics_for_instance( cache, manager.inspector, - instance_name, + instance, ) for vnic, info in vnics: - LOG.info(self.NET_USAGE_MESSAGE, instance_name, - vnic.name, info.rx_bytes, info.tx_bytes) + LOG.debug(self.NET_USAGE_MESSAGE, instance_name, + vnic.name, self._get_rx_info(info), + self._get_tx_info(info)) yield self._get_sample(instance, vnic, info) except virt_inspector.InstanceNotFoundException as err: # Instance was deleted while getting samples. Ignore it. LOG.debug(_('Exception while getting samples %s'), err) + except NotImplementedError: + # Selected inspector does not implement this pollster. + LOG.debug(_('%(inspector)s does not provide data for ' + ' %(pollster)s'), ({ + 'inspector': manager.inspector.__class__.__name__, + 'pollster': self.__class__.__name__})) except Exception as err: LOG.warning(_('Ignoring instance %(name)s: %(error)s') % ( {'name': instance_name, 'error': err})) LOG.exception(err) +class _RateBase(_Base): + + NET_USAGE_MESSAGE = ' '.join(["NETWORK RATE:", "%s %s:", + "read-bytes-rate=%d", + "write-bytes-rate=%d"]) + + CACHE_KEY_VNIC = 'vnic-rates' + + def _get_vnic_info(self, inspector, instance): + return inspector.inspect_vnic_rates(instance, + self._inspection_duration) + + def _get_rx_info(self, info): + return info.rx_bytes_rate + + def _get_tx_info(self, info): + return info.tx_bytes_rate + + class IncomingBytesPollster(_Base): def _get_sample(self, instance, vnic, info): @@ -145,3 +183,29 @@ volume=info.tx_packets, vnic_data=vnic, ) + + +class IncomingBytesRatePollster(_RateBase): + + def _get_sample(self, instance, vnic, info): + return self.make_vnic_sample( + instance, + name='network.incoming.bytes.rate', + type=sample.TYPE_GAUGE, + unit='B/s', + volume=info.rx_bytes_rate, + vnic_data=vnic, + ) + + +class OutgoingBytesRatePollster(_RateBase): + + def _get_sample(self, instance, vnic, info): + return self.make_vnic_sample( + instance, + name='network.outgoing.bytes.rate', + type=sample.TYPE_GAUGE, + unit='B/s', + volume=info.tx_bytes_rate, + vnic_data=vnic, + ) diff -Nru ceilometer-2014.1~b3/ceilometer/compute/pollsters/util.py ceilometer-2014.1~rc1/ceilometer/compute/pollsters/util.py --- ceilometer-2014.1~b3/ceilometer/compute/pollsters/util.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/pollsters/util.py 2014-03-31 15:32:25.000000000 +0000 @@ -18,8 +18,7 @@ # License for the specific language governing permissions and limitations # under the License. -from oslo.config import cfg - +from ceilometer.compute import util as compute_util from ceilometer.openstack.common import timeutils from ceilometer import sample @@ -35,35 +34,6 @@ 'ramdisk_id', ] -OPTS = [ - cfg.ListOpt('reserved_metadata_namespace', - default=['metering.'], - help='List of metadata prefixes reserved for metering use.'), - cfg.IntOpt('reserved_metadata_length', - default=256, - help='Limit on length of reserved metadata values.'), -] - -cfg.CONF.register_opts(OPTS) - - -def _add_reserved_user_metadata(instance, metadata): - limit = cfg.CONF.reserved_metadata_length - user_metadata = {} - for prefix in cfg.CONF.reserved_metadata_namespace: - md = dict( - (k[len(prefix):].replace('.', '_'), - v[:limit] if isinstance(v, basestring) else v) - for k, v in instance.metadata.items() - if (k.startswith(prefix) and - k[len(prefix):].replace('.', '_') not in metadata) - ) - user_metadata.update(md) - if user_metadata: - metadata['user_metadata'] = user_metadata - - return metadata - def _get_metadata_from_object(instance): """Return a metadata dictionary for the instance. @@ -97,7 +67,7 @@ metadata['root_gb'] = int(metadata['disk_gb']) - \ int(metadata['ephemeral_gb']) - return _add_reserved_user_metadata(instance, metadata) + return compute_util.add_reserved_user_metadata(instance.metadata, metadata) def make_sample_from_instance(instance, name, type, unit, volume, diff -Nru ceilometer-2014.1~b3/ceilometer/compute/util.py ceilometer-2014.1~rc1/ceilometer/compute/util.py --- ceilometer-2014.1~b3/ceilometer/compute/util.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/util.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,49 @@ +# -*- encoding: utf-8 -*- +# +# Copyright © 2014 Red Hat, Inc +# +# Author: Eoghan Glynn +# +# 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. + +from oslo.config import cfg + + +OPTS = [ + cfg.ListOpt('reserved_metadata_namespace', + default=['metering.'], + help='List of metadata prefixes reserved for metering use.'), + cfg.IntOpt('reserved_metadata_length', + default=256, + help='Limit on length of reserved metadata values.'), +] + +cfg.CONF.register_opts(OPTS) + + +def add_reserved_user_metadata(src_metadata, dest_metadata): + limit = cfg.CONF.reserved_metadata_length + user_metadata = {} + for prefix in cfg.CONF.reserved_metadata_namespace: + md = dict( + (k[len(prefix):].replace('.', '_'), + v[:limit] if isinstance(v, basestring) else v) + for k, v in src_metadata.items() + if (k.startswith(prefix) and + k[len(prefix):].replace('.', '_') not in dest_metadata) + ) + user_metadata.update(md) + if user_metadata: + dest_metadata['user_metadata'] = user_metadata + + return dest_metadata diff -Nru ceilometer-2014.1~b3/ceilometer/compute/virt/hyperv/inspector.py ceilometer-2014.1~rc1/ceilometer/compute/virt/hyperv/inspector.py --- ceilometer-2014.1~b3/ceilometer/compute/virt/hyperv/inspector.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/virt/hyperv/inspector.py 2014-03-31 15:32:25.000000000 +0000 @@ -60,9 +60,9 @@ parameters=None) stats = virt_inspector.InterfaceStats( - rx_bytes=vnic_metrics['rx_bytes'], + rx_bytes=vnic_metrics['rx_mb'] * units.Mi, rx_packets=0, - tx_bytes=vnic_metrics['tx_bytes'], + tx_bytes=vnic_metrics['tx_mb'] * units.Mi, tx_packets=0) yield (interface, stats) @@ -77,9 +77,9 @@ stats = virt_inspector.DiskStats( read_requests=0, # Return bytes - read_bytes=disk_metrics['read_mb'] * units.Ki, + read_bytes=disk_metrics['read_mb'] * units.Mi, write_requests=0, - write_bytes=disk_metrics['write_mb'] * units.Ki, + write_bytes=disk_metrics['write_mb'] * units.Mi, errors=0) yield (disk, stats) diff -Nru ceilometer-2014.1~b3/ceilometer/compute/virt/hyperv/utilsv2.py ceilometer-2014.1~rc1/ceilometer/compute/virt/hyperv/utilsv2.py --- ceilometer-2014.1~b3/ceilometer/compute/virt/hyperv/utilsv2.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/virt/hyperv/utilsv2.py 2014-03-31 15:32:25.000000000 +0000 @@ -46,13 +46,15 @@ _PROC_SETTING = 'Msvm_ProcessorSettingData' _SYNTH_ETH_PORT = 'Msvm_SyntheticEthernetPortSettingData' _ETH_PORT_ALLOC = 'Msvm_EthernetPortAllocationSettingData' + _PORT_ACL_SET_DATA = 'Msvm_EthernetSwitchPortAclSettingData' _STORAGE_ALLOC = 'Msvm_StorageAllocationSettingData' _VS_SETTING_DATA = 'Msvm_VirtualSystemSettingData' _METRICS_ME = 'Msvm_MetricForME' + _BASE_METRICS_VALUE = 'Msvm_BaseMetricValue' _CPU_METRIC_NAME = 'Aggregated Average CPU Utilization' - _NET_IN_METRIC_NAME = 'Aggregated Filtered Incoming Network Traffic' - _NET_OUT_METRIC_NAME = 'Aggregated Filtered Outgoing Network Traffic' + _NET_IN_METRIC_NAME = 'Filtered Incoming Network Traffic' + _NET_OUT_METRIC_NAME = 'Filtered Outgoing Network Traffic' # Disk metrics are supported from Hyper-V 2012 R2 _DISK_RD_METRIC_NAME = 'Disk Data Read' _DISK_WR_METRIC_NAME = 'Disk Data Written' @@ -105,12 +107,16 @@ for port in ports: vnic = [v for v in vnics if port.Parent == v.path_()][0] - metric_values = self._get_metric_values( - port, [metric_def_in, metric_def_out]) + + metric_value_instances = self._get_metric_value_instances( + port.associators(wmi_result_class=self._PORT_ACL_SET_DATA), + self._BASE_METRICS_VALUE) + metric_values = self._sum_metric_values_by_defs( + metric_value_instances, [metric_def_in, metric_def_out]) yield { - 'rx_bytes': metric_values[0], - 'tx_bytes': metric_values[1], + 'rx_mb': metric_values[0], + 'tx_mb': metric_values[1], 'element_name': vnic.ElementName, 'address': vnic.Address } @@ -143,10 +149,7 @@ tot_metric_val += long(metric.MetricValue) return tot_metric_val - def _get_metric_values(self, element, metric_defs): - element_metrics = element.associators( - wmi_association_class=self._METRICS_ME) - + def _sum_metric_values_by_defs(self, element_metrics, metric_defs): metric_values = [] for metric_def in metric_defs: if metric_def: @@ -157,6 +160,20 @@ metric_values.append(0) return metric_values + def _get_metric_value_instances(self, elements, result_class): + instances = [] + for el in elements: + associators = el.associators(wmi_result_class=result_class) + if associators: + instances.append(associators[0]) + + return instances + + def _get_metric_values(self, element, metric_defs): + element_metrics = element.associators( + wmi_association_class=self._METRICS_ME) + return self._sum_metric_values_by_defs(element_metrics, metric_defs) + def _lookup_vm(self, vm_name): vms = self._conn.Msvm_ComputerSystem(ElementName=vm_name) n = len(vms) diff -Nru ceilometer-2014.1~b3/ceilometer/compute/virt/inspector.py ceilometer-2014.1~rc1/ceilometer/compute/virt/inspector.py --- ceilometer-2014.1~b3/ceilometer/compute/virt/inspector.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/virt/inspector.py 2014-03-31 15:32:25.000000000 +0000 @@ -53,6 +53,18 @@ # CPUStats = collections.namedtuple('CPUStats', ['number', 'time']) +# Named tuple representing CPU Utilization statistics. +# +# util: CPU utilization in percentage +# +CPUUtilStats = collections.namedtuple('CPUUtilStats', ['util']) + +# Named tuple representing Memory usage statistics. +# +# usage: Amount of memory used +# +MemoryUsageStats = collections.namedtuple('MemoryUsageStats', ['usage']) + # Named tuple representing vNICs. # @@ -77,6 +89,15 @@ 'tx_bytes', 'tx_packets']) +# Named tuple representing vNIC rate statistics. +# +# rx_bytes_rate: rate of received bytes +# tx_bytes_rate: rate of transmitted bytes +# +InterfaceRateStats = collections.namedtuple('InterfaceRateStats', + ['rx_bytes_rate', 'tx_bytes_rate']) + + # Named tuple representing disks. # # device: the device name for the disk @@ -97,6 +118,19 @@ 'write_bytes', 'write_requests', 'errors']) +# Named tuple representing disk rate statistics. +# +# read_bytes_rate: number of bytes read per second +# read_requests_rate: number of read operations per second +# write_bytes_rate: number of bytes written per second +# write_requests_rate: number of write operations per second +# +DiskRateStats = collections.namedtuple('DiskRateStats', + ['read_bytes_rate', + 'read_requests_rate', + 'write_bytes_rate', + 'write_requests_rate']) + # Exception types # @@ -125,6 +159,16 @@ """ raise NotImplementedError() + def inspect_cpu_util(self, instance, duration=None): + """Inspect the CPU Utilization (%) for an instance. + + :param instance: the target instance + :param duration: the last 'n' seconds, over which the value should be + inspected + :return: the percentage of CPU utilization + """ + raise NotImplementedError() + def inspect_vnics(self, instance_name): """Inspect the vNIC statistics for an instance. @@ -134,6 +178,17 @@ """ raise NotImplementedError() + def inspect_vnic_rates(self, instance, duration=None): + """Inspect the vNIC rate statistics for an instance. + + :param instance: the target instance + :param duration: the last 'n' seconds, over which the value should be + inspected + :return: for each vNIC, the rate of bytes & packets + received and transmitted + """ + raise NotImplementedError() + def inspect_disks(self, instance_name): """Inspect the disk statistics for an instance. @@ -143,6 +198,27 @@ """ raise NotImplementedError() + def inspect_memory_usage(self, instance, duration=None): + """Inspect the memory usage statistics for an instance. + + :param instance: the target instance + :param duration: the last 'n' seconds, over which the value should be + inspected + :return: the amount of memory used + """ + raise NotImplementedError() + + def inspect_disk_rates(self, instance, duration=None): + """Inspect the disk statistics as rates for an instance. + + :param instance: the target instance + :param duration: the last 'n' seconds, over which the value should be + inspected + :return: for each disk, the number of bytes & operations + read and written per second, with the error count + """ + raise NotImplementedError() + def get_hypervisor_inspector(): try: diff -Nru ceilometer-2014.1~b3/ceilometer/compute/virt/vmware/inspector.py ceilometer-2014.1~rc1/ceilometer/compute/virt/vmware/inspector.py --- ceilometer-2014.1~b3/ceilometer/compute/virt/vmware/inspector.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/virt/vmware/inspector.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,179 @@ +# Copyright (c) 2014 VMware, Inc. +# All Rights Reserved. +# +# 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. + +"""Implementation of Inspector abstraction for VMware vSphere""" + +from oslo.config import cfg +from oslo.vmware import api +from oslo.vmware import vim + +from ceilometer.compute.virt import inspector as virt_inspector +from ceilometer.compute.virt.vmware import vsphere_operations +from ceilometer.openstack.common import units + + +opt_group = cfg.OptGroup(name='vmware', + title='Options for VMware') + +OPTS = [ + cfg.StrOpt('host_ip', + default='', + help='IP address of the VMware Vsphere host'), + cfg.StrOpt('host_username', + default='', + help='Username of VMware Vsphere'), + cfg.StrOpt('host_password', + default='', + help='Password of VMware Vsphere'), + cfg.IntOpt('api_retry_count', + default=10, + help='Number of times a VMware Vsphere API must be retried'), + cfg.FloatOpt('task_poll_interval', + default=0.5, + help='Sleep time in seconds for polling an ongoing async ' + 'task') +] + +cfg.CONF.register_group(opt_group) +cfg.CONF.register_opts(OPTS, group=opt_group) + +VC_AVERAGE_MEMORY_CONSUMED_CNTR = 'mem:consumed:average' +VC_AVERAGE_CPU_CONSUMED_CNTR = 'cpu:usage:average' +VC_NETWORK_RX_COUNTER = 'net:received:average' +VC_NETWORK_TX_COUNTER = 'net:transmitted:average' +VC_DISK_READ_RATE_CNTR = "disk:read:average" +VC_DISK_READ_REQUESTS_RATE_CNTR = "disk:numberReadAveraged:average" +VC_DISK_WRITE_RATE_CNTR = "disk:write:average" +VC_DISK_WRITE_REQUESTS_RATE_CNTR = "disk:numberWriteAveraged:average" + + +def get_api_session(): + hostIp = cfg.CONF.vmware.host_ip + wsdl_loc = vim.Vim._get_wsdl_loc("https", hostIp) + api_session = api.VMwareAPISession( + hostIp, + cfg.CONF.vmware.host_username, + cfg.CONF.vmware.host_password, + cfg.CONF.vmware.api_retry_count, + cfg.CONF.vmware.task_poll_interval, + wsdl_loc=wsdl_loc) + return api_session + + +class VsphereInspector(virt_inspector.Inspector): + + def __init__(self): + super(VsphereInspector, self).__init__() + self._ops = vsphere_operations.VsphereOperations( + get_api_session(), 1000) + + def inspect_cpu_util(self, instance, duration=None): + vm_moid = self._ops.get_vm_moid(instance.id) + if vm_moid is None: + raise virt_inspector.InstanceNotFoundException( + _('VM %s not found in VMware Vsphere') % instance.id) + cpu_util_counter_id = self._ops.get_perf_counter_id( + VC_AVERAGE_CPU_CONSUMED_CNTR) + cpu_util = self._ops.query_vm_aggregate_stats( + vm_moid, cpu_util_counter_id, duration) + + # For this counter vSphere returns values scaled-up by 100, since the + # corresponding API can't return decimals, but only longs. + # For e.g. if the utilization is 12.34%, the value returned is 1234. + # Hence, dividing by 100. + cpu_util = cpu_util / 100 + return virt_inspector.CPUUtilStats(util=cpu_util) + + def inspect_vnic_rates(self, instance, duration=None): + vm_moid = self._ops.get_vm_moid(instance.id) + if not vm_moid: + raise virt_inspector.InstanceNotFoundException( + _('VM %s not found in VMware Vsphere') % instance.id) + + vnic_stats = {} + vnic_ids = set() + + for net_counter in (VC_NETWORK_RX_COUNTER, VC_NETWORK_TX_COUNTER): + net_counter_id = self._ops.get_perf_counter_id(net_counter) + vnic_id_to_stats_map = self._ops.query_vm_device_stats( + vm_moid, net_counter_id, duration) + vnic_stats[net_counter] = vnic_id_to_stats_map + vnic_ids.update(vnic_id_to_stats_map.iterkeys()) + + # Stats provided from vSphere are in KB/s, converting it to B/s. + for vnic_id in vnic_ids: + rx_bytes_rate = (vnic_stats[VC_NETWORK_RX_COUNTER] + .get(vnic_id, 0) * units.Ki) + tx_bytes_rate = (vnic_stats[VC_NETWORK_TX_COUNTER] + .get(vnic_id, 0) * units.Ki) + + stats = virt_inspector.InterfaceRateStats(rx_bytes_rate, + tx_bytes_rate) + interface = virt_inspector.Interface( + name=vnic_id, + mac=None, + fref=None, + parameters=None) + yield (interface, stats) + + def inspect_memory_usage(self, instance, duration=None): + vm_moid = self._ops.get_vm_moid(instance.id) + if vm_moid is None: + raise virt_inspector.InstanceNotFoundException( + _('VM %s not found in VMware Vsphere') % instance.id) + mem_counter_id = self._ops.get_perf_counter_id( + VC_AVERAGE_MEMORY_CONSUMED_CNTR) + memory = self._ops.query_vm_aggregate_stats( + vm_moid, mem_counter_id, duration) + # Stat provided from vSphere is in KB, converting it to MB. + memory = memory / units.Ki + return virt_inspector.MemoryUsageStats(usage=memory) + + def inspect_disk_rates(self, instance, duration=None): + vm_moid = self._ops.get_vm_moid(instance.id) + if not vm_moid: + raise virt_inspector.InstanceNotFoundException( + _('VM %s not found in VMware Vsphere') % instance.id) + + disk_stats = {} + disk_ids = set() + disk_counters = [ + VC_DISK_READ_RATE_CNTR, + VC_DISK_READ_REQUESTS_RATE_CNTR, + VC_DISK_WRITE_RATE_CNTR, + VC_DISK_WRITE_REQUESTS_RATE_CNTR + ] + + for disk_counter in disk_counters: + disk_counter_id = self._ops.get_perf_counter_id(disk_counter) + disk_id_to_stat_map = self._ops.query_vm_device_stats( + vm_moid, disk_counter_id, duration) + disk_stats[disk_counter] = disk_id_to_stat_map + disk_ids.update(disk_id_to_stat_map.iterkeys()) + + for disk_id in disk_ids: + + def stat_val(counter_name): + return disk_stats[counter_name].get(disk_id, 0) + + disk = virt_inspector.Disk(device=disk_id) + # Stats provided from vSphere are in KB/s, converting it to B/s. + disk_rate_info = virt_inspector.DiskRateStats( + read_bytes_rate=stat_val(VC_DISK_READ_RATE_CNTR) * units.Ki, + read_requests_rate=stat_val(VC_DISK_READ_REQUESTS_RATE_CNTR), + write_bytes_rate=stat_val(VC_DISK_WRITE_RATE_CNTR) * units.Ki, + write_requests_rate=stat_val(VC_DISK_WRITE_REQUESTS_RATE_CNTR) + ) + yield(disk, disk_rate_info) diff -Nru ceilometer-2014.1~b3/ceilometer/compute/virt/vmware/vsphere_operations.py ceilometer-2014.1~rc1/ceilometer/compute/virt/vmware/vsphere_operations.py --- ceilometer-2014.1~b3/ceilometer/compute/virt/vmware/vsphere_operations.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/compute/virt/vmware/vsphere_operations.py 2014-03-31 15:32:25.000000000 +0000 @@ -55,9 +55,11 @@ while result: for vm_object in result.objects: vm_moid = vm_object.obj.value - vm_instance_id = vm_object.propSet[0].val - if vm_instance_id: - self._vm_moid_lookup_map[vm_instance_id] = vm_moid + # propSet will be set only if the server provides value + if hasattr(vm_object, 'propSet') and vm_object.propSet: + vm_instance_id = vm_object.propSet[0].val + if vm_instance_id: + self._vm_moid_lookup_map[vm_instance_id] = vm_moid result = session.invoke_api(vim_util, "continue_retrieval", session.vim, result) @@ -136,34 +138,38 @@ return session.invoke_api(vim_util, "get_object_property", session.vim, vm_mobj, property_name) - def query_vm_aggregate_stats(self, vm_moid, counter_id): + def query_vm_aggregate_stats(self, vm_moid, counter_id, duration): """Method queries the aggregated real-time stat value for a VM. This method should be used for aggregate counters. :param vm_moid: moid of the VM :param counter_id: id of the perf counter in VC + :param duration: in seconds from current time, + over which the stat value was applicable :return: the aggregated stats value for the counter """ # For aggregate counters, device_name should be "" - stats = self._query_vm_perf_stats(vm_moid, counter_id, "") + stats = self._query_vm_perf_stats(vm_moid, counter_id, "", duration) # Performance manager provides the aggregated stats value # with device name -> None return stats.get(None, 0) - def query_vm_device_stats(self, vm_moid, counter_id): + def query_vm_device_stats(self, vm_moid, counter_id, duration): """Method queries the real-time stat values for a VM, for all devices. This method should be used for device(non-aggregate) counters. :param vm_moid: moid of the VM :param counter_id: id of the perf counter in VC + :param duration: in seconds from current time, + over which the stat value was applicable :return: a map containing the stat values keyed by the device ID/name """ # For device counters, device_name should be "*" to get stat values # for all devices. - stats = self._query_vm_perf_stats(vm_moid, counter_id, "*") + stats = self._query_vm_perf_stats(vm_moid, counter_id, "*", duration) # For some device counters, in addition to the per device value # the Performance manager also returns the aggregated value. @@ -171,7 +177,7 @@ stats.pop(None, None) return stats - def _query_vm_perf_stats(self, vm_moid, counter_id, device_name): + def _query_vm_perf_stats(self, vm_moid, counter_id, device_name, duration): """Method queries the real-time stat values for a VM. :param vm_moid: moid of the VM for which stats are needed @@ -180,6 +186,8 @@ queried. For aggregate counters pass empty string (""). For device counters pass "*", if stats are required over all devices. + :param duration: in seconds from current time, + over which the stat value was applicable :return: a map containing the stat values keyed by the device ID/name """ @@ -195,8 +203,10 @@ query_spec.entity = vim_util.get_moref(vm_moid, "VirtualMachine") query_spec.metricId = [metric_id] query_spec.intervalId = VC_REAL_TIME_SAMPLING_INTERVAL - # The following setting ensures that we need only one latest sample - query_spec.maxSample = 1 + # We query all samples which are applicable over the specified duration + samples_cnt = (duration / VC_REAL_TIME_SAMPLING_INTERVAL if duration + else 1) + query_spec.maxSample = samples_cnt perf_manager = session.vim.service_content.perfManager perf_stats = session.invoke_api(session.vim, 'QueryPerf', perf_manager, @@ -206,11 +216,12 @@ if perf_stats: entity_metric = perf_stats[0] sample_infos = entity_metric.sampleInfo - samples_count = len(sample_infos) - if samples_count > 0: + if len(sample_infos) > 0: for metric_series in entity_metric.value: - stat_value = metric_series.value[samples_count - 1] + # Take the average of all samples to improve the accuracy + # of the stat value + stat_value = float(sum(metric_series.value)) / samples_cnt device_id = metric_series.id.instance stat_values[device_id] = stat_value diff -Nru ceilometer-2014.1~b3/ceilometer/event/trait_plugins.py ceilometer-2014.1~rc1/ceilometer/event/trait_plugins.py --- ceilometer-2014.1~b3/ceilometer/event/trait_plugins.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/event/trait_plugins.py 2014-03-31 15:32:25.000000000 +0000 @@ -131,7 +131,7 @@ keys: path: jsonpath of field to match. bit: (int) number of bit to set (lsb is bit 0) - value: set bit if corrosponding field's value + value: set bit if corresponding field's value matches this. If value is not provided, bit will be set if the field exists (and is non-null), regardless of it's value. diff -Nru ceilometer-2014.1~b3/ceilometer/hardware/plugin.py ceilometer-2014.1~rc1/ceilometer/hardware/plugin.py --- ceilometer-2014.1~b3/ceilometer/hardware/plugin.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/hardware/plugin.py 2014-03-31 15:32:25.000000000 +0000 @@ -21,7 +21,7 @@ """Base class for plugins used by the hardware agent.""" import abc - +import itertools import six from ceilometer.central import plugin @@ -52,6 +52,7 @@ :param resources: end point to poll data from """ h_cache = cache.setdefault(self.CACHE_KEY, {}) + sample_iters = [] for res in resources: parsed_url = network_utils.urlsplit(res) inspector = self._get_inspector(parsed_url) @@ -64,25 +65,24 @@ i_cache[res] = list(func(parsed_url)) # Generate samples if i_cache[res]: - return self.generate_samples(parsed_url, i_cache[res]) + sample_iters.append(self.generate_samples(parsed_url, + i_cache[res])) except Exception as err: LOG.exception(_('inspector call %(func)r failed for ' 'host %(host)s: %(err)s'), dict(func=func, host=parsed_url.hostname, err=err)) - # if no resources, we still need to return an iterable - # because of the interface requirement - return () + return itertools.chain(*sample_iters) - def generate_samples(self, host_url, datas): - """Generate an interable Sample from the datas returned by inspector + def generate_samples(self, host_url, data): + """Generate an iterable Sample from the data returned by inspector :param host_url: host url of the endpoint - :param datas: list of data returned by the corresponding inspector + :param data: list of data returned by the corresponding inspector """ - return (self.generate_one_sample(host_url, data) for data in datas) + return (self.generate_one_sample(host_url, datum) for datum in data) @abc.abstractmethod def generate_one_sample(self, host_url, c_data): @@ -91,7 +91,7 @@ :param host_url: host url of the endpoint :param c_data: data returned by the corresponding inspector, of one of the types defined in the file - ceiloemter.hardware.inspector.base.CPUStats + ceilometer.hardware.inspector.base.CPUStats """ def _get_inspector(self, parsed_url): diff -Nru ceilometer-2014.1~b3/ceilometer/hardware/pollsters/util.py ceilometer-2014.1~rc1/ceilometer/hardware/pollsters/util.py --- ceilometer-2014.1~b3/ceilometer/hardware/pollsters/util.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/hardware/pollsters/util.py 2014-03-31 15:32:25.000000000 +0000 @@ -39,7 +39,7 @@ resource_metadata.update(get_metadata_from_host(host_url)) return sample.Sample( - name=name, + name='hardware.' + name, type=type, unit=unit, volume=volume, diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ar/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ar/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ar/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ar/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-09-12 07:56+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Arabic " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1919,58 +1969,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2040,14 +2044,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2057,3 +2053,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/bg_BG/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/bg_BG/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/bg_BG/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/bg_BG/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Bulgarian (Bulgaria) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/bn_IN/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/bn_IN/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/bn_IN/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/bn_IN/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-10-20 01:34+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Bengali (India) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1891,58 +1941,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2012,14 +2016,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2029,3 +2025,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/bs/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/bs/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/bs/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/bs/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Bosnian " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1973,58 +2023,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2073,14 +2077,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2090,3 +2086,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ca/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ca/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ca/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ca/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Catalan " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ceilometer.pot ceilometer-2014.1~rc1/ceilometer/locale/ceilometer.pot --- ceilometer-2014.1~b3/ceilometer/locale/ceilometer.pot 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ceilometer.pot 2014-03-31 15:32:27.000000000 +0000 @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ceilometer " -"jenkins.ceilometer.propose.translation.update.419\n" +"jenkins.ceilometer.propose.translation.update.452\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 -#, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" diff -Nru ceilometer-2014.1~b3/ceilometer/locale/cs/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/cs/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/cs/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/cs/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Czech " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/da/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/da/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/da/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/da/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-05-16 08:53+0000\n" "Last-Translator: Jens Hyllegaard \n" "Language-Team: Danish " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "Alarm er forkert" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1982,58 +2032,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2082,14 +2086,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2099,3 +2095,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/de/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/de/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/de/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/de/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-05-22 03:36+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: German " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/el/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/el/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/el/LC_MESSAGES/ceilometer.po 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/el/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -0,0 +1,1928 @@ +# Greek translations for ceilometer. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ceilometer project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ceilometer\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" +"PO-Revision-Date: 2014-03-28 18:51+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Greek " +"(http://www.transifex.com/projects/p/openstack/language/el/)\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 +#, python-format +msgid "UDP: Cannot decode data sent by %s" +msgstr "" + +#: ceilometer/collector.py:80 +#, python-format +msgid "UDP: Storing %s" +msgstr "" + +#: ceilometer/collector.py:84 +msgid "UDP: Unable to store meter" +msgstr "" + +#: ceilometer/notification.py:70 +msgid "Loading event definitions" +msgstr "" + +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 +#, python-format +msgid "Failed to load any notification handlers for %s" +msgstr "" + +#: ceilometer/notification.py:100 +#, python-format +msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" +msgstr "" + +#: ceilometer/notification.py:116 +#, python-format +msgid "Could not join consumer pool %(topic)s/%(exchange)s" +msgstr "" + +#: ceilometer/notification.py:128 +#, python-format +msgid "notification %r" +msgstr "" + +#: ceilometer/notification.py:145 +#, python-format +msgid "Saving event \"%s\"" +msgstr "" + +#: ceilometer/notifier.py:40 +#, python-format +msgid "loading notification handlers from %s" +msgstr "" + +#: ceilometer/pipeline.py:237 +#, python-format +msgid "Unable to load publisher %s" +msgstr "" + +#: ceilometer/pipeline.py:256 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" +" %(param)s" +msgstr "" + +#: ceilometer/pipeline.py:269 +#, python-format +msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:276 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " +"%(smp)s" +msgstr "" + +#: ceilometer/pipeline.py:296 +#, python-format +msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" +msgstr "" + +#: ceilometer/pipeline.py:306 +#, python-format +msgid "Pipeline %s: Publishing samples" +msgstr "" + +#: ceilometer/pipeline.py:311 +#, python-format +msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" +msgstr "" + +#: ceilometer/pipeline.py:315 +#, python-format +msgid "Pipeline %s: Published samples" +msgstr "" + +#: ceilometer/pipeline.py:331 +#, python-format +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:522 +#, python-format +msgid "Pipeline config file: %s" +msgstr "" + +#: ceilometer/pipeline.py:528 +#, python-format +msgid "Pipeline config: %s" +msgstr "" + +#: ceilometer/service.py:111 +#, python-format +msgid "loading dispatchers from %s" +msgstr "" + +#: ceilometer/service.py:119 +#, python-format +msgid "Failed to load any dispatchers for %s" +msgstr "" + +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + +#: ceilometer/alarm/rpc.py:52 +#, python-format +msgid "" +"alarm %(alarm_id)s has no action configured for state transition from " +"%(previous)s to state %(state)s, skipping the notification." +msgstr "" + +#: ceilometer/alarm/service.py:92 +#, python-format +msgid "initiating evaluation cycle on %d alarms" +msgstr "" + +#: ceilometer/alarm/service.py:97 +msgid "alarm evaluation cycle failed" +msgstr "" + +#: ceilometer/alarm/service.py:102 +#, python-format +msgid "skipping alarm %s: type unsupported" +msgstr "" + +#: ceilometer/alarm/service.py:106 +#, python-format +msgid "evaluating alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 +msgid "initialize_service_hooks" +msgstr "" + +#: ceilometer/alarm/service.py:224 +#, python-format +msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" +msgstr "" + +#: ceilometer/alarm/service.py:233 +#, python-format +msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" +msgstr "" + +#: ceilometer/alarm/service.py:239 +#, python-format +msgid "Notifying alarm %(id)s with action %(act)s" +msgstr "" + +#: ceilometer/alarm/service.py:244 +#, python-format +msgid "Unable to notify alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:264 +msgid "Unable to notify for an alarm with no action" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:71 +#, python-format +msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:83 +msgid "alarm state update failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:37 +msgid "alarm retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:51 +#, python-format +msgid "Alarms %(alarm_ids)s are in unknown state" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:74 +#, python-format +msgid "Transition to %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:78 +#, python-format +msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:63 +#, python-format +msgid "query stats from %(start)s to %(now)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:74 +#, python-format +msgid "sanitize stats %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:83 +#, python-format +msgid "excluded weak datapoints with sample counts %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:92 +#, python-format +msgid "pruned statistics to %d" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:97 +#, python-format +msgid "stats query %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:103 +msgid "alarm stats retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:112 +#, python-format +msgid "%d datapoints are unknown" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:136 +#, python-format +msgid "" +"Transition to %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:140 +#, python-format +msgid "" +"Remaining as %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:196 +#, python-format +msgid "comparing value %(value)s against threshold %(limit)s" +msgstr "" + +#: ceilometer/alarm/notifier/log.py:32 ceilometer/alarm/notifier/rest.py:58 +#, python-format +msgid "" +"Notifying alarm %(alarm_id)s from %(previous)s to %(current)s with action" +" %(action)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:132 +#, python-format +msgid "triggering %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:133 +#, python-format +msgid "known evaluators %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:136 +#, python-format +msgid "per evaluator allocation %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:146 +#, python-format +msgid "" +"%(this)s bailing on distribution cycle as older partition detected: " +"%(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:152 +#, python-format +msgid "%(verb)s-ing %(alloc)s to %(eval)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:156 +#, python-format +msgid "master taking %s for self" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:174 +#, python-format +msgid "newly deleted alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:177 +msgid "alarm deletion activity requires rebalance" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:202 +#, python-format +msgid "%s still warming up" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:207 +#, python-format +msgid "last heard from %(report)s %(delta)s seconds ago" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:212 +#, python-format +msgid "%(this)s detects stale evaluator: %(stale)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:217 +#, python-format +msgid "%(this)s sees older potential master: %(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:219 +#, python-format +msgid "%(this)s is master?: %(is_master)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:232 +#, python-format +msgid "newly created alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:243 +#, python-format +msgid "%(this)s not overtaken as master? %(still_ahead)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:253 +#, python-format +msgid "%s checking mastership status" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:260 +msgid "mastership check failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:270 +#, python-format +msgid "%(this)s knows about %(reports)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:276 +#, python-format +msgid "%(this)s got assignment: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:283 +#, python-format +msgid "%(this)s got allocation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:289 +#, python-format +msgid "%s reporting presence" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:293 +msgid "presence reporting failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:298 +#, python-format +msgid "%s has no assigned alarms to evaluate" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:302 +#, python-format +msgid "%(this)s alarms for evaluation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:308 +msgid "assignment retrieval failed" +msgstr "" + +#: ceilometer/api/app.py:133 +#, python-format +msgid "Starting server in PID %s" +msgstr "" + +#: ceilometer/api/app.py:134 +msgid "Configuration:" +msgstr "" + +#: ceilometer/api/app.py:138 +#, python-format +msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" +msgstr "" + +#: ceilometer/api/app.py:142 +#, python-format +msgid "serving on http://%(host)s:%(port)s" +msgstr "" + +#: ceilometer/api/middleware.py:112 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:86 +#, python-format +msgid "%(entity)s %(id)s Not Found" +msgstr "" + +#: ceilometer/api/controllers/v2.py:245 +#, python-format +msgid "Failed to convert the metadata value %s automatically" +msgstr "" + +#: ceilometer/api/controllers/v2.py:257 +#, python-format +msgid "Failed to convert the value %(value)s to the expected data type %(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:262 +#, python-format +msgid "" +"The data type %(type)s is not supported. The supported data type list is:" +" %(supported)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:267 +#, python-format +msgid "" +"Unexpected exception converting %(value)s to the expected data type " +"%(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:278 +#, python-format +msgid "Not Authorized to access %(aspect)s %(id)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 +msgid "clamping min timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 +msgid "clamping max timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 +msgid "Limit must be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:896 +msgid "Period must be positive." +msgstr "" + +#: ceilometer/api/controllers/v2.py:908 +#, python-format +msgid "computed value coming from %r" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1090 +msgid "Sample" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1272 +msgid "Limit should be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1364 +#, python-format +msgid "String %s is not a valid isotime" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1365 +#, python-format +msgid "Failed to parse the timestamp value %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1451 +msgid "Resource" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1525 +#, python-format +msgid "" +"Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " +"%(threshold)s over %(period)s seconds" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1566 +#, python-format +msgid "Combined state of alarms %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." +msgstr "" + +#: ceilometer/api/controllers/v2.py:1753 +#, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format +msgid "Error while putting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 +msgid "Alarm incorrect" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1983 +msgid "state invalid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2074 +#, python-format +msgid "Alarm with name='%s' exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2080 +#, python-format +msgid "Error while posting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2231 +#, python-format +msgid "operator %s not supported" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2252 +#, python-format +msgid "Getting traits for %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2316 +msgid "Event" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2319 +#, python-format +msgid "More than one event with id %s returned from storage driver" +msgstr "" + +#: ceilometer/api/v1/blueprint.py:569 +#, python-format +msgid "" +"start_timestamp %(start_timestamp)s, end_timestamp %(end_timestamp)s, " +"min_ts %(min_ts)s, max_ts %(max_ts)s" +msgstr "" + +#: ceilometer/central/manager.py:48 +#, python-format +msgid "Skip interval_task because Keystone error: %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:82 +#, python-format +msgid "using provided stats gatherer %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:85 +msgid "making a new stats gatherer" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:114 +#, python-format +msgid "INFO %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:147 +#, python-format +msgid "ignoring %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:149 +#, python-format +msgid "processing %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:153 +#, python-format +msgid "polling final stats for %r" +msgstr "" + +#: ceilometer/compute/notifications/cpu.py:55 +#, python-format +msgid "An error occurred while building %(m)s sample: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:35 +#, python-format +msgid "checking instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:39 +#, python-format +msgid "CPUTIME USAGE: %(instance)s %(time)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 +#, python-format +msgid "Exception while getting samples %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 +#, python-format +msgid "could not get CPU time for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 +#, python-format +msgid "Ignoring instance %(name)s: %(error)s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 +#, python-format +msgid "Unable to load the hypervisor inspector: %s" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 +#, python-format +msgid "VM %s not found on Hyper-V" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 +#, python-format +msgid "Duplicate VM name found: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:64 +#, python-format +msgid "Connecting to libvirt: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:77 +msgid "Connection to libvirt broke" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:117 +#, python-format +msgid "" +"Failed to inspect vnics of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:153 +#, python-format +msgid "" +"Failed to inspect disks of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + +#: ceilometer/dispatcher/database.py:50 +#, python-format +msgid "" +"metering data %(counter_name)s for %(resource_id)s @ %(timestamp)s: " +"%(counter_volume)s" +msgstr "" + +#: ceilometer/dispatcher/database.py:69 +#, python-format +msgid "Failed to record metering data: %s" +msgstr "" + +#: ceilometer/dispatcher/database.py:72 +#, python-format +msgid "message signature invalid, discarding message: %r" +msgstr "" + +#: ceilometer/energy/kwapi.py:77 +msgid "Kwapi endpoint not found" +msgstr "" + +#: ceilometer/event/converter.py:77 +#, python-format +msgid "Plugin specified, but no plugin name supplied for trait %s" +msgstr "" + +#: ceilometer/event/converter.py:86 +#, python-format +msgid "No plugin named %(plugin)s available for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:96 +#, python-format +msgid "Required field in trait definition not specified: '%s'" +msgstr "" + +#: ceilometer/event/converter.py:111 +#, python-format +msgid "" +"Parse error in JSONPath specification '%(jsonpath)s' for %(trait)s: " +"%(err)s" +msgstr "" + +#: ceilometer/event/converter.py:117 +#, python-format +msgid "Invalid trait type '%(type)s' for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:169 +#, python-format +msgid "Required field %s not specified" +msgstr "" + +#: ceilometer/event/converter.py:342 +#, python-format +msgid "Dropping Notification %(type)s (uuid:%(msgid)s)" +msgstr "" + +#: ceilometer/event/converter.py:366 +#, python-format +msgid "Event Definitions configuration file: %s" +msgstr "" + +#: ceilometer/event/converter.py:376 +#, python-format +msgid "" +"Invalid YAML syntax in Event Definitions file %(file)s at line: %(line)s," +" column: %(column)s." +msgstr "" + +#: ceilometer/event/converter.py:382 +#, python-format +msgid "YAML error reading Event Definitions file %(file)s" +msgstr "" + +#: ceilometer/event/converter.py:389 +msgid "No Event Definitions configuration file found! Using default config." +msgstr "" + +#: ceilometer/event/converter.py:393 +#, python-format +msgid "Event Definitions: %s" +msgstr "" + +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + +#: ceilometer/network/floatingip.py:45 +#, python-format +msgid "FLOATING IP USAGE: %s" +msgstr "" + +#: ceilometer/network/notifications.py:79 +#, python-format +msgid "network notification %r" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + +#: ceilometer/objectstore/swift.py:70 +msgid "Swift endpoint not found" +msgstr "" + +#: ceilometer/openstack/common/eventlet_backdoor.py:140 +#, python-format +msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:62 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:91 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ceilometer/openstack/common/fileutils.py:62 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:263 +msgid "Message objects do not support addition." +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:272 +msgid "" +"Message objects do not support str() because they may contain non-ascii " +"characters. Please use unicode() or translate() instead." +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:82 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:93 +#, python-format +msgid "Got file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:101 +#, python-format +msgid "Unable to acquire lock on `%(filename)s` due to %(exception)s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:117 +#, python-format +msgid "Released file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:119 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:161 +#, python-format +msgid "Attempting to grab external lock \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:187 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:244 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:248 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/log.py:313 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:416 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ceilometer/openstack/common/log.py:467 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:688 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:82 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:89 +msgid "in fixed duration looping call" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:129 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:136 +msgid "in dynamic looping call" +msgstr "" + +#: ceilometer/openstack/common/policy.py:74 +msgid "JSON file containing policy" +msgstr "" + +#: ceilometer/openstack/common/policy.py:77 +msgid "Rule enforced when requested rule is not found" +msgstr "" + +#: ceilometer/openstack/common/policy.py:91 +#, python-format +msgid "Policy doesn't allow %s to be performed." +msgstr "" + +#: ceilometer/openstack/common/policy.py:181 +#, python-format +msgid "Rules must be an instance of dict or Rules, got %s instead" +msgstr "" + +#: ceilometer/openstack/common/policy.py:211 +msgid "Rules successfully reloaded" +msgstr "" + +#: ceilometer/openstack/common/policy.py:257 +#, python-format +msgid "Rule %s will be now enforced" +msgstr "" + +#: ceilometer/openstack/common/policy.py:272 +#, python-format +msgid "Rule [%s] doesn't exist" +msgstr "" + +#: ceilometer/openstack/common/policy.py:480 +#, python-format +msgid "Failed to understand rule %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:490 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:760 +#, python-format +msgid "Failed to understand rule %r" +msgstr "" + +#: ceilometer/openstack/common/service.py:166 +#: ceilometer/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ceilometer/openstack/common/service.py:175 +#: ceilometer/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ceilometer/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ceilometer/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ceilometer/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ceilometer/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ceilometer/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ceilometer/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ceilometer/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:50 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:53 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:56 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:59 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:98 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:86 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:188 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:195 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:69 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " +"may be removed in %(remove_in)s." +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:73 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s and may be removed in " +"%(remove_in)s. It will not be superseded." +msgstr "" + +#: ceilometer/openstack/common/db/exception.py:42 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:191 +msgid "version should be an integer" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:214 +#, python-format +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:238 +msgid "" +"The database is not under version control, but has tables. Please stamp " +"the current version of the schema manually." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:596 +msgid "DB exception wrapped." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:665 +#, python-format +msgid "Database server has gone away: %s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:745 +msgid "" +"This application has not enabled MySQL traditional mode, which means " +"silent data corruption may occur. Please encourage the application " +"developers to enable this mode." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:770 +#, python-format +msgid "SQL connection failed. %s attempts left." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:63 +#, python-format +msgid "Got lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:66 +#, python-format +msgid "Lock released \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:57 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:96 +msgid "Id not in sort_keys; is sort_keys unique?" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:118 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:193 +#, python-format +msgid "" +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:199 +#, python-format +msgid "" +"col_name_col_instance param has wrong type of column instance for column " +"%s It should be instance of sqlalchemy.Column." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:279 +#, python-format +msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:300 +msgid "Unsupported id columns type" +msgstr "" + +#: ceilometer/openstack/common/middleware/catch_errors.py:40 +#, python-format +msgid "An error occurred during processing the request: %s" +msgstr "" + +#: ceilometer/openstack/common/middleware/notifier.py:40 +#, python-format +msgid "An exception occurred processing the API call: %s " +msgstr "" + +#: ceilometer/openstack/common/middleware/sizelimit.py:55 +#: ceilometer/openstack/common/middleware/sizelimit.py:64 +#: ceilometer/openstack/common/middleware/sizelimit.py:75 +msgid "Request is too large." +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ceilometer/openstack/common/notifier/rpc_notifier.py:45 +#: ceilometer/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:472 +#: ceilometer/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:480 +#: ceilometer/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" +" \"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:140 +#: ceilometer/openstack/common/rpc/common.py:141 +#: ceilometer/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this " +"endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:622 +#: ceilometer/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:640 +#: ceilometer/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:644 +#: ceilometer/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:683 +#: ceilometer/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:76 +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:94 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ceilometer/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ceilometer/publisher/file.py:62 +msgid "The path for the file publisher is required" +msgstr "" + +#: ceilometer/publisher/file.py:76 +msgid "max_bytes and backup_count should be numbers." +msgstr "" + +#: ceilometer/publisher/rpc.py:106 +#, python-format +msgid "Publishing policy set to %s, override backend retry config to 1" +msgstr "" + +#: ceilometer/publisher/rpc.py:111 +#, python-format +msgid "Publishing policy set to %s" +msgstr "" + +#: ceilometer/publisher/rpc.py:113 +#, python-format +msgid "Publishing policy is unknown (%s) force to default" +msgstr "" + +#: ceilometer/publisher/rpc.py:138 +#, python-format +msgid "Publishing %(m)d samples on %(t)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:152 +#, python-format +msgid "Publishing %(m)d samples on %(n)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:177 +#, python-format +msgid "Publisher max local_queue length is exceeded, dropping %d oldest samples" +msgstr "" + +#: ceilometer/publisher/rpc.py:203 +#, python-format +msgid "Failed to publish %d samples, queue them" +msgstr "" + +#: ceilometer/publisher/rpc.py:207 +#, python-format +msgid "Failed to publish %d samples, dropping them" +msgstr "" + +#: ceilometer/publisher/udp.py:60 +#, python-format +msgid "Publishing sample %(msg)s over UDP to %(host)s:%(port)d" +msgstr "" + +#: ceilometer/publisher/udp.py:67 +msgid "Unable to send sample over UDP" +msgstr "" + +#: ceilometer/storage/__init__.py:76 +#, python-format +msgid "looking for %(name)r driver in %(namespace)r" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:136 +msgid "Creating a new in-memory HBase Connection object" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:156 +msgid "Dropping HBase schema..." +msgstr "" + +#: ceilometer/storage/impl_hbase.py:168 +msgid "Cannot disable table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:172 +msgid "Cannot delete table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:183 +#, python-format +msgid "connecting to HBase on %(host)s:%(port)s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 +#, python-format +msgid "source: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:397 +#, python-format +msgid "Query Meter table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 +#, python-format +msgid "Query Resource table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:478 +#, python-format +msgid "Query Meter Table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:715 +msgid "Opening in-memory HBase connection" +msgstr "" + +#: ceilometer/storage/impl_log.py:57 +#, python-format +msgid "metering data %(counter_name)s for %(resource_id)s: %(counter_volume)s" +msgstr "" + +#: ceilometer/storage/impl_log.py:70 +#, python-format +msgid "Dropping data with TTL %d" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:357 +#, python-format +msgid "Unknown metadata type. Key (%s) will not be queryable." +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1055 +#, python-format +msgid "Failed to record event: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1070 +#, python-format +msgid "Getting events that match filter: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1187 +#, python-format +msgid "Get traits for %s" +msgstr "" + +#: ceilometer/storage/pymongo_base.py:121 +#, python-format +msgid "Connecting to %(db)s on %(nodelist)s" +msgstr "" + +#: ceilometer/transformer/conversions.py:69 +#, python-format +msgid "scaling conversion transformer with source: %(source)s target: %(target)s:" +msgstr "" + +#: ceilometer/transformer/conversions.py:116 +#: ceilometer/transformer/conversions.py:139 +#, python-format +msgid "handling sample %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:119 +#: ceilometer/transformer/conversions.py:160 +#, python-format +msgid "converted to: %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:162 +#, python-format +msgid "dropping sample with no predecessor: %s" +msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/en_AU/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/en_AU/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/en_AU/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/en_AU/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: English (Australia) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/en_GB/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/en_GB/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/en_GB/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/en_GB/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: English (United Kingdom) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/en_US/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/en_US/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/en_US/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/en_US/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: English (United States) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/es/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/es/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/es/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/es/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Spanish " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/es_MX/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/es_MX/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/es_MX/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/es_MX/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-08-29 05:16+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Spanish (Mexico) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1918,58 +1968,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2039,14 +2043,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2056,3 +2052,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/eu/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/eu/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/eu/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/eu/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-11-19 11:53+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Basque " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1885,58 +1935,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2006,14 +2010,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2023,3 +2019,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/eu_ES/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/eu_ES/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/eu_ES/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/eu_ES/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-11-19 11:53+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Basque (Spain) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1885,58 +1935,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2006,14 +2010,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2023,3 +2019,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/fa/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/fa/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/fa/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/fa/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-11-19 11:53+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Persian " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1885,58 +1935,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2006,14 +2010,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2023,3 +2019,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/fi_FI/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/fi_FI/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/fi_FI/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/fi_FI/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Finnish (Finland) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/fil/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/fil/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/fil/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/fil/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-10-01 03:40+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Filipino " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1903,58 +1953,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2024,14 +2028,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2041,3 +2037,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/fr/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/fr/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/fr/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/fr/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-03-05 15:41+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: fr \n" @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1635,9 +1770,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1684,127 +1817,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1818,35 +1881,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1983,58 +2033,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2083,14 +2087,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2100,3 +2096,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/gl/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/gl/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/gl/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/gl/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-10-28 23:23+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Galician " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1891,58 +1941,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2012,14 +2016,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2029,3 +2025,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/he/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/he/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/he/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/he/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2014-02-25 08:27+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hebrew " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 -#, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1876,3 +1926,69 @@ msgid "dropping sample with no predecessor: %s" msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/he_IL/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/he_IL/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/he_IL/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/he_IL/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2014-02-25 08:27+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Hebrew (Israel) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 -#, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1876,3 +1926,69 @@ msgid "dropping sample with no predecessor: %s" msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/hi/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/hi/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/hi/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/hi/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-08-27 04:58+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Hindi " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1918,58 +1968,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2039,14 +2043,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2056,3 +2052,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/hr/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/hr/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/hr/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/hr/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Croatian " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1973,58 +2023,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2073,14 +2077,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2090,3 +2086,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/hu/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/hu/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/hu/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/hu/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Hungarian " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/id/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/id/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/id/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/id/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Indonesian " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/is_IS/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/is_IS/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/is_IS/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/is_IS/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-12-16 02:36+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Icelandic (Iceland) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 -#, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1880,37 +1930,6 @@ #~ msgstr "" #~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" @@ -1919,18 +1938,6 @@ #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2000,14 +2007,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2017,3 +2016,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/it/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/it/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/it/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/it/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-04-17 22:06+0000\n" "Last-Translator: Stefano Maffulli \n" "Language-Team: it \n" @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/it_IT/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/it_IT/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/it_IT/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/it_IT/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Italian (Italy) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ja/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ja/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ja/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ja/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-02-13 21:01+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Japanese " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1982,58 +2032,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2082,14 +2086,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2099,3 +2095,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ka_GE/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ka_GE/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ka_GE/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ka_GE/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Georgian (Georgia) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/km/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/km/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/km/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/km/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-11-19 11:53+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Khmer " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1885,58 +1935,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2006,14 +2010,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2023,3 +2019,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/kn/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/kn/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/kn/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/kn/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-09-20 18:22+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Kannada " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1915,58 +1965,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2036,14 +2040,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2053,3 +2049,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ko/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ko/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ko/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ko/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Korean " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ko_KR/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ko_KR/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ko_KR/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ko_KR/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-04-17 00:01+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: ko_KR \n" @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "Swift endpoint를 찾지 못하였습니다." @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ml_IN/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ml_IN/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ml_IN/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ml_IN/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-11-19 11:53+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Malayalam (India) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1885,58 +1935,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2006,14 +2010,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2023,3 +2019,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/mr_IN/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/mr_IN/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/mr_IN/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/mr_IN/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-10-18 09:52+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Marathi (India) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1891,58 +1941,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2012,14 +2016,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2029,3 +2025,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ms/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ms/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ms/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ms/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Malay " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/nb/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/nb/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/nb/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/nb/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Norwegian Bokmål " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ne/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ne/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ne/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ne/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-09-10 10:38+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Nepali " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1918,58 +1968,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2039,14 +2043,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2056,3 +2052,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/nl_NL/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/nl_NL/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/nl_NL/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/nl_NL/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Dutch (Netherlands) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/pa_IN/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/pa_IN/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/pa_IN/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/pa_IN/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-12-15 04:38+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Panjabi (Punjabi) (India) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 -#, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1880,37 +1930,6 @@ #~ msgstr "" #~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" @@ -1919,18 +1938,6 @@ #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2000,14 +2007,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2017,3 +2016,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/pl_PL/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/pl_PL/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/pl_PL/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/pl_PL/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-07-04 07:30+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (Poland) " @@ -20,45 +20,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -68,80 +96,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -149,59 +185,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -224,6 +260,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -272,7 +314,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -407,21 +449,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -431,145 +473,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "Nieprawidłowy alarm" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -581,19 +638,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -630,46 +677,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -697,6 +804,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -781,6 +896,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -791,6 +916,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1635,9 +1770,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1684,127 +1817,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1818,35 +1881,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1983,58 +2033,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2083,14 +2087,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2100,3 +2096,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/pt/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/pt/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/pt/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/pt/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Portuguese " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/pt_BR/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/pt_BR/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/pt_BR/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/pt_BR/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Portuguese (Brazil) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ro/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ro/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ro/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ro/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-06-08 07:51+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Romanian " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1982,58 +2032,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2082,14 +2086,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2099,3 +2095,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ru/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ru/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ru/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ru/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1982,58 +2032,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2082,14 +2086,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2099,3 +2095,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ru_RU/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ru_RU/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ru_RU/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ru_RU/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1973,58 +2023,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2073,14 +2077,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2090,3 +2086,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/sk/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/sk/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/sk/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/sk/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-08-27 04:58+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Slovak " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1918,58 +1968,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2039,14 +2043,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2056,3 +2052,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/sl_SI/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/sl_SI/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/sl_SI/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/sl_SI/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-06-28 06:06+0000\n" "Last-Translator: daisy.ycguo \n" "Language-Team: Slovenian (Slovenia) " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1982,58 +2032,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2082,14 +2086,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2099,3 +2095,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/sq/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/sq/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/sq/LC_MESSAGES/ceilometer.po 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/sq/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -0,0 +1,1928 @@ +# Albanian translations for ceilometer. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ceilometer project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ceilometer\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" +"PO-Revision-Date: 2014-03-28 18:51+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Albanian " +"(http://www.transifex.com/projects/p/openstack/language/sq/)\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 +#, python-format +msgid "UDP: Cannot decode data sent by %s" +msgstr "" + +#: ceilometer/collector.py:80 +#, python-format +msgid "UDP: Storing %s" +msgstr "" + +#: ceilometer/collector.py:84 +msgid "UDP: Unable to store meter" +msgstr "" + +#: ceilometer/notification.py:70 +msgid "Loading event definitions" +msgstr "" + +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 +#, python-format +msgid "Failed to load any notification handlers for %s" +msgstr "" + +#: ceilometer/notification.py:100 +#, python-format +msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" +msgstr "" + +#: ceilometer/notification.py:116 +#, python-format +msgid "Could not join consumer pool %(topic)s/%(exchange)s" +msgstr "" + +#: ceilometer/notification.py:128 +#, python-format +msgid "notification %r" +msgstr "" + +#: ceilometer/notification.py:145 +#, python-format +msgid "Saving event \"%s\"" +msgstr "" + +#: ceilometer/notifier.py:40 +#, python-format +msgid "loading notification handlers from %s" +msgstr "" + +#: ceilometer/pipeline.py:237 +#, python-format +msgid "Unable to load publisher %s" +msgstr "" + +#: ceilometer/pipeline.py:256 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" +" %(param)s" +msgstr "" + +#: ceilometer/pipeline.py:269 +#, python-format +msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:276 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " +"%(smp)s" +msgstr "" + +#: ceilometer/pipeline.py:296 +#, python-format +msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" +msgstr "" + +#: ceilometer/pipeline.py:306 +#, python-format +msgid "Pipeline %s: Publishing samples" +msgstr "" + +#: ceilometer/pipeline.py:311 +#, python-format +msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" +msgstr "" + +#: ceilometer/pipeline.py:315 +#, python-format +msgid "Pipeline %s: Published samples" +msgstr "" + +#: ceilometer/pipeline.py:331 +#, python-format +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:522 +#, python-format +msgid "Pipeline config file: %s" +msgstr "" + +#: ceilometer/pipeline.py:528 +#, python-format +msgid "Pipeline config: %s" +msgstr "" + +#: ceilometer/service.py:111 +#, python-format +msgid "loading dispatchers from %s" +msgstr "" + +#: ceilometer/service.py:119 +#, python-format +msgid "Failed to load any dispatchers for %s" +msgstr "" + +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + +#: ceilometer/alarm/rpc.py:52 +#, python-format +msgid "" +"alarm %(alarm_id)s has no action configured for state transition from " +"%(previous)s to state %(state)s, skipping the notification." +msgstr "" + +#: ceilometer/alarm/service.py:92 +#, python-format +msgid "initiating evaluation cycle on %d alarms" +msgstr "" + +#: ceilometer/alarm/service.py:97 +msgid "alarm evaluation cycle failed" +msgstr "" + +#: ceilometer/alarm/service.py:102 +#, python-format +msgid "skipping alarm %s: type unsupported" +msgstr "" + +#: ceilometer/alarm/service.py:106 +#, python-format +msgid "evaluating alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 +msgid "initialize_service_hooks" +msgstr "" + +#: ceilometer/alarm/service.py:224 +#, python-format +msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" +msgstr "" + +#: ceilometer/alarm/service.py:233 +#, python-format +msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" +msgstr "" + +#: ceilometer/alarm/service.py:239 +#, python-format +msgid "Notifying alarm %(id)s with action %(act)s" +msgstr "" + +#: ceilometer/alarm/service.py:244 +#, python-format +msgid "Unable to notify alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:264 +msgid "Unable to notify for an alarm with no action" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:71 +#, python-format +msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:83 +msgid "alarm state update failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:37 +msgid "alarm retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:51 +#, python-format +msgid "Alarms %(alarm_ids)s are in unknown state" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:74 +#, python-format +msgid "Transition to %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:78 +#, python-format +msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:63 +#, python-format +msgid "query stats from %(start)s to %(now)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:74 +#, python-format +msgid "sanitize stats %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:83 +#, python-format +msgid "excluded weak datapoints with sample counts %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:92 +#, python-format +msgid "pruned statistics to %d" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:97 +#, python-format +msgid "stats query %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:103 +msgid "alarm stats retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:112 +#, python-format +msgid "%d datapoints are unknown" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:136 +#, python-format +msgid "" +"Transition to %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:140 +#, python-format +msgid "" +"Remaining as %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:196 +#, python-format +msgid "comparing value %(value)s against threshold %(limit)s" +msgstr "" + +#: ceilometer/alarm/notifier/log.py:32 ceilometer/alarm/notifier/rest.py:58 +#, python-format +msgid "" +"Notifying alarm %(alarm_id)s from %(previous)s to %(current)s with action" +" %(action)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:132 +#, python-format +msgid "triggering %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:133 +#, python-format +msgid "known evaluators %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:136 +#, python-format +msgid "per evaluator allocation %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:146 +#, python-format +msgid "" +"%(this)s bailing on distribution cycle as older partition detected: " +"%(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:152 +#, python-format +msgid "%(verb)s-ing %(alloc)s to %(eval)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:156 +#, python-format +msgid "master taking %s for self" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:174 +#, python-format +msgid "newly deleted alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:177 +msgid "alarm deletion activity requires rebalance" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:202 +#, python-format +msgid "%s still warming up" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:207 +#, python-format +msgid "last heard from %(report)s %(delta)s seconds ago" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:212 +#, python-format +msgid "%(this)s detects stale evaluator: %(stale)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:217 +#, python-format +msgid "%(this)s sees older potential master: %(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:219 +#, python-format +msgid "%(this)s is master?: %(is_master)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:232 +#, python-format +msgid "newly created alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:243 +#, python-format +msgid "%(this)s not overtaken as master? %(still_ahead)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:253 +#, python-format +msgid "%s checking mastership status" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:260 +msgid "mastership check failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:270 +#, python-format +msgid "%(this)s knows about %(reports)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:276 +#, python-format +msgid "%(this)s got assignment: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:283 +#, python-format +msgid "%(this)s got allocation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:289 +#, python-format +msgid "%s reporting presence" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:293 +msgid "presence reporting failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:298 +#, python-format +msgid "%s has no assigned alarms to evaluate" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:302 +#, python-format +msgid "%(this)s alarms for evaluation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:308 +msgid "assignment retrieval failed" +msgstr "" + +#: ceilometer/api/app.py:133 +#, python-format +msgid "Starting server in PID %s" +msgstr "" + +#: ceilometer/api/app.py:134 +msgid "Configuration:" +msgstr "" + +#: ceilometer/api/app.py:138 +#, python-format +msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" +msgstr "" + +#: ceilometer/api/app.py:142 +#, python-format +msgid "serving on http://%(host)s:%(port)s" +msgstr "" + +#: ceilometer/api/middleware.py:112 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:86 +#, python-format +msgid "%(entity)s %(id)s Not Found" +msgstr "" + +#: ceilometer/api/controllers/v2.py:245 +#, python-format +msgid "Failed to convert the metadata value %s automatically" +msgstr "" + +#: ceilometer/api/controllers/v2.py:257 +#, python-format +msgid "Failed to convert the value %(value)s to the expected data type %(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:262 +#, python-format +msgid "" +"The data type %(type)s is not supported. The supported data type list is:" +" %(supported)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:267 +#, python-format +msgid "" +"Unexpected exception converting %(value)s to the expected data type " +"%(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:278 +#, python-format +msgid "Not Authorized to access %(aspect)s %(id)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 +msgid "clamping min timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 +msgid "clamping max timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 +msgid "Limit must be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:896 +msgid "Period must be positive." +msgstr "" + +#: ceilometer/api/controllers/v2.py:908 +#, python-format +msgid "computed value coming from %r" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1090 +msgid "Sample" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1272 +msgid "Limit should be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1364 +#, python-format +msgid "String %s is not a valid isotime" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1365 +#, python-format +msgid "Failed to parse the timestamp value %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1451 +msgid "Resource" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1525 +#, python-format +msgid "" +"Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " +"%(threshold)s over %(period)s seconds" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1566 +#, python-format +msgid "Combined state of alarms %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." +msgstr "" + +#: ceilometer/api/controllers/v2.py:1753 +#, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format +msgid "Error while putting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 +msgid "Alarm incorrect" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1983 +msgid "state invalid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2074 +#, python-format +msgid "Alarm with name='%s' exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2080 +#, python-format +msgid "Error while posting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2231 +#, python-format +msgid "operator %s not supported" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2252 +#, python-format +msgid "Getting traits for %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2316 +msgid "Event" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2319 +#, python-format +msgid "More than one event with id %s returned from storage driver" +msgstr "" + +#: ceilometer/api/v1/blueprint.py:569 +#, python-format +msgid "" +"start_timestamp %(start_timestamp)s, end_timestamp %(end_timestamp)s, " +"min_ts %(min_ts)s, max_ts %(max_ts)s" +msgstr "" + +#: ceilometer/central/manager.py:48 +#, python-format +msgid "Skip interval_task because Keystone error: %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:82 +#, python-format +msgid "using provided stats gatherer %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:85 +msgid "making a new stats gatherer" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:114 +#, python-format +msgid "INFO %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:147 +#, python-format +msgid "ignoring %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:149 +#, python-format +msgid "processing %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:153 +#, python-format +msgid "polling final stats for %r" +msgstr "" + +#: ceilometer/compute/notifications/cpu.py:55 +#, python-format +msgid "An error occurred while building %(m)s sample: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:35 +#, python-format +msgid "checking instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:39 +#, python-format +msgid "CPUTIME USAGE: %(instance)s %(time)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 +#, python-format +msgid "Exception while getting samples %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 +#, python-format +msgid "could not get CPU time for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 +#, python-format +msgid "Ignoring instance %(name)s: %(error)s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 +#, python-format +msgid "Unable to load the hypervisor inspector: %s" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 +#, python-format +msgid "VM %s not found on Hyper-V" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 +#, python-format +msgid "Duplicate VM name found: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:64 +#, python-format +msgid "Connecting to libvirt: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:77 +msgid "Connection to libvirt broke" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:117 +#, python-format +msgid "" +"Failed to inspect vnics of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:153 +#, python-format +msgid "" +"Failed to inspect disks of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + +#: ceilometer/dispatcher/database.py:50 +#, python-format +msgid "" +"metering data %(counter_name)s for %(resource_id)s @ %(timestamp)s: " +"%(counter_volume)s" +msgstr "" + +#: ceilometer/dispatcher/database.py:69 +#, python-format +msgid "Failed to record metering data: %s" +msgstr "" + +#: ceilometer/dispatcher/database.py:72 +#, python-format +msgid "message signature invalid, discarding message: %r" +msgstr "" + +#: ceilometer/energy/kwapi.py:77 +msgid "Kwapi endpoint not found" +msgstr "" + +#: ceilometer/event/converter.py:77 +#, python-format +msgid "Plugin specified, but no plugin name supplied for trait %s" +msgstr "" + +#: ceilometer/event/converter.py:86 +#, python-format +msgid "No plugin named %(plugin)s available for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:96 +#, python-format +msgid "Required field in trait definition not specified: '%s'" +msgstr "" + +#: ceilometer/event/converter.py:111 +#, python-format +msgid "" +"Parse error in JSONPath specification '%(jsonpath)s' for %(trait)s: " +"%(err)s" +msgstr "" + +#: ceilometer/event/converter.py:117 +#, python-format +msgid "Invalid trait type '%(type)s' for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:169 +#, python-format +msgid "Required field %s not specified" +msgstr "" + +#: ceilometer/event/converter.py:342 +#, python-format +msgid "Dropping Notification %(type)s (uuid:%(msgid)s)" +msgstr "" + +#: ceilometer/event/converter.py:366 +#, python-format +msgid "Event Definitions configuration file: %s" +msgstr "" + +#: ceilometer/event/converter.py:376 +#, python-format +msgid "" +"Invalid YAML syntax in Event Definitions file %(file)s at line: %(line)s," +" column: %(column)s." +msgstr "" + +#: ceilometer/event/converter.py:382 +#, python-format +msgid "YAML error reading Event Definitions file %(file)s" +msgstr "" + +#: ceilometer/event/converter.py:389 +msgid "No Event Definitions configuration file found! Using default config." +msgstr "" + +#: ceilometer/event/converter.py:393 +#, python-format +msgid "Event Definitions: %s" +msgstr "" + +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + +#: ceilometer/network/floatingip.py:45 +#, python-format +msgid "FLOATING IP USAGE: %s" +msgstr "" + +#: ceilometer/network/notifications.py:79 +#, python-format +msgid "network notification %r" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + +#: ceilometer/objectstore/swift.py:70 +msgid "Swift endpoint not found" +msgstr "" + +#: ceilometer/openstack/common/eventlet_backdoor.py:140 +#, python-format +msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:62 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:91 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ceilometer/openstack/common/fileutils.py:62 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:263 +msgid "Message objects do not support addition." +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:272 +msgid "" +"Message objects do not support str() because they may contain non-ascii " +"characters. Please use unicode() or translate() instead." +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:82 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:93 +#, python-format +msgid "Got file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:101 +#, python-format +msgid "Unable to acquire lock on `%(filename)s` due to %(exception)s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:117 +#, python-format +msgid "Released file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:119 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:161 +#, python-format +msgid "Attempting to grab external lock \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:187 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:244 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:248 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/log.py:313 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:416 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ceilometer/openstack/common/log.py:467 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:688 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:82 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:89 +msgid "in fixed duration looping call" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:129 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:136 +msgid "in dynamic looping call" +msgstr "" + +#: ceilometer/openstack/common/policy.py:74 +msgid "JSON file containing policy" +msgstr "" + +#: ceilometer/openstack/common/policy.py:77 +msgid "Rule enforced when requested rule is not found" +msgstr "" + +#: ceilometer/openstack/common/policy.py:91 +#, python-format +msgid "Policy doesn't allow %s to be performed." +msgstr "" + +#: ceilometer/openstack/common/policy.py:181 +#, python-format +msgid "Rules must be an instance of dict or Rules, got %s instead" +msgstr "" + +#: ceilometer/openstack/common/policy.py:211 +msgid "Rules successfully reloaded" +msgstr "" + +#: ceilometer/openstack/common/policy.py:257 +#, python-format +msgid "Rule %s will be now enforced" +msgstr "" + +#: ceilometer/openstack/common/policy.py:272 +#, python-format +msgid "Rule [%s] doesn't exist" +msgstr "" + +#: ceilometer/openstack/common/policy.py:480 +#, python-format +msgid "Failed to understand rule %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:490 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:760 +#, python-format +msgid "Failed to understand rule %r" +msgstr "" + +#: ceilometer/openstack/common/service.py:166 +#: ceilometer/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ceilometer/openstack/common/service.py:175 +#: ceilometer/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ceilometer/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ceilometer/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ceilometer/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ceilometer/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ceilometer/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ceilometer/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ceilometer/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:50 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:53 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:56 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:59 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:98 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:86 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:188 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:195 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:69 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " +"may be removed in %(remove_in)s." +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:73 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s and may be removed in " +"%(remove_in)s. It will not be superseded." +msgstr "" + +#: ceilometer/openstack/common/db/exception.py:42 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:191 +msgid "version should be an integer" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:214 +#, python-format +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:238 +msgid "" +"The database is not under version control, but has tables. Please stamp " +"the current version of the schema manually." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:596 +msgid "DB exception wrapped." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:665 +#, python-format +msgid "Database server has gone away: %s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:745 +msgid "" +"This application has not enabled MySQL traditional mode, which means " +"silent data corruption may occur. Please encourage the application " +"developers to enable this mode." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:770 +#, python-format +msgid "SQL connection failed. %s attempts left." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:63 +#, python-format +msgid "Got lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:66 +#, python-format +msgid "Lock released \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:57 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:96 +msgid "Id not in sort_keys; is sort_keys unique?" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:118 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:193 +#, python-format +msgid "" +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:199 +#, python-format +msgid "" +"col_name_col_instance param has wrong type of column instance for column " +"%s It should be instance of sqlalchemy.Column." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:279 +#, python-format +msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:300 +msgid "Unsupported id columns type" +msgstr "" + +#: ceilometer/openstack/common/middleware/catch_errors.py:40 +#, python-format +msgid "An error occurred during processing the request: %s" +msgstr "" + +#: ceilometer/openstack/common/middleware/notifier.py:40 +#, python-format +msgid "An exception occurred processing the API call: %s " +msgstr "" + +#: ceilometer/openstack/common/middleware/sizelimit.py:55 +#: ceilometer/openstack/common/middleware/sizelimit.py:64 +#: ceilometer/openstack/common/middleware/sizelimit.py:75 +msgid "Request is too large." +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ceilometer/openstack/common/notifier/rpc_notifier.py:45 +#: ceilometer/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:472 +#: ceilometer/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:480 +#: ceilometer/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" +" \"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:140 +#: ceilometer/openstack/common/rpc/common.py:141 +#: ceilometer/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this " +"endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:622 +#: ceilometer/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:640 +#: ceilometer/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:644 +#: ceilometer/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:683 +#: ceilometer/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:76 +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:94 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ceilometer/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ceilometer/publisher/file.py:62 +msgid "The path for the file publisher is required" +msgstr "" + +#: ceilometer/publisher/file.py:76 +msgid "max_bytes and backup_count should be numbers." +msgstr "" + +#: ceilometer/publisher/rpc.py:106 +#, python-format +msgid "Publishing policy set to %s, override backend retry config to 1" +msgstr "" + +#: ceilometer/publisher/rpc.py:111 +#, python-format +msgid "Publishing policy set to %s" +msgstr "" + +#: ceilometer/publisher/rpc.py:113 +#, python-format +msgid "Publishing policy is unknown (%s) force to default" +msgstr "" + +#: ceilometer/publisher/rpc.py:138 +#, python-format +msgid "Publishing %(m)d samples on %(t)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:152 +#, python-format +msgid "Publishing %(m)d samples on %(n)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:177 +#, python-format +msgid "Publisher max local_queue length is exceeded, dropping %d oldest samples" +msgstr "" + +#: ceilometer/publisher/rpc.py:203 +#, python-format +msgid "Failed to publish %d samples, queue them" +msgstr "" + +#: ceilometer/publisher/rpc.py:207 +#, python-format +msgid "Failed to publish %d samples, dropping them" +msgstr "" + +#: ceilometer/publisher/udp.py:60 +#, python-format +msgid "Publishing sample %(msg)s over UDP to %(host)s:%(port)d" +msgstr "" + +#: ceilometer/publisher/udp.py:67 +msgid "Unable to send sample over UDP" +msgstr "" + +#: ceilometer/storage/__init__.py:76 +#, python-format +msgid "looking for %(name)r driver in %(namespace)r" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:136 +msgid "Creating a new in-memory HBase Connection object" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:156 +msgid "Dropping HBase schema..." +msgstr "" + +#: ceilometer/storage/impl_hbase.py:168 +msgid "Cannot disable table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:172 +msgid "Cannot delete table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:183 +#, python-format +msgid "connecting to HBase on %(host)s:%(port)s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 +#, python-format +msgid "source: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:397 +#, python-format +msgid "Query Meter table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 +#, python-format +msgid "Query Resource table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:478 +#, python-format +msgid "Query Meter Table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:715 +msgid "Opening in-memory HBase connection" +msgstr "" + +#: ceilometer/storage/impl_log.py:57 +#, python-format +msgid "metering data %(counter_name)s for %(resource_id)s: %(counter_volume)s" +msgstr "" + +#: ceilometer/storage/impl_log.py:70 +#, python-format +msgid "Dropping data with TTL %d" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:357 +#, python-format +msgid "Unknown metadata type. Key (%s) will not be queryable." +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1055 +#, python-format +msgid "Failed to record event: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1070 +#, python-format +msgid "Getting events that match filter: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1187 +#, python-format +msgid "Get traits for %s" +msgstr "" + +#: ceilometer/storage/pymongo_base.py:121 +#, python-format +msgid "Connecting to %(db)s on %(nodelist)s" +msgstr "" + +#: ceilometer/transformer/conversions.py:69 +#, python-format +msgid "scaling conversion transformer with source: %(source)s target: %(target)s:" +msgstr "" + +#: ceilometer/transformer/conversions.py:116 +#: ceilometer/transformer/conversions.py:139 +#, python-format +msgid "handling sample %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:119 +#: ceilometer/transformer/conversions.py:160 +#, python-format +msgid "converted to: %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:162 +#, python-format +msgid "dropping sample with no predecessor: %s" +msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/sr/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/sr/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/sr/LC_MESSAGES/ceilometer.po 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/sr/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -0,0 +1,1930 @@ +# Serbian translations for ceilometer. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ceilometer project. +# +# Translators: +# Nenad Jovanovic , 2014 +msgid "" +msgstr "" +"Project-Id-Version: Ceilometer\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" +"PO-Revision-Date: 2014-03-28 18:51+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Serbian " +"(http://www.transifex.com/projects/p/openstack/language/sr/)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 +#, python-format +msgid "UDP: Cannot decode data sent by %s" +msgstr "" + +#: ceilometer/collector.py:80 +#, python-format +msgid "UDP: Storing %s" +msgstr "" + +#: ceilometer/collector.py:84 +msgid "UDP: Unable to store meter" +msgstr "" + +#: ceilometer/notification.py:70 +msgid "Loading event definitions" +msgstr "" + +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 +#, python-format +msgid "Failed to load any notification handlers for %s" +msgstr "" + +#: ceilometer/notification.py:100 +#, python-format +msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" +msgstr "" + +#: ceilometer/notification.py:116 +#, python-format +msgid "Could not join consumer pool %(topic)s/%(exchange)s" +msgstr "" + +#: ceilometer/notification.py:128 +#, python-format +msgid "notification %r" +msgstr "" + +#: ceilometer/notification.py:145 +#, python-format +msgid "Saving event \"%s\"" +msgstr "" + +#: ceilometer/notifier.py:40 +#, python-format +msgid "loading notification handlers from %s" +msgstr "" + +#: ceilometer/pipeline.py:237 +#, python-format +msgid "Unable to load publisher %s" +msgstr "" + +#: ceilometer/pipeline.py:256 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" +" %(param)s" +msgstr "" + +#: ceilometer/pipeline.py:269 +#, python-format +msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:276 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " +"%(smp)s" +msgstr "" + +#: ceilometer/pipeline.py:296 +#, python-format +msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" +msgstr "" + +#: ceilometer/pipeline.py:306 +#, python-format +msgid "Pipeline %s: Publishing samples" +msgstr "" + +#: ceilometer/pipeline.py:311 +#, python-format +msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" +msgstr "" + +#: ceilometer/pipeline.py:315 +#, python-format +msgid "Pipeline %s: Published samples" +msgstr "" + +#: ceilometer/pipeline.py:331 +#, python-format +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:522 +#, python-format +msgid "Pipeline config file: %s" +msgstr "" + +#: ceilometer/pipeline.py:528 +#, python-format +msgid "Pipeline config: %s" +msgstr "" + +#: ceilometer/service.py:111 +#, python-format +msgid "loading dispatchers from %s" +msgstr "" + +#: ceilometer/service.py:119 +#, python-format +msgid "Failed to load any dispatchers for %s" +msgstr "" + +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + +#: ceilometer/alarm/rpc.py:52 +#, python-format +msgid "" +"alarm %(alarm_id)s has no action configured for state transition from " +"%(previous)s to state %(state)s, skipping the notification." +msgstr "" + +#: ceilometer/alarm/service.py:92 +#, python-format +msgid "initiating evaluation cycle on %d alarms" +msgstr "" + +#: ceilometer/alarm/service.py:97 +msgid "alarm evaluation cycle failed" +msgstr "" + +#: ceilometer/alarm/service.py:102 +#, python-format +msgid "skipping alarm %s: type unsupported" +msgstr "" + +#: ceilometer/alarm/service.py:106 +#, python-format +msgid "evaluating alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 +msgid "initialize_service_hooks" +msgstr "" + +#: ceilometer/alarm/service.py:224 +#, python-format +msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" +msgstr "" + +#: ceilometer/alarm/service.py:233 +#, python-format +msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" +msgstr "" + +#: ceilometer/alarm/service.py:239 +#, python-format +msgid "Notifying alarm %(id)s with action %(act)s" +msgstr "" + +#: ceilometer/alarm/service.py:244 +#, python-format +msgid "Unable to notify alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:264 +msgid "Unable to notify for an alarm with no action" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:71 +#, python-format +msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:83 +msgid "alarm state update failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:37 +msgid "alarm retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:51 +#, python-format +msgid "Alarms %(alarm_ids)s are in unknown state" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:74 +#, python-format +msgid "Transition to %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:78 +#, python-format +msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:63 +#, python-format +msgid "query stats from %(start)s to %(now)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:74 +#, python-format +msgid "sanitize stats %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:83 +#, python-format +msgid "excluded weak datapoints with sample counts %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:92 +#, python-format +msgid "pruned statistics to %d" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:97 +#, python-format +msgid "stats query %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:103 +msgid "alarm stats retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:112 +#, python-format +msgid "%d datapoints are unknown" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:136 +#, python-format +msgid "" +"Transition to %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:140 +#, python-format +msgid "" +"Remaining as %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:196 +#, python-format +msgid "comparing value %(value)s against threshold %(limit)s" +msgstr "" + +#: ceilometer/alarm/notifier/log.py:32 ceilometer/alarm/notifier/rest.py:58 +#, python-format +msgid "" +"Notifying alarm %(alarm_id)s from %(previous)s to %(current)s with action" +" %(action)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:132 +#, python-format +msgid "triggering %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:133 +#, python-format +msgid "known evaluators %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:136 +#, python-format +msgid "per evaluator allocation %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:146 +#, python-format +msgid "" +"%(this)s bailing on distribution cycle as older partition detected: " +"%(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:152 +#, python-format +msgid "%(verb)s-ing %(alloc)s to %(eval)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:156 +#, python-format +msgid "master taking %s for self" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:174 +#, python-format +msgid "newly deleted alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:177 +msgid "alarm deletion activity requires rebalance" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:202 +#, python-format +msgid "%s still warming up" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:207 +#, python-format +msgid "last heard from %(report)s %(delta)s seconds ago" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:212 +#, python-format +msgid "%(this)s detects stale evaluator: %(stale)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:217 +#, python-format +msgid "%(this)s sees older potential master: %(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:219 +#, python-format +msgid "%(this)s is master?: %(is_master)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:232 +#, python-format +msgid "newly created alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:243 +#, python-format +msgid "%(this)s not overtaken as master? %(still_ahead)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:253 +#, python-format +msgid "%s checking mastership status" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:260 +msgid "mastership check failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:270 +#, python-format +msgid "%(this)s knows about %(reports)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:276 +#, python-format +msgid "%(this)s got assignment: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:283 +#, python-format +msgid "%(this)s got allocation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:289 +#, python-format +msgid "%s reporting presence" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:293 +msgid "presence reporting failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:298 +#, python-format +msgid "%s has no assigned alarms to evaluate" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:302 +#, python-format +msgid "%(this)s alarms for evaluation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:308 +msgid "assignment retrieval failed" +msgstr "" + +#: ceilometer/api/app.py:133 +#, python-format +msgid "Starting server in PID %s" +msgstr "" + +#: ceilometer/api/app.py:134 +msgid "Configuration:" +msgstr "" + +#: ceilometer/api/app.py:138 +#, python-format +msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" +msgstr "" + +#: ceilometer/api/app.py:142 +#, python-format +msgid "serving on http://%(host)s:%(port)s" +msgstr "" + +#: ceilometer/api/middleware.py:112 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:86 +#, python-format +msgid "%(entity)s %(id)s Not Found" +msgstr "" + +#: ceilometer/api/controllers/v2.py:245 +#, python-format +msgid "Failed to convert the metadata value %s automatically" +msgstr "" + +#: ceilometer/api/controllers/v2.py:257 +#, python-format +msgid "Failed to convert the value %(value)s to the expected data type %(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:262 +#, python-format +msgid "" +"The data type %(type)s is not supported. The supported data type list is:" +" %(supported)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:267 +#, python-format +msgid "" +"Unexpected exception converting %(value)s to the expected data type " +"%(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:278 +#, python-format +msgid "Not Authorized to access %(aspect)s %(id)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 +msgid "clamping min timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 +msgid "clamping max timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 +msgid "Limit must be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:896 +msgid "Period must be positive." +msgstr "" + +#: ceilometer/api/controllers/v2.py:908 +#, python-format +msgid "computed value coming from %r" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1090 +msgid "Sample" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1272 +msgid "Limit should be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1364 +#, python-format +msgid "String %s is not a valid isotime" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1365 +#, python-format +msgid "Failed to parse the timestamp value %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1451 +msgid "Resource" +msgstr "Resurs" + +#: ceilometer/api/controllers/v2.py:1525 +#, python-format +msgid "" +"Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " +"%(threshold)s over %(period)s seconds" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1566 +#, python-format +msgid "Combined state of alarms %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." +msgstr "" + +#: ceilometer/api/controllers/v2.py:1753 +#, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format +msgid "Error while putting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 +msgid "Alarm incorrect" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1983 +msgid "state invalid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2074 +#, python-format +msgid "Alarm with name='%s' exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2080 +#, python-format +msgid "Error while posting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2231 +#, python-format +msgid "operator %s not supported" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2252 +#, python-format +msgid "Getting traits for %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2316 +msgid "Event" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2319 +#, python-format +msgid "More than one event with id %s returned from storage driver" +msgstr "" + +#: ceilometer/api/v1/blueprint.py:569 +#, python-format +msgid "" +"start_timestamp %(start_timestamp)s, end_timestamp %(end_timestamp)s, " +"min_ts %(min_ts)s, max_ts %(max_ts)s" +msgstr "" + +#: ceilometer/central/manager.py:48 +#, python-format +msgid "Skip interval_task because Keystone error: %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:82 +#, python-format +msgid "using provided stats gatherer %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:85 +msgid "making a new stats gatherer" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:114 +#, python-format +msgid "INFO %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:147 +#, python-format +msgid "ignoring %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:149 +#, python-format +msgid "processing %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:153 +#, python-format +msgid "polling final stats for %r" +msgstr "" + +#: ceilometer/compute/notifications/cpu.py:55 +#, python-format +msgid "An error occurred while building %(m)s sample: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:35 +#, python-format +msgid "checking instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:39 +#, python-format +msgid "CPUTIME USAGE: %(instance)s %(time)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 +#, python-format +msgid "Exception while getting samples %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 +#, python-format +msgid "could not get CPU time for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 +#, python-format +msgid "Ignoring instance %(name)s: %(error)s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 +#, python-format +msgid "Unable to load the hypervisor inspector: %s" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 +#, python-format +msgid "VM %s not found on Hyper-V" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 +#, python-format +msgid "Duplicate VM name found: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:64 +#, python-format +msgid "Connecting to libvirt: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:77 +msgid "Connection to libvirt broke" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:117 +#, python-format +msgid "" +"Failed to inspect vnics of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:153 +#, python-format +msgid "" +"Failed to inspect disks of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + +#: ceilometer/dispatcher/database.py:50 +#, python-format +msgid "" +"metering data %(counter_name)s for %(resource_id)s @ %(timestamp)s: " +"%(counter_volume)s" +msgstr "" + +#: ceilometer/dispatcher/database.py:69 +#, python-format +msgid "Failed to record metering data: %s" +msgstr "" + +#: ceilometer/dispatcher/database.py:72 +#, python-format +msgid "message signature invalid, discarding message: %r" +msgstr "" + +#: ceilometer/energy/kwapi.py:77 +msgid "Kwapi endpoint not found" +msgstr "" + +#: ceilometer/event/converter.py:77 +#, python-format +msgid "Plugin specified, but no plugin name supplied for trait %s" +msgstr "" + +#: ceilometer/event/converter.py:86 +#, python-format +msgid "No plugin named %(plugin)s available for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:96 +#, python-format +msgid "Required field in trait definition not specified: '%s'" +msgstr "" + +#: ceilometer/event/converter.py:111 +#, python-format +msgid "" +"Parse error in JSONPath specification '%(jsonpath)s' for %(trait)s: " +"%(err)s" +msgstr "" + +#: ceilometer/event/converter.py:117 +#, python-format +msgid "Invalid trait type '%(type)s' for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:169 +#, python-format +msgid "Required field %s not specified" +msgstr "" + +#: ceilometer/event/converter.py:342 +#, python-format +msgid "Dropping Notification %(type)s (uuid:%(msgid)s)" +msgstr "" + +#: ceilometer/event/converter.py:366 +#, python-format +msgid "Event Definitions configuration file: %s" +msgstr "" + +#: ceilometer/event/converter.py:376 +#, python-format +msgid "" +"Invalid YAML syntax in Event Definitions file %(file)s at line: %(line)s," +" column: %(column)s." +msgstr "" + +#: ceilometer/event/converter.py:382 +#, python-format +msgid "YAML error reading Event Definitions file %(file)s" +msgstr "" + +#: ceilometer/event/converter.py:389 +msgid "No Event Definitions configuration file found! Using default config." +msgstr "" + +#: ceilometer/event/converter.py:393 +#, python-format +msgid "Event Definitions: %s" +msgstr "" + +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + +#: ceilometer/network/floatingip.py:45 +#, python-format +msgid "FLOATING IP USAGE: %s" +msgstr "" + +#: ceilometer/network/notifications.py:79 +#, python-format +msgid "network notification %r" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + +#: ceilometer/objectstore/swift.py:70 +msgid "Swift endpoint not found" +msgstr "" + +#: ceilometer/openstack/common/eventlet_backdoor.py:140 +#, python-format +msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:62 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:91 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ceilometer/openstack/common/fileutils.py:62 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:263 +msgid "Message objects do not support addition." +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:272 +msgid "" +"Message objects do not support str() because they may contain non-ascii " +"characters. Please use unicode() or translate() instead." +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:82 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:93 +#, python-format +msgid "Got file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:101 +#, python-format +msgid "Unable to acquire lock on `%(filename)s` due to %(exception)s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:117 +#, python-format +msgid "Released file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:119 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:161 +#, python-format +msgid "Attempting to grab external lock \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:187 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:244 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:248 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/log.py:313 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:416 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ceilometer/openstack/common/log.py:467 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "syslog okruženje mora biti jedno od: %s" + +#: ceilometer/openstack/common/log.py:688 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:82 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:89 +msgid "in fixed duration looping call" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:129 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:136 +msgid "in dynamic looping call" +msgstr "" + +#: ceilometer/openstack/common/policy.py:74 +msgid "JSON file containing policy" +msgstr "" + +#: ceilometer/openstack/common/policy.py:77 +msgid "Rule enforced when requested rule is not found" +msgstr "" + +#: ceilometer/openstack/common/policy.py:91 +#, python-format +msgid "Policy doesn't allow %s to be performed." +msgstr "" + +#: ceilometer/openstack/common/policy.py:181 +#, python-format +msgid "Rules must be an instance of dict or Rules, got %s instead" +msgstr "" + +#: ceilometer/openstack/common/policy.py:211 +msgid "Rules successfully reloaded" +msgstr "" + +#: ceilometer/openstack/common/policy.py:257 +#, python-format +msgid "Rule %s will be now enforced" +msgstr "" + +#: ceilometer/openstack/common/policy.py:272 +#, python-format +msgid "Rule [%s] doesn't exist" +msgstr "" + +#: ceilometer/openstack/common/policy.py:480 +#, python-format +msgid "Failed to understand rule %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:490 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:760 +#, python-format +msgid "Failed to understand rule %r" +msgstr "" + +#: ceilometer/openstack/common/service.py:166 +#: ceilometer/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ceilometer/openstack/common/service.py:175 +#: ceilometer/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ceilometer/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ceilometer/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ceilometer/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ceilometer/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ceilometer/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ceilometer/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ceilometer/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:50 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:53 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:56 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:59 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:98 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:86 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:188 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:195 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:69 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " +"may be removed in %(remove_in)s." +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:73 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s and may be removed in " +"%(remove_in)s. It will not be superseded." +msgstr "" + +#: ceilometer/openstack/common/db/exception.py:42 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:191 +msgid "version should be an integer" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:214 +#, python-format +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:238 +msgid "" +"The database is not under version control, but has tables. Please stamp " +"the current version of the schema manually." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:596 +msgid "DB exception wrapped." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:665 +#, python-format +msgid "Database server has gone away: %s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:745 +msgid "" +"This application has not enabled MySQL traditional mode, which means " +"silent data corruption may occur. Please encourage the application " +"developers to enable this mode." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:770 +#, python-format +msgid "SQL connection failed. %s attempts left." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:63 +#, python-format +msgid "Got lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:66 +#, python-format +msgid "Lock released \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:57 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:96 +msgid "Id not in sort_keys; is sort_keys unique?" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:118 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:193 +#, python-format +msgid "" +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:199 +#, python-format +msgid "" +"col_name_col_instance param has wrong type of column instance for column " +"%s It should be instance of sqlalchemy.Column." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:279 +#, python-format +msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:300 +msgid "Unsupported id columns type" +msgstr "" + +#: ceilometer/openstack/common/middleware/catch_errors.py:40 +#, python-format +msgid "An error occurred during processing the request: %s" +msgstr "" + +#: ceilometer/openstack/common/middleware/notifier.py:40 +#, python-format +msgid "An exception occurred processing the API call: %s " +msgstr "" + +#: ceilometer/openstack/common/middleware/sizelimit.py:55 +#: ceilometer/openstack/common/middleware/sizelimit.py:64 +#: ceilometer/openstack/common/middleware/sizelimit.py:75 +msgid "Request is too large." +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ceilometer/openstack/common/notifier/rpc_notifier.py:45 +#: ceilometer/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:472 +#: ceilometer/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:480 +#: ceilometer/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" +" \"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:140 +#: ceilometer/openstack/common/rpc/common.py:141 +#: ceilometer/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this " +"endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:622 +#: ceilometer/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:640 +#: ceilometer/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:644 +#: ceilometer/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:683 +#: ceilometer/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:76 +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:94 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ceilometer/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ceilometer/publisher/file.py:62 +msgid "The path for the file publisher is required" +msgstr "" + +#: ceilometer/publisher/file.py:76 +msgid "max_bytes and backup_count should be numbers." +msgstr "" + +#: ceilometer/publisher/rpc.py:106 +#, python-format +msgid "Publishing policy set to %s, override backend retry config to 1" +msgstr "" + +#: ceilometer/publisher/rpc.py:111 +#, python-format +msgid "Publishing policy set to %s" +msgstr "" + +#: ceilometer/publisher/rpc.py:113 +#, python-format +msgid "Publishing policy is unknown (%s) force to default" +msgstr "" + +#: ceilometer/publisher/rpc.py:138 +#, python-format +msgid "Publishing %(m)d samples on %(t)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:152 +#, python-format +msgid "Publishing %(m)d samples on %(n)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:177 +#, python-format +msgid "Publisher max local_queue length is exceeded, dropping %d oldest samples" +msgstr "" + +#: ceilometer/publisher/rpc.py:203 +#, python-format +msgid "Failed to publish %d samples, queue them" +msgstr "" + +#: ceilometer/publisher/rpc.py:207 +#, python-format +msgid "Failed to publish %d samples, dropping them" +msgstr "" + +#: ceilometer/publisher/udp.py:60 +#, python-format +msgid "Publishing sample %(msg)s over UDP to %(host)s:%(port)d" +msgstr "" + +#: ceilometer/publisher/udp.py:67 +msgid "Unable to send sample over UDP" +msgstr "" + +#: ceilometer/storage/__init__.py:76 +#, python-format +msgid "looking for %(name)r driver in %(namespace)r" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:136 +msgid "Creating a new in-memory HBase Connection object" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:156 +msgid "Dropping HBase schema..." +msgstr "" + +#: ceilometer/storage/impl_hbase.py:168 +msgid "Cannot disable table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:172 +msgid "Cannot delete table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:183 +#, python-format +msgid "connecting to HBase on %(host)s:%(port)s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 +#, python-format +msgid "source: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:397 +#, python-format +msgid "Query Meter table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 +#, python-format +msgid "Query Resource table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:478 +#, python-format +msgid "Query Meter Table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:715 +msgid "Opening in-memory HBase connection" +msgstr "" + +#: ceilometer/storage/impl_log.py:57 +#, python-format +msgid "metering data %(counter_name)s for %(resource_id)s: %(counter_volume)s" +msgstr "" + +#: ceilometer/storage/impl_log.py:70 +#, python-format +msgid "Dropping data with TTL %d" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:357 +#, python-format +msgid "Unknown metadata type. Key (%s) will not be queryable." +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1055 +#, python-format +msgid "Failed to record event: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1070 +#, python-format +msgid "Getting events that match filter: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1187 +#, python-format +msgid "Get traits for %s" +msgstr "" + +#: ceilometer/storage/pymongo_base.py:121 +#, python-format +msgid "Connecting to %(db)s on %(nodelist)s" +msgstr "" + +#: ceilometer/transformer/conversions.py:69 +#, python-format +msgid "scaling conversion transformer with source: %(source)s target: %(target)s:" +msgstr "" + +#: ceilometer/transformer/conversions.py:116 +#: ceilometer/transformer/conversions.py:139 +#, python-format +msgid "handling sample %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:119 +#: ceilometer/transformer/conversions.py:160 +#, python-format +msgid "converted to: %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:162 +#, python-format +msgid "dropping sample with no predecessor: %s" +msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/sv/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/sv/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/sv/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/sv/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-11-19 11:53+0000\n" "Last-Translator: Tom Fifield \n" "Language-Team: Swedish " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1885,58 +1935,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2006,14 +2010,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2023,3 +2019,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/sw_KE/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/sw_KE/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/sw_KE/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/sw_KE/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Swahili (Kenya) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ta/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ta/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ta/LC_MESSAGES/ceilometer.po 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ta/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -0,0 +1,1928 @@ +# Tamil translations for ceilometer. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ceilometer project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ceilometer\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" +"PO-Revision-Date: 2014-03-28 18:51+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Tamil " +"(http://www.transifex.com/projects/p/openstack/language/ta/)\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 +#, python-format +msgid "UDP: Cannot decode data sent by %s" +msgstr "" + +#: ceilometer/collector.py:80 +#, python-format +msgid "UDP: Storing %s" +msgstr "" + +#: ceilometer/collector.py:84 +msgid "UDP: Unable to store meter" +msgstr "" + +#: ceilometer/notification.py:70 +msgid "Loading event definitions" +msgstr "" + +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 +#, python-format +msgid "Failed to load any notification handlers for %s" +msgstr "" + +#: ceilometer/notification.py:100 +#, python-format +msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" +msgstr "" + +#: ceilometer/notification.py:116 +#, python-format +msgid "Could not join consumer pool %(topic)s/%(exchange)s" +msgstr "" + +#: ceilometer/notification.py:128 +#, python-format +msgid "notification %r" +msgstr "" + +#: ceilometer/notification.py:145 +#, python-format +msgid "Saving event \"%s\"" +msgstr "" + +#: ceilometer/notifier.py:40 +#, python-format +msgid "loading notification handlers from %s" +msgstr "" + +#: ceilometer/pipeline.py:237 +#, python-format +msgid "Unable to load publisher %s" +msgstr "" + +#: ceilometer/pipeline.py:256 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" +" %(param)s" +msgstr "" + +#: ceilometer/pipeline.py:269 +#, python-format +msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:276 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " +"%(smp)s" +msgstr "" + +#: ceilometer/pipeline.py:296 +#, python-format +msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" +msgstr "" + +#: ceilometer/pipeline.py:306 +#, python-format +msgid "Pipeline %s: Publishing samples" +msgstr "" + +#: ceilometer/pipeline.py:311 +#, python-format +msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" +msgstr "" + +#: ceilometer/pipeline.py:315 +#, python-format +msgid "Pipeline %s: Published samples" +msgstr "" + +#: ceilometer/pipeline.py:331 +#, python-format +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:522 +#, python-format +msgid "Pipeline config file: %s" +msgstr "" + +#: ceilometer/pipeline.py:528 +#, python-format +msgid "Pipeline config: %s" +msgstr "" + +#: ceilometer/service.py:111 +#, python-format +msgid "loading dispatchers from %s" +msgstr "" + +#: ceilometer/service.py:119 +#, python-format +msgid "Failed to load any dispatchers for %s" +msgstr "" + +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + +#: ceilometer/alarm/rpc.py:52 +#, python-format +msgid "" +"alarm %(alarm_id)s has no action configured for state transition from " +"%(previous)s to state %(state)s, skipping the notification." +msgstr "" + +#: ceilometer/alarm/service.py:92 +#, python-format +msgid "initiating evaluation cycle on %d alarms" +msgstr "" + +#: ceilometer/alarm/service.py:97 +msgid "alarm evaluation cycle failed" +msgstr "" + +#: ceilometer/alarm/service.py:102 +#, python-format +msgid "skipping alarm %s: type unsupported" +msgstr "" + +#: ceilometer/alarm/service.py:106 +#, python-format +msgid "evaluating alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 +msgid "initialize_service_hooks" +msgstr "" + +#: ceilometer/alarm/service.py:224 +#, python-format +msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" +msgstr "" + +#: ceilometer/alarm/service.py:233 +#, python-format +msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" +msgstr "" + +#: ceilometer/alarm/service.py:239 +#, python-format +msgid "Notifying alarm %(id)s with action %(act)s" +msgstr "" + +#: ceilometer/alarm/service.py:244 +#, python-format +msgid "Unable to notify alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:264 +msgid "Unable to notify for an alarm with no action" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:71 +#, python-format +msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:83 +msgid "alarm state update failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:37 +msgid "alarm retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:51 +#, python-format +msgid "Alarms %(alarm_ids)s are in unknown state" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:74 +#, python-format +msgid "Transition to %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:78 +#, python-format +msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:63 +#, python-format +msgid "query stats from %(start)s to %(now)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:74 +#, python-format +msgid "sanitize stats %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:83 +#, python-format +msgid "excluded weak datapoints with sample counts %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:92 +#, python-format +msgid "pruned statistics to %d" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:97 +#, python-format +msgid "stats query %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:103 +msgid "alarm stats retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:112 +#, python-format +msgid "%d datapoints are unknown" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:136 +#, python-format +msgid "" +"Transition to %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:140 +#, python-format +msgid "" +"Remaining as %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:196 +#, python-format +msgid "comparing value %(value)s against threshold %(limit)s" +msgstr "" + +#: ceilometer/alarm/notifier/log.py:32 ceilometer/alarm/notifier/rest.py:58 +#, python-format +msgid "" +"Notifying alarm %(alarm_id)s from %(previous)s to %(current)s with action" +" %(action)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:132 +#, python-format +msgid "triggering %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:133 +#, python-format +msgid "known evaluators %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:136 +#, python-format +msgid "per evaluator allocation %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:146 +#, python-format +msgid "" +"%(this)s bailing on distribution cycle as older partition detected: " +"%(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:152 +#, python-format +msgid "%(verb)s-ing %(alloc)s to %(eval)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:156 +#, python-format +msgid "master taking %s for self" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:174 +#, python-format +msgid "newly deleted alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:177 +msgid "alarm deletion activity requires rebalance" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:202 +#, python-format +msgid "%s still warming up" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:207 +#, python-format +msgid "last heard from %(report)s %(delta)s seconds ago" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:212 +#, python-format +msgid "%(this)s detects stale evaluator: %(stale)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:217 +#, python-format +msgid "%(this)s sees older potential master: %(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:219 +#, python-format +msgid "%(this)s is master?: %(is_master)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:232 +#, python-format +msgid "newly created alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:243 +#, python-format +msgid "%(this)s not overtaken as master? %(still_ahead)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:253 +#, python-format +msgid "%s checking mastership status" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:260 +msgid "mastership check failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:270 +#, python-format +msgid "%(this)s knows about %(reports)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:276 +#, python-format +msgid "%(this)s got assignment: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:283 +#, python-format +msgid "%(this)s got allocation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:289 +#, python-format +msgid "%s reporting presence" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:293 +msgid "presence reporting failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:298 +#, python-format +msgid "%s has no assigned alarms to evaluate" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:302 +#, python-format +msgid "%(this)s alarms for evaluation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:308 +msgid "assignment retrieval failed" +msgstr "" + +#: ceilometer/api/app.py:133 +#, python-format +msgid "Starting server in PID %s" +msgstr "" + +#: ceilometer/api/app.py:134 +msgid "Configuration:" +msgstr "" + +#: ceilometer/api/app.py:138 +#, python-format +msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" +msgstr "" + +#: ceilometer/api/app.py:142 +#, python-format +msgid "serving on http://%(host)s:%(port)s" +msgstr "" + +#: ceilometer/api/middleware.py:112 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:86 +#, python-format +msgid "%(entity)s %(id)s Not Found" +msgstr "" + +#: ceilometer/api/controllers/v2.py:245 +#, python-format +msgid "Failed to convert the metadata value %s automatically" +msgstr "" + +#: ceilometer/api/controllers/v2.py:257 +#, python-format +msgid "Failed to convert the value %(value)s to the expected data type %(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:262 +#, python-format +msgid "" +"The data type %(type)s is not supported. The supported data type list is:" +" %(supported)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:267 +#, python-format +msgid "" +"Unexpected exception converting %(value)s to the expected data type " +"%(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:278 +#, python-format +msgid "Not Authorized to access %(aspect)s %(id)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 +msgid "clamping min timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 +msgid "clamping max timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 +msgid "Limit must be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:896 +msgid "Period must be positive." +msgstr "" + +#: ceilometer/api/controllers/v2.py:908 +#, python-format +msgid "computed value coming from %r" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1090 +msgid "Sample" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1272 +msgid "Limit should be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1364 +#, python-format +msgid "String %s is not a valid isotime" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1365 +#, python-format +msgid "Failed to parse the timestamp value %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1451 +msgid "Resource" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1525 +#, python-format +msgid "" +"Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " +"%(threshold)s over %(period)s seconds" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1566 +#, python-format +msgid "Combined state of alarms %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." +msgstr "" + +#: ceilometer/api/controllers/v2.py:1753 +#, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format +msgid "Error while putting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 +msgid "Alarm incorrect" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1983 +msgid "state invalid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2074 +#, python-format +msgid "Alarm with name='%s' exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2080 +#, python-format +msgid "Error while posting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2231 +#, python-format +msgid "operator %s not supported" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2252 +#, python-format +msgid "Getting traits for %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2316 +msgid "Event" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2319 +#, python-format +msgid "More than one event with id %s returned from storage driver" +msgstr "" + +#: ceilometer/api/v1/blueprint.py:569 +#, python-format +msgid "" +"start_timestamp %(start_timestamp)s, end_timestamp %(end_timestamp)s, " +"min_ts %(min_ts)s, max_ts %(max_ts)s" +msgstr "" + +#: ceilometer/central/manager.py:48 +#, python-format +msgid "Skip interval_task because Keystone error: %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:82 +#, python-format +msgid "using provided stats gatherer %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:85 +msgid "making a new stats gatherer" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:114 +#, python-format +msgid "INFO %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:147 +#, python-format +msgid "ignoring %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:149 +#, python-format +msgid "processing %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:153 +#, python-format +msgid "polling final stats for %r" +msgstr "" + +#: ceilometer/compute/notifications/cpu.py:55 +#, python-format +msgid "An error occurred while building %(m)s sample: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:35 +#, python-format +msgid "checking instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:39 +#, python-format +msgid "CPUTIME USAGE: %(instance)s %(time)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 +#, python-format +msgid "Exception while getting samples %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 +#, python-format +msgid "could not get CPU time for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 +#, python-format +msgid "Ignoring instance %(name)s: %(error)s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 +#, python-format +msgid "Unable to load the hypervisor inspector: %s" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 +#, python-format +msgid "VM %s not found on Hyper-V" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 +#, python-format +msgid "Duplicate VM name found: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:64 +#, python-format +msgid "Connecting to libvirt: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:77 +msgid "Connection to libvirt broke" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:117 +#, python-format +msgid "" +"Failed to inspect vnics of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:153 +#, python-format +msgid "" +"Failed to inspect disks of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + +#: ceilometer/dispatcher/database.py:50 +#, python-format +msgid "" +"metering data %(counter_name)s for %(resource_id)s @ %(timestamp)s: " +"%(counter_volume)s" +msgstr "" + +#: ceilometer/dispatcher/database.py:69 +#, python-format +msgid "Failed to record metering data: %s" +msgstr "" + +#: ceilometer/dispatcher/database.py:72 +#, python-format +msgid "message signature invalid, discarding message: %r" +msgstr "" + +#: ceilometer/energy/kwapi.py:77 +msgid "Kwapi endpoint not found" +msgstr "" + +#: ceilometer/event/converter.py:77 +#, python-format +msgid "Plugin specified, but no plugin name supplied for trait %s" +msgstr "" + +#: ceilometer/event/converter.py:86 +#, python-format +msgid "No plugin named %(plugin)s available for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:96 +#, python-format +msgid "Required field in trait definition not specified: '%s'" +msgstr "" + +#: ceilometer/event/converter.py:111 +#, python-format +msgid "" +"Parse error in JSONPath specification '%(jsonpath)s' for %(trait)s: " +"%(err)s" +msgstr "" + +#: ceilometer/event/converter.py:117 +#, python-format +msgid "Invalid trait type '%(type)s' for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:169 +#, python-format +msgid "Required field %s not specified" +msgstr "" + +#: ceilometer/event/converter.py:342 +#, python-format +msgid "Dropping Notification %(type)s (uuid:%(msgid)s)" +msgstr "" + +#: ceilometer/event/converter.py:366 +#, python-format +msgid "Event Definitions configuration file: %s" +msgstr "" + +#: ceilometer/event/converter.py:376 +#, python-format +msgid "" +"Invalid YAML syntax in Event Definitions file %(file)s at line: %(line)s," +" column: %(column)s." +msgstr "" + +#: ceilometer/event/converter.py:382 +#, python-format +msgid "YAML error reading Event Definitions file %(file)s" +msgstr "" + +#: ceilometer/event/converter.py:389 +msgid "No Event Definitions configuration file found! Using default config." +msgstr "" + +#: ceilometer/event/converter.py:393 +#, python-format +msgid "Event Definitions: %s" +msgstr "" + +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + +#: ceilometer/network/floatingip.py:45 +#, python-format +msgid "FLOATING IP USAGE: %s" +msgstr "" + +#: ceilometer/network/notifications.py:79 +#, python-format +msgid "network notification %r" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + +#: ceilometer/objectstore/swift.py:70 +msgid "Swift endpoint not found" +msgstr "" + +#: ceilometer/openstack/common/eventlet_backdoor.py:140 +#, python-format +msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:62 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:91 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ceilometer/openstack/common/fileutils.py:62 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:263 +msgid "Message objects do not support addition." +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:272 +msgid "" +"Message objects do not support str() because they may contain non-ascii " +"characters. Please use unicode() or translate() instead." +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:82 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:93 +#, python-format +msgid "Got file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:101 +#, python-format +msgid "Unable to acquire lock on `%(filename)s` due to %(exception)s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:117 +#, python-format +msgid "Released file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:119 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:161 +#, python-format +msgid "Attempting to grab external lock \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:187 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:244 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:248 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/log.py:313 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:416 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ceilometer/openstack/common/log.py:467 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:688 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:82 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:89 +msgid "in fixed duration looping call" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:129 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:136 +msgid "in dynamic looping call" +msgstr "" + +#: ceilometer/openstack/common/policy.py:74 +msgid "JSON file containing policy" +msgstr "" + +#: ceilometer/openstack/common/policy.py:77 +msgid "Rule enforced when requested rule is not found" +msgstr "" + +#: ceilometer/openstack/common/policy.py:91 +#, python-format +msgid "Policy doesn't allow %s to be performed." +msgstr "" + +#: ceilometer/openstack/common/policy.py:181 +#, python-format +msgid "Rules must be an instance of dict or Rules, got %s instead" +msgstr "" + +#: ceilometer/openstack/common/policy.py:211 +msgid "Rules successfully reloaded" +msgstr "" + +#: ceilometer/openstack/common/policy.py:257 +#, python-format +msgid "Rule %s will be now enforced" +msgstr "" + +#: ceilometer/openstack/common/policy.py:272 +#, python-format +msgid "Rule [%s] doesn't exist" +msgstr "" + +#: ceilometer/openstack/common/policy.py:480 +#, python-format +msgid "Failed to understand rule %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:490 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:760 +#, python-format +msgid "Failed to understand rule %r" +msgstr "" + +#: ceilometer/openstack/common/service.py:166 +#: ceilometer/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ceilometer/openstack/common/service.py:175 +#: ceilometer/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ceilometer/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ceilometer/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ceilometer/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ceilometer/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ceilometer/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ceilometer/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ceilometer/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:50 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:53 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:56 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:59 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:98 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:86 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:188 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:195 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:69 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " +"may be removed in %(remove_in)s." +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:73 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s and may be removed in " +"%(remove_in)s. It will not be superseded." +msgstr "" + +#: ceilometer/openstack/common/db/exception.py:42 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:191 +msgid "version should be an integer" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:214 +#, python-format +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:238 +msgid "" +"The database is not under version control, but has tables. Please stamp " +"the current version of the schema manually." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:596 +msgid "DB exception wrapped." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:665 +#, python-format +msgid "Database server has gone away: %s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:745 +msgid "" +"This application has not enabled MySQL traditional mode, which means " +"silent data corruption may occur. Please encourage the application " +"developers to enable this mode." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:770 +#, python-format +msgid "SQL connection failed. %s attempts left." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:63 +#, python-format +msgid "Got lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:66 +#, python-format +msgid "Lock released \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:57 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:96 +msgid "Id not in sort_keys; is sort_keys unique?" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:118 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:193 +#, python-format +msgid "" +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:199 +#, python-format +msgid "" +"col_name_col_instance param has wrong type of column instance for column " +"%s It should be instance of sqlalchemy.Column." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:279 +#, python-format +msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:300 +msgid "Unsupported id columns type" +msgstr "" + +#: ceilometer/openstack/common/middleware/catch_errors.py:40 +#, python-format +msgid "An error occurred during processing the request: %s" +msgstr "" + +#: ceilometer/openstack/common/middleware/notifier.py:40 +#, python-format +msgid "An exception occurred processing the API call: %s " +msgstr "" + +#: ceilometer/openstack/common/middleware/sizelimit.py:55 +#: ceilometer/openstack/common/middleware/sizelimit.py:64 +#: ceilometer/openstack/common/middleware/sizelimit.py:75 +msgid "Request is too large." +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ceilometer/openstack/common/notifier/rpc_notifier.py:45 +#: ceilometer/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:472 +#: ceilometer/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:480 +#: ceilometer/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" +" \"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:140 +#: ceilometer/openstack/common/rpc/common.py:141 +#: ceilometer/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this " +"endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:622 +#: ceilometer/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:640 +#: ceilometer/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:644 +#: ceilometer/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:683 +#: ceilometer/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:76 +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:94 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ceilometer/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ceilometer/publisher/file.py:62 +msgid "The path for the file publisher is required" +msgstr "" + +#: ceilometer/publisher/file.py:76 +msgid "max_bytes and backup_count should be numbers." +msgstr "" + +#: ceilometer/publisher/rpc.py:106 +#, python-format +msgid "Publishing policy set to %s, override backend retry config to 1" +msgstr "" + +#: ceilometer/publisher/rpc.py:111 +#, python-format +msgid "Publishing policy set to %s" +msgstr "" + +#: ceilometer/publisher/rpc.py:113 +#, python-format +msgid "Publishing policy is unknown (%s) force to default" +msgstr "" + +#: ceilometer/publisher/rpc.py:138 +#, python-format +msgid "Publishing %(m)d samples on %(t)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:152 +#, python-format +msgid "Publishing %(m)d samples on %(n)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:177 +#, python-format +msgid "Publisher max local_queue length is exceeded, dropping %d oldest samples" +msgstr "" + +#: ceilometer/publisher/rpc.py:203 +#, python-format +msgid "Failed to publish %d samples, queue them" +msgstr "" + +#: ceilometer/publisher/rpc.py:207 +#, python-format +msgid "Failed to publish %d samples, dropping them" +msgstr "" + +#: ceilometer/publisher/udp.py:60 +#, python-format +msgid "Publishing sample %(msg)s over UDP to %(host)s:%(port)d" +msgstr "" + +#: ceilometer/publisher/udp.py:67 +msgid "Unable to send sample over UDP" +msgstr "" + +#: ceilometer/storage/__init__.py:76 +#, python-format +msgid "looking for %(name)r driver in %(namespace)r" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:136 +msgid "Creating a new in-memory HBase Connection object" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:156 +msgid "Dropping HBase schema..." +msgstr "" + +#: ceilometer/storage/impl_hbase.py:168 +msgid "Cannot disable table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:172 +msgid "Cannot delete table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:183 +#, python-format +msgid "connecting to HBase on %(host)s:%(port)s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 +#, python-format +msgid "source: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:397 +#, python-format +msgid "Query Meter table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 +#, python-format +msgid "Query Resource table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:478 +#, python-format +msgid "Query Meter Table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:715 +msgid "Opening in-memory HBase connection" +msgstr "" + +#: ceilometer/storage/impl_log.py:57 +#, python-format +msgid "metering data %(counter_name)s for %(resource_id)s: %(counter_volume)s" +msgstr "" + +#: ceilometer/storage/impl_log.py:70 +#, python-format +msgid "Dropping data with TTL %d" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:357 +#, python-format +msgid "Unknown metadata type. Key (%s) will not be queryable." +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1055 +#, python-format +msgid "Failed to record event: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1070 +#, python-format +msgid "Getting events that match filter: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1187 +#, python-format +msgid "Get traits for %s" +msgstr "" + +#: ceilometer/storage/pymongo_base.py:121 +#, python-format +msgid "Connecting to %(db)s on %(nodelist)s" +msgstr "" + +#: ceilometer/transformer/conversions.py:69 +#, python-format +msgid "scaling conversion transformer with source: %(source)s target: %(target)s:" +msgstr "" + +#: ceilometer/transformer/conversions.py:116 +#: ceilometer/transformer/conversions.py:139 +#, python-format +msgid "handling sample %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:119 +#: ceilometer/transformer/conversions.py:160 +#, python-format +msgid "converted to: %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:162 +#, python-format +msgid "dropping sample with no predecessor: %s" +msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/te_IN/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/te_IN/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/te_IN/LC_MESSAGES/ceilometer.po 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/te_IN/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -0,0 +1,1928 @@ +# Telugu (India) translations for ceilometer. +# Copyright (C) 2014 ORGANIZATION +# This file is distributed under the same license as the ceilometer project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Ceilometer\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" +"PO-Revision-Date: 2014-03-28 18:51+0000\n" +"Last-Translator: openstackjenkins \n" +"Language-Team: Telugu (India) " +"(http://www.transifex.com/projects/p/openstack/language/te_IN/)\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 +#, python-format +msgid "UDP: Cannot decode data sent by %s" +msgstr "" + +#: ceilometer/collector.py:80 +#, python-format +msgid "UDP: Storing %s" +msgstr "" + +#: ceilometer/collector.py:84 +msgid "UDP: Unable to store meter" +msgstr "" + +#: ceilometer/notification.py:70 +msgid "Loading event definitions" +msgstr "" + +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 +#, python-format +msgid "Failed to load any notification handlers for %s" +msgstr "" + +#: ceilometer/notification.py:100 +#, python-format +msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" +msgstr "" + +#: ceilometer/notification.py:116 +#, python-format +msgid "Could not join consumer pool %(topic)s/%(exchange)s" +msgstr "" + +#: ceilometer/notification.py:128 +#, python-format +msgid "notification %r" +msgstr "" + +#: ceilometer/notification.py:145 +#, python-format +msgid "Saving event \"%s\"" +msgstr "" + +#: ceilometer/notifier.py:40 +#, python-format +msgid "loading notification handlers from %s" +msgstr "" + +#: ceilometer/pipeline.py:237 +#, python-format +msgid "Unable to load publisher %s" +msgstr "" + +#: ceilometer/pipeline.py:256 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" +" %(param)s" +msgstr "" + +#: ceilometer/pipeline.py:269 +#, python-format +msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:276 +#, python-format +msgid "" +"Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " +"%(smp)s" +msgstr "" + +#: ceilometer/pipeline.py:296 +#, python-format +msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" +msgstr "" + +#: ceilometer/pipeline.py:306 +#, python-format +msgid "Pipeline %s: Publishing samples" +msgstr "" + +#: ceilometer/pipeline.py:311 +#, python-format +msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" +msgstr "" + +#: ceilometer/pipeline.py:315 +#, python-format +msgid "Pipeline %s: Published samples" +msgstr "" + +#: ceilometer/pipeline.py:331 +#, python-format +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +msgstr "" + +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:522 +#, python-format +msgid "Pipeline config file: %s" +msgstr "" + +#: ceilometer/pipeline.py:528 +#, python-format +msgid "Pipeline config: %s" +msgstr "" + +#: ceilometer/service.py:111 +#, python-format +msgid "loading dispatchers from %s" +msgstr "" + +#: ceilometer/service.py:119 +#, python-format +msgid "Failed to load any dispatchers for %s" +msgstr "" + +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + +#: ceilometer/alarm/rpc.py:52 +#, python-format +msgid "" +"alarm %(alarm_id)s has no action configured for state transition from " +"%(previous)s to state %(state)s, skipping the notification." +msgstr "" + +#: ceilometer/alarm/service.py:92 +#, python-format +msgid "initiating evaluation cycle on %d alarms" +msgstr "" + +#: ceilometer/alarm/service.py:97 +msgid "alarm evaluation cycle failed" +msgstr "" + +#: ceilometer/alarm/service.py:102 +#, python-format +msgid "skipping alarm %s: type unsupported" +msgstr "" + +#: ceilometer/alarm/service.py:106 +#, python-format +msgid "evaluating alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 +msgid "initialize_service_hooks" +msgstr "" + +#: ceilometer/alarm/service.py:224 +#, python-format +msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" +msgstr "" + +#: ceilometer/alarm/service.py:233 +#, python-format +msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" +msgstr "" + +#: ceilometer/alarm/service.py:239 +#, python-format +msgid "Notifying alarm %(id)s with action %(act)s" +msgstr "" + +#: ceilometer/alarm/service.py:244 +#, python-format +msgid "Unable to notify alarm %s" +msgstr "" + +#: ceilometer/alarm/service.py:264 +msgid "Unable to notify for an alarm with no action" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:71 +#, python-format +msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/evaluator/__init__.py:83 +msgid "alarm state update failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:37 +msgid "alarm retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:51 +#, python-format +msgid "Alarms %(alarm_ids)s are in unknown state" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:74 +#, python-format +msgid "Transition to %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:78 +#, python-format +msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" +msgstr "" + +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:63 +#, python-format +msgid "query stats from %(start)s to %(now)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:74 +#, python-format +msgid "sanitize stats %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:83 +#, python-format +msgid "excluded weak datapoints with sample counts %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:92 +#, python-format +msgid "pruned statistics to %d" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:97 +#, python-format +msgid "stats query %s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:103 +msgid "alarm stats retrieval failed" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:112 +#, python-format +msgid "%d datapoints are unknown" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:136 +#, python-format +msgid "" +"Transition to %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:140 +#, python-format +msgid "" +"Remaining as %(state)s due to %(count)d samples %(disposition)s " +"threshold, most recent: %(most_recent)s" +msgstr "" + +#: ceilometer/alarm/evaluator/threshold.py:196 +#, python-format +msgid "comparing value %(value)s against threshold %(limit)s" +msgstr "" + +#: ceilometer/alarm/notifier/log.py:32 ceilometer/alarm/notifier/rest.py:58 +#, python-format +msgid "" +"Notifying alarm %(alarm_id)s from %(previous)s to %(current)s with action" +" %(action)s because %(reason)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:132 +#, python-format +msgid "triggering %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:133 +#, python-format +msgid "known evaluators %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:136 +#, python-format +msgid "per evaluator allocation %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:146 +#, python-format +msgid "" +"%(this)s bailing on distribution cycle as older partition detected: " +"%(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:152 +#, python-format +msgid "%(verb)s-ing %(alloc)s to %(eval)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:156 +#, python-format +msgid "master taking %s for self" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:174 +#, python-format +msgid "newly deleted alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:177 +msgid "alarm deletion activity requires rebalance" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:202 +#, python-format +msgid "%s still warming up" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:207 +#, python-format +msgid "last heard from %(report)s %(delta)s seconds ago" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:212 +#, python-format +msgid "%(this)s detects stale evaluator: %(stale)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:217 +#, python-format +msgid "%(this)s sees older potential master: %(older)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:219 +#, python-format +msgid "%(this)s is master?: %(is_master)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:232 +#, python-format +msgid "newly created alarms %s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:243 +#, python-format +msgid "%(this)s not overtaken as master? %(still_ahead)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:253 +#, python-format +msgid "%s checking mastership status" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:260 +msgid "mastership check failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:270 +#, python-format +msgid "%(this)s knows about %(reports)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:276 +#, python-format +msgid "%(this)s got assignment: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:283 +#, python-format +msgid "%(this)s got allocation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:289 +#, python-format +msgid "%s reporting presence" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:293 +msgid "presence reporting failed" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:298 +#, python-format +msgid "%s has no assigned alarms to evaluate" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:302 +#, python-format +msgid "%(this)s alarms for evaluation: %(alarms)s" +msgstr "" + +#: ceilometer/alarm/partition/coordination.py:308 +msgid "assignment retrieval failed" +msgstr "" + +#: ceilometer/api/app.py:133 +#, python-format +msgid "Starting server in PID %s" +msgstr "" + +#: ceilometer/api/app.py:134 +msgid "Configuration:" +msgstr "" + +#: ceilometer/api/app.py:138 +#, python-format +msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" +msgstr "" + +#: ceilometer/api/app.py:142 +#, python-format +msgid "serving on http://%(host)s:%(port)s" +msgstr "" + +#: ceilometer/api/middleware.py:112 +#, python-format +msgid "Error parsing HTTP response: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:86 +#, python-format +msgid "%(entity)s %(id)s Not Found" +msgstr "" + +#: ceilometer/api/controllers/v2.py:245 +#, python-format +msgid "Failed to convert the metadata value %s automatically" +msgstr "" + +#: ceilometer/api/controllers/v2.py:257 +#, python-format +msgid "Failed to convert the value %(value)s to the expected data type %(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:262 +#, python-format +msgid "" +"The data type %(type)s is not supported. The supported data type list is:" +" %(supported)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:267 +#, python-format +msgid "" +"Unexpected exception converting %(value)s to the expected data type " +"%(type)s." +msgstr "" + +#: ceilometer/api/controllers/v2.py:278 +#, python-format +msgid "Not Authorized to access %(aspect)s %(id)s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 +msgid "clamping min timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 +msgid "clamping max timestamp to range" +msgstr "" + +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 +msgid "Limit must be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:896 +msgid "Period must be positive." +msgstr "" + +#: ceilometer/api/controllers/v2.py:908 +#, python-format +msgid "computed value coming from %r" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1090 +msgid "Sample" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1272 +msgid "Limit should be positive" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1364 +#, python-format +msgid "String %s is not a valid isotime" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1365 +#, python-format +msgid "Failed to parse the timestamp value %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1451 +msgid "Resource" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1525 +#, python-format +msgid "" +"Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " +"%(threshold)s over %(period)s seconds" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1566 +#, python-format +msgid "Combined state of alarms %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." +msgstr "" + +#: ceilometer/api/controllers/v2.py:1753 +#, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format +msgid "Error while putting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 +msgid "Alarm incorrect" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1983 +msgid "state invalid" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2074 +#, python-format +msgid "Alarm with name='%s' exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2080 +#, python-format +msgid "Error while posting alarm: %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2231 +#, python-format +msgid "operator %s not supported" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2252 +#, python-format +msgid "Getting traits for %s" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2316 +msgid "Event" +msgstr "" + +#: ceilometer/api/controllers/v2.py:2319 +#, python-format +msgid "More than one event with id %s returned from storage driver" +msgstr "" + +#: ceilometer/api/v1/blueprint.py:569 +#, python-format +msgid "" +"start_timestamp %(start_timestamp)s, end_timestamp %(end_timestamp)s, " +"min_ts %(min_ts)s, max_ts %(max_ts)s" +msgstr "" + +#: ceilometer/central/manager.py:48 +#, python-format +msgid "Skip interval_task because Keystone error: %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:82 +#, python-format +msgid "using provided stats gatherer %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:85 +msgid "making a new stats gatherer" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:114 +#, python-format +msgid "INFO %r" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:147 +#, python-format +msgid "ignoring %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:149 +#, python-format +msgid "processing %s" +msgstr "" + +#: ceilometer/compute/nova_notifier.py:153 +#, python-format +msgid "polling final stats for %r" +msgstr "" + +#: ceilometer/compute/notifications/cpu.py:55 +#, python-format +msgid "An error occurred while building %(m)s sample: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:35 +#, python-format +msgid "checking instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:39 +#, python-format +msgid "CPUTIME USAGE: %(instance)s %(time)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 +#, python-format +msgid "Exception while getting samples %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 +#, python-format +msgid "could not get CPU time for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 +#, python-format +msgid "Ignoring instance %(name)s: %(error)s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 +#, python-format +msgid "Unable to load the hypervisor inspector: %s" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 +#, python-format +msgid "VM %s not found on Hyper-V" +msgstr "" + +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 +#, python-format +msgid "Duplicate VM name found: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:64 +#, python-format +msgid "Connecting to libvirt: %s" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:77 +msgid "Connection to libvirt broke" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:117 +#, python-format +msgid "" +"Failed to inspect vnics of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/libvirt/inspector.py:153 +#, python-format +msgid "" +"Failed to inspect disks of %(instance_name)s, domain is in state of " +"SHUTOFF" +msgstr "" + +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + +#: ceilometer/dispatcher/database.py:50 +#, python-format +msgid "" +"metering data %(counter_name)s for %(resource_id)s @ %(timestamp)s: " +"%(counter_volume)s" +msgstr "" + +#: ceilometer/dispatcher/database.py:69 +#, python-format +msgid "Failed to record metering data: %s" +msgstr "" + +#: ceilometer/dispatcher/database.py:72 +#, python-format +msgid "message signature invalid, discarding message: %r" +msgstr "" + +#: ceilometer/energy/kwapi.py:77 +msgid "Kwapi endpoint not found" +msgstr "" + +#: ceilometer/event/converter.py:77 +#, python-format +msgid "Plugin specified, but no plugin name supplied for trait %s" +msgstr "" + +#: ceilometer/event/converter.py:86 +#, python-format +msgid "No plugin named %(plugin)s available for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:96 +#, python-format +msgid "Required field in trait definition not specified: '%s'" +msgstr "" + +#: ceilometer/event/converter.py:111 +#, python-format +msgid "" +"Parse error in JSONPath specification '%(jsonpath)s' for %(trait)s: " +"%(err)s" +msgstr "" + +#: ceilometer/event/converter.py:117 +#, python-format +msgid "Invalid trait type '%(type)s' for trait %(trait)s" +msgstr "" + +#: ceilometer/event/converter.py:169 +#, python-format +msgid "Required field %s not specified" +msgstr "" + +#: ceilometer/event/converter.py:342 +#, python-format +msgid "Dropping Notification %(type)s (uuid:%(msgid)s)" +msgstr "" + +#: ceilometer/event/converter.py:366 +#, python-format +msgid "Event Definitions configuration file: %s" +msgstr "" + +#: ceilometer/event/converter.py:376 +#, python-format +msgid "" +"Invalid YAML syntax in Event Definitions file %(file)s at line: %(line)s," +" column: %(column)s." +msgstr "" + +#: ceilometer/event/converter.py:382 +#, python-format +msgid "YAML error reading Event Definitions file %(file)s" +msgstr "" + +#: ceilometer/event/converter.py:389 +msgid "No Event Definitions configuration file found! Using default config." +msgstr "" + +#: ceilometer/event/converter.py:393 +#, python-format +msgid "Event Definitions: %s" +msgstr "" + +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + +#: ceilometer/network/floatingip.py:45 +#, python-format +msgid "FLOATING IP USAGE: %s" +msgstr "" + +#: ceilometer/network/notifications.py:79 +#, python-format +msgid "network notification %r" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + +#: ceilometer/objectstore/swift.py:70 +msgid "Swift endpoint not found" +msgstr "" + +#: ceilometer/openstack/common/eventlet_backdoor.py:140 +#, python-format +msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:62 +#, python-format +msgid "Original exception being dropped: %s" +msgstr "" + +#: ceilometer/openstack/common/excutils.py:91 +#, python-format +msgid "Unexpected exception occurred %d time(s)... retrying." +msgstr "" + +#: ceilometer/openstack/common/fileutils.py:62 +#, python-format +msgid "Reloading cached file %s" +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:263 +msgid "Message objects do not support addition." +msgstr "" + +#: ceilometer/openstack/common/gettextutils.py:272 +msgid "" +"Message objects do not support str() because they may contain non-ascii " +"characters. Please use unicode() or translate() instead." +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:82 +#, python-format +msgid "Created lock path: %s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:93 +#, python-format +msgid "Got file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:101 +#, python-format +msgid "Unable to acquire lock on `%(filename)s` due to %(exception)s" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:117 +#, python-format +msgid "Released file lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:119 +#, python-format +msgid "Could not release the acquired lock `%s`" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:161 +#, python-format +msgid "Attempting to grab external lock \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:187 +#, python-format +msgid "Got semaphore \"%(lock)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:244 +#, python-format +msgid "Got semaphore / lock \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/lockutils.py:248 +#, python-format +msgid "Semaphore / lock released \"%(function)s\"" +msgstr "" + +#: ceilometer/openstack/common/log.py:313 +#, python-format +msgid "Deprecated: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:416 +#, python-format +msgid "Error loading logging config %(log_config)s: %(err_msg)s" +msgstr "" + +#: ceilometer/openstack/common/log.py:467 +#, python-format +msgid "syslog facility must be one of: %s" +msgstr "" + +#: ceilometer/openstack/common/log.py:688 +#, python-format +msgid "Fatal call to deprecated config: %(msg)s" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:82 +#, python-format +msgid "task run outlasted interval by %s sec" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:89 +msgid "in fixed duration looping call" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:129 +#, python-format +msgid "Dynamic looping call sleeping for %.02f seconds" +msgstr "" + +#: ceilometer/openstack/common/loopingcall.py:136 +msgid "in dynamic looping call" +msgstr "" + +#: ceilometer/openstack/common/policy.py:74 +msgid "JSON file containing policy" +msgstr "" + +#: ceilometer/openstack/common/policy.py:77 +msgid "Rule enforced when requested rule is not found" +msgstr "" + +#: ceilometer/openstack/common/policy.py:91 +#, python-format +msgid "Policy doesn't allow %s to be performed." +msgstr "" + +#: ceilometer/openstack/common/policy.py:181 +#, python-format +msgid "Rules must be an instance of dict or Rules, got %s instead" +msgstr "" + +#: ceilometer/openstack/common/policy.py:211 +msgid "Rules successfully reloaded" +msgstr "" + +#: ceilometer/openstack/common/policy.py:257 +#, python-format +msgid "Rule %s will be now enforced" +msgstr "" + +#: ceilometer/openstack/common/policy.py:272 +#, python-format +msgid "Rule [%s] doesn't exist" +msgstr "" + +#: ceilometer/openstack/common/policy.py:480 +#, python-format +msgid "Failed to understand rule %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:490 +#, python-format +msgid "No handler for matches of kind %s" +msgstr "" + +#: ceilometer/openstack/common/policy.py:760 +#, python-format +msgid "Failed to understand rule %r" +msgstr "" + +#: ceilometer/openstack/common/service.py:166 +#: ceilometer/openstack/common/service.py:384 +msgid "Full set of CONF:" +msgstr "" + +#: ceilometer/openstack/common/service.py:175 +#: ceilometer/openstack/common/service.py:269 +#, python-format +msgid "Caught %s, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:187 +msgid "Exception during rpc cleanup." +msgstr "" + +#: ceilometer/openstack/common/service.py:238 +msgid "Parent process has died unexpectedly, exiting" +msgstr "" + +#: ceilometer/openstack/common/service.py:275 +msgid "Unhandled exception" +msgstr "" + +#: ceilometer/openstack/common/service.py:308 +msgid "Forking too fast, sleeping" +msgstr "" + +#: ceilometer/openstack/common/service.py:327 +#, python-format +msgid "Started child %d" +msgstr "" + +#: ceilometer/openstack/common/service.py:337 +#, python-format +msgid "Starting %d workers" +msgstr "" + +#: ceilometer/openstack/common/service.py:354 +#, python-format +msgid "Child %(pid)d killed by signal %(sig)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:358 +#, python-format +msgid "Child %(pid)s exited with status %(code)d" +msgstr "" + +#: ceilometer/openstack/common/service.py:362 +#, python-format +msgid "pid %d not in child list" +msgstr "" + +#: ceilometer/openstack/common/service.py:392 +#, python-format +msgid "Caught %s, stopping children" +msgstr "" + +#: ceilometer/openstack/common/service.py:410 +#, python-format +msgid "Waiting on %d children to exit" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:50 +#, python-format +msgid "Unable to find cert_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:53 +#, python-format +msgid "Unable to find ca_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:56 +#, python-format +msgid "Unable to find key_file : %s" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:59 +msgid "" +"When running server in SSL mode, you must specify both a cert_file and " +"key_file option value in your configuration file" +msgstr "" + +#: ceilometer/openstack/common/sslutils.py:98 +#, python-format +msgid "Invalid SSL version : %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:86 +#, python-format +msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:188 +#, python-format +msgid "Invalid string format: %s" +msgstr "" + +#: ceilometer/openstack/common/strutils.py:195 +#, python-format +msgid "Unknown byte multiplier: %s" +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:69 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s and " +"may be removed in %(remove_in)s." +msgstr "" + +#: ceilometer/openstack/common/versionutils.py:73 +#, python-format +msgid "" +"%(what)s is deprecated as of %(as_of)s and may be removed in " +"%(remove_in)s. It will not be superseded." +msgstr "" + +#: ceilometer/openstack/common/db/exception.py:42 +msgid "Invalid Parameter: Unicode is not supported by the current database." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:191 +msgid "version should be an integer" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:214 +#, python-format +msgid "" +"Tables \"%s\" have non utf8 collation, please make sure all tables are " +"CHARSET=utf8" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/migration.py:238 +msgid "" +"The database is not under version control, but has tables. Please stamp " +"the current version of the schema manually." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:596 +msgid "DB exception wrapped." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:665 +#, python-format +msgid "Database server has gone away: %s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:745 +msgid "" +"This application has not enabled MySQL traditional mode, which means " +"silent data corruption may occur. Please encourage the application " +"developers to enable this mode." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/session.py:770 +#, python-format +msgid "SQL connection failed. %s attempts left." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:63 +#, python-format +msgid "Got lock \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/test_migrations.py:66 +#, python-format +msgid "Lock released \"%s\"" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:57 +msgid "Sort key supplied was not valid." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:96 +msgid "Id not in sort_keys; is sort_keys unique?" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:118 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:193 +#, python-format +msgid "" +"Please specify column %s in col_name_col_instance param. It is required " +"because column has unsupported type by sqlite)." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:199 +#, python-format +msgid "" +"col_name_col_instance param has wrong type of column instance for column " +"%s It should be instance of sqlalchemy.Column." +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:279 +#, python-format +msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" +msgstr "" + +#: ceilometer/openstack/common/db/sqlalchemy/utils.py:300 +msgid "Unsupported id columns type" +msgstr "" + +#: ceilometer/openstack/common/middleware/catch_errors.py:40 +#, python-format +msgid "An error occurred during processing the request: %s" +msgstr "" + +#: ceilometer/openstack/common/middleware/notifier.py:40 +#, python-format +msgid "An exception occurred processing the API call: %s " +msgstr "" + +#: ceilometer/openstack/common/middleware/sizelimit.py:55 +#: ceilometer/openstack/common/middleware/sizelimit.py:64 +#: ceilometer/openstack/common/middleware/sizelimit.py:75 +msgid "Request is too large." +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:129 +#, python-format +msgid "%s not in valid priorities" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:145 +#, python-format +msgid "" +"Problem '%(e)s' attempting to send to notification system. " +"Payload=%(payload)s" +msgstr "" + +#: ceilometer/openstack/common/notifier/api.py:164 +#, python-format +msgid "Failed to load notifier %s. These notifications will not be sent." +msgstr "" + +#: ceilometer/openstack/common/notifier/rpc_notifier.py:45 +#: ceilometer/openstack/common/notifier/rpc_notifier2.py:51 +#, python-format +msgid "Could not send notification to %(topic)s. Payload=%(message)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:75 +msgid "Pool creating new connection" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:202 +#, python-format +msgid "No calling threads waiting for msg_id : %(msg_id)s, message : %(data)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:205 +#, python-format +msgid "_call_waiters: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:212 +#, python-format +msgid "" +"Number of call waiters is greater than warning threshold: %d. There could" +" be a MulticallProxyWaiter leak." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:290 +#, python-format +msgid "unpacked context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:342 +#, python-format +msgid "UNIQUE_ID is %s." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:435 +#, python-format +msgid "received %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:443 +#, python-format +msgid "no method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:444 +#, python-format +msgid "No method for message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:472 +#: ceilometer/openstack/common/rpc/impl_zmq.py:280 +#, python-format +msgid "Expected exception during message handling (%s)" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:480 +#: ceilometer/openstack/common/rpc/impl_zmq.py:286 +msgid "Exception during message handling" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:554 +#, python-format +msgid "Making synchronous call on %s ..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:557 +#, python-format +msgid "MSG_ID is %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:583 +#, python-format +msgid "Making asynchronous cast on %s..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:592 +msgid "Making asynchronous fanout cast..." +msgstr "" + +#: ceilometer/openstack/common/rpc/amqp.py:620 +#, python-format +msgid "Sending %(event_type)s on %(topic)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:76 +msgid "An unknown RPC related exception occurred." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:88 +msgid "Exception in string format operation" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:106 +#, python-format +msgid "" +"Remote error: %(exc_type)s %(value)s\n" +"%(traceback)s." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:123 +#, python-format +msgid "" +"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:" +" \"%(method)s\" info: \"%(info)s\"" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:140 +#: ceilometer/openstack/common/rpc/common.py:141 +#: ceilometer/openstack/common/rpc/common.py:142 +msgid "" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:146 +#, python-format +msgid "Found duplicate message(%(msg_id)s). Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:150 +msgid "Invalid reuse of an RPC connection." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:154 +#, python-format +msgid "Specified RPC version, %(version)s, not supported by this endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:159 +#, python-format +msgid "" +"Specified RPC envelope version, %(version)s, not supported by this " +"endpoint." +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:164 +#, python-format +msgid "Specified RPC version cap, %(version_cap)s, is too low" +msgstr "" + +#: ceilometer/openstack/common/rpc/common.py:292 +#, python-format +msgid "Returning exception %s to caller" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:156 +msgid "Failed to process message ... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:160 +msgid "Failed to process message ... will requeue." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:495 +#, python-format +msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:517 +#, python-format +msgid "Connected to AMQP server on %(hostname)s:%(port)d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:554 +#, python-format +msgid "" +"Unable to connect to AMQP server on %(hostname)s:%(port)d after " +"%(max_retries)d tries: %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:568 +#, python-format +msgid "" +"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " +"again in %(sleep_time)d seconds." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:622 +#: ceilometer/openstack/common/rpc/impl_qpid.py:573 +#, python-format +msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:640 +#: ceilometer/openstack/common/rpc/impl_qpid.py:588 +#, python-format +msgid "Timed out waiting for RPC response: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:644 +#: ceilometer/openstack/common/rpc/impl_qpid.py:592 +#, python-format +msgid "Failed to consume message from queue: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_kombu.py:683 +#: ceilometer/openstack/common/rpc/impl_qpid.py:627 +#, python-format +msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:87 +#, python-format +msgid "Invalid value for qpid_topology_version: %d" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:191 +msgid "Failed to process message... skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:515 +#, python-format +msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:521 +#, python-format +msgid "Connected to AMQP server on %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:534 +msgid "Re-established AMQP queues" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_qpid.py:600 +msgid "Error processing message. Skipping it." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:96 +msgid "JSON serialization failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:101 +#, python-format +msgid "Deserializing: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:136 +#, python-format +msgid "Connecting to %(addr)s with %(type)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:137 +#, python-format +msgid "-> Subscribed to %(subscribe)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:138 +#, python-format +msgid "-> bind: %(bind)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:146 +msgid "Could not open socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:158 +#, python-format +msgid "Subscribing to %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:195 +msgid "ZeroMQ socket could not be closed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:200 +msgid "You cannot recv on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:205 +msgid "You cannot send on this socket." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:267 +#, python-format +msgid "Running func with context: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:305 +msgid "Sending reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:339 +msgid "RPC message did not include method." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:371 +msgid "Registering reactor" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:383 +msgid "In reactor registered" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:388 +msgid "Consuming socket" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:438 +#, python-format +msgid "Creating proxy for topic: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:444 +msgid "Topic contained dangerous characters." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:476 +msgid "Topic socket file creation failed." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:482 +#, python-format +msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:498 +#, python-format +msgid "Required IPC directory does not exist at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:507 +#, python-format +msgid "Permission denied to IPC directory at %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:510 +msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:544 +#, python-format +msgid "CONSUMER RECEIVED DATA: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:563 +msgid "ZMQ Envelope version unsupported or unknown." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:591 +msgid "Skipping topic registration. Already registered." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:598 +#, python-format +msgid "Consumer is a zmq.%s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:650 +msgid "Creating payload" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:663 +msgid "Creating queue socket for reply waiter" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:676 +msgid "Sending cast" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:679 +msgid "Cast sent; Waiting reply" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:682 +#, python-format +msgid "Received message: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:683 +msgid "Unpacking response" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:692 +msgid "Unsupported or unknown ZMQ envelope returned." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:699 +msgid "RPC Message Invalid." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:722 +#, python-format +msgid "%(msg)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:725 +#, python-format +msgid "Sending message(s) to: %s" +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:729 +msgid "No matchmaker results. Not casting." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:732 +msgid "No match from matchmaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/impl_zmq.py:814 +#, python-format +msgid "rpc_zmq_matchmaker = %(orig)s is deprecated; use %(new)s instead" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:46 +msgid "Match not found by MatchMaker." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:80 +msgid "Matchmaker does not implement registration or heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:216 +#, python-format +msgid "Matchmaker unregistered: %(key)s, %(host)s" +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker.py:228 +msgid "Register before starting heartbeat." +msgstr "" + +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:76 +#: ceilometer/openstack/common/rpc/matchmaker_ring.py:94 +#, python-format +msgid "No key defining hosts for topic '%s', see ringfile" +msgstr "" + +#: ceilometer/openstack/common/rpc/service.py:47 +#, python-format +msgid "Creating Consumer connection for Service %s" +msgstr "" + +#: ceilometer/publisher/file.py:62 +msgid "The path for the file publisher is required" +msgstr "" + +#: ceilometer/publisher/file.py:76 +msgid "max_bytes and backup_count should be numbers." +msgstr "" + +#: ceilometer/publisher/rpc.py:106 +#, python-format +msgid "Publishing policy set to %s, override backend retry config to 1" +msgstr "" + +#: ceilometer/publisher/rpc.py:111 +#, python-format +msgid "Publishing policy set to %s" +msgstr "" + +#: ceilometer/publisher/rpc.py:113 +#, python-format +msgid "Publishing policy is unknown (%s) force to default" +msgstr "" + +#: ceilometer/publisher/rpc.py:138 +#, python-format +msgid "Publishing %(m)d samples on %(t)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:152 +#, python-format +msgid "Publishing %(m)d samples on %(n)s" +msgstr "" + +#: ceilometer/publisher/rpc.py:177 +#, python-format +msgid "Publisher max local_queue length is exceeded, dropping %d oldest samples" +msgstr "" + +#: ceilometer/publisher/rpc.py:203 +#, python-format +msgid "Failed to publish %d samples, queue them" +msgstr "" + +#: ceilometer/publisher/rpc.py:207 +#, python-format +msgid "Failed to publish %d samples, dropping them" +msgstr "" + +#: ceilometer/publisher/udp.py:60 +#, python-format +msgid "Publishing sample %(msg)s over UDP to %(host)s:%(port)d" +msgstr "" + +#: ceilometer/publisher/udp.py:67 +msgid "Unable to send sample over UDP" +msgstr "" + +#: ceilometer/storage/__init__.py:76 +#, python-format +msgid "looking for %(name)r driver in %(namespace)r" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:136 +msgid "Creating a new in-memory HBase Connection object" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:156 +msgid "Dropping HBase schema..." +msgstr "" + +#: ceilometer/storage/impl_hbase.py:168 +msgid "Cannot disable table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:172 +msgid "Cannot delete table but ignoring error" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:183 +#, python-format +msgid "connecting to HBase on %(host)s:%(port)s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 +#, python-format +msgid "source: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:397 +#, python-format +msgid "Query Meter table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 +#, python-format +msgid "Query Resource table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:478 +#, python-format +msgid "Query Meter Table: %s" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:715 +msgid "Opening in-memory HBase connection" +msgstr "" + +#: ceilometer/storage/impl_log.py:57 +#, python-format +msgid "metering data %(counter_name)s for %(resource_id)s: %(counter_volume)s" +msgstr "" + +#: ceilometer/storage/impl_log.py:70 +#, python-format +msgid "Dropping data with TTL %d" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:357 +#, python-format +msgid "Unknown metadata type. Key (%s) will not be queryable." +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1055 +#, python-format +msgid "Failed to record event: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1070 +#, python-format +msgid "Getting events that match filter: %s" +msgstr "" + +#: ceilometer/storage/impl_sqlalchemy.py:1187 +#, python-format +msgid "Get traits for %s" +msgstr "" + +#: ceilometer/storage/pymongo_base.py:121 +#, python-format +msgid "Connecting to %(db)s on %(nodelist)s" +msgstr "" + +#: ceilometer/transformer/conversions.py:69 +#, python-format +msgid "scaling conversion transformer with source: %(source)s target: %(target)s:" +msgstr "" + +#: ceilometer/transformer/conversions.py:116 +#: ceilometer/transformer/conversions.py:139 +#, python-format +msgid "handling sample %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:119 +#: ceilometer/transformer/conversions.py:160 +#, python-format +msgid "converted to: %s" +msgstr "" + +#: ceilometer/transformer/conversions.py:162 +#, python-format +msgid "dropping sample with no predecessor: %s" +msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/tl/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/tl/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/tl/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/tl/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Tagalog " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/tl_PH/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/tl_PH/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/tl_PH/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/tl_PH/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-10-01 03:40+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Tagalog (Philippines) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1903,58 +1953,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2024,14 +2028,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2041,3 +2037,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/tr_TR/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/tr_TR/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/tr_TR/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/tr_TR/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Turkish (Turkey) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/uk/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/uk/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/uk/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/uk/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Ukrainian " @@ -19,45 +19,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -67,80 +95,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -148,59 +184,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -223,6 +259,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -271,7 +313,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -406,21 +448,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -430,145 +472,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -580,19 +637,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -629,46 +676,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -696,6 +803,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -780,6 +895,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -790,6 +915,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1634,9 +1769,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1683,127 +1816,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1817,35 +1880,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1973,58 +2023,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2073,14 +2077,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2090,3 +2086,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/ur/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/ur/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/ur/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/ur/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-10-18 09:52+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Urdu " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1891,58 +1941,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2012,14 +2016,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2029,3 +2025,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/vi_VN/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/vi_VN/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/vi_VN/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/vi_VN/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Vietnamese (Viet Nam) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/zh_CN/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/zh_CN/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/zh_CN/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/zh_CN/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Chinese (China) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/zh_HK/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/zh_HK/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/zh_HK/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/zh_HK/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2012-12-11 06:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Chinese (Hong Kong) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1972,58 +2022,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2072,14 +2076,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2089,3 +2085,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/locale/zh_TW/LC_MESSAGES/ceilometer.po ceilometer-2014.1~rc1/ceilometer/locale/zh_TW/LC_MESSAGES/ceilometer.po --- ceilometer-2014.1~b3/ceilometer/locale/zh_TW/LC_MESSAGES/ceilometer.po 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/locale/zh_TW/LC_MESSAGES/ceilometer.po 2014-03-31 15:32:27.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Ceilometer\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-02-26 06:06+0000\n" +"POT-Creation-Date: 2014-03-31 06:07+0000\n" "PO-Revision-Date: 2013-02-13 21:01+0000\n" "Last-Translator: openstackjenkins \n" "Language-Team: Chinese (Taiwan) " @@ -18,45 +18,73 @@ "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: ceilometer/collector.py:78 +#: ceilometer/agent.py:84 +#, python-format +msgid "Polling pollster %s" +msgstr "" + +#: ceilometer/agent.py:94 +#, python-format +msgid "Continue after error from %(name)s: %(error)s" +msgstr "" + +#: ceilometer/agent.py:169 +#, python-format +msgid "Unable to discover resources: %s" +msgstr "" + +#: ceilometer/agent.py:171 +#, python-format +msgid "Unknown discovery extension: %s" +msgstr "" + +#: ceilometer/cli.py:119 +msgid "Clearing expired metering data" +msgstr "" + +#: ceilometer/cli.py:124 +msgid "Nothing to clean, database time to live is disabled" +msgstr "" + +#: ceilometer/collector.py:77 #, python-format msgid "UDP: Cannot decode data sent by %s" msgstr "" -#: ceilometer/collector.py:81 +#: ceilometer/collector.py:80 #, python-format msgid "UDP: Storing %s" msgstr "" -#: ceilometer/collector.py:85 +#: ceilometer/collector.py:84 msgid "UDP: Unable to store meter" msgstr "" -#: ceilometer/notification.py:76 +#: ceilometer/notification.py:70 msgid "Loading event definitions" msgstr "" -#: ceilometer/notification.py:88 ceilometer/notifier.py:47 +#: ceilometer/notification.py:82 ceilometer/notifier.py:47 #, python-format msgid "Failed to load any notification handlers for %s" msgstr "" -#: ceilometer/notification.py:106 +#: ceilometer/notification.py:100 #, python-format msgid "Event types from %(name)s: %(type)s (ack_on_error=%(error)s)" msgstr "" -#: ceilometer/notification.py:122 +#: ceilometer/notification.py:116 #, python-format msgid "Could not join consumer pool %(topic)s/%(exchange)s" msgstr "" -#: ceilometer/notification.py:134 +#: ceilometer/notification.py:128 #, python-format msgid "notification %r" msgstr "" -#: ceilometer/notification.py:151 +#: ceilometer/notification.py:145 #, python-format msgid "Saving event \"%s\"" msgstr "" @@ -66,80 +94,88 @@ msgid "loading notification handlers from %s" msgstr "" -#: ceilometer/pipeline.py:129 +#: ceilometer/pipeline.py:237 #, python-format msgid "Unable to load publisher %s" msgstr "" -#: ceilometer/pipeline.py:176 +#: ceilometer/pipeline.py:256 #, python-format msgid "" "Pipeline %(pipeline)s: Setup transformer instance %(name)s with parameter" " %(param)s" msgstr "" -#: ceilometer/pipeline.py:189 +#: ceilometer/pipeline.py:269 #, python-format msgid "Pipeline %(pipeline)s: Sample dropped by transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:196 +#: ceilometer/pipeline.py:276 #, python-format msgid "" "Pipeline %(pipeline)s: Exit after error from transformer %(trans)s for " "%(smp)s" msgstr "" -#: ceilometer/pipeline.py:216 +#: ceilometer/pipeline.py:296 #, python-format msgid "Pipeline %(pipeline)s: Transform sample %(smp)s from %(trans)s transformer" msgstr "" -#: ceilometer/pipeline.py:226 +#: ceilometer/pipeline.py:306 #, python-format msgid "Pipeline %s: Publishing samples" msgstr "" -#: ceilometer/pipeline.py:231 +#: ceilometer/pipeline.py:311 #, python-format msgid "Pipeline %(pipeline)s: Continue after error from publisher %(pub)s" msgstr "" -#: ceilometer/pipeline.py:235 +#: ceilometer/pipeline.py:315 #, python-format msgid "Pipeline %s: Published samples" msgstr "" -#: ceilometer/pipeline.py:284 +#: ceilometer/pipeline.py:331 #, python-format -msgid "Flush pipeline %s" +msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" msgstr "" -#: ceilometer/pipeline.py:290 -#, python-format -msgid "Pipeline %(pipeline)s: Error flushing transformer %(trans)s" +#: ceilometer/pipeline.py:492 +msgid "detected decoupled pipeline config format" +msgstr "" + +#: ceilometer/pipeline.py:502 +msgid "detected deprecated pipeline config format" msgstr "" -#: ceilometer/pipeline.py:373 +#: ceilometer/pipeline.py:522 #, python-format msgid "Pipeline config file: %s" msgstr "" -#: ceilometer/pipeline.py:379 +#: ceilometer/pipeline.py:528 #, python-format msgid "Pipeline config: %s" msgstr "" -#: ceilometer/service.py:98 +#: ceilometer/service.py:111 #, python-format msgid "loading dispatchers from %s" msgstr "" -#: ceilometer/service.py:106 +#: ceilometer/service.py:119 #, python-format msgid "Failed to load any dispatchers for %s" msgstr "" +#: ceilometer/service.py:127 +#, python-format +msgid "%(worker_name)s value of %(workers)s is invalid, must be greater than 0" +msgstr "" + #: ceilometer/alarm/rpc.py:52 #, python-format msgid "" @@ -147,59 +183,59 @@ "%(previous)s to state %(state)s, skipping the notification." msgstr "" -#: ceilometer/alarm/service.py:96 +#: ceilometer/alarm/service.py:92 #, python-format msgid "initiating evaluation cycle on %d alarms" msgstr "" -#: ceilometer/alarm/service.py:101 +#: ceilometer/alarm/service.py:97 msgid "alarm evaluation cycle failed" msgstr "" -#: ceilometer/alarm/service.py:106 +#: ceilometer/alarm/service.py:102 #, python-format msgid "skipping alarm %s: type unsupported" msgstr "" -#: ceilometer/alarm/service.py:110 +#: ceilometer/alarm/service.py:106 #, python-format msgid "evaluating alarm %s" msgstr "" -#: ceilometer/alarm/service.py:163 ceilometer/alarm/service.py:221 +#: ceilometer/alarm/service.py:153 ceilometer/alarm/service.py:211 msgid "initialize_service_hooks" msgstr "" -#: ceilometer/alarm/service.py:234 +#: ceilometer/alarm/service.py:224 #, python-format msgid "Unable to parse action %(action)s for alarm %(alarm_id)s" msgstr "" -#: ceilometer/alarm/service.py:243 +#: ceilometer/alarm/service.py:233 #, python-format msgid "Action %(scheme)s for alarm %(alarm_id)s is unknown, cannot notify" msgstr "" -#: ceilometer/alarm/service.py:249 +#: ceilometer/alarm/service.py:239 #, python-format msgid "Notifying alarm %(id)s with action %(act)s" msgstr "" -#: ceilometer/alarm/service.py:254 +#: ceilometer/alarm/service.py:244 #, python-format msgid "Unable to notify alarm %s" msgstr "" -#: ceilometer/alarm/service.py:274 +#: ceilometer/alarm/service.py:264 msgid "Unable to notify for an alarm with no action" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:66 +#: ceilometer/alarm/evaluator/__init__.py:71 #, python-format msgid "alarm %(id)s transitioning to %(state)s because %(reason)s" msgstr "" -#: ceilometer/alarm/evaluator/__init__.py:78 +#: ceilometer/alarm/evaluator/__init__.py:83 msgid "alarm state update failed" msgstr "" @@ -222,6 +258,12 @@ msgid "Remaining as %(state)s due to alarms %(alarm_ids)s in state %(state)s" msgstr "" +#: ceilometer/alarm/evaluator/combination.py:100 +#: ceilometer/alarm/evaluator/threshold.py:177 +#, python-format +msgid "Attempted to evaluate alarm %s, but it is not within its time constraint." +msgstr "" + #: ceilometer/alarm/evaluator/threshold.py:63 #, python-format msgid "query stats from %(start)s to %(now)s" @@ -270,7 +312,7 @@ "threshold, most recent: %(most_recent)s" msgstr "" -#: ceilometer/alarm/evaluator/threshold.py:191 +#: ceilometer/alarm/evaluator/threshold.py:196 #, python-format msgid "comparing value %(value)s against threshold %(limit)s" msgstr "" @@ -405,21 +447,21 @@ msgid "assignment retrieval failed" msgstr "" -#: ceilometer/api/app.py:119 +#: ceilometer/api/app.py:133 #, python-format msgid "Starting server in PID %s" msgstr "" -#: ceilometer/api/app.py:120 +#: ceilometer/api/app.py:134 msgid "Configuration:" msgstr "" -#: ceilometer/api/app.py:124 +#: ceilometer/api/app.py:138 #, python-format msgid "serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s" msgstr "" -#: ceilometer/api/app.py:128 +#: ceilometer/api/app.py:142 #, python-format msgid "serving on http://%(host)s:%(port)s" msgstr "" @@ -429,145 +471,160 @@ msgid "Error parsing HTTP response: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:84 +#: ceilometer/api/controllers/v2.py:86 #, python-format msgid "%(entity)s %(id)s Not Found" msgstr "" -#: ceilometer/api/controllers/v2.py:231 +#: ceilometer/api/controllers/v2.py:245 #, python-format msgid "Failed to convert the metadata value %s automatically" msgstr "" -#: ceilometer/api/controllers/v2.py:243 +#: ceilometer/api/controllers/v2.py:257 #, python-format msgid "Failed to convert the value %(value)s to the expected data type %(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:248 +#: ceilometer/api/controllers/v2.py:262 #, python-format msgid "" "The data type %(type)s is not supported. The supported data type list is:" " %(supported)s" msgstr "" -#: ceilometer/api/controllers/v2.py:253 +#: ceilometer/api/controllers/v2.py:267 #, python-format msgid "" "Unexpected exception converting %(value)s to the expected data type " "%(type)s." msgstr "" -#: ceilometer/api/controllers/v2.py:263 +#: ceilometer/api/controllers/v2.py:278 #, python-format -msgid "Not Authorized to access project %s" +msgid "Not Authorized to access %(aspect)s %(id)s" msgstr "" -#: ceilometer/api/controllers/v2.py:669 ceilometer/api/v1/blueprint.py:579 +#: ceilometer/api/controllers/v2.py:737 ceilometer/api/v1/blueprint.py:579 msgid "clamping min timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:674 ceilometer/api/v1/blueprint.py:582 +#: ceilometer/api/controllers/v2.py:742 ceilometer/api/v1/blueprint.py:582 msgid "clamping max timestamp to range" msgstr "" -#: ceilometer/api/controllers/v2.py:729 ceilometer/api/controllers/v2.py:981 +#: ceilometer/api/controllers/v2.py:818 ceilometer/api/controllers/v2.py:1074 msgid "Limit must be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:806 +#: ceilometer/api/controllers/v2.py:896 msgid "Period must be positive." msgstr "" -#: ceilometer/api/controllers/v2.py:815 +#: ceilometer/api/controllers/v2.py:908 #, python-format msgid "computed value coming from %r" msgstr "" -#: ceilometer/api/controllers/v2.py:997 +#: ceilometer/api/controllers/v2.py:1090 msgid "Sample" msgstr "" -#: ceilometer/api/controllers/v2.py:1180 +#: ceilometer/api/controllers/v2.py:1272 msgid "Limit should be positive" msgstr "" -#: ceilometer/api/controllers/v2.py:1267 +#: ceilometer/api/controllers/v2.py:1364 #, python-format msgid "String %s is not a valid isotime" msgstr "" -#: ceilometer/api/controllers/v2.py:1268 +#: ceilometer/api/controllers/v2.py:1365 #, python-format msgid "Failed to parse the timestamp value %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1353 +#: ceilometer/api/controllers/v2.py:1451 msgid "Resource" msgstr "" -#: ceilometer/api/controllers/v2.py:1425 +#: ceilometer/api/controllers/v2.py:1525 #, python-format msgid "" "Alarm when %(meter_name)s is %(comparison_operator)s a %(statistic)s of " "%(threshold)s over %(period)s seconds" msgstr "" -#: ceilometer/api/controllers/v2.py:1466 +#: ceilometer/api/controllers/v2.py:1566 #, python-format msgid "Combined state of alarms %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1564 -msgid "either threshold_rule or combination_rule must be set" +#: ceilometer/api/controllers/v2.py:1618 +#, python-format +msgid "Timezone %s is not valid" msgstr "" -#: ceilometer/api/controllers/v2.py:1569 -msgid "threshold_rule and combination_rule cannot be set at the same time" +#: ceilometer/api/controllers/v2.py:1739 ceilometer/api/controllers/v2.py:1855 +msgid "Alarm" msgstr "" -#: ceilometer/api/controllers/v2.py:1589 ceilometer/api/controllers/v2.py:1685 -msgid "Alarm" +#: ceilometer/api/controllers/v2.py:1743 +msgid "Time constraint names must be unique for a given alarm." msgstr "" #: ceilometer/api/controllers/v2.py:1753 #, python-format +msgid "%(rule)s must be set for %(type)s type alarm" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1757 +msgid "threshold_rule and combination_rule cannot be set at the same time" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1924 +#, python-format +msgid "Alarm with name=%s exists" +msgstr "" + +#: ceilometer/api/controllers/v2.py:1932 +#, python-format msgid "Error while putting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:1754 ceilometer/api/controllers/v2.py:1893 +#: ceilometer/api/controllers/v2.py:1933 ceilometer/api/controllers/v2.py:2081 msgid "Alarm incorrect" msgstr "" -#: ceilometer/api/controllers/v2.py:1804 +#: ceilometer/api/controllers/v2.py:1983 msgid "state invalid" msgstr "" -#: ceilometer/api/controllers/v2.py:1886 +#: ceilometer/api/controllers/v2.py:2074 #, python-format msgid "Alarm with name='%s' exists" msgstr "" -#: ceilometer/api/controllers/v2.py:1892 +#: ceilometer/api/controllers/v2.py:2080 #, python-format msgid "Error while posting alarm: %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2043 +#: ceilometer/api/controllers/v2.py:2231 #, python-format msgid "operator %s not supported" msgstr "" -#: ceilometer/api/controllers/v2.py:2064 +#: ceilometer/api/controllers/v2.py:2252 #, python-format msgid "Getting traits for %s" msgstr "" -#: ceilometer/api/controllers/v2.py:2128 +#: ceilometer/api/controllers/v2.py:2316 msgid "Event" msgstr "" -#: ceilometer/api/controllers/v2.py:2131 +#: ceilometer/api/controllers/v2.py:2319 #, python-format msgid "More than one event with id %s returned from storage driver" msgstr "" @@ -579,19 +636,9 @@ "min_ts %(min_ts)s, max_ts %(max_ts)s" msgstr "" -#: ceilometer/central/manager.py:43 ceilometer/compute/manager.py:42 -#, python-format -msgid "Polling pollster %s" -msgstr "" - -#: ceilometer/central/manager.py:52 ceilometer/compute/manager.py:50 +#: ceilometer/central/manager.py:48 #, python-format -msgid "Continue after error from %(name)s: %(error)s" -msgstr "" - -#: ceilometer/compute/manager.py:59 -#, python-format -msgid "Unable to retrieve instances: %s" +msgid "Skip interval_task because Keystone error: %s" msgstr "" #: ceilometer/compute/nova_notifier.py:82 @@ -628,46 +675,106 @@ msgid "An error occurred while building %(m)s sample: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:34 -#: ceilometer/compute/pollsters/net.py:77 +#: ceilometer/compute/pollsters/cpu.py:35 #, python-format msgid "checking instance %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:38 +#: ceilometer/compute/pollsters/cpu.py:39 #, python-format msgid "CPUTIME USAGE: %(instance)s %(time)d" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:51 -#: ceilometer/compute/pollsters/disk.py:96 -#: ceilometer/compute/pollsters/net.py:90 +#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:85 +#: ceilometer/compute/pollsters/disk.py:97 +#: ceilometer/compute/pollsters/disk.py:205 +#: ceilometer/compute/pollsters/memory.py:47 +#: ceilometer/compute/pollsters/net.py:104 #, python-format msgid "Exception while getting samples %s" msgstr "" -#: ceilometer/compute/pollsters/cpu.py:53 +#: ceilometer/compute/pollsters/cpu.py:56 +#, python-format +msgid "Obtaining CPU time is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:59 #, python-format msgid "could not get CPU time for %(id)s: %(e)s" msgstr "" -#: ceilometer/compute/pollsters/disk.py:98 -#: ceilometer/compute/pollsters/net.py:92 +#: ceilometer/compute/pollsters/cpu.py:69 +#, python-format +msgid "Checking CPU util for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:73 +#, python-format +msgid "CPU UTIL: %(instance)s %(util)d" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:88 +#, python-format +msgid "Obtaining CPU Util is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/cpu.py:91 +#, python-format +msgid "Could not get CPU Util for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:100 +#: ceilometer/compute/pollsters/disk.py:208 +#: ceilometer/compute/pollsters/net.py:107 +#, python-format +msgid "%(inspector)s does not provide data for %(pollster)s" +msgstr "" + +#: ceilometer/compute/pollsters/disk.py:105 +#: ceilometer/compute/pollsters/disk.py:214 +#: ceilometer/compute/pollsters/net.py:112 #, python-format msgid "Ignoring instance %(name)s: %(error)s" msgstr "" -#: ceilometer/compute/virt/inspector.py:155 +#: ceilometer/compute/pollsters/memory.py:31 +#, python-format +msgid "Checking memory usage for instance %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:35 +#, python-format +msgid "MEMORY USAGE: %(instance)s %(usage)f" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:50 +#, python-format +msgid "Obtaining Memory Usage is not implemented for %s" +msgstr "" + +#: ceilometer/compute/pollsters/memory.py:53 +#, python-format +msgid "Could not get Memory Usage for %(id)s: %(e)s" +msgstr "" + +#: ceilometer/compute/pollsters/net.py:90 +#, python-format +msgid "checking net info for instance %s" +msgstr "" + +#: ceilometer/compute/virt/inspector.py:231 #, python-format msgid "Unable to load the hypervisor inspector: %s" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:166 +#: ceilometer/compute/virt/hyperv/utilsv2.py:182 #, python-format msgid "VM %s not found on Hyper-V" msgstr "" -#: ceilometer/compute/virt/hyperv/utilsv2.py:168 +#: ceilometer/compute/virt/hyperv/utilsv2.py:184 #, python-format msgid "Duplicate VM name found: %s" msgstr "" @@ -695,6 +802,14 @@ "SHUTOFF" msgstr "" +#: ceilometer/compute/virt/vmware/inspector.py:86 +#: ceilometer/compute/virt/vmware/inspector.py:103 +#: ceilometer/compute/virt/vmware/inspector.py:135 +#: ceilometer/compute/virt/vmware/inspector.py:148 +#, python-format +msgid "VM %s not found in VMware Vsphere" +msgstr "" + #: ceilometer/dispatcher/database.py:50 #, python-format msgid "" @@ -779,6 +894,16 @@ msgid "Event Definitions: %s" msgstr "" +#: ceilometer/hardware/plugin.py:71 +#, python-format +msgid "inspector call %(func)r failed for host %(host)s: %(err)s" +msgstr "" + +#: ceilometer/hardware/plugin.py:103 +#, python-format +msgid "Can NOT load inspector %(name)s: %(err)s" +msgstr "" + #: ceilometer/network/floatingip.py:45 #, python-format msgid "FLOATING IP USAGE: %s" @@ -789,6 +914,16 @@ msgid "network notification %r" msgstr "" +#: ceilometer/network/statistics/opendaylight/client.py:232 +#: ceilometer/tests/network/statistics/opendaylight/test_client.py:144 +#, python-format +msgid "OpenDaylitght API returned %(status)s %(reason)s" +msgstr "" + +#: ceilometer/network/statistics/opendaylight/driver.py:166 +msgid "Request failed to connect to OpenDaylight with NorthBound REST API" +msgstr "" + #: ceilometer/objectstore/swift.py:70 msgid "Swift endpoint not found" msgstr "" @@ -1633,9 +1768,7 @@ #: ceilometer/publisher/rpc.py:106 #, python-format -msgid "" -"Publishing policy set to %s, override backend retry " -"config to 1" +msgid "Publishing policy set to %s, override backend retry config to 1" msgstr "" #: ceilometer/publisher/rpc.py:111 @@ -1682,127 +1815,57 @@ msgid "Unable to send sample over UDP" msgstr "" -#: ceilometer/storage/__init__.py:72 +#: ceilometer/storage/__init__.py:76 #, python-format msgid "looking for %(name)r driver in %(namespace)r" msgstr "" -#: ceilometer/storage/__init__.py:165 -msgid "Clearing expired metering data" -msgstr "" - -#: ceilometer/storage/__init__.py:170 -msgid "Nothing to clean, database time to live is disabled" -msgstr "" - -#: ceilometer/storage/base.py:138 ceilometer/storage/base.py:164 -msgid "Projects not implemented" -msgstr "" - -#: ceilometer/storage/base.py:148 -msgid "Clearing samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:156 -msgid "Users not implemented" -msgstr "" - -#: ceilometer/storage/base.py:185 -msgid "Resources not implemented" -msgstr "" - -#: ceilometer/storage/base.py:200 -msgid "Meters not implemented" -msgstr "" - -#: ceilometer/storage/base.py:209 -msgid "Samples not implemented" -msgstr "" - -#: ceilometer/storage/base.py:217 -msgid "Statistics not implemented" -msgstr "" - -#: ceilometer/storage/base.py:223 ceilometer/storage/base.py:231 -#: ceilometer/storage/base.py:236 ceilometer/storage/base.py:241 -msgid "Alarms not implemented" -msgstr "" - -#: ceilometer/storage/base.py:271 ceilometer/storage/base.py:276 -msgid "Alarm history not implemented" -msgstr "" - -#: ceilometer/storage/base.py:288 ceilometer/storage/base.py:294 -#: ceilometer/storage/base.py:300 ceilometer/storage/base.py:310 -#: ceilometer/storage/base.py:321 -msgid "Events not implemented." -msgstr "" - -#: ceilometer/storage/base.py:332 -msgid "Complex query for samples is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:344 -msgid "Complex query for alarms is not implemented." -msgstr "" - -#: ceilometer/storage/base.py:356 -msgid "Complex query for alarms history is not implemented." -msgstr "" - -#: ceilometer/storage/impl_db2.py:283 ceilometer/storage/impl_db2.py:455 -#: ceilometer/storage/impl_hbase.py:313 ceilometer/storage/impl_hbase.py:375 -#: ceilometer/storage/impl_mongodb.py:542 -#: ceilometer/storage/impl_mongodb.py:769 -#: ceilometer/storage/impl_sqlalchemy.py:429 -#: ceilometer/storage/impl_sqlalchemy.py:522 -#: ceilometer/storage/impl_sqlalchemy.py:817 -#: ceilometer/storage/pymongo_base.py:172 -msgid "Pagination not implemented" -msgstr "" - -#: ceilometer/storage/impl_hbase.py:100 +#: ceilometer/storage/impl_hbase.py:136 msgid "Creating a new in-memory HBase Connection object" msgstr "" -#: ceilometer/storage/impl_hbase.py:115 +#: ceilometer/storage/impl_hbase.py:156 msgid "Dropping HBase schema..." msgstr "" -#: ceilometer/storage/impl_hbase.py:123 +#: ceilometer/storage/impl_hbase.py:168 msgid "Cannot disable table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:127 +#: ceilometer/storage/impl_hbase.py:172 msgid "Cannot delete table but ignoring error" msgstr "" -#: ceilometer/storage/impl_hbase.py:138 +#: ceilometer/storage/impl_hbase.py:183 #, python-format msgid "connecting to HBase on %(host)s:%(port)s" msgstr "" -#: ceilometer/storage/impl_hbase.py:276 ceilometer/storage/impl_hbase.py:288 +#: ceilometer/storage/impl_hbase.py:348 ceilometer/storage/impl_hbase.py:361 #, python-format msgid "source: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:339 +#: ceilometer/storage/impl_hbase.py:397 #, python-format msgid "Query Meter table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:380 +#: ceilometer/storage/impl_hbase.py:440 +msgid "Pagination not implemented" +msgstr "" + +#: ceilometer/storage/impl_hbase.py:446 #, python-format msgid "Query Resource table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:425 +#: ceilometer/storage/impl_hbase.py:478 #, python-format msgid "Query Meter Table: %s" msgstr "" -#: ceilometer/storage/impl_hbase.py:636 +#: ceilometer/storage/impl_hbase.py:715 msgid "Opening in-memory HBase connection" msgstr "" @@ -1816,35 +1879,22 @@ msgid "Dropping data with TTL %d" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:124 -#, python-format -msgid "Query on %(key)s is of %(value)s type and is not supported" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:148 -msgid "Missing required meter specifier" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:334 +#: ceilometer/storage/impl_sqlalchemy.py:357 #, python-format msgid "Unknown metadata type. Key (%s) will not be queryable." msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:748 -msgid "Unable to group by these fields" -msgstr "" - -#: ceilometer/storage/impl_sqlalchemy.py:1066 +#: ceilometer/storage/impl_sqlalchemy.py:1055 #, python-format msgid "Failed to record event: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1081 +#: ceilometer/storage/impl_sqlalchemy.py:1070 #, python-format msgid "Getting events that match filter: %s" msgstr "" -#: ceilometer/storage/impl_sqlalchemy.py:1198 +#: ceilometer/storage/impl_sqlalchemy.py:1187 #, python-format msgid "Get traits for %s" msgstr "" @@ -1981,58 +2031,12 @@ #~ msgid "%(missing_states)d alarms in %(alarm_ids)s are in unknown state" #~ msgstr "" -#~ msgid "" -#~ "Transition to %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due at least " -#~ "to one alarm in %(alarm_ids)s in " -#~ "state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to all " -#~ "alarms (%(alarm_ids)s) in state %(state)s" -#~ msgstr "" - -#~ msgid "" -#~ "Transition to %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - -#~ msgid "" -#~ "Remaining as %(state)s due to %(count)d" -#~ " samples %(disposition)s threshold, most " -#~ "recent: %(last)s" -#~ msgstr "" - #~ msgid "Value %(value)s is invalid (should be greater or equal to %(min)s)" #~ msgstr "" #~ msgid "Value %(value)s is invalid (should be lower or equal to %(max)s)" #~ msgstr "" -#~ msgid "" -#~ "Failed to convert the metadata value " -#~ "%(value)s to the expected data type " -#~ "%(type)s." -#~ msgstr "" - -#~ msgid "" -#~ "The data type %s is not supported." -#~ " The supported data type list is: " -#~ "integer, float, boolean and string." -#~ msgstr "" - #~ msgid "Alarm %s doesn't exist" #~ msgstr "" @@ -2081,14 +2085,6 @@ #~ msgid "cannot understand XML" #~ msgstr "" -#~ msgid "" -#~ "A RPC is being made while holding" -#~ " a lock. The locks currently held " -#~ "are %(locks)s. This is probably a " -#~ "bug. Please report it. Include the " -#~ "following: [%(stack)s]." -#~ msgstr "" - #~ msgid "Connecting to DB2 on %s" #~ msgstr "" @@ -2098,3 +2094,69 @@ #~ msgid "EventTypes not implemented." #~ msgstr "" +#~ msgid "Flush pipeline %s" +#~ msgstr "" + +#~ msgid "Not Authorized to access project %s" +#~ msgstr "" + +#~ msgid "either threshold_rule or combination_rule must be set" +#~ msgstr "" + +#~ msgid "Unable to retrieve instances: %s" +#~ msgstr "" + +#~ msgid "" +#~ "Publishing policy set to %s," +#~ " override backend retry " +#~ "config to 1" +#~ msgstr "" + +#~ msgid "Projects not implemented" +#~ msgstr "" + +#~ msgid "Clearing samples not implemented" +#~ msgstr "" + +#~ msgid "Users not implemented" +#~ msgstr "" + +#~ msgid "Resources not implemented" +#~ msgstr "" + +#~ msgid "Meters not implemented" +#~ msgstr "" + +#~ msgid "Samples not implemented" +#~ msgstr "" + +#~ msgid "Statistics not implemented" +#~ msgstr "" + +#~ msgid "Alarms not implemented" +#~ msgstr "" + +#~ msgid "Alarm history not implemented" +#~ msgstr "" + +#~ msgid "Events not implemented." +#~ msgstr "" + +#~ msgid "Complex query for samples is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms is not implemented." +#~ msgstr "" + +#~ msgid "Complex query for alarms history is not implemented." +#~ msgstr "" + +#~ msgid "Query on %(key)s is of %(value)s type and is not supported" +#~ msgstr "" + +#~ msgid "Missing required meter specifier" +#~ msgstr "" + +#~ msgid "Unable to group by these fields" +#~ msgstr "" + diff -Nru ceilometer-2014.1~b3/ceilometer/network/statistics/driver.py ceilometer-2014.1~rc1/ceilometer/network/statistics/driver.py --- ceilometer-2014.1~b3/ceilometer/network/statistics/driver.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/network/statistics/driver.py 2014-03-31 15:32:25.000000000 +0000 @@ -22,7 +22,7 @@ class Driver(): @abc.abstractmethod - def get_sample_data(self, meter_name, resource, cache): + def get_sample_data(self, meter_name, parse_url, params, cache): '''Return volume, resource_id, resource_metadata, timestamp in tuple. If not implemented for meter_name, returns None diff -Nru ceilometer-2014.1~b3/ceilometer/network/statistics/__init__.py ceilometer-2014.1~rc1/ceilometer/network/statistics/__init__.py --- ceilometer-2014.1~b3/ceilometer/network/statistics/__init__.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/network/statistics/__init__.py 2014-03-31 15:32:25.000000000 +0000 @@ -16,9 +16,11 @@ import abc import six -from stevedore import extension +from six.moves.urllib import parse as url_parse +from stevedore import driver as _driver from ceilometer.central import plugin +from ceilometer.openstack.common import network_utils from ceilometer import sample @@ -26,8 +28,7 @@ class _Base(plugin.CentralPollster): NAMESPACE = 'network.statistics.drivers' - extension_manager = extension.ExtensionManager(namespace=NAMESPACE, - invoke_on_load=True) + drivers = {} @abc.abstractproperty def meter_name(self): @@ -41,12 +42,35 @@ def meter_unit(self): '''Return a Meter Unit.''' + @staticmethod + def _parse_my_resource(resource): + + parse_url = network_utils.urlsplit(resource) + + params = url_parse.parse_qs(parse_url.query) + parts = url_parse.ParseResult(parse_url.scheme, + parse_url.netloc, + parse_url.path, + None, + None, + None) + return parts, params + + @staticmethod + def get_driver(scheme): + if scheme not in _Base.drivers: + _Base.drivers[scheme] = _driver.DriverManager(_Base.NAMESPACE, + scheme).driver() + return _Base.drivers[scheme] + def get_samples(self, manager, cache, resources=[]): for resource in resources: - sample_data = self.extension_manager.map_method('get_sample_data', - self.meter_name, - resource, - cache) + parse_url, params = self._parse_my_resource(resource) + ext = self.get_driver(parse_url.scheme) + sample_data = ext.get_sample_data(self.meter_name, + parse_url, + params, + cache) for data in sample_data: if data is None: continue diff -Nru ceilometer-2014.1~b3/ceilometer/network/statistics/opendaylight/client.py ceilometer-2014.1~rc1/ceilometer/network/statistics/opendaylight/client.py --- ceilometer-2014.1~b3/ceilometer/network/statistics/opendaylight/client.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/network/statistics/opendaylight/client.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,240 @@ +# +# Copyright 2013 NEC Corporation. All rights reserved. +# +# 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. + +import abc + +from oslo.config import cfg +import requests +from requests import auth +import six + +from ceilometer.openstack.common.gettextutils import _ # noqa +from ceilometer.openstack.common import log + + +CONF = cfg.CONF + + +LOG = log.getLogger(__name__) + + +@six.add_metaclass(abc.ABCMeta) +class _Base(): + """Base class of OpenDaylight REST APIs Clients.""" + + @abc.abstractproperty + def base_url(self): + """Returns base url for each REST API.""" + + def __init__(self, client): + self.client = client + + def request(self, path, container_name): + return self.client.request(self.base_url + path, container_name) + + +class OpenDaylightRESTAPIFailed(Exception): + pass + + +class StatisticsAPIClient(_Base): + """OpenDaylight Statistics REST API Client + + Base URL: + {endpoint}/statistics/{containerName} + """ + + base_url = '/statistics/%(container_name)s' + + def get_port_statistics(self, container_name): + """Get port statistics + + URL: + {Base URL}/port + """ + return self.request('/port', container_name) + + def get_flow_statistics(self, container_name): + """Get flow statistics + + URL: + {Base URL}/flow + """ + return self.request('/flow', container_name) + + def get_table_statistics(self, container_name): + """Get table statistics + + URL: + {Base URL}/table + """ + return self.request('/table', container_name) + + +class TopologyAPIClient(_Base): + """OpenDaylight Topology REST API Client + + Base URL: + {endpoint}/topology/{containerName} + """ + + base_url = '/topology/%(container_name)s' + + def get_topology(self, container_name): + """Get topology + + URL: + {Base URL} + """ + return self.request('', container_name) + + def get_user_links(self, container_name): + """Get user links + + URL: + {Base URL}/userLinks + """ + return self.request('/userLinks', container_name) + + +class SwitchManagerAPIClient(_Base): + """OpenDaylight Switch Manager REST API Client + + Base URL: + {endpoint}/switchmanager/{containerName} + """ + + base_url = '/switchmanager/%(container_name)s' + + def get_nodes(self, container_name): + """Get node informations + + URL: + {Base URL}/nodes + """ + return self.request('/nodes', container_name) + + +class HostTrackerAPIClient(_Base): + """OpenDaylight Host Tracker REST API Client + + Base URL: + {endpoint}/hosttracker/{containerName} + """ + + base_url = '/hosttracker/%(container_name)s' + + def get_active_hosts(self, container_name): + """Get active hosts informatinos + + URL: + {Base URL}/hosts/active + """ + return self.request('/hosts/active', container_name) + + def get_inactive_hosts(self, container_name): + """Get inactive hosts informations + + URL: + {Base URL}/hosts/inactive + """ + return self.request('/hosts/inactive', container_name) + + +class Client(): + + def __init__(self, endpoint, params): + self.statistics = StatisticsAPIClient(self) + self.topology = TopologyAPIClient(self) + self.switch_manager = SwitchManagerAPIClient(self) + self.host_tracker = HostTrackerAPIClient(self) + + self._endpoint = endpoint + + self._req_params = self._get_req_params(params) + + @staticmethod + def _get_req_params(params): + req_params = { + 'headers': { + 'Accept': 'application/json' + } + } + + auth_way = params.get('auth') + if auth_way in ['basic', 'digest']: + user = params.get('user') + password = params.get('password') + + if auth_way == 'basic': + auth_class = auth.HTTPBasicAuth + else: + auth_class = auth.HTTPDigestAuth + + req_params['auth'] = auth_class(user, password) + return req_params + + def _log_req(self, url): + + curl_command = ['REQ: curl -i -X GET '] + curl_command.append('"%s" ' % (url)) + + if 'auth' in self._req_params: + auth_class = self._req_params['auth'] + if isinstance(auth_class, auth.HTTPBasicAuth): + curl_command.append('--basic ') + else: + curl_command.append('--digest ') + + curl_command.append('--user "%s":"%s" ' % (auth_class.username, + auth_class.password)) + + for name, value in six.iteritems(self._req_params['headers']): + curl_command.append('-H "%s: %s" ' % (name, value)) + + LOG.debug(''.join(curl_command)) + + @staticmethod + def _log_res(resp): + + dump = ['RES: \n'] + dump.append('HTTP %.1f %s %s\n' % (resp.raw.version, + resp.status_code, + resp.reason)) + dump.extend(['%s: %s\n' % (k, v) + for k, v in six.iteritems(resp.headers)]) + dump.append('\n') + if resp.content: + dump.extend([resp.content, '\n']) + + LOG.debug(''.join(dump)) + + def _http_request(self, url): + if CONF.debug: + self._log_req(url) + resp = requests.get(url, **self._req_params) + if CONF.debug: + self._log_res(resp) + if resp.status_code / 100 != 2: + raise OpenDaylightRESTAPIFailed( + _('OpenDaylitght API returned %(status)s %(reason)s') % + {'status': resp.status_code, 'reason': resp.reason}) + + return resp.json() + + def request(self, path, container_name): + + url = self._endpoint + path % {'container_name': container_name} + return self._http_request(url) diff -Nru ceilometer-2014.1~b3/ceilometer/network/statistics/opendaylight/driver.py ceilometer-2014.1~rc1/ceilometer/network/statistics/opendaylight/driver.py --- ceilometer-2014.1~b3/ceilometer/network/statistics/opendaylight/driver.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/network/statistics/opendaylight/driver.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,450 @@ +# +# Copyright 2013 NEC Corporation. All rights reserved. +# +# 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. + +import six +from six import moves +from six.moves.urllib import parse as url_parse + +from ceilometer.network.statistics import driver +from ceilometer.network.statistics.opendaylight import client +from ceilometer.openstack.common.gettextutils import _ # noqa +from ceilometer.openstack.common import log +from ceilometer.openstack.common import timeutils +from ceilometer import utils + + +LOG = log.getLogger(__name__) + + +def _get_properties(properties, prefix='properties'): + resource_meta = {} + if properties is not None: + for k, v in six.iteritems(properties): + value = v['value'] + key = prefix + '_' + k + if 'name' in v: + key += '_' + v['name'] + resource_meta[key] = value + return resource_meta + + +def _get_int_sample(key, statistic, resource_id, resource_meta): + if key not in statistic: + return None + return (int(statistic[key]), resource_id, resource_meta) + + +class OpenDayLightDriver(driver.Driver): + """Driver of network info collector from OpenDaylight. + + This driver uses resources in "pipeline.yaml". + Resource requires below conditions: + * resource is url + * scheme is "opendaylight" + + This driver can be configured via query parameters. + Supported parameters: + * scheme: + The scheme of request url to OpenDaylight REST API endpoint. + (default http) + * auth: + Auth strategy of http. + This parameter can be set basic and digest.(default None) + * user: + This is username that is used by auth.(default None) + * password: + This is password that is used by auth.(default None) + * container_name: + Name of container of OpenDaylight.(default "default") + This parameter allows multi vaues. + + e.g. + opendaylight://127.0.0.1:8080/controller/nb/v2?container_name=default& + container_name=egg&auth=basic&user=admin&password=admin&scheme=http + + In this case, the driver send request to below URL: + http://127.0.0.1:8080/controller/nb/v2/statistics/default/flow + and + http://127.0.0.1:8080/controller/nb/v2/statistics/egg/flow + """ + @staticmethod + def _prepare_cache(endpoint, params, cache): + + if 'network.statistics.opendaylight' in cache: + return cache['network.statistics.opendaylight'] + + data = {} + + container_names = params.get('container_name', ['default']) + + odl_params = {} + if 'auth' in params: + odl_params['auth'] = params['auth'][0] + if 'user' in params: + odl_params['user'] = params['user'][0] + if 'password' in params: + odl_params['password'] = params['password'][0] + cs = client.Client(endpoint, odl_params) + + for container_name in container_names: + try: + container_data = {} + + # get flow statistics + container_data['flow'] = cs.statistics.get_flow_statistics( + container_name) + + # get port statistics + container_data['port'] = cs.statistics.get_port_statistics( + container_name) + + # get table statistics + container_data['table'] = cs.statistics.get_table_statistics( + container_name) + + # get topology + container_data['topology'] = cs.topology.get_topology( + container_name) + + # get switch informations + container_data['switch'] = cs.switch_manager.get_nodes( + container_name) + + # get and optimize user links + # e.g. + # before: + # "OF|2@OF|00:00:00:00:00:00:00:02" + # after: + # { + # 'port': { + # 'type': 'OF', + # 'id': '2'}, + # 'node': { + # 'type': 'OF', + # 'id': '00:00:00:00:00:00:00:02' + # } + # } + user_links_raw = cs.topology.get_user_links(container_name) + user_links = [] + container_data['user_links'] = user_links + for user_link_row in user_links_raw['userLinks']: + user_link = {} + for k, v in six.iteritems(user_link_row): + if (k == "dstNodeConnector" or + k == "srcNodeConnector"): + port_raw, node_raw = v.split('@') + port = {} + port['type'], port['id'] = port_raw.split('|') + node = {} + node['type'], node['id'] = node_raw.split('|') + v = {'port': port, 'node': node} + user_link[k] = v + user_links.append(user_link) + + # get link status to hosts + container_data['active_hosts'] = cs.host_tracker.\ + get_active_hosts(container_name) + container_data['inactive_hosts'] = cs.host_tracker.\ + get_inactive_hosts(container_name) + + container_data['timestamp'] = timeutils.isotime() + + data[container_name] = container_data + except Exception: + LOG.exception(_('Request failed to connect to OpenDaylight' + ' with NorthBound REST API')) + + cache['network.statistics.opendaylight'] = data + + return data + + def get_sample_data(self, meter_name, parse_url, params, cache): + + extractor = self._get_extractor(meter_name) + if extractor is None: + # The way to getting meter is not implemented in this driver or + # OpenDaylight REST API has not api to getting meter. + return None + + iter = self._get_iter(meter_name) + if iter is None: + # The way to getting meter is not implemented in this driver or + # OpenDaylight REST API has not api to getting meter. + return None + + parts = url_parse.ParseResult(params.get('scheme', ['http'])[0], + parse_url.netloc, + parse_url.path, + None, + None, + None) + endpoint = url_parse.urlunparse(parts) + + data = self._prepare_cache(endpoint, params, cache) + + samples = [] + for name, value in six.iteritems(data): + timestamp = value['timestamp'] + for sample in iter(extractor, value): + if sample is not None: + # set controller name and container name + # to resource_metadata + sample[2]['controller'] = 'OpenDaylight' + sample[2]['container'] = name + + samples.append(sample + (timestamp, )) + + return samples + + def _get_iter(self, meter_name): + if meter_name == 'switch': + return self._iter_switch + elif meter_name.startswith('switch.flow'): + return self._iter_flow + elif meter_name.startswith('switch.table'): + return self._iter_table + elif meter_name.startswith('switch.port'): + return self._iter_port + + def _get_extractor(self, meter_name): + method_name = '_' + meter_name.replace('.', '_') + return getattr(self, method_name, None) + + @staticmethod + def _iter_switch(extractor, data): + for switch in data['switch']['nodeProperties']: + yield extractor(switch, switch['node']['id'], {}) + + @staticmethod + def _switch(statistic, resource_id, resource_meta): + + resource_meta.update(_get_properties(statistic.get('properties'))) + + return (1, resource_id, resource_meta) + + @staticmethod + def _iter_port(extractor, data): + for port_statistic in data['port']['portStatistics']: + for statistic in port_statistic['portStatistic']: + resource_meta = {'port': statistic['nodeConnector']['id']} + yield extractor(statistic, port_statistic['node']['id'], + resource_meta, data) + + @staticmethod + def _switch_port(statistic, resource_id, resource_meta, data): + my_node_id = resource_id + my_port_id = statistic['nodeConnector']['id'] + + # link status from topology + edge_properties = data['topology']['edgeProperties'] + for edge_property in edge_properties: + edge = edge_property['edge'] + + if (edge['headNodeConnector']['node']['id'] == my_node_id and + edge['headNodeConnector']['id'] == my_port_id): + target_node = edge['tailNodeConnector'] + elif (edge['tailNodeConnector']['node']['id'] == my_node_id and + edge['tailNodeConnector']['id'] == my_port_id): + target_node = edge['headNodeConnector'] + else: + continue + + resource_meta['topology_node_id'] = target_node['node']['id'] + resource_meta['topology_node_port'] = target_node['id'] + + resource_meta.update(_get_properties( + edge_property.get('properties'), + prefix='topology')) + + break + + # link status from user links + for user_link in data['user_links']: + if (user_link['dstNodeConnector']['node']['id'] == my_node_id and + user_link['dstNodeConnector']['port']['id'] == my_port_id): + target_node = user_link['srcNodeConnector'] + elif (user_link['srcNodeConnector']['node']['id'] == my_node_id and + user_link['srcNodeConnector']['port']['id'] == my_port_id): + target_node = user_link['dstNodeConnector'] + else: + continue + + resource_meta['user_link_node_id'] = target_node['node']['id'] + resource_meta['user_link_node_port'] = target_node['port']['id'] + resource_meta['user_link_status'] = user_link['status'] + resource_meta['user_link_name'] = user_link['name'] + + break + + # link status to hosts + for hosts, status in moves.zip( + [data['active_hosts'], data['inactive_hosts']], + ['active', 'inactive']): + for host_config in hosts['hostConfig']: + if (host_config['nodeId'] != my_node_id or + host_config['nodeConnectorId'] != my_port_id): + continue + + resource_meta['host_status'] = status + for key in ['dataLayerAddress', 'vlan', 'staticHost', + 'networkAddress']: + if key in host_config: + resource_meta['host_' + key] = host_config[key] + + break + + return (1, resource_id, resource_meta) + + @staticmethod + def _switch_port_receive_packets(statistic, resource_id, + resource_meta, data): + return _get_int_sample('receivePackets', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_transmit_packets(statistic, resource_id, + resource_meta, data): + return _get_int_sample('transmitPackets', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_receive_bytes(statistic, resource_id, + resource_meta, data): + return _get_int_sample('receiveBytes', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_transmit_bytes(statistic, resource_id, + resource_meta, data): + return _get_int_sample('transmitBytes', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_receive_drops(statistic, resource_id, + resource_meta, data): + return _get_int_sample('receiveDrops', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_transmit_drops(statistic, resource_id, + resource_meta, data): + return _get_int_sample('transmitDrops', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_receive_errors(statistic, resource_id, + resource_meta, data): + return _get_int_sample('receiveErrors', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_transmit_errors(statistic, resource_id, + resource_meta, data): + return _get_int_sample('transmitErrors', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_receive_frame_error(statistic, resource_id, + resource_meta, data): + return _get_int_sample('receiveFrameError', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_receive_overrun_error(statistic, resource_id, + resource_meta, data): + return _get_int_sample('receiveOverRunError', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_receive_crc_error(statistic, resource_id, + resource_meta, data): + return _get_int_sample('receiveCrcError', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_port_collision_count(statistic, resource_id, + resource_meta, data): + return _get_int_sample('collisionCount', statistic, resource_id, + resource_meta) + + @staticmethod + def _iter_table(extractor, data): + for table_statistic in data['table']['tableStatistics']: + for statistic in table_statistic['tableStatistic']: + resource_meta = {'table_id': statistic['nodeTable']['id']} + yield extractor(statistic, + table_statistic['node']['id'], + resource_meta) + + @staticmethod + def _switch_table(statistic, resource_id, resource_meta): + return (1, resource_id, resource_meta) + + @staticmethod + def _switch_table_active_entries(statistic, resource_id, + resource_meta): + return _get_int_sample('activeCount', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_table_lookup_packets(statistic, resource_id, + resource_meta): + return _get_int_sample('lookupCount', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_table_matched_packets(statistic, resource_id, + resource_meta): + return _get_int_sample('matchedCount', statistic, resource_id, + resource_meta) + + @staticmethod + def _iter_flow(extractor, data): + for flow_statistic in data['flow']['flowStatistics']: + for statistic in flow_statistic['flowStatistic']: + resource_meta = {'flow_id': statistic['flow']['id'], + 'table_id': statistic['tableId']} + for key, value in utils.dict_to_keyval(statistic['flow'], + 'flow'): + resource_meta[key.replace('.', '_')] = value + yield extractor(statistic, + flow_statistic['node']['id'], + resource_meta) + + @staticmethod + def _switch_flow(statistic, resource_id, resource_meta): + return (1, resource_id, resource_meta) + + @staticmethod + def _switch_flow_duration_seconds(statistic, resource_id, + resource_meta): + return _get_int_sample('durationSeconds', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_flow_duration_nanoseconds(statistic, resource_id, + resource_meta): + return _get_int_sample('durationNanoseconds', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_flow_packets(statistic, resource_id, resource_meta): + return _get_int_sample('packetCount', statistic, resource_id, + resource_meta) + + @staticmethod + def _switch_flow_bytes(statistic, resource_id, resource_meta): + return _get_int_sample('byteCount', statistic, resource_id, + resource_meta) diff -Nru ceilometer-2014.1~b3/ceilometer/notification.py ceilometer-2014.1~rc1/ceilometer/notification.py --- ceilometer-2014.1~b3/ceilometer/notification.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/notification.py 2014-03-31 15:32:25.000000000 +0000 @@ -24,7 +24,6 @@ from ceilometer.openstack.common.gettextutils import _ # noqa from ceilometer.openstack.common import log from ceilometer.openstack.common.rpc import service as rpc_service -from ceilometer.openstack.common import service as os_service from ceilometer import pipeline from ceilometer import service from ceilometer.storage import models @@ -163,10 +162,3 @@ with self.pipeline_manager.publisher(context.get_admin_context()) as p: # FIXME(dhellmann): Spawn green thread? p(list(ext.obj.to_samples(notification))) - - -def agent(): - service.prepare_service() - os_service.launch(NotificationService( - cfg.CONF.host, - 'ceilometer.agent.notification')).wait() diff -Nru ceilometer-2014.1~b3/ceilometer/nova_client.py ceilometer-2014.1~rc1/ceilometer/nova_client.py --- ceilometer-2014.1~b3/ceilometer/nova_client.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/nova_client.py 2014-03-31 15:32:25.000000000 +0000 @@ -55,6 +55,7 @@ region_name=conf.os_region_name, endpoint_type=conf.os_endpoint_type, cacert=conf.os_cacert, + insecure=conf.insecure, no_cache=True) def _with_flavor_and_image(self, instances): diff -Nru ceilometer-2014.1~b3/ceilometer/openstack/common/log_handler.py ceilometer-2014.1~rc1/ceilometer/openstack/common/log_handler.py --- ceilometer-2014.1~b3/ceilometer/openstack/common/log_handler.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/openstack/common/log_handler.py 2014-03-31 15:32:25.000000000 +0000 @@ -27,4 +27,4 @@ notifier.api.notify(None, 'error.publisher', 'error_notification', notifier.api.ERROR, - dict(error=record.msg)) + dict(error=record.getMessage())) diff -Nru ceilometer-2014.1~b3/ceilometer/publisher/rpc.py ceilometer-2014.1~rc1/ceilometer/publisher/rpc.py --- ceilometer-2014.1~b3/ceilometer/publisher/rpc.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/publisher/rpc.py 2014-03-31 15:32:25.000000000 +0000 @@ -103,8 +103,8 @@ self.local_queue = [] if self.policy in ['queue', 'drop']: - LOG.info(_('Publishing policy set to %s, \ - override backend retry config to 1') % self.policy) + LOG.info(_('Publishing policy set to %s, ' + 'override backend retry config to 1') % self.policy) override_backend_retry_config(1) elif self.policy == 'default': diff -Nru ceilometer-2014.1~b3/ceilometer/service.py ceilometer-2014.1~rc1/ceilometer/service.py --- ceilometer-2014.1~b3/ceilometer/service.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/service.py 2014-03-31 15:32:25.000000000 +0000 @@ -21,7 +21,6 @@ import socket import sys -import eventlet from oslo.config import cfg from stevedore import named @@ -29,6 +28,7 @@ from ceilometer.openstack.common.gettextutils import _ # noqa from ceilometer.openstack.common import log from ceilometer.openstack.common import rpc +from ceilometer import utils OPTS = [ @@ -41,6 +41,14 @@ deprecated_group="collector", default=['database'], help='Dispatcher to process data.'), + cfg.IntOpt('collector_workers', + default=1, + help='Number of workers for collector service. A single ' + 'collector is enabled by default.'), + cfg.IntOpt('notification_workers', + default=1, + help='Number of workers for notification service. A single ' + 'notification agent is enabled by default.'), ] cfg.CONF.register_opts(OPTS) @@ -89,12 +97,17 @@ LOG = log.getLogger(__name__) +class WorkerException(Exception): + """Exception for errors relating to service workers + """ + + class DispatchedService(object): DISPATCHER_NAMESPACE = 'ceilometer.dispatcher' - def __init__(self, *args, **kwargs): - super(DispatchedService, self).__init__(*args, **kwargs) + def start(self): + super(DispatchedService, self).start() LOG.debug(_('loading dispatchers from %s'), self.DISPATCHER_NAMESPACE) self.dispatcher_manager = named.NamedExtensionManager( @@ -107,11 +120,20 @@ self.DISPATCHER_NAMESPACE) +def get_workers(name): + workers = (cfg.CONF.get('%s_workers' % name) or + utils.cpu_count()) + if workers and workers < 1: + msg = (_("%(worker_name)s value of %(workers)s is invalid, " + "must be greater than 0") % + {'worker_name': '%s_workers' % name, 'workers': str(workers)}) + raise WorkerException(msg) + return workers + + def prepare_service(argv=None): - # NOTE(jd) We need to monkey patch the socket module for, at least, - # oslo.rpc, otherwise everything's blocked on its first read() - eventlet.monkey_patch(socket=True) gettextutils.install('ceilometer', lazy=True) + gettextutils.enable_lazy() rpc.set_defaults(control_exchange='ceilometer') cfg.set_defaults(log.log_opts, default_log_levels=['amqplib=WARN', diff -Nru ceilometer-2014.1~b3/ceilometer/storage/base.py ceilometer-2014.1~rc1/ceilometer/storage/base.py --- ceilometer-2014.1~b3/ceilometer/storage/base.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/base.py 2014-03-31 15:32:25.000000000 +0000 @@ -173,7 +173,7 @@ All timestamps must be naive utc datetime object. """ - raise NotImplementedError(_('Projects not implemented')) + raise NotImplementedError('Projects not implemented') @staticmethod def clear_expired_metering_data(ttl): @@ -183,7 +183,7 @@ :param ttl: Number of seconds to keep records for. """ - raise NotImplementedError(_('Clearing samples not implemented')) + raise NotImplementedError('Clearing samples not implemented') @staticmethod def get_users(source=None): @@ -191,7 +191,7 @@ :param source: Optional source filter. """ - raise NotImplementedError(_('Users not implemented')) + raise NotImplementedError('Users not implemented') @staticmethod def get_projects(source=None): @@ -199,7 +199,7 @@ :param source: Optional source filter. """ - raise NotImplementedError(_('Projects not implemented')) + raise NotImplementedError('Projects not implemented') @staticmethod def get_resources(user=None, project=None, source=None, @@ -220,7 +220,7 @@ :param resource: Optional resource filter. :param pagination: Optional pagination query. """ - raise NotImplementedError(_('Resources not implemented')) + raise NotImplementedError('Resources not implemented') @staticmethod def get_meters(user=None, project=None, resource=None, source=None, @@ -235,7 +235,7 @@ :param metaquery: Optional dict with metadata to match on. :param pagination: Optional pagination query. """ - raise NotImplementedError(_('Meters not implemented')) + raise NotImplementedError('Meters not implemented') @staticmethod def get_samples(sample_filter, limit=None): @@ -244,7 +244,7 @@ :param sample_filter: Filter. :param limit: Maximum number of results to return. """ - raise NotImplementedError(_('Samples not implemented')) + raise NotImplementedError('Samples not implemented') @staticmethod def get_meter_statistics(sample_filter, period=None, groupby=None, @@ -253,13 +253,13 @@ The filter must have a meter value set. """ - raise NotImplementedError(_('Statistics not implemented')) + raise NotImplementedError('Statistics not implemented') @staticmethod def get_alarms(name=None, user=None, project=None, enabled=None, alarm_id=None, pagination=None): """Yields a lists of alarms that match filters.""" - raise NotImplementedError(_('Alarms not implemented')) + raise NotImplementedError('Alarms not implemented') @staticmethod def create_alarm(alarm): @@ -267,17 +267,17 @@ :param alarm: The alarm to create. """ - raise NotImplementedError(_('Alarms not implemented')) + raise NotImplementedError('Alarms not implemented') @staticmethod def update_alarm(alarm): """Update alarm.""" - raise NotImplementedError(_('Alarms not implemented')) + raise NotImplementedError('Alarms not implemented') @staticmethod def delete_alarm(alarm_id): """Delete an alarm.""" - raise NotImplementedError(_('Alarms not implemented')) + raise NotImplementedError('Alarms not implemented') @staticmethod def get_alarm_changes(alarm_id, on_behalf_of, @@ -307,12 +307,12 @@ :param end_timestamp: Optional modified timestamp end range :param end_timestamp_op: Optional timestamp end range operation """ - raise NotImplementedError(_('Alarm history not implemented')) + raise NotImplementedError('Alarm history not implemented') @staticmethod def record_alarm_change(alarm_change): """Record alarm change event.""" - raise NotImplementedError(_('Alarm history not implemented')) + raise NotImplementedError('Alarm history not implemented') @staticmethod def clear(): @@ -324,19 +324,19 @@ :param events: a list of model.Event objects. """ - raise NotImplementedError(_('Events not implemented.')) + raise NotImplementedError('Events not implemented.') @staticmethod def get_events(event_filter): """Return an iterable of model.Event objects. """ - raise NotImplementedError(_('Events not implemented.')) + raise NotImplementedError('Events not implemented.') @staticmethod def get_event_types(): """Return all event types as an iterable of strings. """ - raise NotImplementedError(_('Events not implemented.')) + raise NotImplementedError('Events not implemented.') @staticmethod def get_trait_types(event_type): @@ -346,7 +346,7 @@ :param event_type: the type of the Event """ - raise NotImplementedError(_('Events not implemented.')) + raise NotImplementedError('Events not implemented.') @staticmethod def get_traits(event_type, trait_type=None): @@ -357,7 +357,7 @@ :param trait_type: the name of the Trait to filter by """ - raise NotImplementedError(_('Events not implemented.')) + raise NotImplementedError('Events not implemented.') @staticmethod def query_samples(filter_expr=None, orderby=None, limit=None): @@ -368,8 +368,8 @@ :param limit: Maximum number of results to return. """ - raise NotImplementedError(_('Complex query for samples \ - is not implemented.')) + raise NotImplementedError('Complex query for samples ' + 'is not implemented.') @staticmethod def query_alarms(filter_expr=None, orderby=None, limit=None): @@ -380,8 +380,8 @@ :param limit: Maximum number of results to return. """ - raise NotImplementedError(_('Complex query for alarms \ - is not implemented.')) + raise NotImplementedError('Complex query for alarms ' + 'is not implemented.') @staticmethod def query_alarm_history(filter_expr=None, orderby=None, limit=None): @@ -392,11 +392,11 @@ :param limit: Maximum number of results to return. """ - raise NotImplementedError(_('Complex query for alarms \ - history is not implemented.')) + raise NotImplementedError('Complex query for alarms ' + 'history is not implemented.') @staticmethod def get_capabilities(): """Return an dictionary representing the capabilities of this driver. """ - raise NotImplementedError(_('Capabilities not implemented.')) + raise NotImplementedError('Capabilities not implemented.') diff -Nru ceilometer-2014.1~b3/ceilometer/storage/impl_db2.py ceilometer-2014.1~rc1/ceilometer/storage/impl_db2.py --- ceilometer-2014.1~b3/ceilometer/storage/impl_db2.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/impl_db2.py 2014-03-31 15:32:25.000000000 +0000 @@ -75,6 +75,24 @@ return Connection(conf) +AVAILABLE_CAPABILITIES = { + 'meters': {'query': {'simple': True, + 'metadata': True}}, + 'resources': {'query': {'simple': True, + 'metadata': True}}, + 'samples': {'query': {'simple': True, + 'metadata': True, + 'complex': True}}, + 'statistics': {'groupby': True, + 'query': {'simple': True, + 'metadata': True}, + 'aggregation': {'standard': True}}, + 'alarms': {'query': {'simple': True, + 'complex': True}, + 'history': {'query': {'simple': True}}}, +} + + class Connection(pymongo_base.Connection): """DB2 connection. """ @@ -132,6 +150,9 @@ self.db.authenticate(connection_options['username'], connection_options['password']) + self.CAPABILITIES = utils.update_nested(self.DEFAULT_CAPABILITIES, + AVAILABLE_CAPABILITIES) + self.upgrade() @classmethod @@ -281,7 +302,7 @@ :param pagination: Optional pagination query. """ if pagination: - raise NotImplementedError(_('Pagination not implemented')) + raise NotImplementedError('Pagination not implemented') q = {} if user is not None: @@ -343,8 +364,7 @@ raise NotImplementedError("Unable to group by these fields") if aggregate: - msg = _('Selectable aggregates not implemented') - raise NotImplementedError(msg) + raise NotImplementedError('Selectable aggregates not implemented') q = pymongo_base.make_query_from_filter(sample_filter) @@ -423,20 +443,4 @@ def get_capabilities(self): """Return an dictionary representing the capabilities of this driver. """ - available = { - 'meters': {'query': {'simple': True, - 'metadata': True}}, - 'resources': {'query': {'simple': True, - 'metadata': True}}, - 'samples': {'query': {'simple': True, - 'metadata': True, - 'complex': True}}, - 'statistics': {'groupby': True, - 'query': {'simple': True, - 'metadata': True}, - 'aggregation': {'standard': True}}, - 'alarms': {'query': {'simple': True, - 'complex': True}, - 'history': {'query': {'simple': True}}}, - } - return utils.update_nested(self.DEFAULT_CAPABILITIES, available) + return self.CAPABILITIES diff -Nru ceilometer-2014.1~b3/ceilometer/storage/impl_hbase.py ceilometer-2014.1~rc1/ceilometer/storage/impl_hbase.py --- ceilometer-2014.1~b3/ceilometer/storage/impl_hbase.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/impl_hbase.py 2014-03-31 15:32:25.000000000 +0000 @@ -94,6 +94,19 @@ return Connection(conf) +AVAILABLE_CAPABILITIES = { + 'meters': {'query': {'simple': True, + 'metadata': True}}, + 'resources': {'query': {'simple': True, + 'metadata': True}}, + 'samples': {'query': {'simple': True, + 'metadata': True}}, + 'statistics': {'query': {'simple': True, + 'metadata': True}, + 'aggregation': {'standard': True}}, +} + + class Connection(base.Connection): """HBase connection. """ @@ -116,56 +129,62 @@ if url: # Reparse URL, but from the env variable now opts = self._parse_connection_url(url) - self.conn = self._get_connection(opts) + self.conn_pool = self._get_connection_pool(opts) else: # This is a in-memory usage for unit tests if Connection._memory_instance is None: LOG.debug(_('Creating a new in-memory HBase ' 'Connection object')) - Connection._memory_instance = MConnection() - self.conn = Connection._memory_instance + Connection._memory_instance = MConnectionPool() + self.conn_pool = Connection._memory_instance else: - self.conn = self._get_connection(opts) - self.conn.open() + self.conn_pool = self._get_connection_pool(opts) + + self.CAPABILITIES = utils.update_nested(self.DEFAULT_CAPABILITIES, + AVAILABLE_CAPABILITIES) def upgrade(self): - self.conn.create_table(self.PROJECT_TABLE, {'f': dict()}) - self.conn.create_table(self.USER_TABLE, {'f': dict()}) - self.conn.create_table(self.RESOURCE_TABLE, {'f': dict()}) - self.conn.create_table(self.METER_TABLE, {'f': dict()}) - self.conn.create_table(self.ALARM_TABLE, {'f': dict()}) - self.conn.create_table(self.ALARM_HISTORY_TABLE, {'f': dict()}) + with self.conn_pool.connection() as conn: + conn.create_table(self.PROJECT_TABLE, {'f': dict()}) + conn.create_table(self.USER_TABLE, {'f': dict()}) + conn.create_table(self.RESOURCE_TABLE, {'f': dict()}) + conn.create_table(self.METER_TABLE, {'f': dict()}) + conn.create_table(self.ALARM_TABLE, {'f': dict()}) + conn.create_table(self.ALARM_HISTORY_TABLE, {'f': dict()}) def clear(self): LOG.debug(_('Dropping HBase schema...')) - for table in [self.PROJECT_TABLE, - self.USER_TABLE, - self.RESOURCE_TABLE, - self.METER_TABLE, - self.ALARM_TABLE, - self.ALARM_HISTORY_TABLE]: - try: - self.conn.disable_table(table) - except Exception: - LOG.debug(_('Cannot disable table but ignoring error')) - try: - self.conn.delete_table(table) - except Exception: - LOG.debug(_('Cannot delete table but ignoring error')) + with self.conn_pool.connection() as conn: + for table in [self.PROJECT_TABLE, + self.USER_TABLE, + self.RESOURCE_TABLE, + self.METER_TABLE, + self.ALARM_TABLE, + self.ALARM_HISTORY_TABLE]: + + try: + conn.disable_table(table) + except Exception: + LOG.debug(_('Cannot disable table but ignoring error')) + try: + conn.delete_table(table) + except Exception: + LOG.debug(_('Cannot delete table but ignoring error')) @staticmethod - def _get_connection(conf): - """Return a connection to the database. + def _get_connection_pool(conf): + """Return a connection pool to the database. .. note:: The tests use a subclass to override this and return an - in-memory connection. + in-memory connection pool. """ LOG.debug(_('connecting to HBase on %(host)s:%(port)s') % ( {'host': conf['host'], 'port': conf['port']})) - return happybase.Connection(host=conf['host'], port=conf['port'], - table_prefix=conf['table_prefix']) + return happybase.ConnectionPool(size=100, host=conf['host'], + port=conf['port'], + table_prefix=conf['table_prefix']) @staticmethod def _parse_connection_url(url): @@ -195,55 +214,54 @@ call as_dict() """ _id = alarm.alarm_id - alarm_table = self.conn.table(self.ALARM_TABLE) - alarm_to_store = serialize_entry(alarm.as_dict()) - alarm_table.put(_id, alarm_to_store) - stored_alarm = deserialize_entry(alarm_table.row(_id))[0] + with self.conn_pool.connection() as conn: + alarm_table = conn.table(self.ALARM_TABLE) + alarm_table.put(_id, alarm_to_store) + stored_alarm = deserialize_entry(alarm_table.row(_id))[0] return models.Alarm(**stored_alarm) create_alarm = update_alarm def delete_alarm(self, alarm_id): - alarm_table = self.conn.table(self.ALARM_TABLE) - alarm_table.delete(alarm_id) + with self.conn_pool.connection() as conn: + alarm_table = conn.table(self.ALARM_TABLE) + alarm_table.delete(alarm_id) def get_alarms(self, name=None, user=None, project=None, enabled=None, alarm_id=None, pagination=None): if pagination: - raise NotImplementedError(_('Pagination not implemented')) - - alarm_table = self.conn.table(self.ALARM_TABLE) + raise NotImplementedError('Pagination not implemented') q = make_query(alarm_id=alarm_id, name=name, enabled=enabled, user_id=user, project_id=project) - gen = alarm_table.scan(filter=q) - for ignored, data in gen: - stored_alarm = deserialize_entry(data)[0] - yield models.Alarm(**stored_alarm) + with self.conn_pool.connection() as conn: + alarm_table = conn.table(self.ALARM_TABLE) + gen = alarm_table.scan(filter=q) + for ignored, data in gen: + stored_alarm = deserialize_entry(data)[0] + yield models.Alarm(**stored_alarm) def get_alarm_changes(self, alarm_id, on_behalf_of, user=None, project=None, type=None, start_timestamp=None, start_timestamp_op=None, end_timestamp=None, end_timestamp_op=None): - alarm_history_table = self.conn.table(self.ALARM_HISTORY_TABLE) - q = make_query(alarm_id=alarm_id, on_behalf_of=on_behalf_of, type=type, user_id=user, project_id=project) - start_row, end_row = make_timestamp_query( _make_general_rowkey_scan, start=start_timestamp, start_op=start_timestamp_op, end=end_timestamp, end_op=end_timestamp_op, bounds_only=True, some_id=alarm_id) - - gen = alarm_history_table.scan(filter=q, row_start=start_row, - row_stop=end_row) - for ignored, data in gen: - stored_entry = deserialize_entry(data)[0] - yield models.AlarmChange(**stored_entry) + with self.conn_pool.connection() as conn: + alarm_history_table = conn.table(self.ALARM_HISTORY_TABLE) + gen = alarm_history_table.scan(filter=q, row_start=start_row, + row_stop=end_row) + for ignored, data in gen: + stored_entry = deserialize_entry(data)[0] + yield models.AlarmChange(**stored_entry) def record_alarm_change(self, alarm_change): """Record alarm change event. @@ -251,10 +269,10 @@ alarm_change_dict = serialize_entry(alarm_change) ts = alarm_change.get('timestamp') or datetime.datetime.now() rts = reverse_timestamp(ts) - - alarm_history_table = self.conn.table(self.ALARM_HISTORY_TABLE) - alarm_history_table.put(alarm_change.get('alarm_id') + "_" + str(rts), - alarm_change_dict) + with self.conn_pool.connection() as conn: + alarm_history_table = conn.table(self.ALARM_HISTORY_TABLE) + alarm_history_table.put(alarm_change.get('alarm_id') + "_" + + str(rts), alarm_change_dict) def record_metering_data(self, data): """Write the data to the backend storage system. @@ -262,52 +280,57 @@ :param data: a dictionary such as returned by ceilometer.meter.meter_message_from_counter """ - project_table = self.conn.table(self.PROJECT_TABLE) - user_table = self.conn.table(self.USER_TABLE) - resource_table = self.conn.table(self.RESOURCE_TABLE) - meter_table = self.conn.table(self.METER_TABLE) - - # Make sure we know about the user and project - if data['user_id']: - self._update_sources(user_table, data['user_id'], data['source']) - self._update_sources(project_table, data['project_id'], data['source']) - - # Get metadata from user's data - resource_metadata = data.get('resource_metadata', {}) - # Determine the name of new meter - new_meter = _format_meter_reference( - data['counter_name'], data['counter_type'], data['counter_unit']) - - flatten_result, sources, meters, metadata = \ - deserialize_entry(resource_table.row(data['resource_id'])) - - # Update if resource has new information - if (data['source'] not in sources) or (new_meter not in meters) or ( - metadata != resource_metadata): - resource_table.put(data['resource_id'], - serialize_entry( - **{'sources': [data['source']], - 'meters': [new_meter], - 'metadata': resource_metadata, - 'resource_id': data['resource_id'], - 'project_id': data['project_id'], - 'user_id': data['user_id']})) - - # Rowkey consists of reversed timestamp, meter and an md5 of - # user+resource+project for purposes of uniqueness - m = hashlib.md5() - m.update("%s%s%s" % (data['user_id'], data['resource_id'], - data['project_id'])) - - # We use reverse timestamps in rowkeys as they are sorted - # alphabetically. - rts = reverse_timestamp(data['timestamp']) - row = "%s_%d_%s" % (data['counter_name'], rts, m.hexdigest()) - record = serialize_entry(data, **{'metadata': resource_metadata, - 'rts': rts, - 'message': data, - 'recorded_at': timeutils.utcnow()}) - meter_table.put(row, record) + with self.conn_pool.connection() as conn: + project_table = conn.table(self.PROJECT_TABLE) + user_table = conn.table(self.USER_TABLE) + resource_table = conn.table(self.RESOURCE_TABLE) + meter_table = conn.table(self.METER_TABLE) + + # Make sure we know about the user and project + if data['user_id']: + self._update_sources(user_table, data['user_id'], + data['source']) + self._update_sources(project_table, data['project_id'], + data['source']) + + # Get metadata from user's data + resource_metadata = data.get('resource_metadata', {}) + # Determine the name of new meter + new_meter = _format_meter_reference( + data['counter_name'], data['counter_type'], + data['counter_unit']) + flatten_result, sources, meters, metadata = \ + deserialize_entry(resource_table.row(data['resource_id'])) + + # Update if resource has new information + if (data['source'] not in sources) or ( + new_meter not in meters) or ( + metadata != resource_metadata): + resource_table.put(data['resource_id'], + serialize_entry( + **{'sources': [data['source']], + 'meters': [new_meter], + 'metadata': resource_metadata, + 'resource_id': data['resource_id'], + 'project_id': data['project_id'], + 'user_id': data['user_id']})) + + # Rowkey consists of reversed timestamp, meter and an md5 of + # user+resource+project for purposes of uniqueness + m = hashlib.md5() + m.update("%s%s%s" % (data['user_id'], data['resource_id'], + data['project_id'])) + + # We use reverse timestamps in rowkeys as they are sorted + # alphabetically. + rts = reverse_timestamp(data['timestamp']) + row = "%s_%d_%s" % (data['counter_name'], rts, m.hexdigest()) + record = serialize_entry(data, **{'metadata': resource_metadata, + 'rts': rts, + 'message': data, + 'recorded_at': timeutils.utcnow( + )}) + meter_table.put(row, record) def _update_sources(self, table, id, source): user, sources, _, _ = deserialize_entry(table.row(id)) @@ -320,24 +343,26 @@ :param source: Optional source filter. """ - user_table = self.conn.table(self.USER_TABLE) - LOG.debug(_("source: %s") % source) - scan_args = {} - if source: - scan_args['columns'] = ['f:s_%s' % source] - return sorted(key for key, ignored in user_table.scan(**scan_args)) + with self.conn_pool.connection() as conn: + user_table = conn.table(self.USER_TABLE) + LOG.debug(_("source: %s") % source) + scan_args = {} + if source: + scan_args['columns'] = ['f:s_%s' % source] + return sorted(key for key, ignored in user_table.scan(**scan_args)) def get_projects(self, source=None): """Return an iterable of project id strings. :param source: Optional source filter. """ - project_table = self.conn.table(self.PROJECT_TABLE) - LOG.debug(_("source: %s") % source) - scan_args = {} - if source: - scan_args['columns'] = ['f:s_%s' % source] - return (key for key, ignored in project_table.scan(**scan_args)) + with self.conn_pool.connection() as conn: + project_table = conn.table(self.PROJECT_TABLE) + LOG.debug(_("source: %s") % source) + scan_args = {} + if source: + scan_args['columns'] = ['f:s_%s' % source] + return (key for key, ignored in project_table.scan(**scan_args)) def get_resources(self, user=None, project=None, source=None, start_timestamp=None, start_timestamp_op=None, @@ -357,9 +382,7 @@ :param pagination: Optional pagination query. """ if pagination: - raise NotImplementedError(_('Pagination not implemented')) - - meter_table = self.conn.table(self.METER_TABLE) + raise NotImplementedError('Pagination not implemented') sample_filter = storage.SampleFilter( user=user, project=project, @@ -369,34 +392,37 @@ q, start_row, stop_row = make_sample_query_from_filter( sample_filter, require_meter=False) - LOG.debug(_("Query Meter table: %s") % q) - meters = meter_table.scan(filter=q, row_start=start_row, - row_stop=stop_row) - d_meters = [] - for i, m in meters: - d_meters.append(deserialize_entry(m)) - - # We have to sort on resource_id before we can group by it. According - # to the itertools documentation a new group is generated when the - # value of the key function changes (it breaks there). - meters = sorted(d_meters, key=_resource_id_from_record_tuple) - for resource_id, r_meters in itertools.groupby( - meters, key=_resource_id_from_record_tuple): - # We need deserialized entry(data[0]) and metadata(data[3]) - meter_rows = [(data[0], data[3]) for data in sorted( - r_meters, key=_timestamp_from_record_tuple)] - latest_data = meter_rows[-1] - min_ts = meter_rows[0][0]['timestamp'] - max_ts = latest_data[0]['timestamp'] - yield models.Resource( - resource_id=resource_id, - first_sample_timestamp=min_ts, - last_sample_timestamp=max_ts, - project_id=latest_data[0]['project_id'], - source=latest_data[0]['source'], - user_id=latest_data[0]['user_id'], - metadata=latest_data[1], - ) + with self.conn_pool.connection() as conn: + meter_table = conn.table(self.METER_TABLE) + LOG.debug(_("Query Meter table: %s") % q) + meters = meter_table.scan(filter=q, row_start=start_row, + row_stop=stop_row) + d_meters = [] + for i, m in meters: + d_meters.append(deserialize_entry(m)) + + # We have to sort on resource_id before we can group by it. + # According to the itertools documentation a new group is + # generated when the value of the key function changes + # (it breaks there). + meters = sorted(d_meters, key=_resource_id_from_record_tuple) + for resource_id, r_meters in itertools.groupby( + meters, key=_resource_id_from_record_tuple): + # We need deserialized entry(data[0]) and metadata(data[3]) + meter_rows = [(data[0], data[3]) for data in sorted( + r_meters, key=_timestamp_from_record_tuple)] + latest_data = meter_rows[-1] + min_ts = meter_rows[0][0]['timestamp'] + max_ts = latest_data[0]['timestamp'] + yield models.Resource( + resource_id=resource_id, + first_sample_timestamp=min_ts, + last_sample_timestamp=max_ts, + project_id=latest_data[0]['project_id'], + source=latest_data[0]['source'], + user_id=latest_data[0]['user_id'], + metadata=latest_data[1], + ) def get_meters(self, user=None, project=None, resource=None, source=None, metaquery={}, pagination=None): @@ -412,29 +438,31 @@ if pagination: raise NotImplementedError(_('Pagination not implemented')) - resource_table = self.conn.table(self.RESOURCE_TABLE) - q = make_query(metaquery=metaquery, user_id=user, project_id=project, - resource_id=resource, source=source) - LOG.debug(_("Query Resource table: %s") % q) - - gen = resource_table.scan(filter=q) - - for ignored, data in gen: - flatten_result, s, m, md = deserialize_entry(data) - if not m: - continue - # Meter table may have only one "meter" and "source". That's why - # only first lists element is get in this method - name, type, unit = m[0].split("!") - yield models.Meter( - name=name, - type=type, - unit=unit, - resource_id=flatten_result['resource_id'], - project_id=flatten_result['project_id'], - source=s[0] if s else None, - user_id=flatten_result['user_id'], - ) + with self.conn_pool.connection() as conn: + resource_table = conn.table(self.RESOURCE_TABLE) + q = make_query(metaquery=metaquery, user_id=user, + project_id=project, resource_id=resource, + source=source) + LOG.debug(_("Query Resource table: %s") % q) + + gen = resource_table.scan(filter=q) + + for ignored, data in gen: + flatten_result, s, m, md = deserialize_entry(data) + if not m: + continue + # Meter table may have only one "meter" and "source". That's + # why only first lists element is get in this method + name, type, unit = m[0].split("!") + yield models.Meter( + name=name, + type=type, + unit=unit, + resource_id=flatten_result['resource_id'], + project_id=flatten_result['project_id'], + source=s[0] if s else None, + user_id=flatten_result['user_id'], + ) def get_samples(self, sample_filter, limit=None): """Return an iterable of models.Sample instances. @@ -442,21 +470,22 @@ :param sample_filter: Filter. :param limit: Maximum number of results to return. """ - meter_table = self.conn.table(self.METER_TABLE) + with self.conn_pool.connection() as conn: + meter_table = conn.table(self.METER_TABLE) - q, start, stop = make_sample_query_from_filter( - sample_filter, require_meter=False) - LOG.debug(_("Query Meter Table: %s") % q) - gen = meter_table.scan(filter=q, row_start=start, row_stop=stop) - for ignored, meter in gen: - if limit is not None: - if limit == 0: - break - else: - limit -= 1 - d_meter = deserialize_entry(meter)[0] - d_meter['message']['recorded_at'] = d_meter['recorded_at'] - yield models.Sample(**d_meter['message']) + q, start, stop = make_sample_query_from_filter( + sample_filter, require_meter=False) + LOG.debug(_("Query Meter Table: %s") % q) + gen = meter_table.scan(filter=q, row_start=start, row_stop=stop) + for ignored, meter in gen: + if limit is not None: + if limit == 0: + break + else: + limit -= 1 + d_meter = deserialize_entry(meter)[0] + d_meter['message']['recorded_at'] = d_meter['recorded_at'] + yield models.Sample(**d_meter['message']) @staticmethod def _update_meter_stats(stat, meter): @@ -500,14 +529,14 @@ raise NotImplementedError("Group by not implemented.") if aggregate: - msg = _('Selectable aggregates not implemented') - raise NotImplementedError(msg) + raise NotImplementedError('Selectable aggregates not implemented') - meter_table = self.conn.table(self.METER_TABLE) - q, start, stop = make_sample_query_from_filter(sample_filter) - meters = map(deserialize_entry, list(meter for (ignored, meter) in - meter_table.scan(filter=q, row_start=start, - row_stop=stop))) + with self.conn_pool.connection() as conn: + meter_table = conn.table(self.METER_TABLE) + q, start, stop = make_sample_query_from_filter(sample_filter) + meters = map(deserialize_entry, list(meter for (ignored, meter) in + meter_table.scan(filter=q, row_start=start, + row_stop=stop))) if sample_filter.start: start_time = sample_filter.start @@ -565,18 +594,7 @@ def get_capabilities(self): """Return an dictionary representing the capabilities of this driver. """ - available = { - 'meters': {'query': {'simple': True, - 'metadata': True}}, - 'resources': {'query': {'simple': True, - 'metadata': True}}, - 'samples': {'query': {'simple': True, - 'metadata': True}}, - 'statistics': {'query': {'simple': True, - 'metadata': True}, - 'aggregation': {'standard': True}}, - } - return utils.update_nested(self.DEFAULT_CAPABILITIES, available) + return self.CAPABILITIES ############### @@ -673,12 +691,26 @@ return r +class MConnectionPool(object): + def __init__(self): + self.conn = MConnection() + + def connection(self): + return self.conn + + class MConnection(object): """HappyBase.Connection mock """ def __init__(self): self.tables = {} + def __enter__(self, *args, **kwargs): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + pass + def open(self): LOG.debug(_("Opening in-memory HBase connection")) diff -Nru ceilometer-2014.1~b3/ceilometer/storage/impl_mongodb.py ceilometer-2014.1~rc1/ceilometer/storage/impl_mongodb.py --- ceilometer-2014.1~b3/ceilometer/storage/impl_mongodb.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/impl_mongodb.py 2014-03-31 15:32:25.000000000 +0000 @@ -24,6 +24,7 @@ import calendar import copy +import datetime import json import operator import uuid @@ -81,6 +82,34 @@ return Connection(conf) +AVAILABLE_CAPABILITIES = { + 'meters': {'query': {'simple': True, + 'metadata': True}}, + 'resources': {'query': {'simple': True, + 'metadata': True}}, + 'samples': {'query': {'simple': True, + 'metadata': True, + 'complex': True}}, + 'statistics': {'groupby': True, + 'query': {'simple': True, + 'metadata': True}, + 'aggregation': {'standard': True, + 'selectable': { + 'max': True, + 'min': True, + 'sum': True, + 'avg': True, + 'count': True, + 'stddev': True, + 'cardinality': True}} + }, + 'alarms': {'query': {'simple': True, + 'complex': True}, + 'history': {'query': {'simple': True, + 'complex': True}}}, +} + + class Connection(pymongo_base.Connection): """MongoDB connection. """ @@ -188,49 +217,48 @@ ), emit_initial=dict( cardinality=( - 'var aggregate = {};' - 'aggregate["cardinality/%(aggregate_param)s"] =' - ' this["%(aggregate_param)s"];' + 'aggregate["cardinality/%(aggregate_param)s"] = 1;' + 'var distinct_%(aggregate_param)s = {};' + 'distinct_%(aggregate_param)s[this["%(aggregate_param)s"]]' + ' = true;' ) ), emit_body=dict( - cardinality='aggregate : aggregate,' - ), - reduce_initial=dict( cardinality=( - 'var distincts = {};' - 'distincts[values[0].aggregate[' - ' "cardinality/%(aggregate_param)s"]] = true;' - 'var aggregate = {};' - 'aggregate["cardinality/%(aggregate_param)s"] = NumberInt(1);' + 'distinct_%(aggregate_param)s : distinct_%(aggregate_param)s,' + '%(aggregate_param)s : this["%(aggregate_param)s"],' ) ), + reduce_initial=dict( + cardinality='' + ), reduce_body=dict( - cardinality='aggregate : aggregate,' + cardinality=( + 'aggregate : values[0].aggregate,' + 'distinct_%(aggregate_param)s:' + ' values[0].distinct_%(aggregate_param)s,' + '%(aggregate_param)s : values[0]["%(aggregate_param)s"],' + ) ), reduce_computation=dict( cardinality=( - 'if (!(values[i].aggregate["cardinality/%(aggregate_param)s"]' - ' in distincts)) {' - ' distincts[values[i].aggregate[' - ' "cardinality/%(aggregate_param)s"]] = true;' - ' res.aggregate["cardinality/%(aggregate_param)s"] =' - ' NumberInt(Object.keys(distincts).length);}' + 'if (!(values[i]["%(aggregate_param)s"] in' + ' res.distinct_%(aggregate_param)s)) {' + ' res.distinct_%(aggregate_param)s[values[i]' + ' ["%(aggregate_param)s"]] = true;' + ' res.aggregate["cardinality/%(aggregate_param)s"] += 1;}' ) ), finalize=dict( - cardinality=( - 'if (typeof value.aggregate[' - ' "cardinality/%(aggregate_param)s"] !== "number") {' - ' value.aggregate["cardinality/%(aggregate_param)s"] =' - ' NumberInt(1);}' - ) + cardinality='' ), ) EMIT_STATS_COMMON = """ + var aggregate = {}; %(aggregate_initial_placeholder)s emit(%(key_val)s, { unit: this.counter_unit, + aggregate : aggregate, %(aggregate_body_placeholder)s groupby : %(groupby_val)s, duration_start : this.timestamp, @@ -323,6 +351,7 @@ function (key, values) { %(aggregate_initial_val)s var res = { unit: values[0].unit, + aggregate: values[0].aggregate, %(aggregate_body_val)s groupby: values[0].groupby, period_start: values[0].period_start, @@ -385,6 +414,10 @@ return merge; }""") + _GENESIS = datetime.datetime(year=datetime.MINYEAR, month=1, day=1) + _APOCALYPSE = datetime.datetime(year=datetime.MAXYEAR, month=12, day=31, + hour=23, minute=59, second=59) + def __init__(self, conf): url = conf.database.connection @@ -394,9 +427,9 @@ # requires a new storage connection. self.conn = self.CONNECTION_POOL.connect(url) - # Require MongoDB 2.2 to use TTL - if self.conn.server_info()['versionArray'] < [2, 2]: - raise storage.StorageBadVersion("Need at least MongoDB 2.2") + # Require MongoDB 2.4 to use $setOnInsert + if self.conn.server_info()['versionArray'] < [2, 4]: + raise storage.StorageBadVersion("Need at least MongoDB 2.4") connection_options = pymongo.uri_parser.parse_uri(url) self.db = getattr(self.conn, connection_options['database']) @@ -404,6 +437,9 @@ self.db.authenticate(connection_options['username'], connection_options['password']) + self.CAPABILITIES = utils.update_nested(self.DEFAULT_CAPABILITIES, + AVAILABLE_CAPABILITIES) + # NOTE(jd) Upgrading is just about creating index, so let's do this # on connection to be sure at least the TTL is correcly updated if # needed. @@ -417,18 +453,28 @@ # project_id values are usually mutually exclusive in the # queries, so the database won't take advantage of an index # including both. + name_qualifier = dict(user_id='', project_id='project_') + background = dict(user_id=False, project_id=True) for primary in ['user_id', 'project_id']: + name = 'resource_%sidx' % name_qualifier[primary] self.db.resource.ensure_index([ (primary, pymongo.ASCENDING), ('source', pymongo.ASCENDING), - ], name='resource_idx') + ], name=name, background=background[primary]) + + name = 'meter_%sidx' % name_qualifier[primary] self.db.meter.ensure_index([ ('resource_id', pymongo.ASCENDING), (primary, pymongo.ASCENDING), ('counter_name', pymongo.ASCENDING), ('timestamp', pymongo.ASCENDING), ('source', pymongo.ASCENDING), - ], name='meter_idx') + ], name=name, background=background[primary]) + + self.db.resource.ensure_index([('last_sample_timestamp', + pymongo.DESCENDING)], + name='last_sample_timestamp_idx', + sparse=True) self.db.meter.ensure_index([('timestamp', pymongo.DESCENDING)], name='timestamp_idx') @@ -483,14 +529,20 @@ upsert=True, ) - # Record the updated resource metadata - self.db.resource.update( + # Record the updated resource metadata - we use $setOnInsert to + # unconditionally insert sample timestamps and resource metadata + # (in the update case, this must be conditional on the sample not + # being out-of-order) + resource = self.db.resource.find_and_modify( {'_id': data['resource_id']}, {'$set': {'project_id': data['project_id'], 'user_id': data['user_id'], - 'metadata': data['resource_metadata'], 'source': data['source'], }, + '$setOnInsert': {'metadata': data['resource_metadata'], + 'first_sample_timestamp': data['timestamp'], + 'last_sample_timestamp': data['timestamp'], + }, '$addToSet': {'meter': {'counter_name': data['counter_name'], 'counter_type': data['counter_type'], 'counter_unit': data['counter_unit'], @@ -498,8 +550,33 @@ }, }, upsert=True, + new=True, ) + # only update last sample timestamp if actually later (the usual + # in-order case) + last_sample_timestamp = resource.get('last_sample_timestamp') + if (last_sample_timestamp is None or + last_sample_timestamp <= data['timestamp']): + self.db.resource.update( + {'_id': data['resource_id']}, + {'$set': {'metadata': data['resource_metadata'], + 'last_sample_timestamp': data['timestamp']}} + ) + + # only update first sample timestamp if actually earlier (the unusual + # out-of-order case) + # NOTE: a null first sample timestamp is not updated as this indicates + # a pre-existing resource document dating from before we started + # recording these timestamps in the resource collection + first_sample_timestamp = resource.get('first_sample_timestamp') + if (first_sample_timestamp is not None and + first_sample_timestamp > data['timestamp']): + self.db.resource.update( + {'_id': data['resource_id']}, + {'$set': {'first_sample_timestamp': data['timestamp']}} + ) + # Record the raw data for the meter. Use a copy so we do not # modify a data structure owned by our caller (the driver adds # a new key '_id'). @@ -651,53 +728,41 @@ limit = 0 return db_collection.find(q, limit=limit, sort=all_sort) - def get_resources(self, user=None, project=None, source=None, - start_timestamp=None, start_timestamp_op=None, - end_timestamp=None, end_timestamp_op=None, - metaquery={}, resource=None, pagination=None): - """Return an iterable of models.Resource instances - - :param user: Optional ID for user that owns the resource. - :param project: Optional ID for project that owns the resource. - :param source: Optional source filter. - :param start_timestamp: Optional modified timestamp start range. - :param start_timestamp_op: Optional start time operator, like gt, ge. - :param end_timestamp: Optional modified timestamp end range. - :param end_timestamp_op: Optional end time operator, like lt, le. - :param metaquery: Optional dict with metadata to match on. - :param resource: Optional resource filter. - :param pagination: Optional pagination query. + def _get_time_constrained_resources(self, query, + start_timestamp, start_timestamp_op, + end_timestamp, end_timestamp_op, + metaquery, resource): + """Return an iterable of models.Resource instances constrained + by sample timestamp. + + :param query: project/user/source query + :param start_timestamp: modified timestamp start range. + :param start_timestamp_op: start time operator, like gt, ge. + :param end_timestamp: modified timestamp end range. + :param end_timestamp_op: end time operator, like lt, le. + :param metaquery: dict with metadata to match on. + :param resource: resource filter. """ - if pagination: - raise NotImplementedError(_('Pagination not implemented')) - - q = {} - if user is not None: - q['user_id'] = user - if project is not None: - q['project_id'] = project - if source is not None: - q['source'] = source if resource is not None: - q['resource_id'] = resource + query['resource_id'] = resource + # Add resource_ prefix so it matches the field in the db - q.update(dict(('resource_' + k, v) - for (k, v) in metaquery.iteritems())) + query.update(dict(('resource_' + k, v) + for (k, v) in metaquery.iteritems())) # FIXME(dhellmann): This may not perform very well, # but doing any better will require changing the database # schema and that will need more thought than I have time # to put into it today. - if start_timestamp or end_timestamp: - # Look for resources matching the above criteria and with - # samples in the time range we care about, then change the - # resource query to return just those resources by id. - ts_range = pymongo_base.make_timestamp_range(start_timestamp, - end_timestamp, - start_timestamp_op, - end_timestamp_op) - if ts_range: - q['timestamp'] = ts_range + # Look for resources matching the above criteria and with + # samples in the time range we care about, then change the + # resource query to return just those resources by id. + ts_range = pymongo_base.make_timestamp_range(start_timestamp, + end_timestamp, + start_timestamp_op, + end_timestamp_op) + if ts_range: + query['timestamp'] = ts_range sort_keys = base._handle_sort_key('resource') sort_instructions = self._build_sort_instructions(sort_keys)[0] @@ -710,7 +775,7 @@ self.REDUCE_RESOURCES, out=out, sort={'resource_id': 1}, - query=q) + query=query) try: for r in self.db[out].find(sort=sort_instructions): @@ -726,6 +791,75 @@ finally: self.db[out].drop() + def _get_floating_resources(self, query, metaquery, resource): + """Return an iterable of models.Resource instances unconstrained + by timestamp. + + :param query: project/user/source query + :param metaquery: dict with metadata to match on. + :param resource: resource filter. + """ + if resource is not None: + query['_id'] = resource + + query.update(dict((k, v) + for (k, v) in metaquery.iteritems())) + + keys = base._handle_sort_key('resource') + sort_keys = ['last_sample_timestamp' if i == 'timestamp' else i + for i in keys] + sort_instructions = self._build_sort_instructions(sort_keys)[0] + + for r in self.db.resource.find(query, sort=sort_instructions): + yield models.Resource( + resource_id=r['_id'], + user_id=r['user_id'], + project_id=r['project_id'], + first_sample_timestamp=r.get('first_sample_timestamp', + self._GENESIS), + last_sample_timestamp=r.get('last_sample_timestamp', + self._APOCALYPSE), + source=r['source'], + metadata=r['metadata']) + + def get_resources(self, user=None, project=None, source=None, + start_timestamp=None, start_timestamp_op=None, + end_timestamp=None, end_timestamp_op=None, + metaquery={}, resource=None, pagination=None): + """Return an iterable of models.Resource instances + + :param user: Optional ID for user that owns the resource. + :param project: Optional ID for project that owns the resource. + :param source: Optional source filter. + :param start_timestamp: Optional modified timestamp start range. + :param start_timestamp_op: Optional start time operator, like gt, ge. + :param end_timestamp: Optional modified timestamp end range. + :param end_timestamp_op: Optional end time operator, like lt, le. + :param metaquery: Optional dict with metadata to match on. + :param resource: Optional resource filter. + :param pagination: Optional pagination query. + """ + if pagination: + raise NotImplementedError('Pagination not implemented') + + query = {} + if user is not None: + query['user_id'] = user + if project is not None: + query['project_id'] = project + if source is not None: + query['source'] = source + + if start_timestamp or end_timestamp: + return self._get_time_constrained_resources(query, + start_timestamp, + start_timestamp_op, + end_timestamp, + end_timestamp_op, + metaquery, resource) + else: + return self._get_floating_resources(query, metaquery, resource) + def _aggregate_param(self, fragment_key, aggregate): fragment_map = self.STANDARD_AGGREGATES[fragment_key] @@ -750,8 +884,8 @@ params = dict(aggregate_param=a.param) fragments += (fragment_map[a.func] % params) else: - raise NotImplementedError(_('Selectable aggregate function %s' - ' is not supported') % a.func) + raise NotImplementedError('Selectable aggregate function %s' + ' is not supported' % a.func) return fragments @@ -859,30 +993,4 @@ def get_capabilities(self): """Return an dictionary representing the capabilities of this driver. """ - available = { - 'meters': {'query': {'simple': True, - 'metadata': True}}, - 'resources': {'query': {'simple': True, - 'metadata': True}}, - 'samples': {'query': {'simple': True, - 'metadata': True, - 'complex': True}}, - 'statistics': {'groupby': True, - 'query': {'simple': True, - 'metadata': True}, - 'aggregation': {'standard': True, - 'selectable': { - 'max': True, - 'min': True, - 'sum': True, - 'avg': True, - 'count': True, - 'stddev': True, - 'cardinality': True}} - }, - 'alarms': {'query': {'simple': True, - 'complex': True}, - 'history': {'query': {'simple': True, - 'complex': True}}}, - } - return utils.update_nested(self.DEFAULT_CAPABILITIES, available) + return self.CAPABILITIES diff -Nru ceilometer-2014.1~b3/ceilometer/storage/impl_sqlalchemy.py ceilometer-2014.1~rc1/ceilometer/storage/impl_sqlalchemy.py --- ceilometer-2014.1~b3/ceilometer/storage/impl_sqlalchemy.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/impl_sqlalchemy.py 2014-03-31 15:32:25.000000000 +0000 @@ -129,10 +129,40 @@ compute=dict( cardinality=lambda p: func.count( distinct(getattr(models.Sample, p)) - ).label('cardinality') + ).label('cardinality/%s' % p) ) ) +AVAILABLE_CAPABILITIES = { + 'meters': {'query': {'simple': True, + 'metadata': True}}, + 'resources': {'query': {'simple': True, + 'metadata': True}}, + 'samples': {'pagination': True, + 'groupby': True, + 'query': {'simple': True, + 'metadata': True, + 'complex': True}}, + 'statistics': {'groupby': True, + 'query': {'simple': True, + 'metadata': True}, + 'aggregation': {'standard': True, + 'selectable': { + 'max': True, + 'min': True, + 'sum': True, + 'avg': True, + 'count': True, + 'stddev': True, + 'cardinality': True}} + }, + 'alarms': {'query': {'simple': True, + 'complex': True}, + 'history': {'query': {'simple': True, + 'complex': True}}}, + 'events': {'query': {'simple': True}}, +} + def apply_metaquery_filter(session, query, metaquery): """Apply provided metaquery filter to existing query. @@ -147,8 +177,8 @@ try: _model = META_TYPE_MAP[type(v)] except KeyError: - raise NotImplementedError(_('Query on %(key)s is of %(value)s ' - 'type and is not supported') % + raise NotImplementedError('Query on %(key)s is of %(value)s ' + 'type and is not supported' % {"key": k, "value": type(v)}) else: meta_q = session.query(_model).\ @@ -171,7 +201,7 @@ if sample_filter.meter: query = query.filter(models.Meter.name == sample_filter.meter) elif require_meter: - raise RuntimeError(_('Missing required meter specifier')) + raise RuntimeError('Missing required meter specifier') if sample_filter.source: query = query.filter(models.Sample.sources.any( id=sample_filter.source)) @@ -223,6 +253,8 @@ self._maker = sqlalchemy_session.get_maker(self._engine) sqlalchemy_session._ENGINE = None sqlalchemy_session._MAKER = None + self._CAPABILITIES = utils.update_nested(self.DEFAULT_CAPABILITIES, + AVAILABLE_CAPABILITIES) def _get_db_session(self): return self._maker() @@ -240,56 +272,39 @@ def _create_or_update(session, model_class, _id, source=None, **kwargs): if not _id: return None - try: - # create a nested session for the case of two call of - # record_metering_data run in parallel to not fail the - # record of this sample - # (except for sqlite, that doesn't support nested - # transaction and doesn't have concurrency problem) - nested = session.connection().dialect.name != 'sqlite' - - # raise dbexc.DBDuplicateEntry manually for sqlite - # to not break the current session - if not nested and session.query(model_class).get(str(_id)): - raise dbexc.DBDuplicateEntry() - - with session.begin(nested=nested, - subtransactions=not nested): - obj = model_class(id=str(_id)) - session.add(obj) + with session.begin(subtransactions=True): + obj = session.query(model_class).get(str(_id)) + if obj is None: + obj = model_class(id=str(_id)) + session.add(obj) + + if source and not filter(lambda x: x.id == source.id, + obj.sources): + obj.sources.append(source) + for k in kwargs: + setattr(obj, k, kwargs[k]) except dbexc.DBDuplicateEntry: # requery the object from the db if this is an other # parallel/previous call of record_metering_data that # have successfully created this object - obj = session.query(model_class).get(str(_id)) - - # update the object - if source and not filter(lambda x: x.id == source.id, obj.sources): - obj.sources.append(source) - for k in kwargs: - setattr(obj, k, kwargs[k]) + obj = Connection._create_or_update(session, model_class, + _id, source, **kwargs) return obj @staticmethod def _create_meter(session, name, type, unit): try: - nested = session.connection().dialect.name != 'sqlite' - if not nested and session.query(models.Meter)\ + with session.begin(subtransactions=True): + obj = session.query(models.Meter)\ .filter(models.Meter.name == name)\ .filter(models.Meter.type == type)\ - .filter(models.Meter.unit == unit).count() > 0: - raise dbexc.DBDuplicateEntry() - - with session.begin(nested=nested, - subtransactions=not nested): - obj = models.Meter(name=name, type=type, unit=unit) - session.add(obj) + .filter(models.Meter.unit == unit).first() + if obj is None: + obj = models.Meter(name=name, type=type, unit=unit) + session.add(obj) except dbexc.DBDuplicateEntry: - obj = session.query(models.Meter)\ - .filter(models.Meter.name == name)\ - .filter(models.Meter.type == type)\ - .filter(models.Meter.unit == unit).first() + obj = Connection._create_meter(session, name, type, unit) return obj @@ -422,97 +437,74 @@ :param project: Optional ID for project that owns the resource. :param source: Optional source filter. :param start_timestamp: Optional modified timestamp start range. - :param start_timestamp_op: Optonal start time operator, like gt, ge. + :param start_timestamp_op: Optional start time operator, like gt, ge. :param end_timestamp: Optional modified timestamp end range. :param end_timestamp_op: Optional end time operator, like lt, le. :param metaquery: Optional dict with metadata to match on. :param resource: Optional resource filter. :param pagination: Optional pagination query. """ - - # We probably want to raise these early, since we don't know from here - # if they will be handled. We don't want extra wait or work for it to - # just fail. if pagination: - raise NotImplementedError(_('Pagination not implemented')) - - session = self._get_db_session() - - # (thomasm) We need to get the max timestamp first, since that's the - # most accurate. We also need to filter down in the subquery to - # constrain what we have to JOIN on later. - ts_subquery = session.query( - models.Sample.resource_id, - func.max(models.Sample.timestamp).label("max_ts"), - func.min(models.Sample.timestamp).label("min_ts") - ).group_by(models.Sample.resource_id) - - # Here are the basic 'eq' operation filters for the sample data. - for column, value in [(models.Sample.resource_id, resource), - (models.Sample.user_id, user), - (models.Sample.project_id, project)]: - if value: - ts_subquery = ts_subquery.filter(column == value) - - if source: - ts_subquery = ts_subquery.filter( - models.Sample.sources.any(id=source)) - - if metaquery: - ts_subquery = apply_metaquery_filter(session, - ts_subquery, - metaquery) + raise NotImplementedError('Pagination not implemented') - # Here we limit the samples being used to a specific time period, - # if requested. - if start_timestamp: - if start_timestamp_op == 'gt': - ts_subquery = ts_subquery.filter( - models.Sample.timestamp > start_timestamp) - else: - ts_subquery = ts_subquery.filter( - models.Sample.timestamp >= start_timestamp) - if end_timestamp: - if end_timestamp_op == 'le': - ts_subquery = ts_subquery.filter( - models.Sample.timestamp <= end_timestamp) - else: - ts_subquery = ts_subquery.filter( - models.Sample.timestamp < end_timestamp) - ts_subquery = ts_subquery.subquery() - - # Now we need to get the max Sample.id out of the leftover results, to - # break any ties. - agg_subquery = session.query( - func.max(models.Sample.id).label("max_id"), - ts_subquery - ).filter( - models.Sample.resource_id == ts_subquery.c.resource_id, - models.Sample.timestamp == ts_subquery.c.max_ts - ).group_by( - ts_subquery.c.resource_id, - ts_subquery.c.max_ts, - ts_subquery.c.min_ts - ).subquery() - - query = session.query( - models.Sample, - agg_subquery.c.min_ts, - agg_subquery.c.max_ts - ).filter( - models.Sample.id == agg_subquery.c.max_id - ) + def _apply_filters(query): + #TODO(gordc) this should be merged with make_query_from_filter + for column, value in [(models.Sample.resource_id, resource), + (models.Sample.user_id, user), + (models.Sample.project_id, project)]: + if value: + query = query.filter(column == value) + if source: + query = query.filter( + models.Sample.sources.any(id=source)) + if metaquery: + query = apply_metaquery_filter(session, query, metaquery) + if start_timestamp: + if start_timestamp_op == 'gt': + query = query.filter( + models.Sample.timestamp > start_timestamp) + else: + query = query.filter( + models.Sample.timestamp >= start_timestamp) + if end_timestamp: + if end_timestamp_op == 'le': + query = query.filter( + models.Sample.timestamp <= end_timestamp) + else: + query = query.filter( + models.Sample.timestamp < end_timestamp) + return query - for sample, first_ts, last_ts in query.all(): - yield api_models.Resource( - resource_id=sample.resource_id, - project_id=sample.project_id, - first_sample_timestamp=first_ts, - last_sample_timestamp=last_ts, - source=sample.sources[0].id, - user_id=sample.user_id, - metadata=sample.resource_metadata - ) + session = self._get_db_session() + # get list of resource_ids + res_q = session.query(distinct(models.Sample.resource_id)) + res_q = _apply_filters(res_q) + + for res_id in res_q.all(): + # get latest Sample + max_q = session.query(models.Sample)\ + .filter(models.Sample.resource_id == res_id[0]) + max_q = _apply_filters(max_q) + max_q = max_q.order_by(models.Sample.timestamp.desc(), + models.Sample.id.desc()).limit(1) + + # get the min timestamp value. + min_q = session.query(models.Sample.timestamp)\ + .filter(models.Sample.resource_id == res_id[0]) + min_q = _apply_filters(min_q) + min_q = min_q.order_by(models.Sample.timestamp.asc()).limit(1) + + sample = max_q.first() + if sample: + yield api_models.Resource( + resource_id=sample.resource_id, + project_id=sample.project_id, + first_sample_timestamp=min_q.first().timestamp, + last_sample_timestamp=sample.timestamp, + source=sample.sources[0].id, + user_id=sample.user_id, + metadata=sample.resource_metadata + ) def get_meters(self, user=None, project=None, resource=None, source=None, metaquery={}, pagination=None): @@ -527,68 +519,50 @@ """ if pagination: - raise NotImplementedError(_('Pagination not implemented')) + raise NotImplementedError('Pagination not implemented') + + def _apply_filters(query): + #TODO(gordc) this should be merged with make_query_from_filter + for column, value in [(models.Sample.resource_id, resource), + (models.Sample.user_id, user), + (models.Sample.project_id, project)]: + if value: + query = query.filter(column == value) + if source is not None: + query = query.filter( + models.Sample.sources.any(id=source)) + if metaquery: + query = apply_metaquery_filter(session, query, metaquery) + return query session = self._get_db_session() - # Sample table will store large records and join with resource - # will be very slow. - # subquery_sample is used to reduce sample records - # by selecting a record for each (resource_id, counter_name). + # sample_subq is used to reduce sample records + # by selecting a record for each (resource_id, meter_id). # max() is used to choice a sample record, so the latest record - # is selected for each (resource_id, meter.name). - - subquery_sample = session.query( + # is selected for each (resource_id, meter_id). + sample_subq = session.query( func.max(models.Sample.id).label('id'))\ - .join(models.Meter)\ - .group_by(models.Sample.resource_id, - models.Meter.name).subquery() + .group_by(models.Sample.meter_id, models.Sample.resource_id) + sample_subq = sample_subq.subquery() - # The SQL of query_sample is essentially: - # # SELECT sample.* FROM sample INNER JOIN # (SELECT max(sample.id) AS id FROM sample - # GROUP BY sample.resource_id, meter.name) AS anon_2 + # GROUP BY sample.resource_id, sample.meter_id) AS anon_2 # ON sample.id = anon_2.id - query_sample = session.query(models.MeterSample).\ - join(subquery_sample, - models.MeterSample.id == subquery_sample.c.id) - - if metaquery: - query_sample = apply_metaquery_filter(session, - query_sample, - metaquery) - - alias_sample = aliased(models.MeterSample, - query_sample.with_labels().subquery()) - query = session.query(models.Resource, alias_sample)\ - .filter(models.Resource.id == alias_sample.resource_id) - - if user is not None: - query = query.filter(models.Resource.user_id == user) - if source is not None: - query = query.filter(models.Resource.sources.any(id=source)) - if resource: - query = query.filter(models.Resource.id == resource) - if project is not None: - query = query.filter(models.Resource.project_id == project) + join(sample_subq, models.MeterSample.id == sample_subq.c.id) + query_sample = _apply_filters(query_sample) - for resource, sample in query.all(): + for sample in query_sample.all(): yield api_models.Meter( name=sample.counter_name, type=sample.counter_type, unit=sample.counter_unit, - resource_id=resource.id, - project_id=resource.project_id, - source=resource.sources[0].id, - user_id=resource.user_id) - - def _apply_options(self, query, orderby, limit, table): - query = self._apply_order_by(query, orderby, table) - if limit is not None: - query = query.limit(limit) - return query + resource_id=sample.resource_id, + project_id=sample.project_id, + source=sample.sources[0].id, + user_id=sample.user_id) def _retrieve_samples(self, query): samples = query.all() @@ -679,8 +653,8 @@ compute = PARAMETERIZED_AGGREGATES['compute'][a.func] functions.append(compute(a.param)) else: - raise NotImplementedError(_('Selectable aggregate function %s' - ' is not supported') % a.func) + raise NotImplementedError('Selectable aggregate function %s' + ' is not supported' % a.func) return functions @@ -700,7 +674,8 @@ group_attributes = [getattr(models.Sample, g) for g in groupby] select.extend(group_attributes) - query = session.query(*select) + query = session.query(*select).filter( + models.Meter.id == models.Sample.meter_id) if groupby: query = query.group_by(*group_attributes) @@ -716,10 +691,10 @@ if hasattr(result, attr): stats_args[attr] = getattr(result, attr) if aggregate: - stats_args['aggregate'] = dict( - ('%s%s' % (a.func, '/%s' % a.param if a.param else ''), - getattr(result, a.func)) for a in aggregate - ) + stats_args['aggregate'] = {} + for a in aggregate: + key = '%s%s' % (a.func, '/%s' % a.param if a.param else '') + stats_args['aggregate'][key] = getattr(result, key) return stats_args @staticmethod @@ -751,8 +726,8 @@ if groupby: for group in groupby: if group not in ['user_id', 'project_id', 'resource_id']: - raise NotImplementedError( - _("Unable to group by these fields")) + raise NotImplementedError('Unable to group by ' + 'these fields') if not period: for res in self._make_stats_query(sample_filter, @@ -796,7 +771,7 @@ @staticmethod def _row_to_alarm_model(row): - return api_models.Alarm(alarm_id=row.id, + return api_models.Alarm(alarm_id=row.alarm_id, enabled=row.enabled, type=row.type, name=row.name, @@ -828,7 +803,7 @@ """ if pagination: - raise NotImplementedError(_('Pagination not implemented')) + raise NotImplementedError('Pagination not implemented') session = self._get_db_session() query = session.query(models.Alarm) @@ -841,7 +816,7 @@ if project is not None: query = query.filter(models.Alarm.project_id == project) if alarm_id is not None: - query = query.filter(models.Alarm.id == alarm_id) + query = query.filter(models.Alarm.alarm_id == alarm_id) return self._retrieve_alarms(query) @@ -852,7 +827,7 @@ """ session = self._get_db_session() with session.begin(): - alarm_row = models.Alarm(id=alarm.alarm_id) + alarm_row = models.Alarm(alarm_id=alarm.alarm_id) alarm_row.update(alarm.as_dict()) session.add(alarm_row) @@ -869,7 +844,7 @@ alarm.user_id) Connection._create_or_update(session, models.Project, alarm.project_id) - alarm_row = session.merge(models.Alarm(id=alarm.alarm_id)) + alarm_row = session.merge(models.Alarm(alarm_id=alarm.alarm_id)) alarm_row.update(alarm.as_dict()) return self._row_to_alarm_model(alarm_row) @@ -882,7 +857,7 @@ session = self._get_db_session() with session.begin(): session.query(models.Alarm).filter( - models.Alarm.id == alarm_id).delete() + models.Alarm.alarm_id == alarm_id).delete() @staticmethod def _row_to_alarm_change_model(row): @@ -1261,6 +1236,11 @@ dtype=type.data_type, value=trait.get_value()) + def get_capabilities(self): + """Return an dictionary representing the capabilities of this driver. + """ + return self._CAPABILITIES + class QueryTransformer(object): operators = {"=": operator.eq, @@ -1305,8 +1285,8 @@ def _handle_metadata(self, op, field_name, value): if op == self.operators["in"]: - raise NotImplementedError( - _("Metadata query with in operator is not implemented")) + raise NotImplementedError('Metadata query with in ' + 'operator is not implemented') field_name = field_name[len('resource_metadata.'):] meta_table = META_TYPE_MAP[type(value)] @@ -1348,37 +1328,3 @@ def get_query(self): return self.query - - def get_capabilities(self): - """Return an dictionary representing the capabilities of this driver. - """ - available = { - 'meters': {'query': {'simple': True, - 'metadata': True}}, - 'resources': {'query': {'simple': True, - 'metadata': True}}, - 'samples': {'pagination': True, - 'groupby': True, - 'query': {'simple': True, - 'metadata': True, - 'complex': True}}, - 'statistics': {'groupby': True, - 'query': {'simple': True, - 'metadata': True}, - 'aggregation': {'standard': True, - 'selectable': { - 'max': True, - 'min': True, - 'sum': True, - 'avg': True, - 'count': True, - 'stddev': True, - 'cardinality': True}} - }, - 'alarms': {'query': {'simple': True, - 'complex': True}, - 'history': {'query': {'simple': True, - 'complex': True}}}, - 'events': {'query': {'simple': True}}, - } - return utils.update_nested(self.DEFAULT_CAPABILITIES, available) diff -Nru ceilometer-2014.1~b3/ceilometer/storage/__init__.py ceilometer-2014.1~rc1/ceilometer/storage/__init__.py --- ceilometer-2014.1~b3/ceilometer/storage/__init__.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/__init__.py 2014-03-31 15:32:25.000000000 +0000 @@ -26,7 +26,6 @@ from ceilometer.openstack.common.gettextutils import _ # noqa from ceilometer.openstack.common import log -from ceilometer import service from ceilometer import utils @@ -157,19 +156,3 @@ self.end_time, self.event_type, six.text_type(self.traits_filter))) - - -def dbsync(): - service.prepare_service() - get_connection(cfg.CONF).upgrade() - - -def expirer(): - service.prepare_service() - if cfg.CONF.database.time_to_live > 0: - LOG.debug(_("Clearing expired metering data")) - storage_conn = get_connection(cfg.CONF) - storage_conn.clear_expired_metering_data( - cfg.CONF.database.time_to_live) - else: - LOG.info(_("Nothing to clean, database time to live is disabled")) diff -Nru ceilometer-2014.1~b3/ceilometer/storage/pymongo_base.py ceilometer-2014.1~rc1/ceilometer/storage/pymongo_base.py --- ceilometer-2014.1~b3/ceilometer/storage/pymongo_base.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/pymongo_base.py 2014-03-31 15:32:25.000000000 +0000 @@ -169,7 +169,7 @@ """ if pagination: - raise NotImplementedError(_('Pagination not implemented')) + raise NotImplementedError('Pagination not implemented') q = {} if user is not None: @@ -250,7 +250,7 @@ :param pagination: Optional pagination query. """ if pagination: - raise NotImplementedError(_('Pagination not implemented')) + raise NotImplementedError('Pagination not implemented') q = {} if user is not None: diff -Nru ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py --- ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/012_add_missing_foreign_keys.py 2014-03-31 15:32:25.000000000 +0000 @@ -17,8 +17,6 @@ from sqlalchemy import MetaData, Table from sqlalchemy.sql.expression import select -from ceilometer.openstack.common.db.sqlalchemy import utils - TABLES = ['resource', 'sourceassoc', 'user', 'project', 'meter', 'source', 'alarm'] @@ -46,19 +44,11 @@ for table_name in TABLES) for table_name, indexes in INDEXES.items(): table = load_tables[table_name] - - # Save data that conflicted with FK. - columns = [column.copy() for column in table.columns] - table_dump = Table('dump_' + table_name, meta, *columns) - table_dump.create() for column, ref_table_name, ref_column_name in indexes: ref_table = load_tables[ref_table_name] subq = select([getattr(ref_table.c, ref_column_name)]) - sql = utils.InsertFromSelect(table_dump, table.select().where( - ~ getattr(table.c, column).in_(subq))) sql_del = table.delete().where( ~ getattr(table.c, column).in_(subq)) - migrate_engine.execute(sql) migrate_engine.execute(sql_del) params = {'columns': [table.c[column]], @@ -86,10 +76,3 @@ with migrate_engine.begin(): fkey = ForeignKeyConstraint(**params) fkey.drop() - with migrate_engine.begin(): - # Restore data that had been dropped. - table_dump_name = 'dump_' + table_name - table_dump = Table(table_dump_name, meta, autoload=True) - sql = utils.InsertFromSelect(table, table_dump.select()) - migrate_engine.execute(sql) - table_dump.drop() diff -Nru ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/023_add_trait_types.py ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/023_add_trait_types.py --- ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/023_add_trait_types.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/023_add_trait_types.py 2014-03-31 15:32:25.000000000 +0000 @@ -30,7 +30,9 @@ Column('id', Integer, primary_key=True), Column('desc', String(255)), Column('data_type', Integer), - UniqueConstraint('desc', 'data_type', name="tt_unique") + UniqueConstraint('desc', 'data_type', name="tt_unique"), + mysql_engine='InnoDB', + mysql_charset='utf8', ) trait = Table('trait', meta, autoload=True) unique_name = Table('unique_name', meta, autoload=True) @@ -90,7 +92,9 @@ unique_name = Table( 'unique_name', meta, Column('id', Integer, primary_key=True), - Column('key', String(255), unique=True) + Column('key', String(255), unique=True), + mysql_engine='InnoDB', + mysql_charset='utf8', ) trait_type = Table('trait_type', meta, autoload=True) diff -Nru ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py --- ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/027_remove_alarm_fk_constraints.py 2014-03-31 15:32:25.000000000 +0000 @@ -20,8 +20,6 @@ from sqlalchemy import MetaData, Table from sqlalchemy.sql.expression import select -from ceilometer.openstack.common.db.sqlalchemy import utils - TABLES = ['user', 'project', 'alarm'] INDEXES = { @@ -56,18 +54,11 @@ for table_name in TABLES) for table_name, indexes in INDEXES.items(): table = load_tables[table_name] - # Save data that conflicted with FK. - columns = [column.copy() for column in table.columns] - table_dump = Table('dump027_' + table_name, meta, *columns) - table_dump.create() for column, ref_table_name, ref_column_name in indexes: ref_table = load_tables[ref_table_name] subq = select([getattr(ref_table.c, ref_column_name)]) - sql = utils.InsertFromSelect(table_dump, table.select().where( - ~ getattr(table.c, column).in_(subq))) sql_del = table.delete().where( ~ getattr(table.c, column).in_(subq)) - migrate_engine.execute(sql) migrate_engine.execute(sql_del) params = {'columns': [table.c[column]], diff -Nru ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/028_alembic_migrations.py ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/028_alembic_migrations.py --- ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/028_alembic_migrations.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/028_alembic_migrations.py 2014-03-31 15:32:25.000000000 +0000 @@ -21,7 +21,10 @@ def get_alembic_version(meta): """Return Alembic version or None if no Alembic table exists.""" try: - a_ver = sa.Table('alembic_version', meta, autoload=True) + a_ver = sa.Table( + 'alembic_version', + meta, + autoload=True) return sa.select([a_ver.c.version_num]).scalar() except sa.exc.NoSuchTableError: return None @@ -29,7 +32,10 @@ def delete_alembic(meta): try: - sa.Table('alembic_version', meta, autoload=True).drop() + sa.Table( + 'alembic_version', + meta, + autoload=True).drop(checkfirst=True) except sa.exc.NoSuchTableError: pass @@ -43,7 +49,7 @@ (['mysql'], 'source', 'id', ('id',), False, True, False)) -def index_cleanup(meta, engine_names, table_name, uniq_name, columns, +def index_cleanup(meta, table_name, uniq_name, columns, create, unique, limited): table = sa.Table(table_name, meta, autoload=True) if create: @@ -61,10 +67,11 @@ sa.Index(uniq_name, *cols, unique=unique).create() else: if unique: - migrate.UniqueConstraint(*columns, table=table).drop() + migrate.UniqueConstraint(*columns, table=table, + name=uniq_name).drop() else: cols = [table.c[col] for col in columns] - sa.Index(uniq_name, *cols, unique=unique).drop() + sa.Index(uniq_name, *cols).drop() def change_uniq(meta, downgrade=False): @@ -124,8 +131,8 @@ if a_ver == '17738166b91': for (engine_names, table_name, uniq_name, columns, create, uniq, limited) in INDEXES: - if migrate_engine in engine_names: - index_cleanup(meta, engine_names, table_name, uniq_name, + if migrate_engine.name in engine_names: + index_cleanup(meta, table_name, uniq_name, columns, create, uniq, limited) a_ver = 'b6ae66d05e3' @@ -142,8 +149,8 @@ for (engine_names, table_name, uniq_name, columns, create, uniq, limited) in INDEXES: - if migrate_engine in engine_names: - index_cleanup(meta, engine_names, table_name, uniq_name, + if migrate_engine.name in engine_names: + index_cleanup(meta, table_name, uniq_name, columns, not create, uniq, limited) meter = sa.Table('meter', meta, autoload=True) diff -Nru ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/033_alarm_id_rename.py ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/033_alarm_id_rename.py --- ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/033_alarm_id_rename.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/033_alarm_id_rename.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,28 @@ +# -*- encoding: utf-8 -*- +# +# 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. + +from sqlalchemy import MetaData +from sqlalchemy import Table + + +def upgrade(migrate_engine): + meta = MetaData(bind=migrate_engine) + users = Table('alarm', meta, autoload=True) + users.c.id.alter(name='alarm_id') + + +def downgrade(migrate_engine): + meta = MetaData(bind=migrate_engine) + users = Table('alarm', meta, autoload=True) + users.c.alarm_id.alter(name='id') diff -Nru ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py --- ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- +# +# 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. +import sqlalchemy as sa + +TABLES_012 = ['resource', 'sourceassoc', 'user', + 'project', 'meter', 'source', 'alarm'] +TABLES_027 = ['user', 'project', 'alarm'] + + +def upgrade(migrate_engine): + meta = sa.MetaData(bind=migrate_engine) + for table_name in TABLES_027: + try: + sa.Table('dump027_' + table_name, meta, autoload=True)\ + .drop(checkfirst=True) + except sa.exc.NoSuchTableError: + pass + for table_name in TABLES_012: + try: + sa.Table('dump_' + table_name, meta, autoload=True)\ + .drop(checkfirst=True) + except sa.exc.NoSuchTableError: + pass + + +def downgrade(migrate_engine): + pass diff -Nru ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/models.py ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/models.py --- ceilometer-2014.1~b3/ceilometer/storage/sqlalchemy/models.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/storage/sqlalchemy/models.py 2014-03-31 15:32:25.000000000 +0000 @@ -290,7 +290,7 @@ Index('ix_alarm_user_id', 'user_id'), Index('ix_alarm_project_id', 'project_id'), ) - id = Column(String(255), primary_key=True) + alarm_id = Column(String(255), primary_key=True) enabled = Column(Boolean) name = Column(Text) type = Column(String(50)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/agentbase.py ceilometer-2014.1~rc1/ceilometer/tests/agentbase.py --- ceilometer-2014.1~b3/ceilometer/tests/agentbase.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/agentbase.py 2014-03-31 15:32:25.000000000 +0000 @@ -265,16 +265,16 @@ def test_setup_polling_tasks(self): polling_tasks = self.mgr.setup_polling_tasks() - self.assertEqual(len(polling_tasks), 1) + self.assertEqual(1, len(polling_tasks)) self.assertTrue(60 in polling_tasks.keys()) per_task_resources = polling_tasks[60].resources - self.assertEqual(len(per_task_resources), 1) - self.assertEqual(set(per_task_resources['test'].resources), - set(self.pipeline_cfg[0]['resources'])) + self.assertEqual(1, len(per_task_resources)) + self.assertEqual(set(self.pipeline_cfg[0]['resources']), + set(per_task_resources['test'].resources)) self.mgr.interval_task(polling_tasks.values()[0]) pub = self.mgr.pipeline_manager.pipelines[0].publishers[0] del pub.samples[0].resource_metadata['resources'] - self.assertEqual(pub.samples[0], self.Pollster.test_data) + self.assertEqual(self.Pollster.test_data, pub.samples[0]) def test_setup_polling_tasks_multiple_interval(self): self.pipeline_cfg.append({ @@ -287,7 +287,7 @@ }) self.setup_pipeline() polling_tasks = self.mgr.setup_polling_tasks() - self.assertEqual(len(polling_tasks), 2) + self.assertEqual(2, len(polling_tasks)) self.assertTrue(60 in polling_tasks.keys()) self.assertTrue(10 in polling_tasks.keys()) @@ -302,7 +302,7 @@ 'publishers': ["test"], }) polling_tasks = self.mgr.setup_polling_tasks() - self.assertEqual(len(polling_tasks), 1) + self.assertEqual(1, len(polling_tasks)) self.assertTrue(60 in polling_tasks.keys()) def test_setup_polling_task_same_interval(self): @@ -316,15 +316,15 @@ }) self.setup_pipeline() polling_tasks = self.mgr.setup_polling_tasks() - self.assertEqual(len(polling_tasks), 1) + self.assertEqual(1, len(polling_tasks)) pollsters = polling_tasks.get(60).pollsters - self.assertEqual(len(pollsters), 2) + self.assertEqual(2, len(pollsters)) per_task_resources = polling_tasks[60].resources - self.assertEqual(len(per_task_resources), 2) - self.assertEqual(set(per_task_resources['test'].resources), - set(self.pipeline_cfg[0]['resources'])) - self.assertEqual(set(per_task_resources['testanother'].resources), - set(self.pipeline_cfg[1]['resources'])) + self.assertEqual(2, len(per_task_resources)) + self.assertEqual(set(self.pipeline_cfg[0]['resources']), + set(per_task_resources['test'].resources)) + self.assertEqual(set(self.pipeline_cfg[1]['resources']), + set(per_task_resources['testanother'].resources)) def test_interval_exception_isolation(self): self.pipeline_cfg = [ @@ -350,11 +350,11 @@ self.transformer_manager) polling_tasks = self.mgr.setup_polling_tasks() - self.assertEqual(len(polling_tasks.keys()), 1) + self.assertEqual(1, len(polling_tasks.keys())) polling_tasks.get(10) self.mgr.interval_task(polling_tasks.get(10)) pub = self.mgr.pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(pub.samples), 0) + self.assertEqual(0, len(pub.samples)) def test_agent_manager_start(self): mgr = self.create_manager() @@ -375,9 +375,9 @@ self.setup_pipeline() def _verify_discovery_params(self, expected): - self.assertEqual(self.Discovery.params, expected) - self.assertEqual(self.DiscoveryAnother.params, expected) - self.assertEqual(self.DiscoveryException.params, expected) + self.assertEqual(expected, self.Discovery.params) + self.assertEqual(expected, self.DiscoveryAnother.params) + self.assertEqual(expected, self.DiscoveryException.params) def _do_test_per_agent_discovery(self, discovered_resources, @@ -396,8 +396,8 @@ self._verify_discovery_params([None] if discovered_resources else []) discovery = self.Discovery.resources + self.DiscoveryAnother.resources # compare resource lists modulo ordering - self.assertEqual(set(self.Pollster.resources), - set(static_resources or discovery)) + self.assertEqual(set(static_resources or discovery), + set(self.Pollster.resources)) def test_per_agent_discovery_discovered_only(self): self._do_test_per_agent_discovery(['discovered_1', 'discovered_2'], @@ -424,8 +424,8 @@ self.setup_pipeline() polling_tasks = self.mgr.setup_polling_tasks() self.mgr.interval_task(polling_tasks.get(60)) - self.assertEqual(set(self.Pollster.resources), - set(self.DiscoveryAnother.resources)) + self.assertEqual(set(self.DiscoveryAnother.resources), + set(self.Pollster.resources)) def _do_test_per_pipeline_discovery(self, discovered_resources, @@ -444,8 +444,8 @@ self.mgr.interval_task(polling_tasks.get(60)) discovery = self.Discovery.resources + self.DiscoveryAnother.resources # compare resource lists modulo ordering - self.assertEqual(set(self.Pollster.resources), - set(static_resources + discovery)) + self.assertEqual(set(static_resources + discovery), + set(self.Pollster.resources)) def test_per_pipeline_discovery_discovered_only(self): self._do_test_per_pipeline_discovery(['discovered_1', 'discovered_2'], @@ -476,16 +476,16 @@ self.Discovery.resources = [] self.setup_pipeline() polling_tasks = self.mgr.setup_polling_tasks() - self.assertEqual(len(polling_tasks), 1) + self.assertEqual(1, len(polling_tasks)) self.assertTrue(60 in polling_tasks.keys()) self.mgr.interval_task(polling_tasks.get(60)) self._verify_discovery_params([]) - self.assertEqual(len(self.Pollster.samples), 1) + self.assertEqual(1, len(self.Pollster.samples)) amalgamated_resources = set(['test://', 'another://']) - self.assertEqual(set(self.Pollster.samples[0][1]), - amalgamated_resources) + self.assertEqual(amalgamated_resources, + set(self.Pollster.samples[0][1])) for pipeline in self.mgr.pipeline_manager.pipelines: - self.assertEqual(len(pipeline.publishers[0].samples), 1) + self.assertEqual(1, len(pipeline.publishers[0].samples)) published = pipeline.publishers[0].samples[0] - self.assertEqual(set(published.resource_metadata['resources']), - amalgamated_resources) + self.assertEqual(amalgamated_resources, + set(published.resource_metadata['resources'])) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/evaluator/base.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/evaluator/base.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/evaluator/base.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/evaluator/base.py 2014-03-31 15:32:25.000000000 +0000 @@ -50,4 +50,4 @@ def _assert_all_alarms(self, state): for alarm in self.alarms: - self.assertEqual(alarm.state, state) + self.assertEqual(state, alarm.state) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/evaluator/test_combination.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/evaluator/test_combination.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/evaluator/test_combination.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/evaluator/test_combination.py 2014-03-31 15:32:25.000000000 +0000 @@ -135,7 +135,7 @@ expected = [mock.call(alarm.alarm_id, state='insufficient data') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) expected = [mock.call( alarm, 'ok', @@ -143,7 +143,7 @@ (",".join(alarm.rule['alarm_ids']))), self._reason_data(alarm.rule['alarm_ids'])) for alarm in self.alarms] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_to_ok_with_all_ok(self): self._set_all_alarms('insufficient data') @@ -159,7 +159,7 @@ expected = [mock.call(alarm.alarm_id, state='ok') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons, reason_datas = self._combination_transition_reason( 'ok', self.alarms[0].rule['alarm_ids'], @@ -168,7 +168,7 @@ reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_to_ok_with_one_alarm(self): self._set_all_alarms('alarm') @@ -184,7 +184,7 @@ expected = [mock.call(alarm.alarm_id, state='ok') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons, reason_datas = self._combination_transition_reason( 'ok', self.alarms[0].rule['alarm_ids'], @@ -192,7 +192,7 @@ expected = [mock.call(alarm, 'alarm', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_to_alarm_with_all_alarm(self): self._set_all_alarms('ok') @@ -208,7 +208,7 @@ expected = [mock.call(alarm.alarm_id, state='alarm') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons, reason_datas = self._combination_transition_reason( 'alarm', self.alarms[0].rule['alarm_ids'], @@ -216,7 +216,7 @@ expected = [mock.call(alarm, 'ok', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_to_alarm_with_one_ok(self): self._set_all_alarms('ok') @@ -232,7 +232,7 @@ expected = [mock.call(alarm.alarm_id, state='alarm') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons, reason_datas = self._combination_transition_reason( 'alarm', [self.alarms[0].rule['alarm_ids'][1]], @@ -240,7 +240,7 @@ expected = [mock.call(alarm, 'ok', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_to_unknown(self): self._set_all_alarms('ok') @@ -257,7 +257,7 @@ expected = [mock.call(alarm.alarm_id, state='insufficient data') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons = ['Alarms %s are in unknown state' % self.alarms[0].rule['alarm_ids'][0], 'Alarms %s are in unknown state' @@ -268,7 +268,7 @@ expected = [mock.call(alarm, 'ok', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_no_state_change(self): self._set_all_alarms('ok') @@ -282,8 +282,8 @@ ] self._evaluate_all_alarms() update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, []) - self.assertEqual(self.notifier.notify.call_args_list, []) + self.assertEqual([], update_calls) + self.assertEqual([], self.notifier.notify.call_args_list) def test_no_state_change_and_repeat_actions(self): self.alarms[0].repeat_actions = True @@ -299,7 +299,7 @@ ] self._evaluate_all_alarms() update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, []) + self.assertEqual([], update_calls) reasons, reason_datas = self._combination_remaining_reason( 'ok', self.alarms[0].rule['alarm_ids'], @@ -308,7 +308,7 @@ for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_state_change_inside_time_constraint(self): self._set_all_alarms('insufficient data') diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/evaluator/test_threshold.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/evaluator/test_threshold.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/evaluator/test_threshold.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/evaluator/test_threshold.py 2014-03-31 15:32:25.000000000 +0000 @@ -148,7 +148,7 @@ alarm.rule['evaluation_periods'], None)) for alarm in self.alarms] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_simple_alarm_trip(self): self._set_all_alarms('ok') @@ -164,7 +164,7 @@ expected = [mock.call(alarm.alarm_id, state='alarm') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons = ['Transition to alarm due to 5 samples outside' ' threshold, most recent: %s' % avgs[-1].avg, 'Transition to alarm due to 4 samples outside' @@ -174,7 +174,7 @@ expected = [mock.call(alarm, 'ok', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_simple_alarm_clear(self): self._set_all_alarms('alarm') @@ -190,7 +190,7 @@ expected = [mock.call(alarm.alarm_id, state='ok') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons = ['Transition to ok due to 5 samples inside' ' threshold, most recent: %s' % avgs[-1].avg, 'Transition to ok due to 4 samples inside' @@ -200,7 +200,7 @@ expected = [mock.call(alarm, 'alarm', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_equivocal_from_known_state(self): self._set_all_alarms('ok') @@ -213,50 +213,55 @@ self.api_client.statistics.list.side_effect = [avgs, maxs] self._evaluate_all_alarms() self._assert_all_alarms('ok') - self.assertEqual(self.api_client.alarms.set_state.call_args_list, - []) - self.assertEqual(self.notifier.notify.call_args_list, []) + self.assertEqual( + [], + self.api_client.alarms.set_state.call_args_list) + self.assertEqual([], self.notifier.notify.call_args_list) def test_equivocal_from_known_state_and_repeat_actions(self): self._set_all_alarms('ok') self.alarms[1].repeat_actions = True with mock.patch('ceilometerclient.client.get_client', return_value=self.api_client): - avgs = [self._get_stat('avg', self.alarms[0].rule['threshold'] + v) + avgs = [self._get_stat('avg', + self.alarms[0].rule['threshold'] + v) for v in moves.xrange(5)] - maxs = [self._get_stat('max', self.alarms[1].rule['threshold'] - v) + maxs = [self._get_stat('max', + self.alarms[1].rule['threshold'] - v) for v in moves.xrange(-1, 3)] self.api_client.statistics.list.side_effect = [avgs, maxs] self._evaluate_all_alarms() self._assert_all_alarms('ok') - self.assertEqual(self.api_client.alarms.set_state.call_args_list, - []) + self.assertEqual([], + self.api_client.alarms.set_state.call_args_list) reason = 'Remaining as ok due to 4 samples inside' \ ' threshold, most recent: 8.0' reason_datas = self._reason_data('inside', 4, 8.0) expected = [mock.call(self.alarms[1], 'ok', reason, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_unequivocal_from_known_state_and_repeat_actions(self): self._set_all_alarms('alarm') self.alarms[1].repeat_actions = True with mock.patch('ceilometerclient.client.get_client', return_value=self.api_client): - avgs = [self._get_stat('avg', self.alarms[0].rule['threshold'] + v) + avgs = [self._get_stat('avg', + self.alarms[0].rule['threshold'] + v) for v in moves.xrange(1, 6)] - maxs = [self._get_stat('max', self.alarms[1].rule['threshold'] - v) + maxs = [self._get_stat('max', + self.alarms[1].rule['threshold'] - v) for v in moves.xrange(4)] self.api_client.statistics.list.side_effect = [avgs, maxs] self._evaluate_all_alarms() self._assert_all_alarms('alarm') - self.assertEqual(self.api_client.alarms.set_state.call_args_list, - []) + self.assertEqual([], + self.api_client.alarms.set_state.call_args_list) reason = 'Remaining as alarm due to 4 samples outside' \ ' threshold, most recent: 7.0' reason_datas = self._reason_data('outside', 4, 7.0) expected = [mock.call(self.alarms[1], 'alarm', reason, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_state_change_and_repeat_actions(self): self._set_all_alarms('ok') @@ -274,7 +279,7 @@ expected = [mock.call(alarm.alarm_id, state='alarm') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons = ['Transition to alarm due to 5 samples outside' ' threshold, most recent: %s' % avgs[-1].avg, 'Transition to alarm due to 4 samples outside' @@ -284,7 +289,7 @@ expected = [mock.call(alarm, 'ok', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_equivocal_from_unknown(self): self._set_all_alarms('insufficient data') @@ -300,7 +305,7 @@ expected = [mock.call(alarm.alarm_id, state='alarm') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons = ['Transition to alarm due to 5 samples outside' ' threshold, most recent: %s' % avgs[-1].avg, 'Transition to alarm due to 4 samples outside' @@ -311,7 +316,7 @@ reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def _do_test_bound_duration(self, start, exclude_outliers=None): alarm = self.alarms[0] @@ -319,14 +324,14 @@ alarm.rule['exclude_outliers'] = exclude_outliers timeutils.utcnow.override_time = datetime.datetime(2012, 7, 2, 10, 45) constraint = self.evaluator._bound_duration(alarm, []) - self.assertEqual(constraint, [ + self.assertEqual([ {'field': 'timestamp', 'op': 'le', 'value': timeutils.utcnow().isoformat()}, {'field': 'timestamp', 'op': 'ge', 'value': start}, - ]) + ], constraint) def test_bound_duration_outlier_exclusion_defaulted(self): self._do_test_bound_duration('2012-07-02T10:39:00') @@ -354,9 +359,10 @@ os_password=conf.os_password, os_username=conf.os_username, os_cacert=conf.os_cacert, - os_endpoint_type=conf.os_endpoint_type)] + os_endpoint_type=conf.os_endpoint_type, + insecure=conf.insecure)] actual = client.call_args_list - self.assertEqual(actual, expected) + self.assertEqual(expected, actual) def _do_test_simple_alarm_trip_outlier_exclusion(self, exclude_outliers): self._set_all_rules('exclude_outliers', exclude_outliers) @@ -364,7 +370,7 @@ with mock.patch('ceilometerclient.client.get_client', return_value=self.api_client): # most recent datapoints inside threshold but with - # anomolously low sample count + # anomalously low sample count threshold = self.alarms[0].rule['threshold'] avgs = [self._get_stat('avg', threshold + (v if v < 10 else -v), @@ -382,7 +388,7 @@ expected = [mock.call(alarm.alarm_id, state='alarm') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons = ['Transition to alarm due to 5 samples outside' ' threshold, most recent: %s' % avgs[-2].avg, 'Transition to alarm due to 4 samples outside' @@ -392,7 +398,7 @@ expected = [mock.call(alarm, 'ok', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_simple_alarm_trip_with_outlier_exclusion(self): self. _do_test_simple_alarm_trip_outlier_exclusion(True) @@ -406,7 +412,7 @@ with mock.patch('ceilometerclient.client.get_client', return_value=self.api_client): # most recent datapoints outside threshold but with - # anomolously low sample count + # anomalously low sample count threshold = self.alarms[0].rule['threshold'] avgs = [self._get_stat('avg', threshold - (v if v < 9 else -v), @@ -424,7 +430,7 @@ expected = [mock.call(alarm.alarm_id, state='ok') for alarm in self.alarms] update_calls = self.api_client.alarms.set_state.call_args_list - self.assertEqual(update_calls, expected) + self.assertEqual(expected, update_calls) reasons = ['Transition to ok due to 5 samples inside' ' threshold, most recent: %s' % avgs[-2].avg, 'Transition to ok due to 4 samples inside' @@ -434,7 +440,7 @@ expected = [mock.call(alarm, 'alarm', reason, reason_data) for alarm, reason, reason_data in zip(self.alarms, reasons, reason_datas)] - self.assertEqual(self.notifier.notify.call_args_list, expected) + self.assertEqual(expected, self.notifier.notify.call_args_list) def test_simple_alarm_clear_with_outlier_exclusion(self): self. _do_test_simple_alarm_clear_outlier_exclusion(True) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/partition/test_coordination.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/partition/test_coordination.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/partition/test_coordination.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/partition/test_coordination.py 2014-03-31 15:32:25.000000000 +0000 @@ -153,17 +153,16 @@ target, alarms = args self.assertTrue(target in uneffected) uneffected.remove(target) - self.assertEqual(len(alarms), per_worker) + self.assertEqual(per_worker, len(alarms)) for aid in alarms: self.assertTrue(aid in remainder) remainder.remove(aid) - self.assertEqual(set(uneffected), set(expect_uneffected)) + self.assertEqual(set(expect_uneffected), set(uneffected)) return remainder def _forget_assignments(self, expected_assignments): rpc = self.partition_coordinator.coordination_rpc - self.assertEqual(len(rpc.assign.call_args_list), - expected_assignments) + self.assertEqual(expected_assignments, len(rpc.assign.call_args_list)) rpc.reset_mock() def test_mastership_not_assumed_during_warmup(self): @@ -237,8 +236,8 @@ self._check_mastership(True) remainder = self._check_assignments(others, alarm_ids, 10) - self.assertEqual(set(remainder), - set(self.partition_coordinator.assignment)) + self.assertEqual(set(self.partition_coordinator.assignment), + set(remainder)) def test_rebalance_on_partition_startup(self): alarm_ids = self._some_alarms(49) @@ -255,8 +254,8 @@ self._check_mastership(True) remainder = self._check_assignments(others, alarm_ids, 9) - self.assertEqual(set(remainder), - set(self.partition_coordinator.assignment)) + self.assertEqual(set(self.partition_coordinator.assignment), + set(remainder)) def test_rebalance_on_partition_staleness(self): alarm_ids = self._some_alarms(49) @@ -278,8 +277,8 @@ self._check_mastership(True) remainder = self._check_assignments(others, alarm_ids, 13, [stale]) - self.assertEqual(set(remainder), - set(self.partition_coordinator.assignment)) + self.assertEqual(set(self.partition_coordinator.assignment), + set(remainder)) def test_rebalance_on_sufficient_deletion(self): alarm_ids = self._some_alarms(49) @@ -297,8 +296,8 @@ self._check_mastership(True) remainder = self._check_assignments(others, alarm_ids, 5) - self.assertEqual(set(remainder), - set(self.partition_coordinator.assignment)) + self.assertEqual(set(self.partition_coordinator.assignment), + set(remainder)) def test_no_rebalance_on_insufficient_deletion(self): alarm_ids = self._some_alarms(49) @@ -335,9 +334,9 @@ self._check_mastership(True) remainder = self._check_allocation(others, new_alarm_ids, 2) - self.assertEqual(len(remainder), 0) - self.assertEqual(master_assignment, - set(self.partition_coordinator.assignment)) + self.assertEqual(0, len(remainder)) + self.assertEqual(set(self.partition_coordinator.assignment), + master_assignment) def test_bail_when_overtaken_in_distribution(self): self._some_alarms(49) @@ -355,11 +354,11 @@ self._check_mastership(False) - self.assertEqual(len(rpc.assign.call_args_list), 1) + self.assertEqual(1, len(rpc.assign.call_args_list)) def test_assigned_alarms_no_assignment(self): alarms = self.partition_coordinator.assigned_alarms(self.api_client) - self.assertEqual(len(alarms), 0) + self.assertEqual(0, len(alarms)) def test_assigned_alarms_assignment(self): alarm_ids = self._some_alarms(6) @@ -368,7 +367,7 @@ self.partition_coordinator.assign(uuid, alarm_ids) alarms = self.partition_coordinator.assigned_alarms(self.api_client) - self.assertEqual(alarms, self._current_alarms()) + self.assertEqual(self._current_alarms(), alarms) def test_assigned_alarms_allocation(self): alarm_ids = self._some_alarms(6) @@ -380,7 +379,7 @@ self.partition_coordinator.allocate(uuid, new_alarm_ids) alarms = self.partition_coordinator.assigned_alarms(self.api_client) - self.assertEqual(alarms, self._current_alarms()) + self.assertEqual(self._current_alarms(), alarms) def test_assigned_alarms_deleted_assignment(self): alarm_ids = self._some_alarms(6) @@ -391,7 +390,7 @@ self._dump_alarms(len(alarm_ids) / 2) alarms = self.partition_coordinator.assigned_alarms(self.api_client) - self.assertEqual(alarms, self._current_alarms()) + self.assertEqual(self._current_alarms(), alarms) def test__record_oldest(self): # Test when the partition to be recorded is the same as the oldest. diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/test_notifier.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_notifier.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/test_notifier.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_notifier.py 2014-03-31 15:32:25.000000000 +0000 @@ -63,14 +63,14 @@ } self.service.notify_alarm(context.get_admin_context(), data) notifications = self.service.notifiers['test'].obj.notifications - self.assertEqual(len(notifications), 1) - self.assertEqual(notifications[0], ( - urlparse.urlsplit(data['actions'][0]), - data['alarm_id'], - data['previous'], - data['current'], - data['reason'], - data['reason_data'])) + self.assertEqual(1, len(notifications)) + self.assertEqual((urlparse.urlsplit(data['actions'][0]), + data['alarm_id'], + data['previous'], + data['current'], + data['reason'], + data['reason_data']), + notifications[0]) def test_notify_alarm_no_action(self): self.service.notify_alarm(context.get_admin_context(), {}) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/test_partitioned_alarm_svc.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_partitioned_alarm_svc.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/test_partitioned_alarm_svc.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_partitioned_alarm_svc.py 2014-03-31 15:32:25.000000000 +0000 @@ -81,7 +81,7 @@ mock.call(604800, mock.ANY), ] actual = self.partitioned.tg.add_timer.call_args_list - self.assertEqual(actual, expected) + self.assertEqual(expected, actual) def test_presence_reporting(self): priority = 42 diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/test_rpc.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_rpc.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/test_rpc.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_rpc.py 2014-03-31 15:32:25.000000000 +0000 @@ -82,24 +82,24 @@ for i, a in enumerate(self.alarms): self.notifier.notify(a, previous[i], "what? %d" % i, {'fire': '%d' % i}) - self.assertEqual(len(self.notified), 2) + self.assertEqual(2, len(self.notified)) for i, a in enumerate(self.alarms): actions = getattr(a, models.Alarm.ALARM_ACTIONS_MAP[a.state]) - self.assertEqual(self.notified[i][0], - self.CONF.alarm.notifier_rpc_topic) - self.assertEqual(self.notified[i][1]["args"]["data"]["alarm_id"], - self.alarms[i].alarm_id) - self.assertEqual(self.notified[i][1]["args"]["data"]["actions"], - actions) - self.assertEqual(self.notified[i][1]["args"]["data"]["previous"], - previous[i]) - self.assertEqual(self.notified[i][1]["args"]["data"]["current"], - self.alarms[i].state) - self.assertEqual(self.notified[i][1]["args"]["data"]["reason"], - "what? %d" % i) + self.assertEqual(self.CONF.alarm.notifier_rpc_topic, + self.notified[i][0]) + self.assertEqual(self.alarms[i].alarm_id, + self.notified[i][1]["args"]["data"]["alarm_id"]) + self.assertEqual(actions, + self.notified[i][1]["args"]["data"]["actions"]) + self.assertEqual(previous[i], + self.notified[i][1]["args"]["data"]["previous"]) + self.assertEqual(self.alarms[i].state, + self.notified[i][1]["args"]["data"]["current"]) + self.assertEqual("what? %d" % i, + self.notified[i][1]["args"]["data"]["reason"]) self.assertEqual( - self.notified[i][1]["args"]["data"]["reason_data"], - {'fire': '%d' % i}) + {'fire': '%d' % i}, + self.notified[i][1]["args"]["data"]["reason_data"]) def test_notify_non_string_reason(self): self.notifier.notify(self.alarms[0], 'ok', 42, {}) @@ -124,7 +124,7 @@ 'my_instance'} }) self.notifier.notify(alarm, 'alarm', "what?", {}) - self.assertEqual(len(self.notified), 0) + self.assertEqual(0, len(self.notified)) class TestRPCAlarmPartitionCoordination(test.BaseTestCase): @@ -145,25 +145,25 @@ priority = float(timeutils.utcnow().strftime('%s.%f')) self.ordination.presence(id, priority) topic, msg = self.notified[0] - self.assertEqual(topic, 'alarm_partition_coordination') - self.assertEqual(msg['args']['data']['uuid'], id) - self.assertEqual(msg['args']['data']['priority'], priority) - self.assertEqual(msg['method'], 'presence') + self.assertEqual('alarm_partition_coordination', topic) + self.assertEqual(id, msg['args']['data']['uuid']) + self.assertEqual(priority, msg['args']['data']['priority']) + self.assertEqual('presence', msg['method']) def test_ordination_assign(self): id = uuid.uuid4() self.ordination.assign(id, self.alarms) topic, msg = self.notified[0] - self.assertEqual(topic, 'alarm_partition_coordination') - self.assertEqual(msg['args']['data']['uuid'], id) - self.assertEqual(len(msg['args']['data']['alarms']), 2) - self.assertEqual(msg['method'], 'assign') + self.assertEqual('alarm_partition_coordination', topic) + self.assertEqual(id, msg['args']['data']['uuid']) + self.assertEqual(2, len(msg['args']['data']['alarms'])) + self.assertEqual('assign', msg['method']) def test_ordination_allocate(self): id = uuid.uuid4() self.ordination.allocate(id, self.alarms) topic, msg = self.notified[0] - self.assertEqual(topic, 'alarm_partition_coordination') - self.assertEqual(msg['args']['data']['uuid'], id) - self.assertEqual(len(msg['args']['data']['alarms']), 2) - self.assertEqual(msg['method'], 'allocate') + self.assertEqual('alarm_partition_coordination', topic) + self.assertEqual(id, msg['args']['data']['uuid']) + self.assertEqual(2, len(msg['args']['data']['alarms'])) + self.assertEqual('allocate', msg['method']) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/alarm/test_singleton_alarm_svc.py ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_singleton_alarm_svc.py --- ceilometer-2014.1~b3/ceilometer/tests/alarm/test_singleton_alarm_svc.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/alarm/test_singleton_alarm_svc.py 2014-03-31 15:32:25.000000000 +0000 @@ -61,7 +61,7 @@ mock.call(604800, mock.ANY), ] actual = self.singleton.tg.add_timer.call_args_list - self.assertEqual(actual, expected) + self.assertEqual(expected, actual) def test_evaluation_cycle(self): alarm = mock.Mock(type='threshold') @@ -101,6 +101,7 @@ os_password=conf.os_password, os_username=conf.os_username, os_cacert=conf.os_cacert, - os_endpoint_type=conf.os_endpoint_type)] + os_endpoint_type=conf.os_endpoint_type, + insecure=conf.insecure)] actual = client.call_args_list - self.assertEqual(actual, expected) + self.assertEqual(expected, actual) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/__init__.py ceilometer-2014.1~rc1/ceilometer/tests/api/__init__.py --- ceilometer-2014.1~b3/ceilometer/tests/api/__init__.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/__init__.py 2014-03-31 15:32:25.000000000 +0000 @@ -179,7 +179,7 @@ def get_json(self, path, expect_errors=False, headers=None, extra_environ=None, q=[], groupby=[], status=None, - **params): + override_params=None, **params): """Sends simulated HTTP GET request to Pecan test app. :param path: url path of target service @@ -192,23 +192,27 @@ keys :param groupby: list of fields to group by :param status: Expected status code of response + :param override_params: literally encoded query param string :param params: content for wsgi.input of request """ full_path = self.PATH_PREFIX + path - query_params = {'q.field': [], - 'q.value': [], - 'q.op': [], - 'q.type': [], - } - for query in q: - for name in ['field', 'op', 'value', 'type']: - query_params['q.%s' % name].append(query.get(name, '')) - all_params = {} - all_params.update(params) - if q: - all_params.update(query_params) - if groupby: - all_params.update({'groupby': groupby}) + if override_params: + all_params = override_params + else: + query_params = {'q.field': [], + 'q.value': [], + 'q.op': [], + 'q.type': [], + } + for query in q: + for name in ['field', 'op', 'value', 'type']: + query_params['q.%s' % name].append(query.get(name, '')) + all_params = {} + all_params.update(params) + if q: + all_params.update(query_params) + if groupby: + all_params.update({'groupby': groupby}) response = self.app.get(full_path, params=all_params, headers=headers, diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/test_app.py ceilometer-2014.1~rc1/ceilometer/tests/api/test_app.py --- ceilometer-2014.1~b3/ceilometer/tests/api/test_app.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/test_app.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,44 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2014 IBM Corp. +# All Rights Reserved. +# +# 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. + +import socket + +from oslo.config import cfg + +from ceilometer.api import app +from ceilometer.openstack.common.fixture import config +from ceilometer.tests import base + + +class TestApp(base.BaseTestCase): + + def setUp(self): + super(TestApp, self).setUp() + self.CONF = self.useFixture(config.Config()).conf + + def test_WSGI_address_family(self): + self.CONF.set_override('host', '::', group='api') + server_cls = app.get_server_cls(cfg.CONF.api.host) + self.assertEqual(server_cls.address_family, socket.AF_INET6) + + self.CONF.set_override('host', '127.0.0.1', group='api') + server_cls = app.get_server_cls(cfg.CONF.api.host) + self.assertEqual(server_cls.address_family, socket.AF_INET) + + self.CONF.set_override('host', 'ddddd', group='api') + server_cls = app.get_server_cls(cfg.CONF.api.host) + self.assertEqual(server_cls.address_family, socket.AF_INET) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_compute_duration_by_resource_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_compute_duration_by_resource_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_compute_duration_by_resource_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_compute_duration_by_resource_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -83,35 +83,35 @@ def _assert_times_match(self, actual, expected): actual = timeutils.parse_isotime(actual).replace(tzinfo=None) - self.assertEqual(actual, expected) + self.assertEqual(expected, actual) def test_overlap_range_start(self): with self._patch_get_stats(self.early1, self.middle1): data = self._invoke_api() self._assert_times_match(data['start_timestamp'], self.start) self._assert_times_match(data['end_timestamp'], self.middle1) - self.assertEqual(data['duration'], 8 * 60 * 60) + self.assertEqual(8 * 60 * 60, data['duration']) def test_within_range(self): with self._patch_get_stats(self.middle1, self.middle2): data = self._invoke_api() self._assert_times_match(data['start_timestamp'], self.middle1) self._assert_times_match(data['end_timestamp'], self.middle2) - self.assertEqual(data['duration'], 10 * 60 * 60) + self.assertEqual(10 * 60 * 60, data['duration']) def test_within_range_zero_duration(self): with self._patch_get_stats(self.middle1, self.middle1): data = self._invoke_api() self._assert_times_match(data['start_timestamp'], self.middle1) self._assert_times_match(data['end_timestamp'], self.middle1) - self.assertEqual(data['duration'], 0) + self.assertEqual(0, data['duration']) def test_overlap_range_end(self): with self._patch_get_stats(self.middle2, self.late1): data = self._invoke_api() self._assert_times_match(data['start_timestamp'], self.middle2) self._assert_times_match(data['end_timestamp'], self.end) - self.assertEqual(data['duration'], ((6 * 60) - 1) * 60) + self.assertEqual(((6 * 60) - 1) * 60, data['duration']) def test_after_range(self): with self._patch_get_stats(self.late1, self.late2): diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_get_query_ts.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_get_query_ts.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_get_query_ts.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_get_query_ts.py 2014-03-31 15:32:25.000000000 +0000 @@ -34,7 +34,7 @@ 'query_end': None, 'search_offset': 0, } - self.assertEqual(result, expected) + self.assertEqual(expected, result) def test_get_query_timestamps_start(self): args = {'start_timestamp': '2012-09-20T12:13:14'} @@ -47,7 +47,7 @@ 'query_end': None, 'search_offset': 0, } - self.assertEqual(result, expected) + self.assertEqual(expected, result) def test_get_query_timestamps_end(self): args = {'end_timestamp': '2012-09-20T12:13:14'} @@ -60,7 +60,7 @@ 'query_start': None, 'search_offset': 0, } - self.assertEqual(result, expected) + self.assertEqual(expected, result) def test_get_query_timestamps_with_offset(self): args = {'start_timestamp': '2012-09-20T12:13:14', @@ -78,4 +78,4 @@ 12, 13, 14), 'search_offset': 20, } - self.assertEqual(result, expected) + self.assertEqual(expected, result) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_meters_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_meters_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_meters_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_meters_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -116,23 +116,23 @@ def test_list_meters(self): data = self.get('/meters') self.assertEqual(4, len(data['meters'])) - self.assertEqual(set(r['resource_id'] for r in data['meters']), - set(['resource-id', + self.assertEqual(set(['resource-id', 'resource-id2', 'resource-id3', - 'resource-id4'])) - self.assertEqual(set(r['name'] for r in data['meters']), - set(['meter.test', 'meter.mine'])) + 'resource-id4']), + set(r['resource_id'] for r in data['meters'])) + self.assertEqual(set(['meter.test', 'meter.mine']), + set(r['name'] for r in data['meters'])) def test_list_meters_non_admin(self): data = self.get('/meters', headers={"X-Roles": "Member", "X-Project-Id": "project-id"}) self.assertEqual(2, len(data['meters'])) - self.assertEqual(set(r['resource_id'] for r in data['meters']), - set(['resource-id', 'resource-id2'])) - self.assertEqual(set(r['name'] for r in data['meters']), - set(['meter.test', 'meter.mine'])) + self.assertEqual(set(['resource-id', 'resource-id2']), + set(r['resource_id'] for r in data['meters'])) + self.assertEqual(set(['meter.test', 'meter.mine']), + set(r['name'] for r in data['meters'])) def test_with_resource(self): data = self.get('/resources/resource-id/meters') @@ -156,7 +156,7 @@ def test_with_source_non_existent(self): data = self.get('/sources/test_list_resources_dont_exist/meters') - self.assertEqual(data['meters'], []) + self.assertEqual([], data['meters']) def test_with_user(self): data = self.get('/users/user-id/meters') @@ -182,11 +182,11 @@ headers={"X-Roles": "Member", "X-Project-Id": "project666"}) - self.assertEqual(data['meters'], []) + self.assertEqual([], data['meters']) def test_with_user_non_existent(self): data = self.get('/users/user-id-foobar123/meters') - self.assertEqual(data['meters'], []) + self.assertEqual([], data['meters']) def test_with_project(self): data = self.get('/projects/project-id2/meters') @@ -204,11 +204,11 @@ data = self.get('/projects/project-id2/meters', headers={"X-Roles": "Member", "X-Project-Id": "project-id"}) - self.assertEqual(data.status_code, 404) + self.assertEqual(404, data.status_code) def test_with_project_non_existent(self): data = self.get('/projects/jd-was-here/meters') - self.assertEqual(data['meters'], []) + self.assertEqual([], data['meters']) class TestListMetersMetaquery(TestListMeters, diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_resources_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_resources_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_resources_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_resources_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -112,18 +112,18 @@ def test_list_resources(self): data = self.get('/resources') self.assertEqual(3, len(data['resources'])) - self.assertEqual(set(r['resource_id'] for r in data['resources']), - set(['resource-id', + self.assertEqual(set(['resource-id', 'resource-id-alternate', - 'resource-id2'])) + 'resource-id2']), + set(r['resource_id'] for r in data['resources'])) def test_list_resources_non_admin(self): data = self.get('/resources', headers={"X-Roles": "Member", "X-Project-Id": "project-id"}) self.assertEqual(2, len(data['resources'])) - self.assertEqual(set(r['resource_id'] for r in data['resources']), - set(['resource-id', 'resource-id-alternate'])) + self.assertEqual(set(['resource-id', 'resource-id-alternate']), + set(r['resource_id'] for r in data['resources'])) def test_list_resources_with_timestamps(self): data = self.get('/resources', @@ -131,8 +131,8 @@ 2012, 7, 2, 10, 41).isoformat(), end_timestamp=datetime.datetime( 2012, 7, 2, 10, 43).isoformat()) - self.assertEqual(set(r['resource_id'] for r in data['resources']), - set(['resource-id-alternate', 'resource-id2'])) + self.assertEqual(set(['resource-id-alternate', 'resource-id2']), + set(r['resource_id'] for r in data['resources'])) def test_list_resources_with_timestamps_non_admin(self): data = self.get('/resources', @@ -142,8 +142,8 @@ 2012, 7, 2, 10, 43).isoformat(), headers={"X-Roles": "Member", "X-Project-Id": "project-id"}) - self.assertEqual(set(r['resource_id'] for r in data['resources']), - set(['resource-id-alternate'])) + self.assertEqual(set(['resource-id-alternate']), + set(r['resource_id'] for r in data['resources'])) def test_with_source(self): data = self.get('/sources/test_list_resources/resources') @@ -181,7 +181,7 @@ def test_with_source_non_existent(self): data = self.get('/sources/test_list_resources_dont_exist/resources') - self.assertEqual(data['resources'], []) + self.assertEqual([], data['resources']) def test_with_user(self): data = self.get('/users/user-id/resources') @@ -224,7 +224,7 @@ def test_with_user_non_existent(self): data = self.get('/users/user-id-foobar123/resources') - self.assertEqual(data['resources'], []) + self.assertEqual([], data['resources']) def test_with_project(self): data = self.get('/projects/project-id/resources') @@ -260,7 +260,7 @@ def test_with_project_non_existent(self): data = self.get('/projects/jd-was-here/resources') - self.assertEqual(data['resources'], []) + self.assertEqual([], data['resources']) class TestListResourcesMetaquery(TestListResourcesBase, diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_sources_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_sources_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_sources_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_sources_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -31,8 +31,8 @@ def test_source(self): ydata = self.get('/sources/test_source') self.assertIn("somekey", ydata) - self.assertEqual(ydata["somekey"], 666) + self.assertEqual(666, ydata["somekey"]) def test_unknownsource(self): ydata = self.get('/sources/test_source_that_does_not_exist') - self.assertEqual(ydata, {}) + self.assertEqual({}, ydata) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_users_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_users_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_list_users_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_list_users_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -101,7 +101,7 @@ def test_with_source(self): data = self.get('/sources/test_list_users/users') - self.assertEqual(['user-id'], data['users']) + self.assertEqual(data['users'], ['user-id']) def test_with_source_non_admin(self): data = self.get('/sources/test_list_users/users', diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_max_project_volume_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_max_project_volume_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_max_project_volume_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_max_project_volume_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -60,47 +60,47 @@ def test_no_time_bounds(self): data = self.get('/projects/project1/meters/volume.size/volume/max') expected = {'volume': 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_no_time_bounds_non_admin(self): data = self.get('/projects/project1/meters/volume.size/volume/max', headers={"X-Roles": "Member", "X-Project-Id": "project1"}) - self.assertEqual(data, {'volume': 7}) + self.assertEqual({'volume': 7}, data) def test_no_time_bounds_wrong_tenant(self): resp = self.get('/projects/project1/meters/volume.size/volume/max', headers={"X-Roles": "Member", "X-Project-Id": "?"}) - self.assertEqual(resp.status_code, 404) + self.assertEqual(404, resp.status_code) def test_start_timestamp(self): data = self.get('/projects/project1/meters/volume.size/volume/max', start_timestamp='2012-09-25T11:30:00') expected = {'volume': 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_timestamp_after(self): data = self.get('/projects/project1/meters/volume.size/volume/max', start_timestamp='2012-09-25T12:34:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp(self): data = self.get('/projects/project1/meters/volume.size/volume/max', end_timestamp='2012-09-25T11:30:00') expected = {'volume': 5} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp_before(self): data = self.get('/projects/project1/meters/volume.size/volume/max', end_timestamp='2012-09-25T09:54:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_end_timestamp(self): data = self.get('/projects/project1/meters/volume.size/volume/max', start_timestamp='2012-09-25T11:30:00', end_timestamp='2012-09-25T11:32:00') expected = {'volume': 6} - self.assertEqual(data, expected) + self.assertEqual(expected, data) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_max_resource_volume_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_max_resource_volume_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_max_resource_volume_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_max_resource_volume_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -59,47 +59,47 @@ def test_no_time_bounds(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max') expected = {'volume': 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_no_time_bounds_non_admin(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max', headers={"X-Roles": "Member", "X-Project-Id": "project1"}) - self.assertEqual(data, {'volume': 7}) + self.assertEqual({'volume': 7}, data) def test_no_time_bounds_wrong_tenant(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max', headers={"X-Roles": "Member", "X-Project-Id": "??"}) - self.assertEqual(data, {'volume': None}) + self.assertEqual({'volume': None}, data) def test_start_timestamp(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max', start_timestamp='2012-09-25T11:30:00') expected = {'volume': 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_timestamp_after(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max', start_timestamp='2012-09-25T12:34:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max', end_timestamp='2012-09-25T11:30:00') expected = {'volume': 5} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp_before(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max', end_timestamp='2012-09-25T09:54:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_end_timestamp(self): data = self.get('/resources/resource-id/meters/volume.size/volume/max', start_timestamp='2012-09-25T11:30:00', end_timestamp='2012-09-25T11:32:00') expected = {'volume': 6} - self.assertEqual(data, expected) + self.assertEqual(expected, data) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_sum_project_volume_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_sum_project_volume_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_sum_project_volume_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_sum_project_volume_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -60,47 +60,47 @@ def test_no_time_bounds(self): data = self.get('/projects/project1/meters/volume.size/volume/sum') expected = {'volume': 5 + 6 + 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_no_time_bounds_non_admin(self): data = self.get('/projects/project1/meters/volume.size/volume/sum', headers={"X-Roles": "Member", "X-Project-Id": "project1"}) - self.assertEqual(data, {'volume': 5 + 6 + 7}) + self.assertEqual({'volume': 5 + 6 + 7}, data) def test_no_time_bounds_wrong_tenant(self): resp = self.get('/projects/project1/meters/volume.size/volume/sum', headers={"X-Roles": "Member", "X-Project-Id": "???"}) - self.assertEqual(resp.status_code, 404) + self.assertEqual(404, resp.status_code) def test_start_timestamp(self): data = self.get('/projects/project1/meters/volume.size/volume/sum', start_timestamp='2012-09-25T11:30:00') expected = {'volume': 6 + 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_timestamp_after(self): data = self.get('/projects/project1/meters/volume.size/volume/sum', start_timestamp='2012-09-25T12:34:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp(self): data = self.get('/projects/project1/meters/volume.size/volume/sum', end_timestamp='2012-09-25T11:30:00') expected = {'volume': 5} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp_before(self): data = self.get('/projects/project1/meters/volume.size/volume/sum', end_timestamp='2012-09-25T09:54:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_end_timestamp(self): data = self.get('/projects/project1/meters/volume.size/volume/sum', start_timestamp='2012-09-25T11:30:00', end_timestamp='2012-09-25T11:32:00') expected = {'volume': 6} - self.assertEqual(data, expected) + self.assertEqual(expected, data) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_sum_resource_volume_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_sum_resource_volume_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v1/test_sum_resource_volume_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v1/test_sum_resource_volume_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -60,47 +60,47 @@ def test_no_time_bounds(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum') expected = {'volume': 5 + 6 + 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_no_time_bounds_non_admin(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum', headers={"X-Roles": "Member", "X-Project-Id": "project1"}) - self.assertEqual(data, {'volume': 5 + 6 + 7}) + self.assertEqual({'volume': 5 + 6 + 7}, data) def test_no_time_bounds_wrong_tenant(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum', headers={"X-Roles": "Member", "X-Project-Id": "?"}) - self.assertEqual(data, {'volume': None}) + self.assertEqual({'volume': None}, data) def test_start_timestamp(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum', start_timestamp='2012-09-25T11:30:00') expected = {'volume': 6 + 7} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_timestamp_after(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum', start_timestamp='2012-09-25T12:34:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum', end_timestamp='2012-09-25T11:30:00') expected = {'volume': 5} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_end_timestamp_before(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum', end_timestamp='2012-09-25T09:54:00') expected = {'volume': None} - self.assertEqual(data, expected) + self.assertEqual(expected, data) def test_start_end_timestamp(self): data = self.get('/resources/resource-id/meters/volume.size/volume/sum', start_timestamp='2012-09-25T11:30:00', end_timestamp='2012-09-25T11:32:00') expected = {'volume': 6} - self.assertEqual(data, expected) + self.assertEqual(expected, data) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_acl_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_acl_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_acl_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_acl_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -124,7 +124,7 @@ def test_non_authenticated(self): response = self.get_json('/meters', expect_errors=True) - self.assertEqual(response.status_int, 401) + self.assertEqual(401, response.status_int) def test_authenticated_wrong_role(self): response = self.get_json('/meters', @@ -135,7 +135,7 @@ "X-Project-Id": "bc23a9d531064583ace8f67dad60f6bb", }) - self.assertEqual(response.status_int, 401) + self.assertEqual(401, response.status_int) # FIXME(dhellmann): This test is not properly looking at the tenant # info. We do not correctly detect the improper tenant. That's @@ -150,7 +150,7 @@ # "X-Tenant-Name": "achoo", # "X-Project-Id": "bc23a9d531064583ace8f67dad60f6bb", # }) - # self.assertEqual(response.status_int, 401) + # self.assertEqual(401, response.status_int) def test_authenticated(self): data = self.get_json('/meters', @@ -191,7 +191,7 @@ q=[{'field': 'project_id', 'value': 'project-wrong', }]) - self.assertEqual(data.status_int, 401) + self.assertEqual(401, data.status_int) def test_non_admin_two_projects(self): data = self.get_json('/meters', @@ -205,7 +205,7 @@ {'field': 'project_id', 'value': 'project-naughty', }]) - self.assertEqual(data.status_int, 401) + self.assertEqual(401, data.status_int) def test_non_admin_get_events(self): diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_alarm_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_alarm_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_alarm_scenarios.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_alarm_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -170,20 +170,19 @@ storage_key = 'rule' else: storage_key = key - self.assertEqual(getattr(alarm, storage_key), - json[key]) + self.assertEqual(json[key], getattr(alarm, storage_key)) def test_list_alarms(self): data = self.get_json('/alarms') self.assertEqual(4, len(data)) - self.assertEqual(set(r['name'] for r in data), - set(['name1', 'name2', 'name3', 'name4'])) - self.assertEqual(set(r['threshold_rule']['meter_name'] - for r in data if 'threshold_rule' in r), - set(['meter.test', 'meter.mine'])) - self.assertEqual(set(r['combination_rule']['operator'] - for r in data if 'combination_rule' in r), - set(['or'])) + self.assertEqual(set(['name1', 'name2', 'name3', 'name4']), + set(r['name'] for r in data)) + self.assertEqual(set(['meter.test', 'meter.mine']), + set(r['threshold_rule']['meter_name'] + for r in data if 'threshold_rule' in r)) + self.assertEqual(set(['or']), + set(r['combination_rule']['operator'] + for r in data if 'combination_rule' in r)) def test_alarms_query_with_timestamp(self): date_time = datetime.datetime(2012, 7, 2, 10, 41) @@ -201,28 +200,27 @@ def test_get_not_existing_alarm(self): resp = self.get_json('/alarms/alarm-id-3', expect_errors=True) - self.assertEqual(resp.status_code, 404) - self.assertEqual(jsonutils.loads(resp.body)['error_message'] - ['faultstring'], - "Alarm alarm-id-3 Not Found") + self.assertEqual(404, resp.status_code) + self.assertEqual("Alarm alarm-id-3 Not Found", + jsonutils.loads(resp.body)['error_message'] + ['faultstring']) def test_get_alarm(self): alarms = self.get_json('/alarms', q=[{'field': 'name', 'value': 'name1', }]) - self.assertEqual(alarms[0]['name'], 'name1') - self.assertEqual(alarms[0]['threshold_rule']['meter_name'], - 'meter.test') + self.assertEqual('name1', alarms[0]['name']) + self.assertEqual('meter.test', + alarms[0]['threshold_rule']['meter_name']) one = self.get_json('/alarms/%s' % alarms[0]['alarm_id']) - self.assertEqual(one['name'], 'name1') - self.assertEqual(one['threshold_rule']['meter_name'], - 'meter.test') - self.assertEqual(one['alarm_id'], alarms[0]['alarm_id']) - self.assertEqual(one['repeat_actions'], alarms[0]['repeat_actions']) - self.assertEqual(one['time_constraints'], - alarms[0]['time_constraints']) + self.assertEqual('name1', one['name']) + self.assertEqual('meter.test', one['threshold_rule']['meter_name']) + self.assertEqual(alarms[0]['alarm_id'], one['alarm_id']) + self.assertEqual(alarms[0]['repeat_actions'], one['repeat_actions']) + self.assertEqual(alarms[0]['time_constraints'], + one['time_constraints']) def test_get_alarm_disabled(self): alarm = models.Alarm(name='disabled', @@ -246,29 +244,29 @@ alarms = self.get_json('/alarms', q=[{'field': 'enabled', 'value': 'False'}]) - self.assertEqual(len(alarms), 1) - self.assertEqual(alarms[0]['name'], 'disabled') + self.assertEqual(1, len(alarms)) + self.assertEqual('disabled', alarms[0]['name']) one = self.get_json('/alarms/%s' % alarms[0]['alarm_id']) - self.assertEqual(one['name'], 'disabled') + self.assertEqual('disabled', one['name']) def test_get_alarm_combination(self): alarms = self.get_json('/alarms', q=[{'field': 'name', 'value': 'name4', }]) - self.assertEqual(alarms[0]['name'], 'name4') - self.assertEqual(alarms[0]['combination_rule']['alarm_ids'], - ['a', 'b']) - self.assertEqual(alarms[0]['combination_rule']['operator'], 'or') + self.assertEqual('name4', alarms[0]['name']) + self.assertEqual(['a', 'b'], + alarms[0]['combination_rule']['alarm_ids']) + self.assertEqual('or', alarms[0]['combination_rule']['operator']) one = self.get_json('/alarms/%s' % alarms[0]['alarm_id']) - self.assertEqual(one['name'], 'name4') - self.assertEqual(alarms[0]['combination_rule']['alarm_ids'], - ['a', 'b']) - self.assertEqual(alarms[0]['combination_rule']['operator'], 'or') - self.assertEqual(one['alarm_id'], alarms[0]['alarm_id']) - self.assertEqual(one['repeat_actions'], alarms[0]['repeat_actions']) + self.assertEqual('name4', one['name']) + self.assertEqual(['a', 'b'], + alarms[0]['combination_rule']['alarm_ids']) + self.assertEqual('or', alarms[0]['combination_rule']['operator']) + self.assertEqual(alarms[0]['alarm_id'], one['alarm_id']) + self.assertEqual(alarms[0]['repeat_actions'], one['repeat_actions']) def test_post_alarm_wsme_workaround(self): jsons = { @@ -309,11 +307,10 @@ for field, json in jsons.iteritems(): resp = self.post_json('/alarms', params=json, expect_errors=True, status=400, headers=self.auth_headers) - self.assertEqual( - resp.json['error_message']['faultstring'], - "Invalid input for field/attribute %s." - " Value: \'None\'. Mandatory field missing." - % field.split('/', 1)[-1]) + self.assertEqual("Invalid input for field/attribute %s." + " Value: \'None\'. Mandatory field missing." + % field.split('/', 1)[-1], + resp.json['error_message']['faultstring']) alarms = list(self.conn.get_alarms()) self.assertEqual(4, len(alarms)) @@ -338,6 +335,35 @@ alarms = list(self.conn.get_alarms()) self.assertEqual(4, len(alarms)) + def test_post_duplicate_time_constraint_name(self): + json = { + 'name': 'added_alarm_duplicate_constraint_name', + 'type': 'threshold', + 'time_constraints': [ + { + 'name': 'testcons', + 'start': '* 11 * * *', + 'duration': 10 + }, + { + 'name': 'testcons', + 'start': '* * * * *', + 'duration': 20 + } + ], + 'threshold_rule': { + 'meter_name': 'ameter', + 'threshold': 300.0 + } + } + resp = self.post_json('/alarms', params=json, expect_errors=True, + status=400, headers=self.auth_headers) + self.assertEqual( + "Time constraint names must be unique for a given alarm.", + resp.json['error_message']['faultstring']) + alarms = list(self.conn.get_alarms()) + self.assertEqual(4, len(alarms)) + def test_post_invalid_alarm_time_constraint_duration(self): json = { 'name': 'added_alarm_invalid_constraint_duration', @@ -409,9 +435,8 @@ resp = self.post_json('/alarms', params=json, expect_errors=True, status=400, headers=self.auth_headers) self.assertEqual( - resp.json['error_message']['faultstring'], - "either threshold_rule or combination_rule " - "must be set") + "threshold_rule must be set for threshold type alarm", + resp.json['error_message']['faultstring']) def test_post_invalid_alarm_statistic(self): json = { @@ -448,6 +473,30 @@ alarms = list(self.conn.get_alarms()) self.assertEqual(4, len(alarms)) + def test_post_invalid_alarm_query_field_type(self): + json = { + 'name': 'added_alarm', + 'type': 'threshold', + 'threshold_rule': { + 'meter_name': 'ameter', + 'query': [{'field': 'metadata.valid', + 'op': 'eq', + 'value': 'value', + 'type': 'blob'}], + 'comparison_operator': 'gt', + 'threshold': 2.0, + 'statistic': 'avg', + } + } + resp = self.post_json('/alarms', params=json, expect_errors=True, + status=400, headers=self.auth_headers) + expected_error_message = 'The data type blob is not supported.' + resp_string = jsonutils.loads(resp.body) + fault_string = resp_string['error_message']['faultstring'] + self.assertTrue(fault_string.startswith(expected_error_message)) + alarms = list(self.conn.get_alarms()) + self.assertEqual(4, len(alarms)) + def test_post_invalid_alarm_have_multiple_rules(self): json = { 'name': 'added_alarm', @@ -468,10 +517,9 @@ status=400, headers=self.auth_headers) alarms = list(self.conn.get_alarms()) self.assertEqual(4, len(alarms)) - self.assertEqual( - resp.json['error_message']['faultstring'], - 'threshold_rule and combination_rule cannot ' - 'be set at the same time') + self.assertEqual('threshold_rule and combination_rule cannot ' + 'be set at the same time', + resp.json['error_message']['faultstring']) def test_post_invalid_alarm_timestamp_in_threshold_rule(self): date_time = datetime.datetime(2012, 7, 2, 10, 41) @@ -544,8 +592,8 @@ storage_key = 'rule' else: storage_key = key - self.assertEqual(getattr(alarm, storage_key), - to_check[key]) + self.assertEqual(to_check[key], + getattr(alarm, storage_key)) break else: self.fail("Alarm not found") @@ -700,27 +748,27 @@ headers=headers) alarms = list(self.conn.get_alarms(enabled=False)) self.assertEqual(1, len(alarms)) - self.assertEqual(alarms[0].user_id, 'auseridthatisnotmine') - self.assertEqual(alarms[0].project_id, 'aprojectidthatisnotmine') + self.assertEqual('auseridthatisnotmine', alarms[0].user_id) + self.assertEqual('aprojectidthatisnotmine', alarms[0].project_id) self._add_default_threshold_rule(json) if alarms[0].name == 'added_alarm': for key in json: if key.endswith('_rule'): storage_key = 'rule' if explicit_project_constraint: - self.assertEqual(getattr(alarms[0], storage_key), - json[key]) + self.assertEqual(json[key], + getattr(alarms[0], storage_key)) else: query = getattr(alarms[0], storage_key).get('query') - self.assertEqual(len(query), 2) + self.assertEqual(2, len(query)) implicit_constraint = { u'field': u'project_id', u'value': u'aprojectidthatisnotmine', u'op': u'eq' } - self.assertEqual(query[1], implicit_constraint) + self.assertEqual(implicit_constraint, query[1]) else: - self.assertEqual(getattr(alarms[0], key), json[key]) + self.assertEqual(json[key], getattr(alarms[0], key)) else: self.fail("Alarm not found") @@ -768,8 +816,8 @@ headers=headers) alarms = list(self.conn.get_alarms(enabled=False)) self.assertEqual(1, len(alarms)) - self.assertEqual(alarms[0].user_id, self.auth_headers['X-User-Id']) - self.assertEqual(alarms[0].project_id, 'aprojectidthatisnotmine') + self.assertEqual(self.auth_headers['X-User-Id'], alarms[0].user_id) + self.assertEqual('aprojectidthatisnotmine', alarms[0].project_id) self._verify_alarm(json, alarms[0], 'added_alarm') def test_post_alarm_as_admin_no_project(self): @@ -804,10 +852,94 @@ headers=headers) alarms = list(self.conn.get_alarms(enabled=False)) self.assertEqual(1, len(alarms)) - self.assertEqual(alarms[0].user_id, 'auseridthatisnotmine') + self.assertEqual('auseridthatisnotmine', alarms[0].user_id) + self.assertEqual(self.auth_headers['X-Project-Id'], + alarms[0].project_id) + self._verify_alarm(json, alarms[0], 'added_alarm') + + @staticmethod + def _alarm_representation_owned_by(identifiers): + json = { + 'name': 'added_alarm', + 'enabled': False, + 'type': 'threshold', + 'ok_actions': ['http://something/ok'], + 'threshold_rule': { + 'meter_name': 'ameter', + 'query': [{'field': 'metadata.field', + 'op': 'eq', + 'value': '5', + 'type': 'string'}], + 'comparison_operator': 'le', + 'statistic': 'count', + 'threshold': 50, + 'evaluation_periods': 3, + 'period': 180, + } + } + for aspect, id in identifiers.iteritems(): + json['%s_id' % aspect] = id + return json + + def _do_test_post_alarm_as_nonadmin_on_behalf_of_another(self, + identifiers): + """Test that posting an alarm as non-admin on behalf of another + user/project fails with an explicit 401 instead of reverting + to the requestor's identity. + """ + json = self._alarm_representation_owned_by(identifiers) + headers = {} + headers.update(self.auth_headers) + headers['X-Roles'] = 'demo' + resp = self.post_json('/alarms', params=json, status=401, + headers=headers) + aspect = 'user' if 'user' in identifiers else 'project' + params = dict(aspect=aspect, id=identifiers[aspect]) + self.assertEqual("Not Authorized to access %(aspect)s %(id)s" % params, + jsonutils.loads(resp.body)['error_message'] + ['faultstring']) + + def test_post_alarm_as_nonadmin_on_behalf_of_another_user(self): + identifiers = dict(user='auseridthatisnotmine') + self._do_test_post_alarm_as_nonadmin_on_behalf_of_another(identifiers) + + def test_post_alarm_as_nonadmin_on_behalf_of_another_project(self): + identifiers = dict(project='aprojectidthatisnotmine') + self._do_test_post_alarm_as_nonadmin_on_behalf_of_another(identifiers) + + def test_post_alarm_as_nonadmin_on_behalf_of_another_creds(self): + identifiers = dict(user='auseridthatisnotmine', + project='aprojectidthatisnotmine') + self._do_test_post_alarm_as_nonadmin_on_behalf_of_another(identifiers) + + def _do_test_post_alarm_as_nonadmin_on_behalf_of_self(self, identifiers): + """Test posting an alarm as non-admin on behalf of own user/project + creates alarm associated with the requestor's identity. + """ + json = self._alarm_representation_owned_by(identifiers) + headers = {} + headers.update(self.auth_headers) + headers['X-Roles'] = 'demo' + self.post_json('/alarms', params=json, status=201, headers=headers) + alarms = list(self.conn.get_alarms(enabled=False)) + self.assertEqual(1, len(alarms)) + self.assertEqual(alarms[0].user_id, + self.auth_headers['X-User-Id']) self.assertEqual(alarms[0].project_id, self.auth_headers['X-Project-Id']) - self._verify_alarm(json, alarms[0], 'added_alarm') + + def test_post_alarm_as_nonadmin_on_behalf_of_own_user(self): + identifiers = dict(user=self.auth_headers['X-User-Id']) + self._do_test_post_alarm_as_nonadmin_on_behalf_of_self(identifiers) + + def test_post_alarm_as_nonadmin_on_behalf_of_own_project(self): + identifiers = dict(project=self.auth_headers['X-Project-Id']) + self._do_test_post_alarm_as_nonadmin_on_behalf_of_self(identifiers) + + def test_post_alarm_as_nonadmin_on_behalf_of_own_creds(self): + identifiers = dict(user=self.auth_headers['X-User-Id'], + project=self.auth_headers['X-Project-Id']) + self._do_test_post_alarm_as_nonadmin_on_behalf_of_self(identifiers) def test_post_alarm_combination(self): json = { @@ -835,8 +967,7 @@ storage_key = 'rule' else: storage_key = key - self.assertEqual(getattr(alarms[0], storage_key), - json[key]) + self.assertEqual(json[key], getattr(alarms[0], storage_key)) else: self.fail("Alarm not found") @@ -930,6 +1061,63 @@ def test_post_combination_alarm_as_admin_success_owner_set(self): self._do_post_combination_alarm_as_admin_success(True) + def test_post_combination_alarm_with_threshold_rule(self): + """Test the creation of an combination alarm with threshold rule. + """ + json = { + 'enabled': False, + 'name': 'added_alarm', + 'state': 'ok', + 'type': 'combination', + 'ok_actions': ['http://something/ok'], + 'alarm_actions': ['http://something/alarm'], + 'insufficient_data_actions': ['http://something/no'], + 'repeat_actions': True, + 'threshold_rule': { + 'meter_name': 'ameter', + 'query': [{'field': 'metadata.field', + 'op': 'eq', + 'value': '5', + 'type': 'string'}], + 'comparison_operator': 'le', + 'statistic': 'count', + 'threshold': 50, + 'evaluation_periods': '3', + 'period': '180', + } + } + resp = self.post_json('/alarms', params=json, + expect_errors=True, status=400, + headers=self.auth_headers) + self.assertEqual( + "combination_rule must be set for combination type alarm", + resp.json['error_message']['faultstring']) + + def test_post_threshold_alarm_with_combination_rule(self): + """Test the creation of an threshold alarm with combination rule. + """ + json = { + 'enabled': False, + 'name': 'added_alarm', + 'state': 'ok', + 'type': 'threshold', + 'ok_actions': ['http://something/ok'], + 'alarm_actions': ['http://something/alarm'], + 'insufficient_data_actions': ['http://something/no'], + 'repeat_actions': True, + 'combination_rule': { + 'alarm_ids': ['a', + 'b'], + 'operator': 'and', + } + } + resp = self.post_json('/alarms', params=json, + expect_errors=True, status=400, + headers=self.auth_headers) + self.assertEqual( + "threshold_rule must be set for threshold type alarm", + resp.json['error_message']['faultstring']) + def _do_post_combination_alarm_as_admin_success(self, owner_is_set): """Test that post a combination alarm as admin on behalf of nobody with an alarm_id of someone else, with owner set or not @@ -965,8 +1153,7 @@ storage_key = 'rule' else: storage_key = key - self.assertEqual(getattr(alarms[0], storage_key), - json[key]) + self.assertEqual(json[key], getattr(alarms[0], storage_key)) else: self.fail("Alarm not found") @@ -1075,8 +1262,8 @@ params=json, headers=headers) alarm = list(self.conn.get_alarms(alarm_id=alarm_id, enabled=False))[0] - self.assertEqual(alarm.user_id, 'myuserid') - self.assertEqual(alarm.project_id, 'myprojectid') + self.assertEqual('myuserid', alarm.user_id) + self.assertEqual('myprojectid', alarm.project_id) self._verify_alarm(json, alarm) def test_put_alarm_wrong_field(self): @@ -1115,7 +1302,47 @@ resp = self.put_json('/alarms/%s' % alarm_id, params=json, headers=self.auth_headers) - self.assertEqual(resp.status_code, 200) + self.assertEqual(200, resp.status_code) + + def test_put_alarm_with_existing_name(self): + """Test that update a threshold alarm with an existing name. + """ + json = { + 'enabled': False, + 'name': 'name1', + 'state': 'ok', + 'type': 'threshold', + 'ok_actions': ['http://something/ok'], + 'alarm_actions': ['http://something/alarm'], + 'insufficient_data_actions': ['http://something/no'], + 'repeat_actions': True, + 'threshold_rule': { + 'meter_name': 'ameter', + 'query': [{'field': 'metadata.field', + 'op': 'eq', + 'value': '5', + 'type': 'string'}], + 'comparison_operator': 'le', + 'statistic': 'count', + 'threshold': 50, + 'evaluation_periods': 3, + 'period': 180, + } + } + data = self.get_json('/alarms', + q=[{'field': 'name', + 'value': 'name2', + }]) + self.assertEqual(1, len(data)) + alarm_id = data[0]['alarm_id'] + + resp = self.put_json('/alarms/%s' % alarm_id, + expect_errors=True, status=409, + params=json, + headers=self.auth_headers) + self.assertEqual( + 'Alarm with name=name1 exists', + resp.json['error_message']['faultstring']) def test_delete_alarm(self): data = self.get_json('/alarms') @@ -1124,7 +1351,7 @@ resp = self.delete('/alarms/%s' % data[0]['alarm_id'], headers=self.auth_headers, status=204) - self.assertEqual(resp.body, '') + self.assertEqual('', resp.body) alarms = list(self.conn.get_alarms()) self.assertEqual(3, len(alarms)) @@ -1134,7 +1361,7 @@ resp = self.get_json('/alarms/%s/state' % data[0]['alarm_id'], headers=self.auth_headers) - self.assertEqual(data[0]['state'], resp) + self.assertEqual(resp, data[0]['state']) def test_set_state_alarm(self): data = self.get_json('/alarms') @@ -1145,8 +1372,8 @@ params='alarm') alarms = list(self.conn.get_alarms(alarm_id=data[0]['alarm_id'])) self.assertEqual(1, len(alarms)) - self.assertEqual(alarms[0].state, 'alarm') - self.assertEqual(resp.json, 'alarm') + self.assertEqual('alarm', alarms[0].state) + self.assertEqual('alarm', resp.json) def test_set_invalid_state_alarm(self): data = self.get_json('/alarms') @@ -1172,7 +1399,7 @@ headers=auth_headers or self.auth_headers, expect_errors=expect_errors) if expect_errors: - self.assertEqual(resp.status_code, status) + self.assertEqual(status, resp.status_code) return resp def _update_alarm(self, alarm, updated_data, auth_headers=None): @@ -1471,13 +1698,13 @@ self.post_json('/alarms', params=json, headers=self.auth_headers) calls = notifier.call_args_list - self.assertEqual(len(calls), 1) + self.assertEqual(1, len(calls)) args, _ = calls[0] context, publisher, event_type, priority, payload = args self.assertTrue(publisher.startswith('ceilometer.api')) - self.assertEqual(event_type, 'alarm.creation') - self.assertEqual(priority, 'INFO') - self.assertEqual(payload['detail']['name'], 'sent_notification') + self.assertEqual('alarm.creation', event_type) + self.assertEqual('INFO', priority) + self.assertEqual('sent_notification', payload['detail']['name']) self.assertTrue(set(['alarm_id', 'detail', 'event_id', 'on_behalf_of', 'project_id', 'timestamp', 'type', 'user_id']).issubset(payload.keys())) @@ -1491,13 +1718,13 @@ headers=self.auth_headers, status=204) calls = notifier.call_args_list - self.assertEqual(len(calls), 1) + self.assertEqual(1, len(calls)) args, _ = calls[0] context, publisher, event_type, priority, payload = args self.assertTrue(publisher.startswith('ceilometer.api')) - self.assertEqual(event_type, 'alarm.deletion') - self.assertEqual(priority, 'INFO') - self.assertEqual(payload['detail']['name'], 'name1') + self.assertEqual('alarm.deletion', event_type) + self.assertEqual('INFO', priority) + self.assertEqual('name1', payload['detail']['name']) self.assertTrue(set(['alarm_id', 'detail', 'event_id', 'on_behalf_of', 'project_id', 'timestamp', 'type', 'user_id']).issubset(payload.keys())) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_app.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_app.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_app.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_app.py 2014-03-31 15:32:25.000000000 +0000 @@ -80,7 +80,7 @@ def test_pecan_extension_guessing_unset(self): # check Pecan does not assume .jpg is an extension response = self.app.get(self.PATH_PREFIX + '/meters/meter.jpg') - self.assertEqual(response.content_type, 'application/json') + self.assertEqual('application/json', response.content_type) class TestApiMiddleware(FunctionalTest): @@ -103,16 +103,16 @@ headers={"Accept": "application/json"} ) - self.assertEqual(response.status_int, 404) - self.assertEqual(response.content_type, "application/json") + self.assertEqual(404, response.status_int) + self.assertEqual("application/json", response.content_type) self.assertTrue(response.json['error_message']) response = self.get_json('/invalid_path', expect_errors=True, headers={"Accept": "application/json,application/xml"} ) - self.assertEqual(response.status_int, 404) - self.assertEqual(response.content_type, "application/json") + self.assertEqual(404, response.status_int) + self.assertEqual("application/json", response.content_type) self.assertTrue(response.json['error_message']) response = self.get_json('/invalid_path', expect_errors=True, @@ -120,22 +120,22 @@ "application/xml;q=0.8, \ application/json"} ) - self.assertEqual(response.status_int, 404) - self.assertEqual(response.content_type, "application/json") + self.assertEqual(404, response.status_int) + self.assertEqual("application/json", response.content_type) self.assertTrue(response.json['error_message']) response = self.get_json('/invalid_path', expect_errors=True ) - self.assertEqual(response.status_int, 404) - self.assertEqual(response.content_type, "application/json") + self.assertEqual(404, response.status_int) + self.assertEqual("application/json", response.content_type) self.assertTrue(response.json['error_message']) response = self.get_json('/invalid_path', expect_errors=True, headers={"Accept": "text/html,*/*"} ) - self.assertEqual(response.status_int, 404) - self.assertEqual(response.content_type, "application/json") + self.assertEqual(404, response.status_int) + self.assertEqual("application/json", response.content_type) self.assertTrue(response.json['error_message']) def test_json_parsable_error_middleware_translation_400(self): @@ -148,11 +148,11 @@ headers={"Accept": "application/json"} ) - self.assertEqual(response.status_int, 400) - self.assertEqual(response.content_type, "application/json") + self.assertEqual(400, response.status_int) + self.assertEqual("application/json", response.content_type) self.assertTrue(response.json['error_message']) - self.assertEqual(response.json['error_message']['faultstring'], - self.no_lang_translated_error) + self.assertEqual(self.no_lang_translated_error, + response.json['error_message']['faultstring']) def test_xml_parsable_error_middleware_404(self): response = self.get_json('/invalid_path', @@ -160,18 +160,18 @@ headers={"Accept": "application/xml,*/*"} ) - self.assertEqual(response.status_int, 404) - self.assertEqual(response.content_type, "application/xml") - self.assertEqual(response.xml.tag, 'error_message') + self.assertEqual(404, response.status_int) + self.assertEqual("application/xml", response.content_type) + self.assertEqual('error_message', response.xml.tag) response = self.get_json('/invalid_path', expect_errors=True, headers={"Accept": "application/json;q=0.8 \ ,application/xml"} ) - self.assertEqual(response.status_int, 404) - self.assertEqual(response.content_type, "application/xml") - self.assertEqual(response.xml.tag, 'error_message') + self.assertEqual(404, response.status_int) + self.assertEqual("application/xml", response.content_type) + self.assertEqual('error_message', response.xml.tag) def test_xml_parsable_error_middleware_translation_400(self): # Ensure translated messages get placed properly into xml faults @@ -183,12 +183,12 @@ headers={"Accept": "application/xml,*/*"} ) - self.assertEqual(response.status_int, 400) - self.assertEqual(response.content_type, "application/xml") - self.assertEqual(response.xml.tag, 'error_message') + self.assertEqual(400, response.status_int) + self.assertEqual("application/xml", response.content_type) + self.assertEqual('error_message', response.xml.tag) fault = response.xml.findall('./error/faultstring') for fault_string in fault: - self.assertEqual(fault_string.text, self.no_lang_translated_error) + self.assertEqual(self.no_lang_translated_error, fault_string.text) def test_best_match_language(self): # Ensure that we are actually invoking language negotiation @@ -203,18 +203,19 @@ "en-US"} ) - self.assertEqual(response.status_int, 400) - self.assertEqual(response.content_type, "application/xml") - self.assertEqual(response.xml.tag, 'error_message') + self.assertEqual(400, response.status_int) + self.assertEqual("application/xml", response.content_type) + self.assertEqual('error_message', response.xml.tag) fault = response.xml.findall('./error/faultstring') for fault_string in fault: - self.assertEqual(fault_string.text, self.en_US_translated_error) + self.assertEqual(self.en_US_translated_error, fault_string.text) def test_translated_then_untranslated_error(self): resp = self.get_json('/alarms/alarm-id-3', expect_errors=True) - self.assertEqual(resp.status_code, 404) - self.assertEqual(json.loads(resp.body)['error_message'] - ['faultstring'], "Alarm alarm-id-3 Not Found") + self.assertEqual(404, resp.status_code) + self.assertEqual("Alarm alarm-id-3 Not Found", + json.loads(resp.body)['error_message'] + ['faultstring']) with mock.patch('ceilometer.api.controllers.v2.EntityNotFound') \ as CustomErrorClass: @@ -222,6 +223,7 @@ "untranslated_error", status_code=404) resp = self.get_json('/alarms/alarm-id-5', expect_errors=True) - self.assertEqual(resp.status_code, 404) - self.assertEqual(json.loads(resp.body)['error_message'] - ['faultstring'], "untranslated_error") + self.assertEqual(404, resp.status_code) + self.assertEqual("untranslated_error", + json.loads(resp.body)['error_message'] + ['faultstring']) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_capabilities.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_capabilities.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_capabilities.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_capabilities.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,37 @@ +# -*- encoding: utf-8 -*- +# +# Copyright Ericsson AB 2014. All rights reserved +# +# Authors: Ildiko Vancsa +# +# 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. + +import testscenarios + +from ceilometer.tests.api import v2 as tests_api +from ceilometer.tests import db as tests_db + +load_tests = testscenarios.load_tests_apply_scenarios + + +class TestCapabilitiesController(tests_api.FunctionalTest, + tests_db.MixinTestsWithBackendScenarios): + + def setUp(self): + super(TestCapabilitiesController, self).setUp() + self.url = '/capabilities' + + def test_capabilities(self): + data = self.get_json(self.url) + self.assertIsNotNone(data) + self.assertNotEqual({}, data) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_complex_query.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_complex_query.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_complex_query.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_complex_query.py 2014-03-31 15:32:25.000000000 +0000 @@ -29,27 +29,32 @@ class FakeComplexQuery(api.ValidatedComplexQuery): - def __init__(self, db_model, additional_valid_keys, metadata=False): + def __init__(self, db_model, additional_name_mapping={}, metadata=False): super(FakeComplexQuery, self).__init__(query=None, db_model=db_model, - additional_valid_keys= - additional_valid_keys, + additional_name_mapping= + additional_name_mapping, metadata_allowed=metadata) +sample_name_mapping = {"resource": "resource_id", + "meter": "counter_name", + "type": "counter_type", + "unit": "counter_unit", + "volume": "counter_volume"} + + class TestComplexQuery(test.BaseTestCase): def setUp(self): super(TestComplexQuery, self).setUp() self.useFixture(fixtures.MonkeyPatch( 'pecan.response', mock.MagicMock())) self.query = FakeComplexQuery(storage.models.Sample, - ["user", "project", "resource"], + sample_name_mapping, True) - self.query_alarm = FakeComplexQuery(storage.models.Alarm, - ["user", "project"]) + self.query_alarm = FakeComplexQuery(storage.models.Alarm) self.query_alarmchange = FakeComplexQuery( - storage.models.AlarmChange, - ["user", "project"]) + storage.models.AlarmChange) def test_replace_isotime_utc(self): filter_expr = {"=": {"timestamp": "2013-12-05T19:38:29Z"}} @@ -231,7 +236,7 @@ def setUp(self): super(TestFilterSyntaxValidation, self).setUp() self.query = FakeComplexQuery(storage.models.Sample, - ["user", "project", "resource"], + sample_name_mapping, True) def test_simple_operator(self): diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_complex_query_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_complex_query_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_complex_query_scenarios.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_complex_query_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -67,7 +67,7 @@ sample.Sample('meter.test', 'cumulative', '', - 1, + 2, 'user-id2', 'project-id2', 'resource-id2', @@ -81,7 +81,7 @@ sample.Sample('meter.test', 'cumulative', '', - 1, + 3, 'user-id3', 'project-id3', 'resource-id3', @@ -224,6 +224,15 @@ for sample in data.json: self.assertIn(sample['user_id'], set(["user-id2"])) + def test_query_with_field_name_meter(self): + data = self.post_json(self.url, + params={"filter": + '{"=": {"meter": "meter.test"}}'}) + + self.assertEqual(3, len(data.json)) + for sample in data.json: + self.assertIn(sample['meter'], set(["meter.test"])) + def test_query_with_lower_and_upper_case_orderby(self): data = self.post_json(self.url, params={"orderby": '[{"project_id": "DeSc"}]'}) @@ -240,6 +249,14 @@ self.assertEqual(["user-id1", "user-id2", "user-id3"], [s["user_id"] for s in data.json]) + def test_query_with_volume_field_name_orderby(self): + data = self.post_json(self.url, + params={"orderby": '[{"volume": "deSc"}]'}) + + self.assertEqual(3, len(data.json)) + self.assertEqual([3, 2, 1], + [s["volume"] for s in data.json]) + def test_query_with_missing_order_in_orderby(self): data = self.post_json(self.url, params={"orderby": '[{"project_id": ""}]'}, diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_compute_duration_by_resource_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_compute_duration_by_resource_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_compute_duration_by_resource_scenarios.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_compute_duration_by_resource_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -99,46 +99,46 @@ def test_before_range(self): with self._patch_get_interval(self.early1, self.early2): data = self._invoke_api() - self.assertEqual(data, []) + self.assertEqual([], data) def _assert_times_match(self, actual, expected): if actual: actual = timeutils.parse_isotime(actual) actual = actual.replace(tzinfo=None) - self.assertEqual(actual, expected) + self.assertEqual(expected, actual) def test_overlap_range_start(self): with self._patch_get_interval(self.early1, self.middle1): data = self._invoke_api() self._assert_times_match(data[0]['duration_start'], self.start) self._assert_times_match(data[0]['duration_end'], self.middle1) - self.assertEqual(data[0]['duration'], 8 * 60 * 60) + self.assertEqual(8 * 60 * 60, data[0]['duration']) def test_within_range(self): with self._patch_get_interval(self.middle1, self.middle2): data = self._invoke_api() self._assert_times_match(data[0]['duration_start'], self.middle1) self._assert_times_match(data[0]['duration_end'], self.middle2) - self.assertEqual(data[0]['duration'], 10 * 60 * 60) + self.assertEqual(10 * 60 * 60, data[0]['duration']) def test_within_range_zero_duration(self): with self._patch_get_interval(self.middle1, self.middle1): data = self._invoke_api() self._assert_times_match(data[0]['duration_start'], self.middle1) self._assert_times_match(data[0]['duration_end'], self.middle1) - self.assertEqual(data[0]['duration'], 0) + self.assertEqual(0, data[0]['duration']) def test_overlap_range_end(self): with self._patch_get_interval(self.middle2, self.late1): data = self._invoke_api() self._assert_times_match(data[0]['duration_start'], self.middle2) self._assert_times_match(data[0]['duration_end'], self.end) - self.assertEqual(data[0]['duration'], ((6 * 60) - 1) * 60) + self.assertEqual(((6 * 60) - 1) * 60, data[0]['duration']) def test_after_range(self): with self._patch_get_interval(self.late1, self.late2): data = self._invoke_api() - self.assertEqual(data, []) + self.assertEqual([], data) def test_without_end_timestamp(self): statistics = [ diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_event_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_event_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_event_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_event_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -93,28 +93,28 @@ path = self.PATH % "NO_SUCH_EVENT_TYPE" data = self.get_json(path, headers=headers) - self.assertEqual(data, []) + self.assertEqual([], data) def test_get_trait_data_for_event(self): path = (self.PATH % "Foo") + "/trait_A" data = self.get_json(path, headers=headers) - self.assertEqual(len(data), 1) + self.assertEqual(1, len(data)) trait = data[0] - self.assertEqual(trait['name'], "trait_A") + self.assertEqual("trait_A", trait['name']) def test_get_trait_data_for_non_existent_event(self): path = (self.PATH % "NO_SUCH_EVENT") + "/trait_A" data = self.get_json(path, headers=headers) - self.assertEqual(data, []) + self.assertEqual([], data) def test_get_trait_data_for_non_existent_trait(self): path = (self.PATH % "Foo") + "/no_such_trait" data = self.get_json(path, headers=headers) - self.assertEqual(data, []) + self.assertEqual([], data) class TestEventAPI(EventTestBase): @@ -123,7 +123,7 @@ def test_get_events(self): data = self.get_json(self.PATH, headers=headers) - self.assertEqual(len(data), 3) + self.assertEqual(3, len(data)) # We expect to get native UTC generated time back expected_generated = timeutils.strtime( at=timeutils.normalize_time(self.trait_time), @@ -131,7 +131,7 @@ for event in data: self.assertTrue(event['event_type'] in ['Foo', 'Bar', 'Zoo']) self.assertEqual(4, len(event['traits'])) - self.assertEqual(event['generated'], expected_generated) + self.assertEqual(expected_generated, event['generated']) for trait_name in ['trait_A', 'trait_B', 'trait_C', 'trait_D']: self.assertTrue(trait_name in map(lambda x: x['name'], @@ -173,7 +173,7 @@ 'value': 'my_Foo_text', 'type': 'string'}]) self.assertEqual(1, len(data)) - self.assertEqual(data[0]['event_type'], 'Foo') + self.assertEqual('Foo', data[0]['event_type']) def test_get_events_filter_int_trait(self): data = self.get_json(self.PATH, headers=headers, @@ -181,14 +181,12 @@ 'value': '101', 'type': 'integer'}]) self.assertEqual(1, len(data)) - self.assertEqual(data[0]['event_type'], 'Bar') + self.assertEqual('Bar', data[0]['event_type']) traits = filter(lambda x: x['name'] == 'trait_B', data[0]['traits']) self.assertEqual(1, len(traits)) - self.assertEqual(traits[0]['type'], - 'integer') - self.assertEqual(traits[0]['value'], - '101') + self.assertEqual('integer', traits[0]['type']) + self.assertEqual('101', traits[0]['value']) def test_get_events_filter_float_trait(self): data = self.get_json(self.PATH, headers=headers, @@ -196,14 +194,12 @@ 'value': '200.123456', 'type': 'float'}]) self.assertEqual(1, len(data)) - self.assertEqual(data[0]['event_type'], 'Zoo') + self.assertEqual('Zoo', data[0]['event_type']) traits = filter(lambda x: x['name'] == 'trait_C', data[0]['traits']) self.assertEqual(1, len(traits)) - self.assertEqual(traits[0]['type'], - 'float') - self.assertEqual(traits[0]['value'], - '200.123456') + self.assertEqual('float', traits[0]['type']) + self.assertEqual('200.123456', traits[0]['value']) def test_get_events_filter_datetime_trait(self): data = self.get_json(self.PATH, headers=headers, @@ -213,10 +209,8 @@ self.assertEqual(3, len(data)) traits = filter(lambda x: x['name'] == 'trait_D', data[0]['traits']) self.assertEqual(1, len(traits)) - self.assertEqual(traits[0]['type'], - 'datetime') - self.assertEqual(traits[0]['value'], - self.trait_time.isoformat()) + self.assertEqual('datetime', traits[0]['type']) + self.assertEqual(self.trait_time.isoformat(), traits[0]['value']) def test_get_events_multiple_filters(self): data = self.get_json(self.PATH, headers=headers, @@ -227,7 +221,7 @@ 'value': 'my_Foo_text', 'type': 'string'}]) self.assertEqual(1, len(data)) - self.assertEqual(data[0]['event_type'], 'Foo') + self.assertEqual('Foo', data[0]['event_type']) def test_get_events_multiple_filters_no_matches(self): data = self.get_json(self.PATH, headers=headers, diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_list_events_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_list_events_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_list_events_scenarios.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_list_events_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -88,8 +88,8 @@ data = self.get_json('/meters/instance') self.assertEqual(2, len(data)) for s in data: - self.assertEqual(s['recorded_at'], - timeutils.utcnow.override_time.isoformat()) + self.assertEqual(timeutils.utcnow.override_time.isoformat(), + s['recorded_at']) def test_all_trailing_slash(self): data = self.get_json('/meters/instance/') @@ -172,9 +172,9 @@ sample = data[0] self.assertIn('resource_metadata', sample) self.assertEqual( - list(sorted(sample['resource_metadata'].iteritems())), [('dict_properties.key', 'value'), ('display_name', 'test-server'), ('not_ignored_list', "['returned']"), ('tag', 'self.sample'), - ]) + ], + list(sorted(sample['resource_metadata'].iteritems()))) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_list_meters_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_list_meters_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_list_meters_scenarios.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_list_meters_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -164,15 +164,15 @@ def test_list_meters(self): data = self.get_json('/meters') self.assertEqual(4, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id', + self.assertEqual(set(['resource-id', 'resource-id2', 'resource-id3', - 'resource-id4'])) - self.assertEqual(set(r['name'] for r in data), - set(['meter.test', 'meter.mine'])) - self.assertEqual(set(r['source'] for r in data), - set(['test_source', 'test_source1'])) + 'resource-id4']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test', 'meter.mine']), + set(r['name'] for r in data)) + self.assertEqual(set(['test_source', 'test_source1']), + set(r['source'] for r in data)) def test_meters_query_with_timestamp(self): date_time = datetime.datetime(2012, 7, 2, 10, 41) @@ -182,28 +182,85 @@ 'op': 'gt', 'value': isotime}], expect_errors=True) - self.assertEqual(resp.status_code, 400) - self.assertEqual(jsonutils.loads(resp.body)['error_message'] - ['faultstring'], - 'Unknown argument: "timestamp": ' - 'not valid for this resource') + self.assertEqual(400, resp.status_code) + self.assertEqual('Unknown argument: "timestamp": ' + 'not valid for this resource', + jsonutils.loads(resp.body)['error_message'] + ['faultstring']) def test_list_samples(self): + data = self.get_json('/samples') + self.assertEqual(5, len(data)) + + def test_query_samples_with_invalid_field_name_and_non_eq_operator(self): + resp = self.get_json('/samples', + q=[{'field': 'non_valid_field_name', + 'op': 'gt', + 'value': 3}], + expect_errors=True) + resp_string = jsonutils.loads(resp.body) + fault_string = resp_string['error_message']['faultstring'] + expected_error_message = ('Unknown argument: "non_valid_field_name"' + ': unrecognized field in query: ' + '[]') + self.assertEqual(400, resp.status_code) + self.assertTrue(fault_string.startswith(expected_error_message)) + + def test_query_samples_with_invalid_field_name_and_eq_operator(self): + resp = self.get_json('/samples', + q=[{'field': 'non_valid_field_name', + 'op': 'eq', + 'value': 3}], + expect_errors=True) + resp_string = jsonutils.loads(resp.body) + fault_string = resp_string['error_message']['faultstring'] + expected_error_message = ('Unknown argument: "non_valid_field_name"' + ': unrecognized field in query: ' + '[]') + self.assertEqual(400, resp.status_code) + self.assertTrue(fault_string.startswith(expected_error_message)) + + def test_query_samples_with_invalid_operator_and_valid_field_name(self): + resp = self.get_json('/samples', + q=[{'field': 'project_id', + 'op': 'lt', + 'value': '3'}], + expect_errors=True) + resp_string = jsonutils.loads(resp.body) + fault_string = resp_string['error_message']['faultstring'] + expected_error_message = ("Invalid input for field/attribute op. " + + "Value: 'lt'. unimplemented operator for" + + " project_id") + self.assertEqual(400, resp.status_code) + self.assertEqual(fault_string, expected_error_message) + + def test_list_meters_query_wrong_type_metadata(self): + resp = self.get_json('/meters/meter.test', + q=[{'field': 'metadata.size', + 'op': 'eq', + 'value': '0', + 'type': 'blob'}], + expect_errors=True + ) + expected_error_message = 'The data type blob is not supported.' + resp_string = jsonutils.loads(resp.body) + fault_string = resp_string['error_message']['faultstring'] + self.assertTrue(fault_string.startswith(expected_error_message)) + + def test_query_samples_with_search_offset(self): resp = self.get_json('/samples', q=[{'field': 'search_offset', 'op': 'eq', 'value': 42}], expect_errors=True) - self.assertEqual(resp.status_code, 400) - self.assertEqual(jsonutils.loads(resp.body)['error_message'] - ['faultstring'], - "Invalid input for field/attribute field. " + self.assertEqual(400, resp.status_code) + self.assertEqual("Invalid input for field/attribute field. " "Value: 'search_offset'. " - "search_offset cannot be used without timestamp") - - def test_query_samples_with_search_offset(self): - data = self.get_json('/samples') - self.assertEqual(5, len(data)) + "search_offset cannot be used without timestamp", + jsonutils.loads(resp.body)['error_message'] + ['faultstring']) def test_list_meters_with_dict_metadata(self): data = self.get_json('/meters/meter.mine', @@ -224,7 +281,7 @@ data = self.get_json('/samples/%s' % sample_id) self.assertIn('id', data) del data['recorded_at'] - self.assertEqual(data, { + self.assertEqual({ u'id': sample_id, u'metadata': {u'display_name': u'test-server', u'is_public': u'False', @@ -239,14 +296,14 @@ u'unit': u'', u'source': 'test_source', u'user_id': u'user-id', - u'volume': 3.0}) + u'volume': 3.0}, data) def test_get_not_existing_sample(self): resp = self.get_json('/samples/not_exists', expect_errors=True, status=404) - self.assertEqual(jsonutils.loads(resp.body)['error_message'] - ['faultstring'], - "Sample not_exists Not Found") + self.assertEqual("Sample not_exists Not Found", + jsonutils.loads(resp.body)['error_message'] + ['faultstring']) def test_list_samples_with_dict_metadata(self): data = self.get_json('/samples', @@ -258,7 +315,7 @@ self.assertIn('id', data[0]) del data[0]['id'] # Randomly generated del data[0]['recorded_at'] - self.assertEqual(data, [{ + self.assertEqual([{ u'user_id': u'user-id4', u'resource_id': u'resource-id4', u'timestamp': u'2012-07-02T10:43:00', @@ -275,7 +332,7 @@ u'properties.prop_1': u'prop_value', u'is_public': u'True', u'size': u'0'} - }]) + }], data) def test_list_meters_metadata_query(self): data = self.get_json('/meters/meter.test', @@ -284,10 +341,10 @@ 'value': 'self.sample1', }],) self.assertEqual(1, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) + self.assertEqual(set(['resource-id']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) def test_list_meters_resource_metadata_query(self): # NOTE(jd) Same test as above, but with the alias resource_metadata @@ -298,10 +355,10 @@ 'value': 'self.sample1', }],) self.assertEqual(1, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) + self.assertEqual(set(['resource-id']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) def test_list_meters_multi_metadata_query(self): data = self.get_json('/meters/meter.test', @@ -314,10 +371,10 @@ 'value': 'test-server', }],) self.assertEqual(1, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) + self.assertEqual(set(['resource-id']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) def test_list_meters_query_integer_metadata(self): data = self.get_json('/meters/meter.test', @@ -327,13 +384,13 @@ 'type': 'integer'}] ) self.assertEqual(2, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id', - 'resource-id3'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) - self.assertEqual(set(r['resource_metadata']['size'] for r in data), - set(['0'])) + self.assertEqual(set(['resource-id', + 'resource-id3']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) + self.assertEqual(set(['0']), + set(r['resource_metadata']['size'] for r in data)) def test_list_meters_query_float_metadata(self): data = self.get_json('/meters/meter.test', @@ -343,13 +400,13 @@ 'type': 'float'}] ) self.assertEqual(2, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id', - 'resource-id3'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) - self.assertEqual(set(r['resource_metadata']['util'] for r in data), - set(['0.75'])) + self.assertEqual(set(['resource-id', + 'resource-id3']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) + self.assertEqual(set(['0.75']), + set(r['resource_metadata']['util'] for r in data)) def test_list_meters_query_boolean_metadata(self): data = self.get_json('/meters/meter.mine', @@ -359,12 +416,13 @@ 'type': 'boolean'}] ) self.assertEqual(1, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id2'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.mine'])) - self.assertEqual(set(r['resource_metadata']['is_public'] for r - in data), set(['False'])) + self.assertEqual(set(['resource-id2']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.mine']), + set(r['counter_name'] for r in data)) + self.assertEqual(set(['False']), + set(r['resource_metadata']['is_public'] + for r in data)) def test_list_meters_query_string_metadata(self): data = self.get_json('/meters/meter.test', @@ -373,12 +431,12 @@ 'value': 'self.sample'}] ) self.assertEqual(1, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) - self.assertEqual(set(r['resource_metadata']['tag'] for r in data), - set(['self.sample'])) + self.assertEqual(set(['resource-id']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) + self.assertEqual(set(['self.sample']), + set(r['resource_metadata']['tag'] for r in data)) def test_list_meters_query_integer_float_metadata_without_type(self): data = self.get_json('/meters/meter.test', @@ -390,14 +448,14 @@ 'value': '0.75'}] ) self.assertEqual(1, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id3'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) - self.assertEqual(set(r['resource_metadata']['size'] for r in data), - set(['0'])) - self.assertEqual(set(r['resource_metadata']['util'] for r in data), - set(['0.75'])) + self.assertEqual(set(['resource-id3']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) + self.assertEqual(set(['0']), + set(r['resource_metadata']['size'] for r in data)) + self.assertEqual(set(['0.75']), + set(r['resource_metadata']['util'] for r in data)) def test_with_resource(self): data = self.get_json('/meters', q=[{'field': 'resource_id', @@ -433,10 +491,10 @@ 'value': 'self.sample2', }]) self.assertEqual(1, len(data)) - self.assertEqual(set(r['resource_id'] for r in data), - set(['resource-id2'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.mine'])) + self.assertEqual(set(['resource-id2']), + set(r['resource_id'] for r in data)) + self.assertEqual(set(['meter.mine']), + set(r['counter_name'] for r in data)) def test_with_source(self): data = self.get_json('/meters', q=[{'field': 'source', @@ -461,9 +519,10 @@ 'value': 'self.sample2', }]) self.assertEqual(1, len(data)) - self.assertEqual(set(r['source'] for r in data), set(['test_source'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.mine'])) + self.assertEqual(set(['test_source']), + set(r['source'] for r in data)) + self.assertEqual(set(['meter.mine']), + set(r['counter_name'] for r in data)) def test_with_source_non_existent(self): data = self.get_json('/meters', @@ -519,9 +578,9 @@ 'value': 'self.sample1', }]) self.assertEqual(1, len(data)) - self.assertEqual(set(r['user_id'] for r in data), set(['user-id'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) + self.assertEqual(set(['user-id']), set(r['user_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) def test_with_user_non_existent(self): data = self.get_json('/meters', @@ -529,7 +588,7 @@ 'value': 'user-id-foobar123', }], ) - self.assertEqual(data, []) + self.assertEqual([], data) def test_with_project(self): data = self.get_json('/meters', @@ -569,10 +628,10 @@ 'value': 'self.sample1', }]) self.assertEqual(1, len(data)) - self.assertEqual(set(r['project_id'] for r in data), - set(['project-id'])) - self.assertEqual(set(r['counter_name'] for r in data), - set(['meter.test'])) + self.assertEqual(set(['project-id']), + set(r['project_id'] for r in data)) + self.assertEqual(set(['meter.test']), + set(r['counter_name'] for r in data)) def test_with_project_non_existent(self): data = self.get_json('/meters', @@ -580,7 +639,7 @@ 'value': 'jd-was-here', }], ) - self.assertEqual(data, []) + self.assertEqual([], data) def test_list_meters_meter_id(self): data = self.get_json('/meters') diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_list_resources_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_list_resources_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_list_resources_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_list_resources_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -49,9 +49,9 @@ def _verify_sample_timestamps(self, res, first, last): self.assertTrue('first_sample_timestamp' in res) - self.assertEqual(res['first_sample_timestamp'], self._isotime(first)) + self.assertEqual(self._isotime(first), res['first_sample_timestamp']) self.assertTrue('last_sample_timestamp' in res) - self.assertEqual(res['last_sample_timestamp'], self._isotime(last)) + self.assertEqual(self._isotime(last), res['last_sample_timestamp']) def test_instance_no_metadata(self): timestamp = datetime.datetime(2012, 7, 2, 10, 40) @@ -294,16 +294,16 @@ self.conn.record_metering_data(msg2) resp1 = self.get_json('/resources/resource-id-1') - self.assertEqual(resp1["resource_id"], "resource-id-1") + self.assertEqual("resource-id-1", resp1["resource_id"]) resp2 = self.get_json('/resources/resource-id-2') - self.assertEqual(resp2["resource_id"], "resource-id-2") + self.assertEqual("resource-id-2", resp2["resource_id"]) resp3 = self.get_json('/resources/resource-id-3', expect_errors=True) - self.assertEqual(resp3.status_code, 404) - self.assertEqual(json.loads(resp3.body)['error_message'] - ['faultstring'], - "Resource resource-id-3 Not Found") + self.assertEqual(404, resp3.status_code) + self.assertEqual("Resource resource-id-3 Not Found", + json.loads(resp3.body)['error_message'] + ['faultstring']) def test_with_user(self): sample1 = sample.Sample( @@ -478,13 +478,11 @@ data = self.get_json('/resources') metadata = data[0]['metadata'] - self.assertEqual( - [(u'dict_properties.key', u'value'), - (u'display_name', u'test-server'), - (u'not_ignored_list', u"['returned']"), - (u'tag', u'self.sample') - ], - list(sorted(metadata.iteritems()))) + self.assertEqual([(u'dict_properties.key', u'value'), + (u'display_name', u'test-server'), + (u'not_ignored_list', u"['returned']"), + (u'tag', u'self.sample')], + list(sorted(metadata.iteritems()))) def test_resource_meter_links(self): sample1 = sample.Sample( @@ -509,11 +507,39 @@ data = self.get_json('/resources') links = data[0]['links'] - self.assertEqual(len(links), 2) - self.assertEqual(links[0]['rel'], 'self') + self.assertEqual(2, len(links)) + self.assertEqual('self', links[0]['rel']) self.assertTrue((self.PATH_PREFIX + '/resources/resource-id') in links[0]['href']) - self.assertEqual(links[1]['rel'], 'instance') + self.assertEqual('instance', links[1]['rel']) self.assertTrue((self.PATH_PREFIX + '/meters/instance?' 'q.field=resource_id&q.value=resource-id') in links[1]['href']) + + def test_resource_skip_meter_links(self): + sample1 = sample.Sample( + 'instance', + 'cumulative', + '', + 1, + 'user-id', + 'project-id', + 'resource-id', + timestamp=datetime.datetime(2012, 7, 2, 10, 40), + resource_metadata={'display_name': 'test-server', + 'tag': 'self.sample', + }, + source='test_list_resources', + ) + msg = utils.meter_message_from_counter( + sample1, + self.CONF.publisher.metering_secret, + ) + self.conn.record_metering_data(msg) + + data = self.get_json('/resources?meter_links=0') + links = data[0]['links'] + self.assertEqual(len(links), 1) + self.assertEqual(links[0]['rel'], 'self') + self.assertTrue((self.PATH_PREFIX + '/resources/resource-id') + in links[0]['href']) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_post_samples_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_post_samples_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_post_samples_scenarios.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_post_samples_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -84,8 +84,8 @@ data = self.post_json('/meters/my_counter_name/', s1, expect_errors=True) - self.assertEqual(data.status_int, 400) - self.assertEqual(len(self.published), 0) + self.assertEqual(400, data.status_int) + self.assertEqual(0, len(self.published)) def test_messsage_id_provided(self): """Do not accept sample with message_id.""" @@ -104,8 +104,8 @@ data = self.post_json('/meters/my_counter_name/', s1, expect_errors=True) - self.assertEqual(data.status_int, 400) - self.assertEqual(len(self.published), 0) + self.assertEqual(400, data.status_int) + self.assertEqual(0, len(self.published)) def test_wrong_project_id(self): """Do not accept cross posting samples to different projects.""" @@ -129,8 +129,8 @@ "bc23a9d531064583ace8f67dad60f6bb", }) - self.assertEqual(data.status_int, 400) - self.assertEqual(len(self.published), 0) + self.assertEqual(400, data.status_int) + self.assertEqual(0, len(self.published)) def test_multiple_samples(self): """Send multiple samples. @@ -197,7 +197,7 @@ print('posting without %s' % m) data = self.post_json('/meters/my_counter_name', s_broke, expect_errors=True) - self.assertEqual(data.status_int, 400) + self.assertEqual(400, data.status_int) def test_multiple_project_id_and_admin(self): """Allow admin is allowed to set multiple project_id.""" @@ -223,7 +223,7 @@ data = self.post_json('/meters/my_counter_name/', s1, headers={"X-Roles": "admin"}) - self.assertEqual(data.status_int, 200) + self.assertEqual(200, data.status_int) for x, s in enumerate(s1): # source is modified to include the project_id. s['source'] = '%s:%s' % (s['project_id'], @@ -269,7 +269,7 @@ 'name2': 'value2'}}] data = self.post_json('/meters/my_counter_name/', s1, expect_errors=True) - self.assertEqual(data.status_int, 200) + self.assertEqual(200, data.status_int) for x, s in enumerate(s1): # source is modified to include the project_id. s['source'] = '%s:%s' % ( @@ -306,7 +306,7 @@ 'X-User-Id': user_id, }) - self.assertEqual(data.status_int, 200) + self.assertEqual(200, data.status_int) for x, s in enumerate(s1): # source is modified to include the project_id. s['source'] = '%s:%s' % (project_id, diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_query.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_query.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_query.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_query.py 2014-03-31 15:32:25.000000000 +0000 @@ -40,7 +40,7 @@ value='123', type='integer') expected = 123 - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_float(self): query = api.Query(field='metadata.size', @@ -48,7 +48,7 @@ value='123.456', type='float') expected = 123.456 - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_boolean(self): query = api.Query(field='metadata.is_public', @@ -56,7 +56,7 @@ value='True', type='boolean') expected = True - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_string(self): query = api.Query(field='metadata.name', @@ -64,35 +64,35 @@ value='linux', type='string') expected = 'linux' - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_integer_without_type(self): query = api.Query(field='metadata.size', op='eq', value='123') expected = 123 - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_float_without_type(self): query = api.Query(field='metadata.size', op='eq', value='123.456') expected = 123.456 - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_boolean_without_type(self): query = api.Query(field='metadata.is_public', op='eq', value='True') expected = True - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_string_without_type(self): query = api.Query(field='metadata.name', op='eq', value='linux') expected = 'linux' - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_bad_type(self): query = api.Query(field='metadata.size', @@ -114,7 +114,7 @@ op='eq', value='123-1') expected = '123-1' - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_boolean_expression_without_type(self): # bug 1221736 @@ -122,7 +122,7 @@ op='eq', value='True or False') expected = 'True or False' - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_syntax_error(self): # bug 1221736 @@ -131,7 +131,7 @@ op='eq', value=value) expected = value - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) def test_get_value_as_type_with_syntax_error_colons(self): # bug 1221736 @@ -140,20 +140,20 @@ op='eq', value=value) expected = value - self.assertEqual(query._get_value_as_type(), expected) + self.assertEqual(expected, query._get_value_as_type()) class TestValidateGroupByFields(test.BaseTestCase): def test_valid_field(self): result = api._validate_groupby_fields(['user_id']) - self.assertEqual(result, ['user_id']) + self.assertEqual(['user_id'], result) def test_valid_fields_multiple(self): result = set( api._validate_groupby_fields(['user_id', 'project_id', 'source']) ) - self.assertEqual(result, set(['user_id', 'project_id', 'source'])) + self.assertEqual(set(['user_id', 'project_id', 'source']), result) def test_invalid_field(self): self.assertRaises(wsme.exc.UnknownArgument, @@ -169,7 +169,7 @@ result = set( api._validate_groupby_fields(['user_id', 'source', 'user_id']) ) - self.assertEqual(result, set(['user_id', 'source'])) + self.assertEqual(set(['user_id', 'source']), result) class TestQueryToKwArgs(tests_base.BaseTestCase): @@ -186,8 +186,8 @@ value='uid')] kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__) self.assertIn('user', kwargs) - self.assertEqual(len(kwargs), 1) - self.assertEqual(kwargs['user'], 'uid') + self.assertEqual(1, len(kwargs)) + self.assertEqual('uid', kwargs['user']) def test_sample_filter_multi(self): q = [api.Query(field='user_id', @@ -206,12 +206,12 @@ op='eq', value='meter_name')] kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__) - self.assertEqual(len(kwargs), 5) - self.assertEqual(kwargs['user'], 'uid') - self.assertEqual(kwargs['project'], 'pid') - self.assertEqual(kwargs['resource'], 'rid') - self.assertEqual(kwargs['source'], 'source_name') - self.assertEqual(kwargs['meter'], 'meter_name') + self.assertEqual(5, len(kwargs)) + self.assertEqual('uid', kwargs['user']) + self.assertEqual('pid', kwargs['project']) + self.assertEqual('rid', kwargs['resource']) + self.assertEqual('source_name', kwargs['source']) + self.assertEqual('meter_name', kwargs['meter']) def test_sample_filter_timestamp(self): ts_start = timeutils.utcnow() @@ -223,11 +223,11 @@ op='gt', value=str(ts_start))] kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__) - self.assertEqual(len(kwargs), 4) + self.assertEqual(4, len(kwargs)) self.assertTimestampEqual(kwargs['start'], ts_start) self.assertTimestampEqual(kwargs['end'], ts_end) - self.assertEqual(kwargs['start_timestamp_op'], 'gt') - self.assertEqual(kwargs['end_timestamp_op'], 'lt') + self.assertEqual('gt', kwargs['start_timestamp_op']) + self.assertEqual('lt', kwargs['end_timestamp_op']) def test_sample_filter_meta(self): q = [api.Query(field='metadata.size', @@ -237,10 +237,10 @@ op='eq', value='meta_id')] kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__) - self.assertEqual(len(kwargs), 1) - self.assertEqual(len(kwargs['metaquery']), 2) - self.assertEqual(kwargs['metaquery']['metadata.size'], 20) - self.assertEqual(kwargs['metaquery']['metadata.id'], 'meta_id') + self.assertEqual(1, len(kwargs)) + self.assertEqual(2, len(kwargs['metaquery'])) + self.assertEqual(20, kwargs['metaquery']['metadata.size']) + self.assertEqual('meta_id', kwargs['metaquery']['metadata.id']) def test_sample_filter_non_equality_on_metadata(self): queries = [api.Query(field='resource_metadata.image_id', @@ -320,4 +320,4 @@ kwargs = api._query_to_kwargs(queries, storage.SampleFilter.__init__) for o in ['user', 'project', 'resource']: - self.assertEqual(kwargs.get(o), 'fake_%s_id' % o) + self.assertEqual('fake_%s_id' % o, kwargs.get(o)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_statistics.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_statistics.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_statistics.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_statistics.py 2014-03-31 15:32:25.000000000 +0000 @@ -60,9 +60,9 @@ start_timestamp=self.start, end_timestamp=self.end, ) - self.assertEqual(s.duration_start, self.start) - self.assertEqual(s.duration_end, self.middle1) - self.assertEqual(s.duration, 8 * 60 * 60) + self.assertEqual(self.start, s.duration_start) + self.assertEqual(self.middle1, s.duration_end) + self.assertEqual(8 * 60 * 60, s.duration) def test_within_range(self): s = v2.Statistics(duration_start=self.middle1, @@ -70,9 +70,9 @@ start_timestamp=self.start, end_timestamp=self.end, ) - self.assertEqual(s.duration_start, self.middle1) - self.assertEqual(s.duration_end, self.middle2) - self.assertEqual(s.duration, 10 * 60 * 60) + self.assertEqual(self.middle1, s.duration_start) + self.assertEqual(self.middle2, s.duration_end) + self.assertEqual(10 * 60 * 60, s.duration) def test_within_range_zero_duration(self): s = v2.Statistics(duration_start=self.middle1, @@ -80,9 +80,9 @@ start_timestamp=self.start, end_timestamp=self.end, ) - self.assertEqual(s.duration_start, self.middle1) - self.assertEqual(s.duration_end, self.middle1) - self.assertEqual(s.duration, 0) + self.assertEqual(self.middle1, s.duration_start) + self.assertEqual(self.middle1, s.duration_end) + self.assertEqual(0, s.duration) def test_overlap_range_end(self): s = v2.Statistics(duration_start=self.middle2, @@ -90,9 +90,9 @@ start_timestamp=self.start, end_timestamp=self.end, ) - self.assertEqual(s.duration_start, self.middle2) - self.assertEqual(s.duration_end, self.end) - self.assertEqual(s.duration, ((6 * 60) - 1) * 60) + self.assertEqual(self.middle2, s.duration_start) + self.assertEqual(self.end, s.duration_end) + self.assertEqual(((6 * 60) - 1) * 60, s.duration) def test_after_range(self): s = v2.Statistics(duration_start=self.late1, @@ -110,5 +110,5 @@ start_timestamp=None, end_timestamp=None, ) - self.assertEqual(s.duration_start, self.late1) - self.assertEqual(s.duration_end, self.late2) + self.assertEqual(self.late1, s.duration_start) + self.assertEqual(self.late2, s.duration_end) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_statistics_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_statistics_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_statistics_scenarios.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_statistics_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -61,8 +61,8 @@ data = self.get_json(self.PATH, q=[{'field': 'project_id', 'value': 'project1', }]) - self.assertEqual(data[0]['max'], 7) - self.assertEqual(data[0]['count'], 3) + self.assertEqual(7, data[0]['max']) + self.assertEqual(3, data[0]['count']) def test_start_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -73,8 +73,8 @@ 'value': '2012-09-25T11:30:00', }, ]) - self.assertEqual(data[0]['max'], 7) - self.assertEqual(data[0]['count'], 2) + self.assertEqual(7, data[0]['max']) + self.assertEqual(2, data[0]['count']) def test_start_timestamp_after(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -85,7 +85,7 @@ 'value': '2012-09-25T12:34:00', }, ]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -96,8 +96,8 @@ 'value': '2012-09-25T11:30:00', }, ]) - self.assertEqual(data[0]['max'], 5) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(5, data[0]['max']) + self.assertEqual(1, data[0]['count']) def test_end_timestamp_before(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -108,7 +108,7 @@ 'value': '2012-09-25T09:54:00', }, ]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_start_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -123,8 +123,8 @@ 'value': '2012-09-25T11:32:00', }, ]) - self.assertEqual(data[0]['max'], 6) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(6, data[0]['max']) + self.assertEqual(1, data[0]['count']) class TestMaxResourceVolume(FunctionalTest, @@ -159,24 +159,24 @@ data = self.get_json(self.PATH, q=[{'field': 'resource_id', 'value': 'resource-id', }]) - self.assertEqual(data[0]['max'], 7) - self.assertEqual(data[0]['count'], 3) + self.assertEqual(7, data[0]['max']) + self.assertEqual(3, data[0]['count']) def test_no_time_bounds_with_period(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', 'value': 'resource-id'}], period=3600) - self.assertEqual(len(data), 3) - self.assertEqual(set(x['duration_start'] for x in data), - set([u'2012-09-25T10:30:00', + self.assertEqual(3, len(data)) + self.assertEqual(set([u'2012-09-25T10:30:00', u'2012-09-25T12:32:00', - u'2012-09-25T11:31:00'])) - self.assertEqual(data[0]['period'], 3600) - self.assertEqual(set(x['period_start'] for x in data), - set([u'2012-09-25T10:30:00', + u'2012-09-25T11:31:00']), + set(x['duration_start'] for x in data)) + self.assertEqual(3600, data[0]['period']) + self.assertEqual(set([u'2012-09-25T10:30:00', u'2012-09-25T11:30:00', - u'2012-09-25T12:30:00'])) + u'2012-09-25T12:30:00']), + set(x['period_start'] for x in data)) def test_period_with_negative_value(self): resp = self.get_json(self.PATH, expect_errors=True, @@ -194,8 +194,8 @@ 'value': '2012-09-25T11:30:00', }, ]) - self.assertEqual(data[0]['max'], 7) - self.assertEqual(data[0]['count'], 2) + self.assertEqual(7, data[0]['max']) + self.assertEqual(2, data[0]['count']) def test_start_timestamp_after(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -206,7 +206,7 @@ 'value': '2012-09-25T12:34:00', }, ]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -217,8 +217,8 @@ 'value': '2012-09-25T11:30:00', }, ]) - self.assertEqual(data[0]['max'], 5) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(5, data[0]['max']) + self.assertEqual(1, data[0]['count']) def test_end_timestamp_before(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -229,7 +229,7 @@ 'value': '2012-09-25T09:54:00', }, ]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_start_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -244,8 +244,8 @@ 'value': '2012-09-25T11:32:00', }, ]) - self.assertEqual(data[0]['max'], 6) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(6, data[0]['max']) + self.assertEqual(1, data[0]['count']) class TestSumProjectVolume(FunctionalTest, @@ -281,8 +281,8 @@ 'value': 'project1', }]) expected = 5 + 6 + 7 - self.assertEqual(data[0]['sum'], expected) - self.assertEqual(data[0]['count'], 3) + self.assertEqual(expected, data[0]['sum']) + self.assertEqual(3, data[0]['count']) def test_start_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -294,8 +294,8 @@ }, ]) expected = 6 + 7 - self.assertEqual(data[0]['sum'], expected) - self.assertEqual(data[0]['count'], 2) + self.assertEqual(expected, data[0]['sum']) + self.assertEqual(2, data[0]['count']) def test_start_timestamp_after(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -306,7 +306,7 @@ 'value': '2012-09-25T12:34:00', }, ]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -317,8 +317,8 @@ 'value': '2012-09-25T11:30:00', }, ]) - self.assertEqual(data[0]['sum'], 5) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(5, data[0]['sum']) + self.assertEqual(1, data[0]['count']) def test_end_timestamp_before(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -329,7 +329,7 @@ 'value': '2012-09-25T09:54:00', }, ]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_start_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'project_id', @@ -344,8 +344,8 @@ 'value': '2012-09-25T11:32:00', }, ]) - self.assertEqual(data[0]['sum'], 6) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(6, data[0]['sum']) + self.assertEqual(1, data[0]['count']) class TestSumResourceVolume(FunctionalTest, @@ -380,24 +380,24 @@ data = self.get_json(self.PATH, q=[{'field': 'resource_id', 'value': 'resource-id', }]) - self.assertEqual(data[0]['sum'], 5 + 6 + 7) - self.assertEqual(data[0]['count'], 3) + self.assertEqual(5 + 6 + 7, data[0]['sum']) + self.assertEqual(3, data[0]['count']) def test_no_time_bounds_with_period(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', 'value': 'resource-id'}], period=1800) - self.assertEqual(len(data), 3) - self.assertEqual(set(x['duration_start'] for x in data), - set([u'2012-09-25T10:30:00', + self.assertEqual(3, len(data)) + self.assertEqual(set([u'2012-09-25T10:30:00', u'2012-09-25T12:32:00', - u'2012-09-25T11:31:00'])) - self.assertEqual(data[0]['period'], 1800) - self.assertEqual(set(x['period_start'] for x in data), - set([u'2012-09-25T10:30:00', + u'2012-09-25T11:31:00']), + set(x['duration_start'] for x in data)) + self.assertEqual(1800, data[0]['period']) + self.assertEqual(set([u'2012-09-25T10:30:00', u'2012-09-25T11:30:00', - u'2012-09-25T12:30:00'])) + u'2012-09-25T12:30:00']), + set(x['period_start'] for x in data)) def test_start_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -407,8 +407,8 @@ 'op': 'ge', 'value': '2012-09-25T11:30:00', }]) - self.assertEqual(data[0]['sum'], 6 + 7) - self.assertEqual(data[0]['count'], 2) + self.assertEqual(6 + 7, data[0]['sum']) + self.assertEqual(2, data[0]['count']) def test_start_timestamp_with_period(self): data = self.get_json(self.PATH, @@ -418,14 +418,14 @@ 'op': 'ge', 'value': '2012-09-25T10:15:00'}], period=7200) - self.assertEqual(len(data), 2) - self.assertEqual(set(x['duration_start'] for x in data), - set([u'2012-09-25T10:30:00', - u'2012-09-25T12:32:00'])) - self.assertEqual(data[0]['period'], 7200) - self.assertEqual(set(x['period_start'] for x in data), - set([u'2012-09-25T10:15:00', - u'2012-09-25T12:15:00'])) + self.assertEqual(2, len(data)) + self.assertEqual(set([u'2012-09-25T10:30:00', + u'2012-09-25T12:32:00']), + set(x['duration_start'] for x in data)) + self.assertEqual(7200, data[0]['period']) + self.assertEqual(set([u'2012-09-25T10:15:00', + u'2012-09-25T12:15:00']), + set(x['period_start'] for x in data)) def test_start_timestamp_after(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -435,7 +435,7 @@ 'op': 'ge', 'value': '2012-09-25T12:34:00', }]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -445,8 +445,8 @@ 'op': 'le', 'value': '2012-09-25T11:30:00', }]) - self.assertEqual(data[0]['sum'], 5) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(5, data[0]['sum']) + self.assertEqual(1, data[0]['count']) def test_end_timestamp_before(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -456,7 +456,7 @@ 'op': 'le', 'value': '2012-09-25T09:54:00', }]) - self.assertEqual(data, []) + self.assertEqual([], data) def test_start_end_timestamp(self): data = self.get_json(self.PATH, q=[{'field': 'resource_id', @@ -470,8 +470,8 @@ 'op': 'lt', 'value': '2012-09-25T11:32:00', }]) - self.assertEqual(data[0]['sum'], 6) - self.assertEqual(data[0]['count'], 1) + self.assertEqual(6, data[0]['sum']) + self.assertEqual(1, data[0]['count']) class TestGroupByInstance(FunctionalTest, @@ -539,32 +539,32 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['user_id'])) - self.assertEqual(groupby_vals_set, set(['user-1', 'user-2', 'user-3'])) + self.assertEqual(set(['user_id']), groupby_keys_set) + self.assertEqual(set(['user-1', 'user-2', 'user-3']), groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'user_id': 'user-1'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 2) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'user_id': 'user-2'}: - self.assertEqual(r['count'], 4) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 8) - self.assertEqual(r['avg'], 2) + self.assertEqual(4, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(8, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'user_id': 'user-3'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) def test_group_by_resource(self): data = self.get_json(self.PATH, groupby=['resource_id']) @@ -572,34 +572,33 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['resource_id'])) - self.assertEqual(groupby_vals_set, set(['resource-1', - 'resource-2', - 'resource-3'])) + self.assertEqual(set(['resource_id']), groupby_keys_set) + self.assertEqual(set(['resource-1', 'resource-2', 'resource-3']), + groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'resource_id': 'resource-1'}: - self.assertEqual(r['count'], 3) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 2) + self.assertEqual(3, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'resource_id': 'resource-2'}: - self.assertEqual(r['count'], 3) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 2) + self.assertEqual(3, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'resource_id': 'resource-3'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) def test_group_by_project(self): data = self.get_json(self.PATH, groupby=['project_id']) @@ -607,25 +606,25 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2']), groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'project_id': 'project-1'}: - self.assertEqual(r['count'], 5) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 10) - self.assertEqual(r['avg'], 2) + self.assertEqual(5, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(10, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'project_id': 'project-2'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 3) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(3, r['avg']) def test_group_by_unknown_field(self): response = self.get_json(self.PATH, @@ -639,45 +638,45 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['user_id', 'resource_id'])) - self.assertEqual(groupby_vals_set, set(['user-1', 'user-2', - 'user-3', 'resource-1', - 'resource-2', 'resource-3'])) + self.assertEqual(set(['user_id', 'resource_id']), groupby_keys_set) + self.assertEqual(set(['user-1', 'user-2', 'user-3', 'resource-1', + 'resource-2', 'resource-3']), + groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'user_id': 'user-1', 'resource_id': 'resource-1'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 2) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'user_id': 'user-2', 'resource_id': 'resource-1'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'user_id': 'user-2', 'resource_id': 'resource-2'}: - self.assertEqual(r['count'], 3) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 2) + self.assertEqual(3, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'user_id': 'user-3', 'resource_id': 'resource-3'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) else: self.assertNotEqual(grp, {'user_id': 'user-1', 'resource_id': 'resource-2'}) @@ -700,34 +699,33 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['resource_id'])) - self.assertEqual(groupby_vals_set, set(['resource-1', - 'resource-2', - 'resource-3'])) + self.assertEqual(set(['resource_id']), groupby_keys_set) + self.assertEqual(set(['resource-1', 'resource-2', 'resource-3']), + groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'resource_id': 'resource-1'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 2) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'resource_id': 'resource-2'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 1) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 1) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(1, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(1, r['avg']) elif grp == {'resource_id': 'resource-3'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) def test_group_by_with_query_filter_multiple(self): data = self.get_json(self.PATH, @@ -742,36 +740,37 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id', 'resource_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2', - 'resource-1', 'resource-2'])) + self.assertEqual(set(['project_id', 'resource_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2', + 'resource-1', 'resource-2']), + groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'project_id': 'project-1', 'resource_id': 'resource-1'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'project_id': 'project-1', 'resource_id': 'resource-2'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 1) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 1) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(1, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(1, r['avg']) elif grp == {'project_id': 'project-2', 'resource_id': 'resource-2'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) else: self.assertNotEqual(grp, {'project_id': 'project-2', 'resource_id': 'resource-1'}) @@ -784,69 +783,69 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2']), groupby_vals_set) period_start_set = set(sub_dict['period_start'] for sub_dict in data) period_start_valid = set([u'2013-08-01T10:11:00', u'2013-08-01T14:11:00', u'2013-08-01T16:11:00']) - self.assertEqual(period_start_set, period_start_valid) + self.assertEqual(period_start_valid, period_start_set) for r in data: grp = r['groupby'] period_start = r['period_start'] if (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T10:11:00'): - self.assertEqual(r['count'], 3) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 4260) - self.assertEqual(r['duration_start'], u'2013-08-01T10:11:00') - self.assertEqual(r['duration_end'], u'2013-08-01T11:22:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T12:11:00') + self.assertEqual(3, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(4260, r['duration']) + self.assertEqual(u'2013-08-01T10:11:00', r['duration_start']) + self.assertEqual(u'2013-08-01T11:22:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T12:11:00', r['period_end']) elif (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T14:11:00'): - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 4260) - self.assertEqual(r['duration_start'], u'2013-08-01T14:59:00') - self.assertEqual(r['duration_end'], u'2013-08-01T16:10:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T16:11:00') + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(4260, r['duration']) + self.assertEqual(u'2013-08-01T14:59:00', r['duration_start']) + self.assertEqual(u'2013-08-01T16:10:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T16:11:00', r['period_end']) elif (grp == {'project_id': 'project-2'} and period_start == u'2013-08-01T14:11:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T15:37:00') - self.assertEqual(r['duration_end'], u'2013-08-01T15:37:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T16:11:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T15:37:00', r['duration_start']) + self.assertEqual(u'2013-08-01T15:37:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T16:11:00', r['period_end']) elif (grp == {'project_id': 'project-2'} and period_start == u'2013-08-01T16:11:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T17:28:00') - self.assertEqual(r['duration_end'], u'2013-08-01T17:28:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T18:11:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T17:28:00', r['duration_start']) + self.assertEqual(u'2013-08-01T17:28:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T18:11:00', r['period_end']) else: self.assertNotEqual([grp, period_start], [{'project_id': 'project-1'}, @@ -866,56 +865,56 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2']), groupby_vals_set) period_start_set = set(sub_dict['period_start'] for sub_dict in data) period_start_valid = set([u'2013-08-01T10:11:00', u'2013-08-01T14:11:00', u'2013-08-01T16:11:00']) - self.assertEqual(period_start_set, period_start_valid) + self.assertEqual(period_start_valid, period_start_set) for r in data: grp = r['groupby'] period_start = r['period_start'] if (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T10:11:00'): - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 1) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 1) - self.assertEqual(r['duration'], 1740) - self.assertEqual(r['duration_start'], u'2013-08-01T10:11:00') - self.assertEqual(r['duration_end'], u'2013-08-01T10:40:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T12:11:00') + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(1, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(1, r['avg']) + self.assertEqual(1740, r['duration']) + self.assertEqual(u'2013-08-01T10:11:00', r['duration_start']) + self.assertEqual(u'2013-08-01T10:40:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T12:11:00', r['period_end']) elif (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T14:11:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T14:59:00') - self.assertEqual(r['duration_end'], u'2013-08-01T14:59:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T16:11:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T14:59:00', r['duration_start']) + self.assertEqual(u'2013-08-01T14:59:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T16:11:00', r['period_end']) elif (grp == {'project_id': 'project-2'} and period_start == u'2013-08-01T16:11:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T17:28:00') - self.assertEqual(r['duration_end'], u'2013-08-01T17:28:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T18:11:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T17:28:00', r['duration_start']) + self.assertEqual(u'2013-08-01T17:28:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T18:11:00', r['period_end']) else: self.assertNotEqual([grp, period_start], [{'project_id': 'project-1'}, @@ -933,7 +932,7 @@ 'op': 'ge', 'value': '2013-08-01T17:28:01'}], groupby=['project_id']) - self.assertEqual(data, []) + self.assertEqual([], data) def test_group_by_end_timestamp_before(self): data = self.get_json(self.PATH, @@ -941,7 +940,7 @@ 'op': 'le', 'value': '2013-08-01T10:10:59'}], groupby=['project_id']) - self.assertEqual(data, []) + self.assertEqual([], data) def test_group_by_start_timestamp(self): data = self.get_json(self.PATH, @@ -953,25 +952,25 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2']), groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'project_id': 'project-1'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 2) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'project_id': 'project-2'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 3) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(3, r['avg']) def test_group_by_end_timestamp(self): data = self.get_json(self.PATH, @@ -983,18 +982,18 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1']), groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'project_id': 'project-1'}: - self.assertEqual(r['count'], 3) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 2) + self.assertEqual(3, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(2, r['avg']) def test_group_by_start_end_timestamp(self): data = self.get_json(self.PATH, @@ -1009,25 +1008,25 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2']), groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'project_id': 'project-1'}: - self.assertEqual(r['count'], 5) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 10) - self.assertEqual(r['avg'], 2) + self.assertEqual(5, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(10, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'project_id': 'project-2'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 6) - self.assertEqual(r['avg'], 3) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(6, r['sum']) + self.assertEqual(3, r['avg']) def test_group_by_start_end_timestamp_with_query_filter(self): data = self.get_json(self.PATH, @@ -1045,25 +1044,25 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['resource_id'])) - self.assertEqual(groupby_vals_set, set(['resource-1', 'resource-3'])) + self.assertEqual(set(['resource_id']), groupby_keys_set) + self.assertEqual(set(['resource-1', 'resource-3']), groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'resource_id': 'resource-1'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 2) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'resource_id': 'resource-3'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) def test_group_by_start_end_timestamp_with_period(self): data = self.get_json(self.PATH, @@ -1079,56 +1078,56 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2']), groupby_vals_set) period_start_set = set(sub_dict['period_start'] for sub_dict in data) period_start_valid = set([u'2013-08-01T14:00:00', u'2013-08-01T15:00:00', u'2013-08-01T16:00:00']) - self.assertEqual(period_start_set, period_start_valid) + self.assertEqual(period_start_valid, period_start_set) for r in data: grp = r['groupby'] period_start = r['period_start'] if (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T14:00:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T14:59:00') - self.assertEqual(r['duration_end'], u'2013-08-01T14:59:00') - self.assertEqual(r['period'], 3600) - self.assertEqual(r['period_end'], u'2013-08-01T15:00:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T14:59:00', r['duration_start']) + self.assertEqual(u'2013-08-01T14:59:00', r['duration_end']) + self.assertEqual(3600, r['period']) + self.assertEqual(u'2013-08-01T15:00:00', r['period_end']) elif (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T16:00:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T16:10:00') - self.assertEqual(r['duration_end'], u'2013-08-01T16:10:00') - self.assertEqual(r['period'], 3600) - self.assertEqual(r['period_end'], u'2013-08-01T17:00:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T16:10:00', r['duration_start']) + self.assertEqual(u'2013-08-01T16:10:00', r['duration_end']) + self.assertEqual(3600, r['period']) + self.assertEqual(u'2013-08-01T17:00:00', r['period_end']) elif (grp == {'project_id': 'project-2'} and period_start == u'2013-08-01T15:00:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T15:37:00') - self.assertEqual(r['duration_end'], u'2013-08-01T15:37:00') - self.assertEqual(r['period'], 3600) - self.assertEqual(r['period_end'], u'2013-08-01T16:00:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T15:37:00', r['duration_start']) + self.assertEqual(u'2013-08-01T15:37:00', r['duration_end']) + self.assertEqual(3600, r['period']) + self.assertEqual(u'2013-08-01T16:00:00', r['period_end']) else: self.assertNotEqual([grp, period_start], [{'project_id': 'project-1'}, @@ -1157,56 +1156,56 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) - self.assertEqual(groupby_vals_set, set(['project-1', 'project-2'])) + self.assertEqual(set(['project_id']), groupby_keys_set) + self.assertEqual(set(['project-1', 'project-2']), groupby_vals_set) period_start_set = set(sub_dict['period_start'] for sub_dict in data) period_start_valid = set([u'2013-08-01T10:00:00', u'2013-08-01T14:00:00', u'2013-08-01T16:00:00']) - self.assertEqual(period_start_set, period_start_valid) + self.assertEqual(period_start_valid, period_start_set) for r in data: grp = r['groupby'] period_start = r['period_start'] if (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T10:00:00'): - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 1) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 1) - self.assertEqual(r['duration'], 1740) - self.assertEqual(r['duration_start'], u'2013-08-01T10:11:00') - self.assertEqual(r['duration_end'], u'2013-08-01T10:40:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T12:00:00') + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(1, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(1, r['avg']) + self.assertEqual(1740, r['duration']) + self.assertEqual(u'2013-08-01T10:11:00', r['duration_start']) + self.assertEqual(u'2013-08-01T10:40:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T12:00:00', r['period_end']) elif (grp == {'project_id': 'project-1'} and period_start == u'2013-08-01T14:00:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 2) - self.assertEqual(r['avg'], 2) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T14:59:00') - self.assertEqual(r['duration_end'], u'2013-08-01T14:59:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T16:00:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(2, r['sum']) + self.assertEqual(2, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T14:59:00', r['duration_start']) + self.assertEqual(u'2013-08-01T14:59:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T16:00:00', r['period_end']) elif (grp == {'project_id': 'project-2'} and period_start == u'2013-08-01T16:00:00'): - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) - self.assertEqual(r['duration'], 0) - self.assertEqual(r['duration_start'], u'2013-08-01T17:28:00') - self.assertEqual(r['duration_end'], u'2013-08-01T17:28:00') - self.assertEqual(r['period'], 7200) - self.assertEqual(r['period_end'], u'2013-08-01T18:00:00') + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) + self.assertEqual(0, r['duration']) + self.assertEqual(u'2013-08-01T17:28:00', r['duration_start']) + self.assertEqual(u'2013-08-01T17:28:00', r['duration_end']) + self.assertEqual(7200, r['period']) + self.assertEqual(u'2013-08-01T18:00:00', r['period_end']) else: self.assertNotEqual([grp, period_start], [{'project_id': 'project-1'}, @@ -1301,34 +1300,33 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['source'])) - self.assertEqual(groupby_vals_set, set(['source-1', - 'source-2', - 'source-3'])) + self.assertEqual(set(['source']), groupby_keys_set) + self.assertEqual(set(['source-1', 'source-2', 'source-3']), + groupby_vals_set) for r in data: grp = r['groupby'] if grp == {'source': 'source-1'}: - self.assertEqual(r['count'], 4) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 1) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 8) - self.assertEqual(r['avg'], 2) + self.assertEqual(4, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(1, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(8, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'source': 'source-2'}: - self.assertEqual(r['count'], 2) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 2) - self.assertEqual(r['max'], 2) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 2) + self.assertEqual(2, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(2, r['min']) + self.assertEqual(2, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(2, r['avg']) elif grp == {'source': 'source-3'}: - self.assertEqual(r['count'], 1) - self.assertEqual(r['unit'], 's') - self.assertEqual(r['min'], 4) - self.assertEqual(r['max'], 4) - self.assertEqual(r['sum'], 4) - self.assertEqual(r['avg'], 4) + self.assertEqual(1, r['count']) + self.assertEqual('s', r['unit']) + self.assertEqual(4, r['min']) + self.assertEqual(4, r['max']) + self.assertEqual(4, r['sum']) + self.assertEqual(4, r['avg']) class TestSelectableAggregates(FunctionalTest, @@ -1403,9 +1401,9 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) + self.assertEqual(set(['project_id']), groupby_keys_set) projects = ['project-1', 'project-2', 'project-3'] - self.assertEqual(groupby_vals_set, set(projects)) + self.assertEqual(set(projects), groupby_vals_set) standard_aggregates = set(['count', 'min', 'max', 'sum', 'avg']) for r in data: @@ -1413,7 +1411,7 @@ for project in projects: if grp == {'project_id': project}: expected = expected_values[projects.index(project)] - self.assertEqual(r['unit'], 'instance') + self.assertEqual('instance', r['unit']) self.assertAlmostEqual(r[aggregate], expected) self.assertIn('aggregate', r) self.assertIn(aggregate, r['aggregate']) @@ -1449,9 +1447,9 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) + self.assertEqual(set(['project_id']), groupby_keys_set) projects = ['project-1', 'project-2', 'project-3'] - self.assertEqual(groupby_vals_set, set(projects)) + self.assertEqual(set(projects), groupby_vals_set) aggregate = 'cardinality/resource_id' expected_values = [2.0, 3.0, 1.0] @@ -1461,22 +1459,116 @@ for project in projects: if grp == {'project_id': project}: expected = expected_values[projects.index(project)] - self.assertEqual(r['unit'], 'instance') + self.assertEqual('instance', r['unit']) self.assertNotIn(aggregate, r) self.assertIn('aggregate', r) self.assertIn(aggregate, r['aggregate']) - self.assertEqual(r['aggregate'][aggregate], expected) + self.assertEqual(expected, r['aggregate'][aggregate]) for a in standard_aggregates: self.assertNotIn(a, r) + def test_large_quantum_selectable_parameterized_aggregate(self): + # add a large number of datapoints that won't impact on cardinality + # if the computation logic is tolerant of different DB behavior on + # larger numbers of samples per-period + for i in xrange(200): + s = sample.Sample( + 'instance', + sample.TYPE_GAUGE, + unit='instance', + volume=i * 1.0, + user_id='user-1', + project_id='project-1', + resource_id='resource-1', + timestamp=datetime.datetime(2013, 8, 1, 11, i % 60), + resource_metadata={'flavor': 'm1.tiny', + 'event': 'event-1', }, + source='source', + ) + msg = utils.meter_message_from_counter( + s, + self.CONF.publisher.metering_secret, + ) + self.conn.record_metering_data(msg) + + agg_args = {'aggregate.func': 'cardinality', + 'aggregate.param': 'resource_id'} + data = self.get_json(self.PATH, **agg_args) + + aggregate = 'cardinality/resource_id' + expected_value = 5.0 + standard_aggregates = set(['count', 'min', 'max', 'sum', 'avg']) + r = data[0] + self.assertNotIn(aggregate, r) + self.assertIn('aggregate', r) + self.assertIn(aggregate, r['aggregate']) + self.assertEqual(expected_value, r['aggregate'][aggregate]) + for a in standard_aggregates: + self.assertNotIn(a, r) + + def test_repeated_unparameterized_aggregate(self): + agg_params = 'aggregate.func=count&aggregate.func=count' + data = self.get_json(self.PATH, override_params=agg_params) + + aggregate = 'count' + expected_value = 8.0 + standard_aggregates = set(['min', 'max', 'sum', 'avg']) + r = data[0] + self.assertIn(aggregate, r) + self.assertEqual(expected_value, r[aggregate]) + self.assertIn('aggregate', r) + self.assertIn(aggregate, r['aggregate']) + self.assertEqual(expected_value, r['aggregate'][aggregate]) + for a in standard_aggregates: + self.assertNotIn(a, r) + + def test_fully_repeated_parameterized_aggregate(self): + agg_params = ('aggregate.func=cardinality&' + 'aggregate.param=resource_id&' + 'aggregate.func=cardinality&' + 'aggregate.param=resource_id&') + data = self.get_json(self.PATH, override_params=agg_params) + + aggregate = 'cardinality/resource_id' + expected_value = 5.0 + standard_aggregates = set(['count', 'min', 'max', 'sum', 'avg']) + r = data[0] + self.assertIn('aggregate', r) + self.assertNotIn(aggregate, r) + self.assertIn(aggregate, r['aggregate']) + self.assertEqual(expected_value, r['aggregate'][aggregate]) + for a in standard_aggregates: + self.assertNotIn(a, r) + + def test_partially_repeated_parameterized_aggregate(self): + agg_params = ('aggregate.func=cardinality&' + 'aggregate.param=resource_id&' + 'aggregate.func=cardinality&' + 'aggregate.param=project_id&') + data = self.get_json(self.PATH, override_params=agg_params) + + expected_values = {'cardinality/resource_id': 5.0, + 'cardinality/project_id': 3.0} + standard_aggregates = set(['count', 'min', 'max', 'sum', 'avg']) + r = data[0] + self.assertIn('aggregate', r) + for aggregate in expected_values.keys(): + self.assertNotIn(aggregate, r) + self.assertIn(aggregate, r['aggregate']) + self.assertEqual(expected_values[aggregate], + r['aggregate'][aggregate]) + for a in standard_aggregates: + self.assertNotIn(a, r) + def test_bad_selectable_parameterized_aggregate(self): agg_args = {'aggregate.func': 'cardinality', 'aggregate.param': 'injection_attack'} - resp = self.get_json(self.PATH, expect_errors=True, + resp = self.get_json(self.PATH, status=[400], groupby=['project_id'], **agg_args) - self.assertTrue(400, resp.status_code) - self.assertTrue('error_message' in resp.json) - self.assertEqual(resp.json['error_message'].get('faultstring'), + self.assertTrue('error_message' in resp) + self.assertEqual(resp['error_message'].get('faultcode'), + 'Client') + self.assertEqual(resp['error_message'].get('faultstring'), 'Bad aggregate: cardinality.injection_attack') @@ -1565,9 +1657,9 @@ for x in sub_dict['groupby'].keys()) groupby_vals_set = set(x for sub_dict in data for x in sub_dict['groupby'].values()) - self.assertEqual(groupby_keys_set, set(['project_id'])) + self.assertEqual(set(['project_id']), groupby_keys_set) projects = ['project-1', 'project-2', 'project-3'] - self.assertEqual(groupby_vals_set, set(projects)) + self.assertEqual(set(projects), groupby_vals_set) aggregate = 'stddev' expected_values = [1.4142, 1.0897, 0.0] @@ -1577,7 +1669,7 @@ for project in projects: if grp == {'project_id': project}: expected = expected_values[projects.index(project)] - self.assertEqual(r['unit'], 'instance') + self.assertEqual('instance', r['unit']) self.assertNotIn(aggregate, r) self.assertIn('aggregate', r) self.assertIn(aggregate, r['aggregate']) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_wsme_custom_type.py ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_wsme_custom_type.py --- ceilometer-2014.1~b3/ceilometer/tests/api/v2/test_wsme_custom_type.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/api/v2/test_wsme_custom_type.py 2014-03-31 15:32:25.000000000 +0000 @@ -29,9 +29,9 @@ ae = v2.AdvEnum("name", str, "one", "other", default="other") obj = dummybase() - self.assertEqual(obj.ae, "other") + self.assertEqual("other", obj.ae) obj = dummybase(ae="one") - self.assertEqual(obj.ae, "one") + self.assertEqual("one", obj.ae) self.assertRaises(ValueError, dummybase, ae="not exists") diff -Nru ceilometer-2014.1~b3/ceilometer/tests/base.py ceilometer-2014.1~rc1/ceilometer/tests/base.py --- ceilometer-2014.1~b3/ceilometer/tests/base.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/base.py 2014-03-31 15:32:25.000000000 +0000 @@ -20,6 +20,7 @@ """ import functools import os.path +import six from testtools import testcase @@ -58,11 +59,13 @@ def skip_if_not_implemented(*args, **kwargs): try: return func(*args, **kwargs) + except AssertionError: + raise except NotImplementedError as e: - raise testcase.TestSkipped(str(e)) + raise testcase.TestSkipped(six.text_type(e)) except Exception as e: - if 'not implemented' in str(e): - raise testcase.TestSkipped(str(e)) + if 'not implemented' in six.text_type(e): + raise testcase.TestSkipped(six.text_type(e)) raise return skip_if_not_implemented diff -Nru ceilometer-2014.1~b3/ceilometer/tests/central/test_manager.py ceilometer-2014.1~rc1/ceilometer/tests/central/test_manager.py --- ceilometer-2014.1~b3/ceilometer/tests/central/test_manager.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/central/test_manager.py 2014-03-31 15:32:25.000000000 +0000 @@ -50,3 +50,12 @@ polling_tasks = self.mgr.setup_polling_tasks() self.mgr.interval_task(polling_tasks.values()[0]) self.assertTrue(self.Pollster.resources) + + def test_skip_task_when_keystone_fail(self): + """Test for https://bugs.launchpad.net/ceilometer/+bug/1287613.""" + self.useFixture(mockpatch.Patch( + 'keystoneclient.v2_0.client.Client', + side_effect=Exception)) + polling_tasks = self.mgr.setup_polling_tasks() + self.mgr.interval_task(polling_tasks.values()[0]) + self.assertFalse(self.Pollster.samples) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/notifications/test_cpu.py ceilometer-2014.1~rc1/ceilometer/tests/compute/notifications/test_cpu.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/notifications/test_cpu.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/notifications/test_cpu.py 2014-03-31 15:32:25.000000000 +0000 @@ -94,7 +94,7 @@ self.assertIn(METRICS_UPDATE['event_type'], ic.event_types) samples = list(ic.process_notification(METRICS_UPDATE)) - self.assertEqual(samples[0].resource_id, RES_ID) + self.assertEqual(RES_ID, samples[0].resource_id) return samples[0] def test_compute_metrics(self): @@ -104,56 +104,56 @@ info = ic._get_sample(METRICS_UPDATE, 'cpu.frequency') info_none = ic._get_sample(METRICS_UPDATE, 'abc.efg') info_error = ic._get_sample(ERROR_METRICS, 'cpu.frequency') - self.assertEqual(info['payload']['name'], 'cpu.frequency') + self.assertEqual('cpu.frequency', info['payload']['name']) self.assertIsNone(info_none) self.assertIsNone(info_error) def test_compute_cpu_frequency(self): c = self._process_notification(cpu.CpuFrequency()) - self.assertEqual(c.name, 'compute.node.cpu.frequency') - self.assertEqual(c.volume, 1600) + self.assertEqual('compute.node.cpu.frequency', c.name) + self.assertEqual(1600, c.volume) def test_compute_cpu_user_time(self): c = self._process_notification(cpu.CpuUserTime()) - self.assertEqual(c.name, 'compute.node.cpu.user.time') - self.assertEqual(c.volume, 17421440000000L) + self.assertEqual('compute.node.cpu.user.time', c.name) + self.assertEqual(17421440000000L, c.volume) def test_compute_cpu_kernel_time(self): c = self._process_notification(cpu.CpuKernelTime()) - self.assertEqual(c.name, 'compute.node.cpu.kernel.time') - self.assertEqual(c.volume, 7852600000000L) + self.assertEqual('compute.node.cpu.kernel.time', c.name) + self.assertEqual(7852600000000L, c.volume) def test_compute_cpu_idle_time(self): c = self._process_notification(cpu.CpuIdleTime()) - self.assertEqual(c.name, 'compute.node.cpu.idle.time') - self.assertEqual(c.volume, 1307374400000000L) + self.assertEqual('compute.node.cpu.idle.time', c.name) + self.assertEqual(1307374400000000L, c.volume) def test_compute_cpu_iowait_time(self): c = self._process_notification(cpu.CpuIowaitTime()) - self.assertEqual(c.name, 'compute.node.cpu.iowait.time') - self.assertEqual(c.volume, 11697470000000L) + self.assertEqual('compute.node.cpu.iowait.time', c.name) + self.assertEqual(11697470000000L, c.volume) def test_compute_cpu_kernel_percent(self): c = self._process_notification(cpu.CpuKernelPercent()) - self.assertEqual(c.name, 'compute.node.cpu.kernel.percent') - self.assertEqual(c.volume, 0.5841204961898534) + self.assertEqual('compute.node.cpu.kernel.percent', c.name) + self.assertEqual(0.5841204961898534, c.volume) def test_compute_cpu_idle_percent(self): c = self._process_notification(cpu.CpuIdlePercent()) - self.assertEqual(c.name, 'compute.node.cpu.idle.percent') - self.assertEqual(c.volume, 97.24985141658965) + self.assertEqual('compute.node.cpu.idle.percent', c.name) + self.assertEqual(97.24985141658965, c.volume) def test_compute_cpu_user_percent(self): c = self._process_notification(cpu.CpuUserPercent()) - self.assertEqual(c.name, 'compute.node.cpu.user.percent') - self.assertEqual(c.volume, 1.2959045637294348) + self.assertEqual('compute.node.cpu.user.percent', c.name) + self.assertEqual(1.2959045637294348, c.volume) def test_compute_cpu_iowait_percent(self): c = self._process_notification(cpu.CpuIowaitPercent()) - self.assertEqual(c.name, 'compute.node.cpu.iowait.percent') - self.assertEqual(c.volume, 0.8701235234910634) + self.assertEqual('compute.node.cpu.iowait.percent', c.name) + self.assertEqual(0.8701235234910634, c.volume) def test_compute_cpu_percent(self): c = self._process_notification(cpu.CpuPercent()) - self.assertEqual(c.name, 'compute.node.cpu.percent') - self.assertEqual(c.volume, 2.7501485834103515) + self.assertEqual('compute.node.cpu.percent', c.name) + self.assertEqual(2.7501485834103515, c.volume) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/notifications/test_instance.py ceilometer-2014.1~rc1/ceilometer/tests/compute/notifications/test_instance.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/notifications/test_instance.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/notifications/test_instance.py 2014-03-31 15:32:25.000000000 +0000 @@ -201,7 +201,9 @@ u'hostname': u's1', u'state': u'resized', u'launched_at': u'2013-01-04T15:10:14.923939', - u'metadata': [], + u'metadata': {u'metering.server_group': u'Group_A', + u'AutoScalingGroupName': u'tyky-Group_Awste7', + u'metering.foo.bar': u'true'}, u'ramdisk_id': u'5f23128e-5525-46d8-bc66-9c30cd87141a', u'access_ip_v6': None, u'disk_gb': 20, @@ -258,7 +260,9 @@ u'hostname': u's1', u'state': u'resized', u'launched_at': u'2013-01-04T15:10:14.000000', - u'metadata': [], + u'metadata': {u'metering.server_group': u'Group_A', + u'AutoScalingGroupName': u'tyky-Group_A-wste7', + u'metering.foo.bar': u'true'}, u'ramdisk_id': u'5f23128e-5525-46d8-bc66-9c30cd87141a', u'access_ip_v6': None, u'disk_gb': 0, @@ -315,7 +319,9 @@ u'hostname': u's1', u'state': u'resized', u'launched_at': u'2013-01-04T15:10:14.000000', - u'metadata': [], + u'metadata': {u'metering.server_group': u'Group_A', + u'AutoScalingGroupName': u'tyky-Group_A-wste7', + u'metering.foo.bar': u'true'}, u'ramdisk_id': u'5f23128e-5525-46d8-bc66-9c30cd87141a', u'access_ip_v6': None, u'disk_gb': 0, @@ -352,49 +358,190 @@ u'priority': u'INFO' } - INSTANCE_SCHEDULED = { - u'_context_roles': [u'admin'], - u'_context_request_id': u'req-9da1d714-dabe-42fd-8baa-583e57cd4f1a', + u'_context_request_id': u'req-f28a836a-32bf-4cc3-940a-3515878c181f', u'_context_quota_class': None, u'event_type': u'scheduler.run_instance.scheduled', - u'_context_user_name': u'admin', - u'_context_project_name': u'admin', - u'timestamp': u'2013-01-04 15:20:32.009532', - u'_context_is_admin': True, - u'message_id': u'c48deeba-d0c3-4154-b3db-47480b52267a', - u'_context_auth_token': None, - u'_context_instance_lock_checked': False, - u'_context_project_id': u'cea4b25edb484e5392727181b7721d29', - u'_context_timestamp': u'2013-01-04T15:19:51.018218', - u'_context_read_deleted': u'no', - u'_context_user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed', - u'_context_remote_address': u'10.147.132.184', - u'publisher_id': u'compute.ip-10-147-132-184.ec2.internal', + u'_context_service_catalog': [{ + u'endpoints': [{ + u'adminURL': + u'http://172.16.12.21:8776/v1/2bd766a095b44486bf07cf7f666997eb', + u'region': u'RegionOne', + u'internalURL': + u'http://172.16.12.21:8776/v1/2bd766a095b44486bf07cf7f666997eb', + u'id': u'30cb904fdc294eea9b225e06b2d0d4eb', + u'publicURL': + u'http://172.16.12.21:8776/v1/2bd766a095b44486bf07cf7f666997eb'}], + u'endpoints_links': [], + u'type': u'volume', + u'name': u'cinder'}], + u'_context_auth_token': u'TOK', + u'_context_user_id': u'0a757cd896b64b65ba3784afef564116', u'payload': { 'instance_id': 'fake-uuid1-1', - 'weighted_host': { - 'host': 'host3', - 'weight': 3.0, - }, - 'request_spec': { - 'instance_properties': { - 'root_gb': 512, - 'ephemeral_gb': 0, - 'launch_index': 0, - 'memory_mb': 512, - 'vcpus': 1, - 'os_type': 'Linux', - 'project_id': 1, - 'system_metadata': {'system': 'metadata'}}, - 'instance_type': {'memory_mb': 512, - 'vcpus': 1, - 'root_gb': 512, - 'ephemeral_gb': 0}, - 'instance_uuids': ['fake-uuid1-1'], - }, - }, - u'priority': u'INFO' + u'weighted_host': {u'host': u'eglynn-f19-devstack3', u'weight': 1.0}, + u'request_spec': { + u'num_instances': 1, + u'block_device_mapping': [{ + u'instance_uuid': u'9206baae-c3b6-41bc-96f2-2c0726ff51c8', + u'guest_format': None, + u'boot_index': 0, + u'no_device': None, + u'connection_info': None, + u'volume_id': None, + u'volume_size': None, + u'device_name': None, + u'disk_bus': None, + u'image_id': u'0560ac3f-3bcd-434d-b012-8dd7a212b73b', + u'source_type': u'image', + u'device_type': u'disk', + u'snapshot_id': None, + u'destination_type': u'local', + u'delete_on_termination': True}], + u'image': { + u'status': u'active', + u'name': u'cirros-0.3.1-x86_64-uec', + u'deleted': False, + u'container_format': u'ami', + u'created_at': u'2014-02-18T13:16:26.000000', + u'disk_format': u'ami', + u'updated_at': u'2014-02-18T13:16:27.000000', + u'properties': { + u'kernel_id': u'c8794c1a-4158-42cc-9f97-d0d250c9c6a4', + u'ramdisk_id': u'4999726c-545c-4a9e-bfc0-917459784275'}, + u'min_disk': 0, + u'min_ram': 0, + u'checksum': u'f8a2eeee2dc65b3d9b6e63678955bd83', + u'owner': u'2bd766a095b44486bf07cf7f666997eb', + u'is_public': True, + u'deleted_at': None, + u'id': u'0560ac3f-3bcd-434d-b012-8dd7a212b73b', + u'size': 25165824}, + u'instance_type': { + u'root_gb': 1, + u'name': u'm1.tiny', + u'ephemeral_gb': 0, + u'memory_mb': 512, + u'vcpus': 1, + u'extra_specs': {}, + u'swap': 0, + u'rxtx_factor': 1.0, + u'flavorid': u'1', + u'vcpu_weight': None, + u'id': 2}, + u'instance_properties': { + u'vm_state': u'building', + u'availability_zone': None, + u'terminated_at': None, + u'ephemeral_gb': 0, + u'instance_type_id': 2, + u'user_data': None, + u'cleaned': False, + u'vm_mode': None, + u'deleted_at': None, + u'reservation_id': u'r-ven5q6om', + u'id': 15, + u'security_groups': [{ + u'deleted_at': None, + u'user_id': u'0a757cd896b64b65ba3784afef564116', + u'description': u'default', + u'deleted': False, + u'created_at': u'2014-02-19T11:02:31.000000', + u'updated_at': None, + u'project_id': u'2bd766a095b44486bf07cf7f666997eb', + u'id': 1, + u'name': u'default'}], + u'disable_terminate': False, + u'root_device_name': None, + u'display_name': u'new', + u'uuid': u'9206baae-c3b6-41bc-96f2-2c0726ff51c8', + u'default_swap_device': None, + u'info_cache': { + u'instance_uuid': u'9206baae-c3b6-41bc-96f2-2c0726ff51c8', + u'deleted': False, + u'created_at': u'2014-03-05T12:44:00.000000', + u'updated_at': None, + u'network_info': [], + u'deleted_at': None}, + u'hostname': u'new', + u'launched_on': None, + u'display_description': u'new', + u'key_data': None, + u'deleted': False, + u'config_drive': u'', + u'power_state': 0, + u'default_ephemeral_device': None, + u'progress': 0, + u'project_id': u'2bd766a095b44486bf07cf7f666997eb', + u'launched_at': None, + u'scheduled_at': None, + u'node': None, + u'ramdisk_id': u'4999726c-545c-4a9e-bfc0-917459784275', + u'access_ip_v6': None, + u'access_ip_v4': None, + u'kernel_id': u'c8794c1a-4158-42cc-9f97-d0d250c9c6a4', + u'key_name': None, + u'updated_at': None, + u'host': None, + u'root_gb': 1, + u'user_id': u'0a757cd896b64b65ba3784afef564116', + u'system_metadata': { + u'image_kernel_id': + u'c8794c1a-4158-42cc-9f97-d0d250c9c6a4', + u'image_min_disk': u'1', + u'instance_type_memory_mb': u'512', + u'instance_type_swap': u'0', + u'instance_type_vcpu_weight': None, + u'instance_type_root_gb': u'1', + u'instance_type_name': u'm1.tiny', + u'image_ramdisk_id': + u'4999726c-545c-4a9e-bfc0-917459784275', + u'instance_type_id': u'2', + u'instance_type_ephemeral_gb': u'0', + u'instance_type_rxtx_factor': u'1.0', + u'instance_type_flavorid': u'1', + u'instance_type_vcpus': u'1', + u'image_container_format': u'ami', + u'image_min_ram': u'0', + u'image_disk_format': u'ami', + u'image_base_image_ref': + u'0560ac3f-3bcd-434d-b012-8dd7a212b73b'}, + u'task_state': u'scheduling', + u'shutdown_terminate': False, + u'cell_name': None, + u'ephemeral_key_uuid': None, + u'locked': False, + u'name': u'instance-0000000f', + u'created_at': u'2014-03-05T12:44:00.000000', + u'locked_by': None, + u'launch_index': 0, + u'memory_mb': 512, + u'vcpus': 1, + u'image_ref': u'0560ac3f-3bcd-434d-b012-8dd7a212b73b', + u'architecture': None, + u'auto_disk_config': False, + u'os_type': None, + u'metadata': {u'metering.server_group': u'Group_A', + u'AutoScalingGroupName': u'tyky-Group_Awste7', + u'metering.foo.bar': u'true'}}, + u'security_group': [u'default'], + u'instance_uuids': [u'9206baae-c3b6-41bc-96f2-2c0726ff51c8']}}, + u'priority': u'INFO', + u'_context_is_admin': True, + u'_context_timestamp': u'2014-03-05T12:44:00.135674', + u'publisher_id': u'scheduler.eglynn-f19-devstack3', + u'message_id': u'd6c1ae63-a26b-47c7-8397-8794216e09dd', + u'_context_remote_address': u'172.16.12.21', + u'_context_roles': [u'_member_', u'admin'], + u'timestamp': u'2014-03-05 12:44:00.733758', + u'_context_user': u'0a757cd896b64b65ba3784afef564116', + u'_unique_id': u'2af47cbdde604ff794bb046f3f9db1e2', + u'_context_project_name': u'admin', + u'_context_read_deleted': u'no', + u'_context_tenant': u'2bd766a095b44486bf07cf7f666997eb', + u'_context_instance_lock_checked': False, + u'_context_project_id': u'2bd766a095b44486bf07cf7f666997eb', + u'_context_user_name': u'admin' } @@ -418,143 +565,161 @@ ('host', info.resource_metadata['host'], INSTANCE_CREATE_END['publisher_id']), ]: - self.assertEqual(actual, expected, name) + self.assertEqual(expected, actual, name) @staticmethod def _find_counter(counters, name): return filter(lambda counter: counter.name == name, counters)[0] + def _verify_user_metadata(self, metadata): + self.assertIn('user_metadata', metadata) + user_meta = metadata['user_metadata'] + self.assertEqual(user_meta.get('server_group'), 'Group_A') + self.assertNotIn('AutoScalingGroupName', user_meta) + self.assertIn('foo_bar', user_meta) + self.assertNotIn('foo.bar', user_meta) + def test_instance_create_instance(self): ic = instance.Instance() counters = list(ic.process_notification(INSTANCE_CREATE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, 1) + self.assertEqual(1, c.volume) def test_instance_create_flavor(self): ic = instance.InstanceFlavor() counters = list(ic.process_notification(INSTANCE_CREATE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, 1) + self.assertEqual(1, c.volume) def test_instance_create_memory(self): ic = instance.Memory() counters = list(ic.process_notification(INSTANCE_CREATE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, INSTANCE_CREATE_END['payload']['memory_mb']) + self.assertEqual(INSTANCE_CREATE_END['payload']['memory_mb'], c.volume) def test_instance_create_vcpus(self): ic = instance.VCpus() counters = list(ic.process_notification(INSTANCE_CREATE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, INSTANCE_CREATE_END['payload']['vcpus']) + self.assertEqual(INSTANCE_CREATE_END['payload']['vcpus'], c.volume) def test_instance_create_root_disk_size(self): ic = instance.RootDiskSize() counters = list(ic.process_notification(INSTANCE_CREATE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, INSTANCE_CREATE_END['payload']['root_gb']) + self.assertEqual(INSTANCE_CREATE_END['payload']['root_gb'], c.volume) def test_instance_create_ephemeral_disk_size(self): ic = instance.EphemeralDiskSize() counters = list(ic.process_notification(INSTANCE_CREATE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, - INSTANCE_CREATE_END['payload']['ephemeral_gb']) + self.assertEqual(INSTANCE_CREATE_END['payload']['ephemeral_gb'], + c.volume) def test_instance_exists_instance(self): ic = instance.Instance() counters = list(ic.process_notification(INSTANCE_EXISTS)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) def test_instance_exists_flavor(self): ic = instance.Instance() counters = list(ic.process_notification(INSTANCE_EXISTS)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) def test_instance_delete_instance(self): ic = instance.Instance() counters = list(ic.process_notification(INSTANCE_DELETE_START)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) def test_instance_delete_flavor(self): ic = instance.Instance() counters = list(ic.process_notification(INSTANCE_DELETE_START)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) def test_instance_finish_resize_instance(self): ic = instance.Instance() counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, 1) + self.assertEqual(1, c.volume) + self._verify_user_metadata(c.resource_metadata) def test_instance_finish_resize_flavor(self): ic = instance.InstanceFlavor() counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, 1) - self.assertEqual(c.name, 'instance:m1.small') + self.assertEqual(1, c.volume) + self.assertEqual('instance:m1.small', c.name) + self._verify_user_metadata(c.resource_metadata) def test_instance_finish_resize_memory(self): ic = instance.Memory() counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, - INSTANCE_FINISH_RESIZE_END['payload']['memory_mb']) + self.assertEqual(INSTANCE_FINISH_RESIZE_END['payload']['memory_mb'], + c.volume) + self._verify_user_metadata(c.resource_metadata) def test_instance_finish_resize_vcpus(self): ic = instance.VCpus() counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, - INSTANCE_FINISH_RESIZE_END['payload']['vcpus']) + self.assertEqual(INSTANCE_FINISH_RESIZE_END['payload']['vcpus'], + c.volume) + self._verify_user_metadata(c.resource_metadata) def test_instance_resize_finish_instance(self): ic = instance.Instance() counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, 1) + self.assertEqual(1, c.volume) + self._verify_user_metadata(c.resource_metadata) def test_instance_resize_finish_flavor(self): ic = instance.InstanceFlavor() counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, 1) - self.assertEqual(c.name, 'instance:m1.tiny') + self.assertEqual(1, c.volume) + self.assertEqual('instance:m1.tiny', c.name) + self._verify_user_metadata(c.resource_metadata) def test_instance_resize_finish_memory(self): ic = instance.Memory() counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, - INSTANCE_RESIZE_REVERT_END['payload']['memory_mb']) + self.assertEqual(INSTANCE_RESIZE_REVERT_END['payload']['memory_mb'], + c.volume) + self._verify_user_metadata(c.resource_metadata) def test_instance_resize_finish_vcpus(self): ic = instance.VCpus() counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) c = counters[0] - self.assertEqual(c.volume, - INSTANCE_RESIZE_REVERT_END['payload']['vcpus']) + self.assertEqual(INSTANCE_RESIZE_REVERT_END['payload']['vcpus'], + c.volume) + self._verify_user_metadata(c.resource_metadata) def test_instance_delete_samples(self): ic = instance.InstanceDelete() counters = list(ic.process_notification(INSTANCE_DELETE_SAMPLES)) - self.assertEqual(len(counters), 2) + self.assertEqual(2, len(counters)) names = [c.name for c in counters] - self.assertEqual(names, ['sample-name1', 'sample-name2']) + self.assertEqual(['sample-name1', 'sample-name2'], names) + c = counters[0] + self._verify_user_metadata(c.resource_metadata) def test_instance_scheduled(self): ic = instance.InstanceScheduled() @@ -563,8 +728,8 @@ ic.event_types) counters = list(ic.process_notification(INSTANCE_SCHEDULED)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) names = [c.name for c in counters] - self.assertEqual(names, ['instance.scheduled']) + self.assertEqual(['instance.scheduled'], names) rid = [c.resource_id for c in counters] - self.assertEqual(rid, ['fake-uuid1-1']) + self.assertEqual(['fake-uuid1-1'], rid) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_cpu.py ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_cpu.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_cpu.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_cpu.py 2014-03-31 15:32:25.000000000 +0000 @@ -54,11 +54,10 @@ def _verify_cpu_metering(expected_time): cache = {} samples = list(pollster.get_samples(mgr, cache, [self.instance])) - self.assertEqual(len(samples), 1) - self.assertEqual(set([s.name for s in samples]), - set(['cpu'])) - self.assertEqual(samples[0].volume, expected_time) - self.assertEqual(samples[0].resource_metadata.get('cpu_number'), 2) + self.assertEqual(1, len(samples)) + self.assertEqual(set(['cpu']), set([s.name for s in samples])) + self.assertEqual(expected_time, samples[0].volume) + self.assertEqual(2, samples[0].resource_metadata.get('cpu_number')) # ensure elapsed time between polling cycles is non-zero time.sleep(0.001) @@ -76,6 +75,39 @@ cache = {} samples = list(pollster.get_samples(mgr, cache, [self.instance])) - self.assertEqual(len(samples), 1) - self.assertEqual(samples[0].volume, 10 ** 6) - self.assertEqual(len(cache), 0) + self.assertEqual(1, len(samples)) + self.assertEqual(10 ** 6, samples[0].volume) + self.assertEqual(0, len(cache)) + + +class TestCPUUtilPollster(base.TestPollsterBase): + + def setUp(self): + super(TestCPUUtilPollster, self).setUp() + + @mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock()) + def test_get_samples(self): + next_value = iter(( + virt_inspector.CPUUtilStats(util=40), + virt_inspector.CPUUtilStats(util=60), + )) + + def inspect_cpu_util(name, duration): + return six.next(next_value) + + self.inspector.inspect_cpu_util = \ + mock.Mock(side_effect=inspect_cpu_util) + + mgr = manager.AgentManager() + pollster = cpu.CPUUtilPollster() + + def _verify_cpu_util_metering(expected_util): + cache = {} + samples = list(pollster.get_samples(mgr, cache, [self.instance])) + self.assertEqual(1, len(samples)) + self.assertEqual(set(['cpu_util']), + set([s.name for s in samples])) + self.assertEqual(expected_util, samples[0].volume) + + _verify_cpu_util_metering(40) + _verify_cpu_util_metering(60) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_diskio.py ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_diskio.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_diskio.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_diskio.py 2014-03-31 15:32:25.000000000 +0000 @@ -50,13 +50,12 @@ self.assertIn(pollster.CACHE_KEY_DISK, cache) self.assertIn(self.instance.name, cache[pollster.CACHE_KEY_DISK]) - self.assertEqual(set([s.name for s in samples]), - set([name])) + self.assertEqual(set([name]), set([s.name for s in samples])) match = [s for s in samples if s.name == name] self.assertEqual(len(match), 1, 'missing counter %s' % name) - self.assertEqual(match[0].volume, expected_volume) - self.assertEqual(match[0].type, 'cumulative') + self.assertEqual(expected_volume, match[0].volume) + self.assertEqual('cumulative', match[0].type) def test_disk_read_requests(self): self._check_get_samples(disk.ReadRequestsPollster, @@ -73,3 +72,54 @@ def test_disk_write_bytes(self): self._check_get_samples(disk.WriteBytesPollster, 'disk.write.bytes', 3L) + + +class TestDiskRatePollsters(base.TestPollsterBase): + + DISKS = [ + (virt_inspector.Disk(device='disk1'), + virt_inspector.DiskRateStats(1024, 300, 5120, 700)), + + (virt_inspector.Disk(device='disk2'), + virt_inspector.DiskRateStats(2048, 400, 6144, 800)) + ] + + def setUp(self): + super(TestDiskRatePollsters, self).setUp() + self.inspector.inspect_disk_rates = \ + mock.Mock(return_value=self.DISKS) + + @mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock()) + def _check_get_samples(self, factory, sample_name, expected_volume): + pollster = factory() + + mgr = manager.AgentManager() + cache = {} + samples = list(pollster.get_samples(mgr, cache, [self.instance])) + assert samples + self.assertIsNotNone(samples) + self.assertIn(pollster.CACHE_KEY_DISK_RATE, cache) + self.assertIn(self.instance.id, cache[pollster.CACHE_KEY_DISK_RATE]) + + self.assertEqual(set([sample_name]), set([s.name for s in samples])) + + match = [s for s in samples if s.name == sample_name] + self.assertEqual(1, len(match), 'missing counter %s' % sample_name) + self.assertEqual(expected_volume, match[0].volume) + self.assertEqual('gauge', match[0].type) + + def test_disk_read_bytes_rate(self): + self._check_get_samples(disk.ReadBytesRatePollster, + 'disk.read.bytes.rate', 3072L) + + def test_disk_read_requests_rate(self): + self._check_get_samples(disk.ReadRequestsRatePollster, + 'disk.read.requests.rate', 700L) + + def test_disk_write_bytes_rate(self): + self._check_get_samples(disk.WriteBytesRatePollster, + 'disk.write.bytes.rate', 11264L) + + def test_disk_write_requests_rate(self): + self._check_get_samples(disk.WriteRequestsRatePollster, + 'disk.write.requests.rate', 1500L) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_instance.py ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_instance.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_instance.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_instance.py 2014-03-31 15:32:25.000000000 +0000 @@ -35,18 +35,18 @@ mgr = manager.AgentManager() pollster = pollsters_instance.InstancePollster() samples = list(pollster.get_samples(mgr, {}, [self.instance])) - self.assertEqual(len(samples), 1) - self.assertEqual(samples[0].name, 'instance') - self.assertEqual(samples[0].resource_metadata['vcpus'], 1) - self.assertEqual(samples[0].resource_metadata['memory_mb'], 512) - self.assertEqual(samples[0].resource_metadata['disk_gb'], 20) - self.assertEqual(samples[0].resource_metadata['root_gb'], 20) - self.assertEqual(samples[0].resource_metadata['ephemeral_gb'], 0) + self.assertEqual(1, len(samples)) + self.assertEqual('instance', samples[0].name) + self.assertEqual(1, samples[0].resource_metadata['vcpus']) + self.assertEqual(512, samples[0].resource_metadata['memory_mb']) + self.assertEqual(20, samples[0].resource_metadata['disk_gb']) + self.assertEqual(20, samples[0].resource_metadata['root_gb']) + self.assertEqual(0, samples[0].resource_metadata['ephemeral_gb']) @mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock()) def test_get_samples_instance_flavor(self): mgr = manager.AgentManager() pollster = pollsters_instance.InstanceFlavorPollster() samples = list(pollster.get_samples(mgr, {}, [self.instance])) - self.assertEqual(len(samples), 1) - self.assertEqual(samples[0].name, 'instance:m1.small') + self.assertEqual(1, len(samples)) + self.assertEqual('instance:m1.small', samples[0].name) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_location_metadata.py ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_location_metadata.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_location_metadata.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_location_metadata.py 2014-03-31 15:32:25.000000000 +0000 @@ -90,12 +90,12 @@ prop = "host" elif prop == 'OS-EXT-SRV-ATTR:instance_name': prop = 'name' - self.assertEqual(md[prop], value) + self.assertEqual(value, md[prop]) user_metadata = md['user_metadata'] expected = self.INSTANCE_PROPERTIES[ 'metadata']['metering.autoscale.group'][:256] - self.assertEqual(user_metadata['autoscale_group'], expected) - self.assertEqual(len(user_metadata), 1) + self.assertEqual(expected, user_metadata['autoscale_group']) + self.assertEqual(1, len(user_metadata)) def test_metadata_empty_image(self): self.INSTANCE_PROPERTIES['image'] = '' diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_memory.py ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_memory.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_memory.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_memory.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,55 @@ +# Copyright (c) 2014 VMware, Inc. +# All Rights Reserved. +# +# 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. + +import mock +import six + +from ceilometer.compute import manager +from ceilometer.compute.pollsters import memory +from ceilometer.compute.virt import inspector as virt_inspector +from ceilometer.tests.compute.pollsters import base + + +class TestMemoryPollster(base.TestPollsterBase): + + def setUp(self): + super(TestMemoryPollster, self).setUp() + + @mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock()) + def test_get_samples(self): + next_value = iter(( + virt_inspector.MemoryUsageStats(usage=1.0), + virt_inspector.MemoryUsageStats(usage=2.0), + )) + + def inspect_memory_usage(instance, duration): + return six.next(next_value) + + self.inspector.inspect_memory_usage = \ + mock.Mock(side_effect=inspect_memory_usage) + + mgr = manager.AgentManager() + pollster = memory.MemoryUsagePollster() + + def _verify_memory_metering(expected_memory_mb): + cache = {} + samples = list(pollster.get_samples(mgr, cache, [self.instance])) + self.assertEqual(1, len(samples)) + self.assertEqual(set(['memory.usage']), + set([s.name for s in samples])) + self.assertEqual(expected_memory_mb, samples[0].volume) + + _verify_memory_metering(1.0) + _verify_memory_metering(2.0) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_net.py ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_net.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/pollsters/test_net.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/pollsters/test_net.py 2014-03-31 15:32:25.000000000 +0000 @@ -73,18 +73,18 @@ mgr = manager.AgentManager() pollster = factory() samples = list(pollster.get_samples(mgr, {}, [self.instance])) - self.assertEqual(len(samples), 3) # one for each nic - self.assertEqual(set([s.name for s in samples]), - set([samples[0].name])) + self.assertEqual(3, len(samples)) # one for each nic + self.assertEqual(set([samples[0].name]), + set([s.name for s in samples])) def _verify_vnic_metering(ip, expected_volume, expected_rid): match = [s for s in samples if s.resource_metadata['parameters']['ip'] == ip ] self.assertEqual(len(match), 1, 'missing ip %s' % ip) - self.assertEqual(match[0].volume, expected_volume) - self.assertEqual(match[0].type, 'cumulative') - self.assertEqual(match[0].resource_id, expected_rid) + self.assertEqual(expected_volume, match[0].volume) + self.assertEqual('cumulative', match[0].type) + self.assertEqual(expected_rid, match[0].resource_id) for ip, volume, rid in expected: _verify_vnic_metering(ip, volume, rid) @@ -158,7 +158,7 @@ }, } samples = list(pollster.get_samples(mgr, cache, [self.instance])) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) def test_incoming_bytes(self): self._check_get_samples_cache(net.IncomingBytesPollster) @@ -171,3 +171,89 @@ def test_outgoing_packets(self): self._check_get_samples_cache(net.OutgoingPacketsPollster) + + +class TestNetRatesPollster(base.TestPollsterBase): + + def setUp(self): + super(TestNetRatesPollster, self).setUp() + self.vnic0 = virt_inspector.Interface( + name='vnet0', + fref='fa163e71ec6e', + mac='fa:16:3e:71:ec:6d', + parameters=dict(ip='10.0.0.2', + projmask='255.255.255.0', + projnet='proj1', + dhcp_server='10.0.0.1')) + stats0 = virt_inspector.InterfaceRateStats(rx_bytes_rate=1L, + tx_bytes_rate=2L) + self.vnic1 = virt_inspector.Interface( + name='vnet1', + fref='fa163e71ec6f', + mac='fa:16:3e:71:ec:6e', + parameters=dict(ip='192.168.0.3', + projmask='255.255.255.0', + projnet='proj2', + dhcp_server='10.0.0.2')) + stats1 = virt_inspector.InterfaceRateStats(rx_bytes_rate=3L, + tx_bytes_rate=4L) + self.vnic2 = virt_inspector.Interface( + name='vnet2', + fref=None, + mac='fa:18:4e:72:fc:7e', + parameters=dict(ip='192.168.0.4', + projmask='255.255.255.0', + projnet='proj3', + dhcp_server='10.0.0.3')) + stats2 = virt_inspector.InterfaceRateStats(rx_bytes_rate=5L, + tx_bytes_rate=6L) + + vnics = [ + (self.vnic0, stats0), + (self.vnic1, stats1), + (self.vnic2, stats2), + ] + self.inspector.inspect_vnic_rates = mock.Mock(return_value=vnics) + + @mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock()) + def _check_get_samples(self, factory, expected): + mgr = manager.AgentManager() + pollster = factory() + samples = list(pollster.get_samples(mgr, {}, [self.instance])) + self.assertEqual(3, len(samples)) # one for each nic + self.assertEqual(set([samples[0].name]), + set([s.name for s in samples])) + + def _verify_vnic_metering(ip, expected_volume, expected_rid): + match = [s for s in samples + if s.resource_metadata['parameters']['ip'] == ip + ] + self.assertEqual(1, len(match), 'missing ip %s' % ip) + self.assertEqual(expected_volume, match[0].volume) + self.assertEqual('gauge', match[0].type) + self.assertEqual(expected_rid, match[0].resource_id) + + for ip, volume, rid in expected: + _verify_vnic_metering(ip, volume, rid) + + def test_incoming_bytes_rate(self): + instance_name_id = "%s-%s" % (self.instance.name, self.instance.id) + self._check_get_samples( + net.IncomingBytesRatePollster, + [('10.0.0.2', 1L, self.vnic0.fref), + ('192.168.0.3', 3L, self.vnic1.fref), + ('192.168.0.4', 5L, + "%s-%s" % (instance_name_id, self.vnic2.name)), + ], + ) + + def test_outgoing_bytes(self): + instance_name_id = "%s-%s" % (self.instance.name, self.instance.id) + self._check_get_samples( + net.OutgoingBytesRatePollster, + [('10.0.0.2', 2L, self.vnic0.fref), + ('192.168.0.3', 4L, self.vnic1.fref), + ('192.168.0.4', 6L, + "%s-%s" % (instance_name_id, self.vnic2.name)), + ], + ) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/test_manager.py ceilometer-2014.1~rc1/ceilometer/tests/compute/test_manager.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/test_manager.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/test_manager.py 2014-03-31 15:32:25.000000000 +0000 @@ -73,8 +73,8 @@ def test_interval_exception_isolation(self): super(TestRunTasks, self).test_interval_exception_isolation() - self.assertEqual(len(self.PollsterException.samples), 1) - self.assertEqual(len(self.PollsterExceptionAnother.samples), 1) + self.assertEqual(1, len(self.PollsterException.samples)) + self.assertEqual(1, len(self.PollsterExceptionAnother.samples)) def test_manager_exception_persistency(self): super(TestRunTasks, self).test_manager_exception_persistency() diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/virt/hyperv/test_inspector.py ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/hyperv/test_inspector.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/virt/hyperv/test_inspector.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/hyperv/test_inspector.py 2014-03-31 15:32:25.000000000 +0000 @@ -21,6 +21,7 @@ from ceilometer.compute.virt.hyperv import inspector as hyperv_inspector from ceilometer.openstack.common import test +from ceilometer.openstack.common import units class TestHyperVInspection(test.BaseTestCase): @@ -69,14 +70,14 @@ def test_inspect_vnics(self): fake_instance_name = 'fake_instance_name' - fake_rx_bytes = 1000 - fake_tx_bytes = 2000 + fake_rx_mb = 1000 + fake_tx_mb = 2000 fake_element_name = 'fake_element_name' fake_address = 'fake_address' self._inspector._utils.get_vnic_metrics.return_value = [{ - 'rx_bytes': fake_rx_bytes, - 'tx_bytes': fake_tx_bytes, + 'rx_mb': fake_rx_mb, + 'tx_mb': fake_tx_mb, 'element_name': fake_element_name, 'address': fake_address}] @@ -91,8 +92,8 @@ self.assertEqual(fake_element_name, inspected_vnic.name) self.assertEqual(fake_address, inspected_vnic.mac) - self.assertEqual(fake_rx_bytes, inspected_stats.rx_bytes) - self.assertEqual(fake_tx_bytes, inspected_stats.tx_bytes) + self.assertEqual(fake_rx_mb * units.Mi, inspected_stats.rx_bytes) + self.assertEqual(fake_tx_mb * units.Mi, inspected_stats.tx_bytes) def test_inspect_disks(self): fake_instance_name = 'fake_instance_name' @@ -120,5 +121,5 @@ self.assertEqual(fake_device, inspected_disk.device) - self.assertEqual(fake_read_mb * 1024, inspected_stats.read_bytes) - self.assertEqual(fake_write_mb * 1024, inspected_stats.write_bytes) + self.assertEqual(fake_read_mb * units.Mi, inspected_stats.read_bytes) + self.assertEqual(fake_write_mb * units.Mi, inspected_stats.write_bytes) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/virt/hyperv/test_utilsv2.py ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/hyperv/test_utilsv2.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/virt/hyperv/test_utilsv2.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/hyperv/test_utilsv2.py 2014-03-31 15:32:25.000000000 +0000 @@ -26,6 +26,8 @@ class TestUtilsV2(test.BaseTestCase): + _FAKE_RETURN_CLASS = 'fake_return_class' + def setUp(self): self._utils = utilsv2.UtilsV2() self._utils._conn = mock.MagicMock() @@ -83,13 +85,17 @@ self.assertEqual(fake_cpu_count, cpu_metrics[1]) self.assertEqual(fake_uptime, cpu_metrics[2]) - def test_get_vnic_metrics(self): + @mock.patch('ceilometer.compute.virt.hyperv.utilsv2.UtilsV2' + '._sum_metric_values_by_defs') + @mock.patch('ceilometer.compute.virt.hyperv.utilsv2.UtilsV2' + '._get_metric_value_instances') + def test_get_vnic_metrics(self, mock_get_instances, mock_get_by_defs): fake_vm_element_name = "fake_vm_element_name" fake_vnic_element_name = "fake_vnic_name" fake_vnic_address = "fake_vnic_address" fake_vnic_path = "fake_vnic_path" - fake_rx_bytes = 1000 - fake_tx_bytes = 2000 + fake_rx_mb = 1000 + fake_tx_mb = 2000 self._utils._lookup_vm = mock.MagicMock() self._utils._get_vm_resources = mock.MagicMock() @@ -106,15 +112,13 @@ self._utils._get_metric_def = mock.MagicMock() - self._utils._get_metric_values = mock.MagicMock() - self._utils._get_metric_values.return_value = [fake_rx_bytes, - fake_tx_bytes] + mock_get_by_defs.return_value = [fake_rx_mb, fake_tx_mb] vnic_metrics = list(self._utils.get_vnic_metrics(fake_vm_element_name)) self.assertEqual(1, len(vnic_metrics)) - self.assertEqual(fake_rx_bytes, vnic_metrics[0]['rx_bytes']) - self.assertEqual(fake_tx_bytes, vnic_metrics[0]['tx_bytes']) + self.assertEqual(fake_rx_mb, vnic_metrics[0]['rx_mb']) + self.assertEqual(fake_tx_mb, vnic_metrics[0]['tx_mb']) self.assertEqual(fake_vnic_element_name, vnic_metrics[0]['element_name']) self.assertEqual(fake_vnic_address, vnic_metrics[0]['address']) @@ -148,6 +152,19 @@ self.assertEqual(fake_instance_id, disk_metrics[0]['instance_id']) self.assertEqual(fake_host_resource, disk_metrics[0]['host_resource']) + def test_get_metric_value_instances(self): + mock_el1 = mock.MagicMock() + mock_associator = mock.MagicMock() + mock_el1.associators.return_value = [mock_associator] + + mock_el2 = mock.MagicMock() + mock_el2.associators.return_value = [] + + returned = self._utils._get_metric_value_instances( + [mock_el1, mock_el2], self._FAKE_RETURN_CLASS) + + self.assertEqual([mock_associator], returned) + def test_lookup_vm(self): fake_vm_element_name = "fake_vm_element_name" fake_vm = "fake_vm" diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/virt/libvirt/test_inspector.py ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/libvirt/test_inspector.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/virt/libvirt/test_inspector.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/libvirt/test_inspector.py 2014-03-31 15:32:25.000000000 +0000 @@ -58,10 +58,10 @@ mock.patch.object(connection, 'lookupByID', return_value=fake_domain)): inspected_instances = list(self.inspector.inspect_instances()) - self.assertEqual(len(inspected_instances), 1) + self.assertEqual(1, len(inspected_instances)) inspected_instance = inspected_instances[0] - self.assertEqual(inspected_instance.name, 'fake_name') - self.assertEqual(inspected_instance.UUID, 'uuid') + self.assertEqual('fake_name', inspected_instance.name) + self.assertEqual('uuid', inspected_instance.UUID) def test_inspect_cpus(self): with contextlib.nested(mock.patch.object(self.inspector.connection, @@ -71,8 +71,8 @@ return_value=(0L, 0L, 0L, 2L, 999999L))): cpu_info = self.inspector.inspect_cpus(self.instance_name) - self.assertEqual(cpu_info.number, 2L) - self.assertEqual(cpu_info.time, 999999L) + self.assertEqual(2L, cpu_info.number) + self.assertEqual(999999L, cpu_info.time) def test_inspect_vnics(self): dom_xml = """ @@ -152,44 +152,42 @@ 2L, 999999L))): interfaces = list(self.inspector.inspect_vnics(self.instance_name)) - self.assertEqual(len(interfaces), 3) + self.assertEqual(3, len(interfaces)) vnic0, info0 = interfaces[0] - self.assertEqual(vnic0.name, 'vnet0') - self.assertEqual(vnic0.mac, 'fa:16:3e:71:ec:6d') - self.assertEqual(vnic0.fref, - 'nova-instance-00000001-fa163e71ec6d') - self.assertEqual(vnic0.parameters.get('projmask'), '255.255.255.0') - self.assertEqual(vnic0.parameters.get('ip'), '10.0.0.2') - self.assertEqual(vnic0.parameters.get('projnet'), '10.0.0.0') - self.assertEqual(vnic0.parameters.get('dhcpserver'), '10.0.0.1') - self.assertEqual(info0.rx_bytes, 1L) - self.assertEqual(info0.rx_packets, 2L) - self.assertEqual(info0.tx_bytes, 3L) - self.assertEqual(info0.tx_packets, 4L) + self.assertEqual('vnet0', vnic0.name) + self.assertEqual('fa:16:3e:71:ec:6d', vnic0.mac) + self.assertEqual('nova-instance-00000001-fa163e71ec6d', vnic0.fref) + self.assertEqual('255.255.255.0', vnic0.parameters.get('projmask')) + self.assertEqual('10.0.0.2', vnic0.parameters.get('ip')) + self.assertEqual('10.0.0.0', vnic0.parameters.get('projnet')) + self.assertEqual('10.0.0.1', vnic0.parameters.get('dhcpserver')) + self.assertEqual(1L, info0.rx_bytes) + self.assertEqual(2L, info0.rx_packets) + self.assertEqual(3L, info0.tx_bytes) + self.assertEqual(4L, info0.tx_packets) vnic1, info1 = interfaces[1] - self.assertEqual(vnic1.name, 'vnet1') - self.assertEqual(vnic1.mac, 'fa:16:3e:71:ec:6e') - self.assertEqual(vnic1.fref, - 'nova-instance-00000001-fa163e71ec6e') - self.assertEqual(vnic1.parameters.get('projmask'), '255.255.255.0') - self.assertEqual(vnic1.parameters.get('ip'), '192.168.0.2') - self.assertEqual(vnic1.parameters.get('projnet'), '192.168.0.0') - self.assertEqual(vnic1.parameters.get('dhcpserver'), '192.168.0.1') - self.assertEqual(info1.rx_bytes, 5L) - self.assertEqual(info1.rx_packets, 6L) - self.assertEqual(info1.tx_bytes, 7L) - self.assertEqual(info1.tx_packets, 8L) + self.assertEqual('vnet1', vnic1.name) + self.assertEqual('fa:16:3e:71:ec:6e', vnic1.mac) + self.assertEqual('nova-instance-00000001-fa163e71ec6e', vnic1.fref) + self.assertEqual('255.255.255.0', vnic1.parameters.get('projmask')) + self.assertEqual('192.168.0.2', vnic1.parameters.get('ip')) + self.assertEqual('192.168.0.0', vnic1.parameters.get('projnet')) + self.assertEqual('192.168.0.1', vnic1.parameters.get('dhcpserver')) + self.assertEqual(5L, info1.rx_bytes) + self.assertEqual(6L, info1.rx_packets) + self.assertEqual(7L, info1.tx_bytes) + self.assertEqual(8L, info1.tx_packets) vnic2, info2 = interfaces[2] - self.assertEqual(vnic2.name, 'vnet2') - self.assertEqual(vnic2.mac, 'fa:16:3e:96:33:f0') + self.assertEqual('vnet2', vnic2.name) + self.assertEqual('fa:16:3e:96:33:f0', vnic2.mac) self.assertIsNone(vnic2.fref) - self.assertEqual(vnic2.parameters, dict()) - self.assertEqual(info2.rx_bytes, 9L) - self.assertEqual(info2.rx_packets, 10L) - self.assertEqual(info2.tx_bytes, 11L) - self.assertEqual(info2.tx_packets, 12L) + self.assertEqual(dict(), vnic2.parameters) + self.assertEqual(9L, info2.rx_bytes) + self.assertEqual(10L, info2.rx_packets) + self.assertEqual(11L, info2.tx_bytes) + self.assertEqual(12L, info2.tx_packets) def test_inspect_vnics_with_domain_shutoff(self): connection = self.inspector.connection @@ -230,13 +228,13 @@ 2L, 999999L))): disks = list(self.inspector.inspect_disks(self.instance_name)) - self.assertEqual(len(disks), 1) + self.assertEqual(1, len(disks)) disk0, info0 = disks[0] - self.assertEqual(disk0.device, 'vda') - self.assertEqual(info0.read_requests, 1L) - self.assertEqual(info0.read_bytes, 2L) - self.assertEqual(info0.write_requests, 3L) - self.assertEqual(info0.write_bytes, 4L) + self.assertEqual('vda', disk0.device) + self.assertEqual(1L, info0.read_requests) + self.assertEqual(2L, info0.read_bytes) + self.assertEqual(3L, info0.write_requests) + self.assertEqual(4L, info0.write_bytes) def test_inspect_disks_with_domain_shutoff(self): connection = self.inspector.connection diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/virt/vmware/test_inspector.py ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/vmware/test_inspector.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/virt/vmware/test_inspector.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/vmware/test_inspector.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,168 @@ +# Copyright (c) 2014 VMware, Inc. +# All Rights Reserved. +# +# 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. +""" +Tests for VMware Vsphere inspector. +""" + +import mock + +from oslo.vmware import api + +from ceilometer.compute.virt import inspector as virt_inspector +from ceilometer.compute.virt.vmware import inspector as vsphere_inspector +from ceilometer.openstack.common import test + + +class TestVsphereInspection(test.BaseTestCase): + + def setUp(self): + api_session = api.VMwareAPISession("test_server", "test_user", + "test_password", 0, None, + create_session=False) + api_session._vim = mock.MagicMock() + vsphere_inspector.get_api_session = mock.Mock( + return_value=api_session) + self._inspector = vsphere_inspector.VsphereInspector() + self._inspector._ops = mock.MagicMock() + + super(TestVsphereInspection, self).setUp() + + def test_inspect_memory_usage(self): + fake_instance_moid = 'fake_instance_moid' + fake_instance_id = 'fake_instance_id' + fake_perf_counter_id = 'fake_perf_counter_id' + fake_memory_value = 1024.0 + fake_stat = virt_inspector.MemoryUsageStats(usage=1.0) + + def construct_mock_instance_object(fake_instance_id): + instance_object = mock.MagicMock() + instance_object.id = fake_instance_id + return instance_object + + fake_instance = construct_mock_instance_object(fake_instance_id) + self._inspector._ops.get_vm_moid.return_value = fake_instance_moid + self._inspector._ops.get_perf_counter_id.return_value = \ + fake_perf_counter_id + self._inspector._ops.query_vm_aggregate_stats.return_value = \ + fake_memory_value + memory_stat = self._inspector.inspect_memory_usage(fake_instance) + self.assertEqual(fake_stat, memory_stat) + + def test_inspect_cpu_util(self): + fake_instance_moid = 'fake_instance_moid' + fake_instance_id = 'fake_instance_id' + fake_perf_counter_id = 'fake_perf_counter_id' + fake_cpu_util_value = 60 + fake_stat = virt_inspector.CPUUtilStats(util=60) + + def construct_mock_instance_object(fake_instance_id): + instance_object = mock.MagicMock() + instance_object.id = fake_instance_id + return instance_object + + fake_instance = construct_mock_instance_object(fake_instance_id) + self._inspector._ops.get_vm_moid.return_value = fake_instance_moid + self._inspector._ops.get_perf_counter_id.return_value = \ + fake_perf_counter_id + self._inspector._ops.query_vm_aggregate_stats.return_value = \ + fake_cpu_util_value * 100 + cpu_util_stat = self._inspector.inspect_cpu_util(fake_instance) + self.assertEqual(fake_stat, cpu_util_stat) + + def test_inspect_vnic_rates(self): + + # construct test data + test_vm_moid = "vm-21" + vnic1 = "vnic-1" + vnic2 = "vnic-2" + counter_name_to_id_map = { + vsphere_inspector.VC_NETWORK_RX_COUNTER: 1, + vsphere_inspector.VC_NETWORK_TX_COUNTER: 2 + } + counter_id_to_stats_map = { + 1: {vnic1: 1, vnic2: 3}, + 2: {vnic1: 2, vnic2: 4}, + } + + def get_counter_id_side_effect(counter_full_name): + return counter_name_to_id_map[counter_full_name] + + def query_stat_side_effect(vm_moid, counter_id, duration): + # assert inputs + self.assertEqual(test_vm_moid, vm_moid) + self.assertTrue(counter_id in counter_id_to_stats_map) + return counter_id_to_stats_map[counter_id] + + # configure vsphere operations mock with the test data + ops_mock = self._inspector._ops + ops_mock.get_vm_moid.return_value = test_vm_moid + ops_mock.get_perf_counter_id.side_effect = get_counter_id_side_effect + ops_mock.query_vm_device_stats.side_effect = \ + query_stat_side_effect + result = self._inspector.inspect_vnic_rates(mock.MagicMock()) + + # validate result + expected_stats = { + vnic1: virt_inspector.InterfaceRateStats(1024, 2048), + vnic2: virt_inspector.InterfaceRateStats(3072, 4096) + } + + for vnic, rates_info in result: + self.assertEqual(expected_stats[vnic.name], rates_info) + + def test_inspect_disk_rates(self): + + # construct test data + test_vm_moid = "vm-21" + disk1 = "disk-1" + disk2 = "disk-2" + counter_name_to_id_map = { + vsphere_inspector.VC_DISK_READ_RATE_CNTR: 1, + vsphere_inspector.VC_DISK_READ_REQUESTS_RATE_CNTR: 2, + vsphere_inspector.VC_DISK_WRITE_RATE_CNTR: 3, + vsphere_inspector.VC_DISK_WRITE_REQUESTS_RATE_CNTR: 4 + } + counter_id_to_stats_map = { + 1: {disk1: 1, disk2: 2}, + 2: {disk1: 300, disk2: 400}, + 3: {disk1: 5, disk2: 6}, + 4: {disk1: 700}, + } + + def get_counter_id_side_effect(counter_full_name): + return counter_name_to_id_map[counter_full_name] + + def query_stat_side_effect(vm_moid, counter_id, duration): + # assert inputs + self.assertEqual(test_vm_moid, vm_moid) + self.assertTrue(counter_id in counter_id_to_stats_map) + return counter_id_to_stats_map[counter_id] + + # configure vsphere operations mock with the test data + ops_mock = self._inspector._ops + ops_mock.get_vm_moid.return_value = test_vm_moid + ops_mock.get_perf_counter_id.side_effect = get_counter_id_side_effect + ops_mock.query_vm_device_stats.side_effect = query_stat_side_effect + + result = self._inspector.inspect_disk_rates(mock.MagicMock()) + + # validate result + expected_stats = { + disk1: virt_inspector.DiskRateStats(1024, 300, 5120, 700), + disk2: virt_inspector.DiskRateStats(2048, 400, 6144, 0) + } + + actual_stats = dict((disk.device, rates) for (disk, rates) in result) + self.assertEqual(expected_stats, actual_stats) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/compute/virt/vmware/test_vsphere_operations.py ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/vmware/test_vsphere_operations.py --- ceilometer-2014.1~b3/ceilometer/tests/compute/virt/vmware/test_vsphere_operations.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/compute/virt/vmware/test_vsphere_operations.py 2014-03-31 15:32:25.000000000 +0000 @@ -161,14 +161,14 @@ ops = self._vsphere_ops # test aggregate stat - stat_val = ops.query_vm_aggregate_stats(vm_moid, counter_id) - self.assertEqual(333, stat_val) + stat_val = ops.query_vm_aggregate_stats(vm_moid, counter_id, 60) + self.assertEqual(222, stat_val) # test per-device(non-aggregate) stats expected_device_stats = { - device1: 300, - device2: 30, - device3: 3 + device1: 200, + device2: 20, + device3: 2 } - stats = ops.query_vm_device_stats(vm_moid, counter_id) + stats = ops.query_vm_device_stats(vm_moid, counter_id, 60) self.assertEqual(expected_device_stats, stats) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/db.py ceilometer-2014.1~rc1/ceilometer/tests/db.py --- ceilometer-2014.1~b3/ceilometer/tests/db.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/db.py 2014-03-31 15:32:25.000000000 +0000 @@ -49,7 +49,7 @@ try: self.conn = storage.get_connection(self.CONF) except storage.StorageBadVersion as e: - self.skipTest(str(e)) + self.skipTest(six.text_type(e)) self.conn.upgrade() self.useFixture(oslo_mock.Patch('ceilometer.storage.get_connection', diff -Nru ceilometer-2014.1~b3/ceilometer/tests/energy/test_kwapi.py ceilometer-2014.1~rc1/ceilometer/tests/energy/test_kwapi.py --- ceilometer-2014.1~b3/ceilometer/tests/energy/test_kwapi.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/energy/test_kwapi.py 2014-03-31 15:32:25.000000000 +0000 @@ -72,7 +72,7 @@ pollster = kwapi.EnergyPollster() samples = list(pollster.get_samples(self.manager, {})) - self.assertEqual(len(samples), 0) + self.assertEqual(0, len(samples)) class TestEnergyPollster(test.BaseTestCase): @@ -99,15 +99,15 @@ self.manager, cache, )) - self.assertEqual(len(samples), 3) + self.assertEqual(3, len(samples)) samples_by_name = dict((s.resource_id, s) for s in samples) for name, probe in PROBE_DICT['probes'].items(): sample = samples_by_name[name] expected = datetime.datetime.fromtimestamp( probe['timestamp'] ).isoformat() - self.assertEqual(sample.timestamp, expected) - self.assertEqual(sample.volume, probe['kwh']) + self.assertEqual(expected, sample.timestamp) + self.assertEqual(probe['kwh'], sample.volume) # self.assert_( # any(map(lambda sample: sample.volume == probe['w'], # power_samples))) @@ -132,7 +132,7 @@ with mock.patch.object(pollster, '_get_probes') as do_not_call: do_not_call.side_effect = AssertionError('should not be called') samples = list(pollster.get_samples(self.manager, cache)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) class TestPowerPollster(test.BaseTestCase): @@ -159,15 +159,15 @@ self.manager, cache, )) - self.assertEqual(len(samples), 3) + self.assertEqual(3, len(samples)) samples_by_name = dict((s.resource_id, s) for s in samples) for name, probe in PROBE_DICT['probes'].items(): sample = samples_by_name[name] expected = datetime.datetime.fromtimestamp( probe['timestamp'] ).isoformat() - self.assertEqual(sample.timestamp, expected) - self.assertEqual(sample.volume, probe['w']) + self.assertEqual(expected, sample.timestamp) + self.assertEqual(probe['w'], sample.volume) class TestPowerPollsterCache(test.BaseTestCase): @@ -189,4 +189,4 @@ with mock.patch.object(pollster, '_get_probes') as do_not_call: do_not_call.side_effect = AssertionError('should not be called') samples = list(pollster.get_samples(self.manager, cache)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/event/test_converter.py ceilometer-2014.1~rc1/ceilometer/tests/event/test_converter.py --- ceilometer-2014.1~b3/ceilometer/tests/event/test_converter.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/event/test_converter.py 2014-03-31 15:32:25.000000000 +0000 @@ -58,9 +58,9 @@ "Trait %s not found in event %s" % (name, event)) trait = traits[0] if value is not None: - self.assertEqual(trait.value, value) + self.assertEqual(value, trait.value) if dtype is not None: - self.assertEqual(trait.dtype, dtype) + self.assertEqual(dtype, trait.dtype) if dtype == models.Trait.INT_TYPE: self.assertIsInstance(trait.value, int) elif dtype == models.Trait.FLOAT_TYPE: @@ -134,9 +134,9 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.name, 'test_trait') - self.assertEqual(t.dtype, models.Trait.TEXT_TYPE) - self.assertEqual(t.value, 'foobar') + self.assertEqual('test_trait', t.name) + self.assertEqual(models.Trait.TEXT_TYPE, t.dtype) + self.assertEqual('foobar', t.value) self.test_plugin_class.assert_called_once_with() self.test_plugin.trait_value.assert_called_once_with([ ('payload.instance_id', 'id-for-instance-0001'), @@ -151,9 +151,9 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.name, 'test_trait') - self.assertEqual(t.dtype, models.Trait.TEXT_TYPE) - self.assertEqual(t.value, 'foobar') + self.assertEqual('test_trait', t.name) + self.assertEqual(models.Trait.TEXT_TYPE, t.dtype) + self.assertEqual('foobar', t.value) self.test_plugin_class.assert_called_once_with() self.test_plugin.trait_value.assert_called_once_with([]) @@ -180,9 +180,9 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.name, 'test_trait') - self.assertEqual(t.dtype, models.Trait.TEXT_TYPE) - self.assertEqual(t.value, 'foobar') + self.assertEqual('test_trait', t.name) + self.assertEqual(models.Trait.TEXT_TYPE, t.dtype) + self.assertEqual('foobar', t.value) self.test_plugin_class.assert_called_once_with(a=1, b='foo') self.test_plugin.trait_value.assert_called_once_with([ ('payload.instance_id', 'id-for-instance-0001'), @@ -194,18 +194,18 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.name, 'test_trait') - self.assertEqual(t.dtype, models.Trait.TEXT_TYPE) - self.assertEqual(t.value, 'id-for-instance-0001') + self.assertEqual('test_trait', t.name) + self.assertEqual(models.Trait.TEXT_TYPE, t.dtype) + self.assertEqual('id-for-instance-0001', t.value) cfg = dict(type='int', fields='payload.image_meta.disk_gb') tdef = converter.TraitDefinition('test_trait', cfg, self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.name, 'test_trait') - self.assertEqual(t.dtype, models.Trait.INT_TYPE) - self.assertEqual(t.value, 20) + self.assertEqual('test_trait', t.name) + self.assertEqual(models.Trait.INT_TYPE, t.dtype) + self.assertEqual(20, t.value) def test_to_trait_multiple(self): cfg = dict(type='text', fields=['payload.instance_id', @@ -214,7 +214,7 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.value, 'id-for-instance-0001') + self.assertEqual('id-for-instance-0001', t.value) cfg = dict(type='text', fields=['payload.instance_uuid', 'payload.instance_id']) @@ -222,7 +222,7 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.value, 'uuid-for-instance-0001') + self.assertEqual('uuid-for-instance-0001', t.value) def test_to_trait_multiple_different_nesting(self): cfg = dict(type='int', fields=['payload.foobar', @@ -231,7 +231,7 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.value, 50) + self.assertEqual(50, t.value) cfg = dict(type='int', fields=['payload.image_meta.disk_gb', 'payload.foobar']) @@ -239,7 +239,7 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.value, 20) + self.assertEqual(20, t.value) def test_to_trait_some_null_multiple(self): cfg = dict(type='text', fields=['payload.instance_id2', @@ -248,7 +248,7 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.value, 'uuid-for-instance-0001') + self.assertEqual('uuid-for-instance-0001', t.value) def test_to_trait_some_missing_multiple(self): cfg = dict(type='text', fields=['payload.not_here_boss', @@ -257,7 +257,7 @@ self.fake_plugin_mgr) t = tdef.to_trait(self.n1) self.assertIsInstance(t, models.Trait) - self.assertEqual(t.value, 'uuid-for-instance-0001') + self.assertEqual('uuid-for-instance-0001', t.value) def test_to_trait_missing(self): cfg = dict(type='text', fields='payload.not_here_boss') @@ -337,19 +337,19 @@ def test_type_config(self): cfg = dict(type='text', fields='payload.test') t = converter.TraitDefinition('test_trait', cfg, self.fake_plugin_mgr) - self.assertEqual(t.trait_type, models.Trait.TEXT_TYPE) + self.assertEqual(models.Trait.TEXT_TYPE, t.trait_type) cfg = dict(type='int', fields='payload.test') t = converter.TraitDefinition('test_trait', cfg, self.fake_plugin_mgr) - self.assertEqual(t.trait_type, models.Trait.INT_TYPE) + self.assertEqual(models.Trait.INT_TYPE, t.trait_type) cfg = dict(type='float', fields='payload.test') t = converter.TraitDefinition('test_trait', cfg, self.fake_plugin_mgr) - self.assertEqual(t.trait_type, models.Trait.FLOAT_TYPE) + self.assertEqual(models.Trait.FLOAT_TYPE, t.trait_type) cfg = dict(type='datetime', fields='payload.test') t = converter.TraitDefinition('test_trait', cfg, self.fake_plugin_mgr) - self.assertEqual(t.trait_type, models.Trait.DATETIME_TYPE) + self.assertEqual(models.Trait.DATETIME_TYPE, t.trait_type) def test_invalid_type_config(self): #test invalid jsonpath... @@ -402,9 +402,9 @@ edef = converter.EventDefinition(cfg, self.fake_plugin_mgr) e = edef.to_event(self.test_notification1) - self.assertEqual(e.event_type, 'test.thing') - self.assertEqual(e.generated, - datetime.datetime(2013, 8, 8, 21, 6, 37, 803826)) + self.assertEqual('test.thing', e.event_type) + self.assertEqual(datetime.datetime(2013, 8, 8, 21, 6, 37, 803826), + e.generated) self.assertHasDefaultTraits(e) self.assertHasTrait(e, 'host', value='host-1-2-3', dtype=dtype) @@ -455,9 +455,9 @@ def test_included_type_string(self): cfg = dict(event_type='test.thing', traits=self.traits_cfg) edef = converter.EventDefinition(cfg, self.fake_plugin_mgr) - self.assertEqual(len(edef._included_types), 1) - self.assertEqual(edef._included_types[0], 'test.thing') - self.assertEqual(len(edef._excluded_types), 0) + self.assertEqual(1, len(edef._included_types)) + self.assertEqual('test.thing', edef._included_types[0]) + self.assertEqual(0, len(edef._excluded_types)) self.assertTrue(edef.included_type('test.thing')) self.assertFalse(edef.excluded_type('test.thing')) self.assertTrue(edef.match_type('test.thing')) @@ -467,8 +467,8 @@ cfg = dict(event_type=['test.thing', 'other.thing'], traits=self.traits_cfg) edef = converter.EventDefinition(cfg, self.fake_plugin_mgr) - self.assertEqual(len(edef._included_types), 2) - self.assertEqual(len(edef._excluded_types), 0) + self.assertEqual(2, len(edef._included_types)) + self.assertEqual(0, len(edef._excluded_types)) self.assertTrue(edef.included_type('test.thing')) self.assertTrue(edef.included_type('other.thing')) self.assertFalse(edef.excluded_type('test.thing')) @@ -479,11 +479,11 @@ def test_excluded_type_string(self): cfg = dict(event_type='!test.thing', traits=self.traits_cfg) edef = converter.EventDefinition(cfg, self.fake_plugin_mgr) - self.assertEqual(len(edef._included_types), 1) - self.assertEqual(edef._included_types[0], '*') - self.assertEqual(edef._excluded_types[0], 'test.thing') - self.assertEqual(len(edef._excluded_types), 1) - self.assertEqual(edef._excluded_types[0], 'test.thing') + self.assertEqual(1, len(edef._included_types)) + self.assertEqual('*', edef._included_types[0]) + self.assertEqual('test.thing', edef._excluded_types[0]) + self.assertEqual(1, len(edef._excluded_types)) + self.assertEqual('test.thing', edef._excluded_types[0]) self.assertTrue(edef.excluded_type('test.thing')) self.assertTrue(edef.included_type('random.thing')) self.assertFalse(edef.match_type('test.thing')) @@ -493,8 +493,8 @@ cfg = dict(event_type=['!test.thing', '!other.thing'], traits=self.traits_cfg) edef = converter.EventDefinition(cfg, self.fake_plugin_mgr) - self.assertEqual(len(edef._included_types), 1) - self.assertEqual(len(edef._excluded_types), 2) + self.assertEqual(1, len(edef._included_types)) + self.assertEqual(2, len(edef._excluded_types)) self.assertTrue(edef.excluded_type('test.thing')) self.assertTrue(edef.excluded_type('other.thing')) self.assertFalse(edef.excluded_type('random.thing')) @@ -506,8 +506,8 @@ cfg = dict(event_type=['*.thing', '!test.thing', '!other.thing'], traits=self.traits_cfg) edef = converter.EventDefinition(cfg, self.fake_plugin_mgr) - self.assertEqual(len(edef._included_types), 1) - self.assertEqual(len(edef._excluded_types), 2) + self.assertEqual(1, len(edef._included_types)) + self.assertEqual(2, len(edef._excluded_types)) self.assertTrue(edef.excluded_type('test.thing')) self.assertTrue(edef.excluded_type('other.thing')) self.assertFalse(edef.excluded_type('random.thing')) @@ -576,8 +576,8 @@ traits = set(edef.traits.keys()) for dt in default_traits: self.assertIn(dt, traits) - self.assertEqual(len(edef.traits), - len(converter.EventDefinition.DEFAULT_TRAITS)) + self.assertEqual(len(converter.EventDefinition.DEFAULT_TRAITS), + len(edef.traits)) def test_traits(self): cfg = dict(event_type='test.thing', traits=self.traits_cfg) @@ -588,8 +588,8 @@ self.assertIn(dt, traits) self.assertIn('host', traits) self.assertIn('instance_id', traits) - self.assertEqual(len(edef.traits), - len(converter.EventDefinition.DEFAULT_TRAITS) + 2) + self.assertEqual(len(converter.EventDefinition.DEFAULT_TRAITS) + 2, + len(edef.traits)) class TestNotificationConverter(ConverterBase): @@ -638,7 +638,7 @@ 'publisher_id': "1"} e = c.to_event(message) self.assertIsValidEvent(e, message) - self.assertEqual(len(e.traits), 1) + self.assertEqual(1, len(e.traits)) self.assertEqual("foo", e.event_type) self.assertEqual(now, e.generated) @@ -647,17 +647,17 @@ self.valid_event_def1, self.fake_plugin_mgr, add_catchall=True) - self.assertEqual(len(c.definitions), 2) + self.assertEqual(2, len(c.definitions)) e = c.to_event(self.test_notification1) self.assertIsValidEvent(e, self.test_notification1) - self.assertEqual(len(e.traits), 3) + self.assertEqual(3, len(e.traits)) self.assertHasDefaultTraits(e) self.assertHasTrait(e, 'instance_id') self.assertHasTrait(e, 'host') e = c.to_event(self.test_notification2) self.assertIsValidEvent(e, self.test_notification2) - self.assertEqual(len(e.traits), 1) + self.assertEqual(1, len(e.traits)) self.assertHasDefaultTraits(e) self.assertDoesNotHaveTrait(e, 'instance_id') self.assertDoesNotHaveTrait(e, 'host') @@ -667,10 +667,10 @@ self.valid_event_def1, self.fake_plugin_mgr, add_catchall=False) - self.assertEqual(len(c.definitions), 1) + self.assertEqual(1, len(c.definitions)) e = c.to_event(self.test_notification1) self.assertIsValidEvent(e, self.test_notification1) - self.assertEqual(len(e.traits), 3) + self.assertEqual(3, len(e.traits)) self.assertHasDefaultTraits(e) self.assertHasTrait(e, 'instance_id') self.assertHasTrait(e, 'host') @@ -683,15 +683,15 @@ [], self.fake_plugin_mgr, add_catchall=True) - self.assertEqual(len(c.definitions), 1) + self.assertEqual(1, len(c.definitions)) e = c.to_event(self.test_notification1) self.assertIsValidEvent(e, self.test_notification1) - self.assertEqual(len(e.traits), 1) + self.assertEqual(1, len(e.traits)) self.assertHasDefaultTraits(e) e = c.to_event(self.test_notification2) self.assertIsValidEvent(e, self.test_notification2) - self.assertEqual(len(e.traits), 1) + self.assertEqual(1, len(e.traits)) self.assertHasDefaultTraits(e) def test_converter_empty_cfg_without_catchall(self): @@ -699,7 +699,7 @@ [], self.fake_plugin_mgr, add_catchall=False) - self.assertEqual(len(c.definitions), 0) + self.assertEqual(0, len(c.definitions)) e = c.to_event(self.test_notification1) self.assertIsNotValidEvent(e, self.test_notification1) @@ -723,7 +723,7 @@ with mock.patch('os.path.exists', mock_exists): c = converter.setup_events(self.fake_plugin_mgr) self.assertIsInstance(c, converter.NotificationEventsConverter) - self.assertEqual(len(c.definitions), 1) + self.assertEqual(1, len(c.definitions)) self.assertTrue(c.definitions[0].is_catchall) oslo_cfg.CONF.set_override('drop_unmatched_notifications', @@ -732,4 +732,4 @@ with mock.patch('os.path.exists', mock_exists): c = converter.setup_events(self.fake_plugin_mgr) self.assertIsInstance(c, converter.NotificationEventsConverter) - self.assertEqual(len(c.definitions), 0) + self.assertEqual(0, len(c.definitions)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/event/test_trait_plugins.py ceilometer-2014.1~rc1/ceilometer/tests/event/test_trait_plugins.py --- ceilometer-2014.1~b3/ceilometer/tests/event/test_trait_plugins.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/event/test_trait_plugins.py 2014-03-31 15:32:25.000000000 +0000 @@ -31,26 +31,26 @@ plugin = self.pclass(**param) match_list = [('test.thing', 'test-foobar-baz')] value = plugin.trait_value(match_list) - self.assertEqual(value, 'test') + self.assertEqual('test', value) param = dict(separator='-', segment=1) plugin = self.pclass(**param) match_list = [('test.thing', 'test-foobar-baz')] value = plugin.trait_value(match_list) - self.assertEqual(value, 'foobar') + self.assertEqual('foobar', value) param = dict(separator='-', segment=1, max_split=1) plugin = self.pclass(**param) match_list = [('test.thing', 'test-foobar-baz')] value = plugin.trait_value(match_list) - self.assertEqual(value, 'foobar-baz') + self.assertEqual('foobar-baz', value) def test_no_sep(self): param = dict(separator='-', segment=0) plugin = self.pclass(**param) match_list = [('test.thing', 'test.foobar.baz')] value = plugin.trait_value(match_list) - self.assertEqual(value, 'test.foobar.baz') + self.assertEqual('test.foobar.baz', value) def test_no_segment(self): param = dict(separator='-', segment=5) @@ -90,7 +90,7 @@ plugin = self.pclass(**self.params) value = plugin.trait_value(match_list) - self.assertEqual(value, 0x412) + self.assertEqual(0x412, value) def test_initial(self): match_list = [('payload.foo', 12), @@ -99,13 +99,13 @@ self.params['initial_bitfield'] = 0x2000 plugin = self.pclass(**self.params) value = plugin.trait_value(match_list) - self.assertEqual(value, 0x2412) + self.assertEqual(0x2412, value) def test_no_match(self): match_list = [] plugin = self.pclass(**self.params) value = plugin.trait_value(match_list) - self.assertEqual(value, self.init) + self.assertEqual(self.init, value) def test_multi(self): match_list = [('payload.foo', 12), @@ -115,4 +115,4 @@ plugin = self.pclass(**self.params) value = plugin.trait_value(match_list) - self.assertEqual(value, 0x412) + self.assertEqual(0x412, value) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/base.py ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/base.py --- ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/base.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/base.py 2014-03-31 15:32:25.000000000 +0000 @@ -58,7 +58,7 @@ def setUp(self): super(TestPollsterBase, self).setUp() - self.host = ["test://test"] + self.hosts = ["test://test", "test://test2"] self.useFixture(fixtures.MonkeyPatch( 'ceilometer.hardware.inspector.get_inspector', self.faux_get_inspector)) @@ -69,13 +69,14 @@ mgr = manager.AgentManager() pollster = factory() cache = {} - samples = list(pollster.get_samples(mgr, cache, self.host)) + samples = list(pollster.get_samples(mgr, cache, self.hosts)) self.assertTrue(samples) self.assertIn(pollster.CACHE_KEY, cache) - self.assertIn(self.host[0], cache[pollster.CACHE_KEY]) + for host in self.hosts: + self.assertIn(host, cache[pollster.CACHE_KEY]) - self.assertEqual(set([s.name for s in samples]), - set([name])) + self.assertEqual(set([name]), + set([s.name for s in samples])) match = [s for s in samples if s.name == name] - self.assertEqual(match[0].volume, expected_value) - self.assertEqual(match[0].type, expected_type) + self.assertEqual(expected_value, match[0].volume) + self.assertEqual(expected_type, match[0].type) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_cpu.py ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_cpu.py --- ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_cpu.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_cpu.py 2014-03-31 15:32:25.000000000 +0000 @@ -23,13 +23,16 @@ class TestCPUPollsters(base.TestPollsterBase): def test_1min(self): - self._check_get_samples(cpu.CPUUtil1MinPollster, 'cpu.util.1min', + self._check_get_samples(cpu.CPUUtil1MinPollster, + 'hardware.cpu.util.1min', 0.99, sample.TYPE_GAUGE) def test_5min(self): - self._check_get_samples(cpu.CPUUtil5MinPollster, 'cpu.util.5min', + self._check_get_samples(cpu.CPUUtil5MinPollster, + 'hardware.cpu.util.5min', 0.77, sample.TYPE_GAUGE) def test_15min(self): - self._check_get_samples(cpu.CPUUtil15MinPollster, 'cpu.util.15min', + self._check_get_samples(cpu.CPUUtil15MinPollster, + 'hardware.cpu.util.15min', 0.55, sample.TYPE_GAUGE) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_disk.py ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_disk.py --- ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_disk.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_disk.py 2014-03-31 15:32:25.000000000 +0000 @@ -23,9 +23,11 @@ class TestDiskPollsters(base.TestPollsterBase): def test_disk_size_total(self): - self._check_get_samples(disk.DiskTotalPollster, 'disk.size.total', + self._check_get_samples(disk.DiskTotalPollster, + 'hardware.disk.size.total', 1000, sample.TYPE_GAUGE) def test_disk_size_used(self): - self._check_get_samples(disk.DiskUsedPollster, 'disk.size.used', + self._check_get_samples(disk.DiskUsedPollster, + 'hardware.disk.size.used', 90, sample.TYPE_GAUGE) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_memory.py ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_memory.py --- ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_memory.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_memory.py 2014-03-31 15:32:25.000000000 +0000 @@ -24,10 +24,10 @@ class TestMemoryPollsters(base.TestPollsterBase): def test_memory_size_total(self): self._check_get_samples(memory.MemoryTotalPollster, - 'memory.total', + 'hardware.memory.total', 1000, sample.TYPE_GAUGE) def test_memory_size_used(self): self._check_get_samples(memory.MemoryUsedPollster, - 'memory.used', + 'hardware.memory.used', 90, sample.TYPE_GAUGE) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_net.py ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_net.py --- ceilometer-2014.1~b3/ceilometer/tests/hardware/pollsters/test_net.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/hardware/pollsters/test_net.py 2014-03-31 15:32:25.000000000 +0000 @@ -24,20 +24,20 @@ class TestNetPollsters(base.TestPollsterBase): def test_bandwidth(self): self._check_get_samples(net.BandwidthBytesPollster, - 'network.bandwidth.bytes', + 'hardware.network.bandwidth.bytes', 1000, sample.TYPE_CUMULATIVE) def test_incoming(self): self._check_get_samples(net.IncomingBytesPollster, - 'network.incoming.bytes', + 'hardware.network.incoming.bytes', 90, sample.TYPE_CUMULATIVE) def test_outgoing(self): self._check_get_samples(net.OutgoingBytesPollster, - 'network.outgoing.bytes', + 'hardware.network.outgoing.bytes', 80, sample.TYPE_CUMULATIVE) def test_error(self): self._check_get_samples(net.OutgoingErrorsPollster, - 'network.outgoing.errors', + 'hardware.network.outgoing.errors', 1, sample.TYPE_CUMULATIVE) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/image/test_glance.py ceilometer-2014.1~rc1/ceilometer/tests/image/test_glance.py --- ceilometer-2014.1~b3/ceilometer/tests/image/test_glance.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/image/test_glance.py 2014-03-31 15:32:25.000000000 +0000 @@ -139,7 +139,7 @@ # list when there is nothing in the cache images = list(glance.ImagePollster(). _iter_images(self.manager.keystone, {})) - self.assertEqual(len(images), len(set(image.id for image in images))) + self.assertEqual(len(set(image.id for image in images)), len(images)) def test_iter_images_cached(self): # Tests whether the iter_images method returns the values from @@ -147,18 +147,18 @@ cache = {'images': []} images = list(glance.ImagePollster(). _iter_images(self.manager.keystone, cache)) - self.assertEqual(images, []) + self.assertEqual([], images) def test_image(self): samples = list(glance.ImagePollster().get_samples(self.manager, {})) - self.assertEqual(len(samples), 3) + self.assertEqual(3, len(samples)) for sample in samples: - self.assertEqual(sample.volume, 1) + self.assertEqual(1, sample.volume) def test_image_size(self): samples = list(glance.ImageSizePollster().get_samples(self.manager, {})) - self.assertEqual(len(samples), 3) + self.assertEqual(3, len(samples)) for image in IMAGE_LIST: self.assertTrue( any(map(lambda sample: sample.volume == image.size, @@ -166,11 +166,9 @@ def test_image_get_sample_names(self): samples = list(glance.ImagePollster().get_samples(self.manager, {})) - self.assertEqual(set([s.name for s in samples]), - set(['image'])) + self.assertEqual(set(['image']), set([s.name for s in samples])) def test_image_size_get_sample_names(self): samples = list(glance.ImageSizePollster().get_samples(self.manager, {})) - self.assertEqual(set([s.name for s in samples]), - set(['image.size'])) + self.assertEqual(set(['image.size']), set([s.name for s in samples])) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/image/test_notifications.py ceilometer-2014.1~rc1/ceilometer/tests/image/test_notifications.py --- ceilometer-2014.1~b3/ceilometer/tests/image/test_notifications.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/image/test_notifications.py 2014-03-31 15:32:25.000000000 +0000 @@ -94,106 +94,106 @@ def _verify_common_counter(self, c, name, volume): self.assertIsNotNone(c) self.assertEqual(c.name, name) - self.assertEqual(c.resource_id, fake_uuid('c')) - self.assertEqual(c.timestamp, NOW) - self.assertEqual(c.volume, volume) + self.assertEqual(fake_uuid('c'), c.resource_id) + self.assertEqual(NOW, c.timestamp) + self.assertEqual(volume, c.volume) metadata = c.resource_metadata - self.assertEqual(metadata.get('host'), u'images.example.com') + self.assertEqual(u'images.example.com', metadata.get('host')) def test_image_download(self): handler = notifications.ImageDownload() counters = list(handler.process_notification(NOTIFICATION_SEND)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) download = counters[0] self._verify_common_counter(download, 'image.download', 42) - self.assertEqual(download.user_id, fake_uuid('d')) - self.assertEqual(download.project_id, fake_uuid('b')) - self.assertEqual(download.type, sample.TYPE_DELTA) + self.assertEqual(fake_uuid('d'), download.user_id) + self.assertEqual(fake_uuid('b'), download.project_id) + self.assertEqual(sample.TYPE_DELTA, download.type) def test_image_serve(self): handler = notifications.ImageServe() counters = list(handler.process_notification(NOTIFICATION_SEND)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) serve = counters[0] self._verify_common_counter(serve, 'image.serve', 42) - self.assertEqual(serve.project_id, fake_uuid('e')) - self.assertEqual(serve.resource_metadata.get('receiver_user_id'), - fake_uuid('d')) - self.assertEqual(serve.resource_metadata.get('receiver_tenant_id'), - fake_uuid('b')) - self.assertEqual(serve.type, sample.TYPE_DELTA) + self.assertEqual(fake_uuid('e'), serve.project_id) + self.assertEqual(fake_uuid('d'), + serve.resource_metadata.get('receiver_user_id')) + self.assertEqual(fake_uuid('b'), + serve.resource_metadata.get('receiver_tenant_id')) + self.assertEqual(sample.TYPE_DELTA, serve.type) def test_image_crud_on_update(self): handler = notifications.ImageCRUD() counters = list(handler.process_notification(NOTIFICATION_UPDATE)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) update = counters[0] self._verify_common_counter(update, 'image.update', 1) - self.assertEqual(update.type, sample.TYPE_DELTA) + self.assertEqual(sample.TYPE_DELTA, update.type) def test_image_on_update(self): handler = notifications.Image() counters = list(handler.process_notification(NOTIFICATION_UPDATE)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) update = counters[0] self._verify_common_counter(update, 'image', 1) - self.assertEqual(update.type, sample.TYPE_GAUGE) + self.assertEqual(sample.TYPE_GAUGE, update.type) def test_image_size_on_update(self): handler = notifications.ImageSize() counters = list(handler.process_notification(NOTIFICATION_UPDATE)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) update = counters[0] self._verify_common_counter(update, 'image.size', IMAGE_META['size']) - self.assertEqual(update.type, sample.TYPE_GAUGE) + self.assertEqual(sample.TYPE_GAUGE, update.type) def test_image_crud_on_upload(self): handler = notifications.ImageCRUD() counters = list(handler.process_notification(NOTIFICATION_UPLOAD)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) upload = counters[0] self._verify_common_counter(upload, 'image.upload', 1) - self.assertEqual(upload.type, sample.TYPE_DELTA) + self.assertEqual(sample.TYPE_DELTA, upload.type) def test_image_on_upload(self): handler = notifications.Image() counters = list(handler.process_notification(NOTIFICATION_UPLOAD)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) upload = counters[0] self._verify_common_counter(upload, 'image', 1) - self.assertEqual(upload.type, sample.TYPE_GAUGE) + self.assertEqual(sample.TYPE_GAUGE, upload.type) def test_image_size_on_upload(self): handler = notifications.ImageSize() counters = list(handler.process_notification(NOTIFICATION_UPLOAD)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) upload = counters[0] self._verify_common_counter(upload, 'image.size', IMAGE_META['size']) - self.assertEqual(upload.type, sample.TYPE_GAUGE) + self.assertEqual(sample.TYPE_GAUGE, upload.type) def test_image_crud_on_delete(self): handler = notifications.ImageCRUD() counters = list(handler.process_notification(NOTIFICATION_DELETE)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) delete = counters[0] self._verify_common_counter(delete, 'image.delete', 1) - self.assertEqual(delete.type, sample.TYPE_DELTA) + self.assertEqual(sample.TYPE_DELTA, delete.type) def test_image_on_delete(self): handler = notifications.Image() counters = list(handler.process_notification(NOTIFICATION_DELETE)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) delete = counters[0] self._verify_common_counter(delete, 'image', 1) - self.assertEqual(delete.type, sample.TYPE_GAUGE) + self.assertEqual(sample.TYPE_GAUGE, delete.type) def test_image_size_on_delete(self): handler = notifications.ImageSize() counters = list(handler.process_notification(NOTIFICATION_DELETE)) - self.assertEqual(len(counters), 1) + self.assertEqual(1, len(counters)) delete = counters[0] self._verify_common_counter(delete, 'image.size', IMAGE_META['size']) - self.assertEqual(delete.type, sample.TYPE_GAUGE) + self.assertEqual(sample.TYPE_GAUGE, delete.type) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/network/statistics/opendaylight/test_client.py ceilometer-2014.1~rc1/ceilometer/tests/network/statistics/opendaylight/test_client.py --- ceilometer-2014.1~b3/ceilometer/tests/network/statistics/opendaylight/test_client.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/network/statistics/opendaylight/test_client.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,174 @@ +# +# Copyright 2013 NEC Corporation. All rights reserved. +# +# 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. +import mock + +from requests import auth as req_auth +import six +from six.moves.urllib import parse as url_parse + +from ceilometer.network.statistics.opendaylight import client +from ceilometer.openstack.common.gettextutils import _ # noqa +from ceilometer.openstack.common import test + + +class TestClientHTTPBasicAuth(test.BaseTestCase): + + auth_way = 'basic' + scheme = 'http' + + def setUp(self): + super(TestClientHTTPBasicAuth, self).setUp() + self.parsed_url = url_parse.urlparse( + 'http://127.0.0.1:8080/controller/nb/v2?container_name=default&' + 'container_name=egg&auth=%s&user=admin&password=admin_pass&' + 'scheme=%s' % (self.auth_way, self.scheme)) + self.params = url_parse.parse_qs(self.parsed_url.query) + self.endpoint = url_parse.urlunparse( + url_parse.ParseResult(self.scheme, + self.parsed_url.netloc, + self.parsed_url.path, + None, None, None)) + odl_params = {} + odl_params['auth'] = self.params.get('auth')[0] + odl_params['user'] = self.params.get('user')[0] + odl_params['password'] = self.params.get('password')[0] + self.client = client.Client(self.endpoint, odl_params) + + self.resp = mock.MagicMock() + self.get = mock.patch('requests.get', + return_value=self.resp).start() + + self.resp.raw.version = 1.1 + self.resp.status_code = 200 + self.resp.reason = 'OK' + self.resp.headers = {} + self.resp.content = 'dummy' + + def _test_request(self, method, url): + data = method('default') + + call_args = self.get.call_args_list[0][0] + call_kwargs = self.get.call_args_list[0][1] + + # check url + real_url = url % {'container_name': 'default', + 'scheme': self.scheme} + self.assertEqual(real_url, call_args[0]) + + # check auth parameters + auth = call_kwargs.get('auth') + if self.auth_way == 'digest': + self.assertIsInstance(auth, req_auth.HTTPDigestAuth) + else: + self.assertIsInstance(auth, req_auth.HTTPBasicAuth) + self.assertEqual('admin', auth.username) + self.assertEqual('admin_pass', auth.password) + + # check header + self.assertEqual( + {'Accept': 'application/json'}, + call_kwargs['headers']) + + # check return value + self.assertEqual(self.get().json(), data) + + def test_flow_statistics(self): + self._test_request( + self.client.statistics.get_flow_statistics, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/statistics/%(container_name)s/flow') + + def test_port_statistics(self): + self._test_request( + self.client.statistics.get_port_statistics, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/statistics/%(container_name)s/port') + + def test_table_statistics(self): + self._test_request( + self.client.statistics.get_table_statistics, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/statistics/%(container_name)s/table') + + def test_topology(self): + self._test_request( + self.client.topology.get_topology, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/topology/%(container_name)s') + + def test_user_links(self): + self._test_request( + self.client.topology.get_user_links, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/topology/%(container_name)s/userLinks') + + def test_switch(self): + self._test_request( + self.client.switch_manager.get_nodes, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/switchmanager/%(container_name)s/nodes') + + def test_active_hosts(self): + self._test_request( + self.client.host_tracker.get_active_hosts, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/hosttracker/%(container_name)s/hosts/active') + + def test_inactive_hosts(self): + self._test_request( + self.client.host_tracker.get_inactive_hosts, + '%(scheme)s://127.0.0.1:8080/controller/nb/v2' + '/hosttracker/%(container_name)s/hosts/inactive') + + def test_http_error(self): + self.resp.status_code = 404 + self.resp.reason = 'Not Found' + + try: + self.client.statistics.get_flow_statistics('default') + self.fail('') + except client.OpenDaylightRESTAPIFailed as e: + self.assertEqual( + _('OpenDaylitght API returned %(status)s %(reason)s') % + {'status': self.resp.status_code, + 'reason': self.resp.reason}, + six.text_type(e)) + + def test_other_error(self): + + class _Exception(Exception): + pass + + self.get = mock.patch('requests.get', + side_effect=_Exception).start() + + self.assertRaises(_Exception, + self.client.statistics.get_flow_statistics, + 'default') + + +class TestClientHTTPDigestAuth(TestClientHTTPBasicAuth): + + auth_way = 'digest' + + +class TestClientHTTPSBasicAuth(TestClientHTTPBasicAuth): + + scheme = 'https' + + +class TestClientHTTPSDigestAuth(TestClientHTTPDigestAuth): + + scheme = 'https' diff -Nru ceilometer-2014.1~b3/ceilometer/tests/network/statistics/opendaylight/test_driver.py ceilometer-2014.1~rc1/ceilometer/tests/network/statistics/opendaylight/test_driver.py --- ceilometer-2014.1~b3/ceilometer/tests/network/statistics/opendaylight/test_driver.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/network/statistics/opendaylight/test_driver.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,1706 @@ +# +# Copyright 2013 NEC Corporation. All rights reserved. +# +# 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. +import abc +import mock + +import six +from six import moves +from six.moves.urllib import parse as url_parse + +from ceilometer.network.statistics.opendaylight import driver +from ceilometer.openstack.common import test + + +@six.add_metaclass(abc.ABCMeta) +class _Base(test.BaseTestCase): + + @abc.abstractproperty + def flow_data(self): + pass + + @abc.abstractproperty + def port_data(self): + pass + + @abc.abstractproperty + def table_data(self): + pass + + @abc.abstractproperty + def topology_data(self): + pass + + @abc.abstractproperty + def switch_data(self): + pass + + @abc.abstractproperty + def user_links_data(self): + pass + + @abc.abstractproperty + def active_hosts_data(self): + pass + + @abc.abstractproperty + def inactive_hosts_data(self): + pass + + fake_odl_url = url_parse.ParseResult('opendaylight', + 'localhost:8080', + 'controller/nb/v2', + None, + None, + None) + + fake_params = url_parse.parse_qs('user=admin&password=admin&scheme=http&' + 'container_name=default&auth=basic') + + fake_params_multi_container = \ + url_parse.parse_qs('user=admin&password=admin&scheme=http&' + 'container_name=first&container_name=second&' + 'auth=basic') + + def setUp(self): + super(_Base, self).setUp() + self.addCleanup(mock.patch.stopall) + + self.driver = driver.OpenDayLightDriver() + + self.get_flow_statistics = mock.patch( + 'ceilometer.network.statistics.opendaylight.client.' + 'StatisticsAPIClient.get_flow_statistics', + return_value=self.flow_data).start() + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'StatisticsAPIClient.get_table_statistics', + return_value=self.table_data).start() + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'StatisticsAPIClient.get_port_statistics', + return_value=self.port_data).start() + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'TopologyAPIClient.get_topology', + return_value=self.topology_data).start() + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'TopologyAPIClient.get_user_links', + return_value=self.user_links_data).start() + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'SwitchManagerAPIClient.get_nodes', + return_value=self.switch_data).start() + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'HostTrackerAPIClient.get_active_hosts', + return_value=self.active_hosts_data).start() + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'HostTrackerAPIClient.get_inactive_hosts', + return_value=self.inactive_hosts_data).start() + + def _test_for_meter(self, meter_name, expected_data): + sample_data = self.driver.get_sample_data(meter_name, + self.fake_odl_url, + self.fake_params, + {}) + + for sample, expected in moves.zip(sample_data, expected_data): + self.assertEqual(expected[0], sample[0]) # check volume + self.assertEqual(expected[1], sample[1]) # check resource id + self.assertEqual(expected[2], sample[2]) # check resource metadata + self.assertIsNotNone(sample[3]) # timestamp + + +class TestOpenDayLightDriverSpecial(_Base): + + flow_data = {"flowStatistics": []} + port_data = {"portStatistics": []} + table_data = {"tableStatistics": []} + topology_data = {"edgeProperties": []} + switch_data = {"nodeProperties": []} + user_links_data = {"userLinks": []} + active_hosts_data = {"hostConfig": []} + inactive_hosts_data = {"hostConfig": []} + + def test_not_implemented_meter(self): + sample_data = self.driver.get_sample_data('egg', + self.fake_odl_url, + self.fake_params, + {}) + self.assertIsNone(sample_data) + + sample_data = self.driver.get_sample_data('switch.table.egg', + self.fake_odl_url, + self.fake_params, + {}) + self.assertIsNone(sample_data) + + def test_cache(self): + cache = {} + self.driver.get_sample_data('switch', + self.fake_odl_url, + self.fake_params, + cache) + self.driver.get_sample_data('switch', + self.fake_odl_url, + self.fake_params, + cache) + self.assertEqual(self.get_flow_statistics.call_count, 1) + + cache = {} + self.driver.get_sample_data('switch', + self.fake_odl_url, + self.fake_params, + cache) + self.assertEqual(self.get_flow_statistics.call_count, 2) + + def test_multi_container(self): + cache = {} + self.driver.get_sample_data('switch', + self.fake_odl_url, + self.fake_params_multi_container, + cache) + self.assertEqual(self.get_flow_statistics.call_count, 2) + + self.assertIn('network.statistics.opendaylight', cache) + + odl_data = cache['network.statistics.opendaylight'] + + self.assertIn('first', odl_data) + self.assertIn('second', odl_data) + + def test_http_error(self): + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'StatisticsAPIClient.get_flow_statistics', + side_effect=Exception()).start() + + sample_data = self.driver.get_sample_data('switch', + self.fake_odl_url, + self.fake_params, + {}) + + self.assertEqual(0, len(sample_data)) + + mock.patch('ceilometer.network.statistics.opendaylight.client.' + 'StatisticsAPIClient.get_flow_statistics', + side_effect=[Exception(), self.flow_data]).start() + cache = {} + self.driver.get_sample_data('switch', + self.fake_odl_url, + self.fake_params_multi_container, + cache) + + self.assertIn('network.statistics.opendaylight', cache) + + odl_data = cache['network.statistics.opendaylight'] + + self.assertIn('second', odl_data) + + +class TestOpenDayLightDriverSimple(_Base): + + flow_data = { + "flowStatistics": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "flowStatistic": [ + { + "flow": { + "match": { + "matchField": [ + { + "type": "DL_TYPE", + "value": "2048" + }, + { + "mask": "255.255.255.255", + "type": "NW_DST", + "value": "1.1.1.1" + } + ] + }, + "actions": { + "@type": "output", + "port": { + "id": "3", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + } + }, + "hardTimeout": "0", + "id": "0", + "idleTimeout": "0", + "priority": "1" + }, + "byteCount": "0", + "durationNanoseconds": "397000000", + "durationSeconds": "1828", + "packetCount": "0", + "tableId": "0" + }, + ] + } + ] + } + port_data = { + "portStatistics": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "portStatistic": [ + { + "nodeConnector": { + "id": "4", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + }, + "collisionCount": "0", + "receiveBytes": "0", + "receiveCrcError": "0", + "receiveDrops": "0", + "receiveErrors": "0", + "receiveFrameError": "0", + "receiveOverRunError": "0", + "receivePackets": "0", + "transmitBytes": "0", + "transmitDrops": "0", + "transmitErrors": "0", + "transmitPackets": "0" + }, + ] + } + ] + } + table_data = { + "tableStatistics": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "tableStatistic": [ + { + "activeCount": "11", + "lookupCount": "816", + "matchedCount": "220", + "nodeTable": { + "id": "0", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + } + } + }, + ] + } + ] + } + topology_data = {"edgeProperties": []} + switch_data = { + "nodeProperties": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "properties": { + "actions": { + "value": "4095" + }, + "timeStamp": { + "name": "connectedSince", + "value": "1377291227877" + } + } + }, + ] + } + user_links_data = {"userLinks": []} + active_hosts_data = {"hostConfig": []} + inactive_hosts_data = {"hostConfig": []} + + def test_meter_switch(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + "properties_actions": "4095", + "properties_timeStamp_connectedSince": "1377291227877" + }), + ] + + self._test_for_meter('switch', expected_data) + + def test_meter_switch_port(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4', + }), + ] + self._test_for_meter('switch.port', expected_data) + + def test_meter_switch_port_receive_packets(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.receive.packets', expected_data) + + def test_meter_switch_port_transmit_packets(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.transmit.packets', expected_data) + + def test_meter_switch_port_receive_bytes(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.receive.bytes', expected_data) + + def test_meter_switch_port_transmit_bytes(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.transmit.bytes', expected_data) + + def test_meter_switch_port_receive_drops(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.receive.drops', expected_data) + + def test_meter_switch_port_transmit_drops(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.transmit.drops', expected_data) + + def test_meter_switch_port_receive_errors(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.receive.errors', expected_data) + + def test_meter_switch_port_transmit_errors(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.transmit.errors', expected_data) + + def test_meter_switch_port_receive_frame_error(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.receive.frame_error', expected_data) + + def test_meter_switch_port_receive_overrun_error(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.receive.overrun_error', + expected_data) + + def test_meter_switch_port_receive_crc_error(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.receive.crc_error', expected_data) + + def test_meter_switch_port_collision_count(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + ] + self._test_for_meter('switch.port.collision.count', expected_data) + + def test_meter_switch_table(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + ] + self._test_for_meter('switch.table', expected_data) + + def test_meter_switch_table_active_entries(self): + expected_data = [ + (11, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + ] + self._test_for_meter('switch.table.active.entries', expected_data) + + def test_meter_switch_table_lookup_packets(self): + expected_data = [ + (816, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + ] + self._test_for_meter('switch.table.lookup.packets', expected_data) + + def test_meter_switch_table_matched_packets(self): + expected_data = [ + (220, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + ] + self._test_for_meter('switch.table.matched.packets', expected_data) + + def test_meter_switch_flow(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1" + }), + ] + self._test_for_meter('switch.flow', expected_data) + + def test_meter_switch_flow_duration_seconds(self): + expected_data = [ + (1828, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.duration_seconds', expected_data) + + def test_meter_switch_flow_duration_nanoseconds(self): + expected_data = [ + (397000000, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.duration_nanoseconds', expected_data) + + def test_meter_switch_flow_packets(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.packets', expected_data) + + def test_meter_switch_flow_bytes(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.bytes', expected_data) + + +class TestOpenDayLightDriverComplex(_Base): + + flow_data = { + "flowStatistics": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "flowStatistic": [ + { + "flow": { + "match": { + "matchField": [ + { + "type": "DL_TYPE", + "value": "2048" + }, + { + "mask": "255.255.255.255", + "type": "NW_DST", + "value": "1.1.1.1" + } + ] + }, + "actions": { + "@type": "output", + "port": { + "id": "3", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + } + }, + "hardTimeout": "0", + "id": "0", + "idleTimeout": "0", + "priority": "1" + }, + "byteCount": "0", + "durationNanoseconds": "397000000", + "durationSeconds": "1828", + "packetCount": "0", + "tableId": "0" + }, + { + "flow": { + "match": { + "matchField": [ + { + "type": "DL_TYPE", + "value": "2048" + }, + { + "mask": "255.255.255.255", + "type": "NW_DST", + "value": "1.1.1.2" + } + ] + }, + "actions": { + "@type": "output", + "port": { + "id": "4", + "node": { + "id": "00:00:00:00:00:00:00:03", + "type": "OF" + }, + "type": "OF" + } + }, + "hardTimeout": "0", + "id": "0", + "idleTimeout": "0", + "priority": "1" + }, + "byteCount": "89", + "durationNanoseconds": "200000", + "durationSeconds": "5648", + "packetCount": "30", + "tableId": "1" + } + ] + } + ] + } + port_data = { + "portStatistics": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "portStatistic": [ + { + "nodeConnector": { + "id": "4", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + }, + "collisionCount": "0", + "receiveBytes": "0", + "receiveCrcError": "0", + "receiveDrops": "0", + "receiveErrors": "0", + "receiveFrameError": "0", + "receiveOverRunError": "0", + "receivePackets": "0", + "transmitBytes": "0", + "transmitDrops": "0", + "transmitErrors": "0", + "transmitPackets": "0" + }, + { + "nodeConnector": { + "id": "3", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + }, + "collisionCount": "0", + "receiveBytes": "12740", + "receiveCrcError": "0", + "receiveDrops": "0", + "receiveErrors": "0", + "receiveFrameError": "0", + "receiveOverRunError": "0", + "receivePackets": "182", + "transmitBytes": "12110", + "transmitDrops": "0", + "transmitErrors": "0", + "transmitPackets": "173" + }, + { + "nodeConnector": { + "id": "2", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + }, + "collisionCount": "0", + "receiveBytes": "12180", + "receiveCrcError": "0", + "receiveDrops": "0", + "receiveErrors": "0", + "receiveFrameError": "0", + "receiveOverRunError": "0", + "receivePackets": "174", + "transmitBytes": "12670", + "transmitDrops": "0", + "transmitErrors": "0", + "transmitPackets": "181" + }, + { + "nodeConnector": { + "id": "1", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + }, + "collisionCount": "0", + "receiveBytes": "0", + "receiveCrcError": "0", + "receiveDrops": "0", + "receiveErrors": "0", + "receiveFrameError": "0", + "receiveOverRunError": "0", + "receivePackets": "0", + "transmitBytes": "0", + "transmitDrops": "0", + "transmitErrors": "0", + "transmitPackets": "0" + }, + { + "nodeConnector": { + "id": "0", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + }, + "collisionCount": "0", + "receiveBytes": "0", + "receiveCrcError": "0", + "receiveDrops": "0", + "receiveErrors": "0", + "receiveFrameError": "0", + "receiveOverRunError": "0", + "receivePackets": "0", + "transmitBytes": "0", + "transmitDrops": "0", + "transmitErrors": "0", + "transmitPackets": "0" + } + ] + } + ] + } + table_data = { + "tableStatistics": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "tableStatistic": [ + { + "activeCount": "11", + "lookupCount": "816", + "matchedCount": "220", + "nodeTable": { + "id": "0", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + } + } + }, + { + "activeCount": "20", + "lookupCount": "10", + "matchedCount": "5", + "nodeTable": { + "id": "1", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + } + } + } + ] + } + ] + } + topology_data = { + "edgeProperties": [ + { + "edge": { + "headNodeConnector": { + "id": "2", + "node": { + "id": "00:00:00:00:00:00:00:03", + "type": "OF" + }, + "type": "OF" + }, + "tailNodeConnector": { + "id": "2", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + } + }, + "properties": { + "bandwidth": { + "value": 10000000000 + }, + "config": { + "value": 1 + }, + "name": { + "value": "s2-eth3" + }, + "state": { + "value": 1 + }, + "timeStamp": { + "name": "creation", + "value": 1379527162648 + } + } + }, + { + "edge": { + "headNodeConnector": { + "id": "5", + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "type": "OF" + }, + "tailNodeConnector": { + "id": "2", + "node": { + "id": "00:00:00:00:00:00:00:04", + "type": "OF" + }, + "type": "OF" + } + }, + "properties": { + "timeStamp": { + "name": "creation", + "value": 1379527162648 + } + } + } + ] + } + switch_data = { + "nodeProperties": [ + { + "node": { + "id": "00:00:00:00:00:00:00:02", + "type": "OF" + }, + "properties": { + "actions": { + "value": "4095" + }, + "buffers": { + "value": "256" + }, + "capabilities": { + "value": "199" + }, + "description": { + "value": "None" + }, + "macAddress": { + "value": "00:00:00:00:00:02" + }, + "tables": { + "value": "-1" + }, + "timeStamp": { + "name": "connectedSince", + "value": "1377291227877" + } + } + }, + { + "node": { + "id": "00:00:00:00:00:00:00:03", + "type": "OF" + }, + "properties": { + "actions": { + "value": "1024" + }, + "buffers": { + "value": "512" + }, + "capabilities": { + "value": "1000" + }, + "description": { + "value": "Foo Bar" + }, + "macAddress": { + "value": "00:00:00:00:00:03" + }, + "tables": { + "value": "10" + }, + "timeStamp": { + "name": "connectedSince", + "value": "1377291228000" + } + } + } + ] + } + user_links_data = { + "userLinks": [ + { + "dstNodeConnector": "OF|5@OF|00:00:00:00:00:00:00:05", + "name": "link1", + "srcNodeConnector": "OF|3@OF|00:00:00:00:00:00:00:02", + "status": "Success" + } + ] + } + active_hosts_data = { + "hostConfig": [ + { + "dataLayerAddress": "00:00:00:00:01:01", + "networkAddress": "1.1.1.1", + "nodeConnectorId": "9", + "nodeConnectorType": "OF", + "nodeId": "00:00:00:00:00:00:00:01", + "nodeType": "OF", + "staticHost": "false", + "vlan": "0" + }, + { + "dataLayerAddress": "00:00:00:00:02:02", + "networkAddress": "2.2.2.2", + "nodeConnectorId": "1", + "nodeConnectorType": "OF", + "nodeId": "00:00:00:00:00:00:00:02", + "nodeType": "OF", + "staticHost": "true", + "vlan": "0" + } + ] + } + inactive_hosts_data = { + "hostConfig": [ + { + "dataLayerAddress": "00:00:00:01:01:01", + "networkAddress": "1.1.1.3", + "nodeConnectorId": "8", + "nodeConnectorType": "OF", + "nodeId": "00:00:00:00:00:00:00:01", + "nodeType": "OF", + "staticHost": "false", + "vlan": "0" + }, + { + "dataLayerAddress": "00:00:00:01:02:02", + "networkAddress": "2.2.2.4", + "nodeConnectorId": "0", + "nodeConnectorType": "OF", + "nodeId": "00:00:00:00:00:00:00:02", + "nodeType": "OF", + "staticHost": "false", + "vlan": "1" + } + ] + } + + def test_meter_switch(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + "properties_actions": "4095", + "properties_buffers": "256", + "properties_capabilities": "199", + "properties_description": "None", + "properties_macAddress": "00:00:00:00:00:02", + "properties_tables": "-1", + "properties_timeStamp_connectedSince": "1377291227877" + }), + (1, "00:00:00:00:00:00:00:03", { + 'controller': 'OpenDaylight', + 'container': 'default', + "properties_actions": "1024", + "properties_buffers": "512", + "properties_capabilities": "1000", + "properties_description": "Foo Bar", + "properties_macAddress": "00:00:00:00:00:03", + "properties_tables": "10", + "properties_timeStamp_connectedSince": "1377291228000" + }), + ] + + self._test_for_meter('switch', expected_data) + + def test_meter_switch_port(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4', + }), + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3', + 'user_link_node_id': '00:00:00:00:00:00:00:05', + 'user_link_node_port': '5', + 'user_link_status': 'Success', + 'user_link_name': 'link1', + }), + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2', + 'topology_node_id': '00:00:00:00:00:00:00:03', + 'topology_node_port': '2', + "topology_bandwidth": 10000000000, + "topology_config": 1, + "topology_name": "s2-eth3", + "topology_state": 1, + "topology_timeStamp_creation": 1379527162648 + }), + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1', + 'host_status': 'active', + 'host_dataLayerAddress': '00:00:00:00:02:02', + 'host_networkAddress': '2.2.2.2', + 'host_staticHost': 'true', + 'host_vlan': '0', + }), + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0', + 'host_status': 'inactive', + 'host_dataLayerAddress': '00:00:00:01:02:02', + 'host_networkAddress': '2.2.2.4', + 'host_staticHost': 'false', + 'host_vlan': '1', + }), + ] + self._test_for_meter('switch.port', expected_data) + + def test_meter_switch_port_receive_packets(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (182, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (174, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.receive.packets', expected_data) + + def test_meter_switch_port_transmit_packets(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (173, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (181, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.transmit.packets', expected_data) + + def test_meter_switch_port_receive_bytes(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (12740, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (12180, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.receive.bytes', expected_data) + + def test_meter_switch_port_transmit_bytes(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (12110, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (12670, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.transmit.bytes', expected_data) + + def test_meter_switch_port_receive_drops(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.receive.drops', expected_data) + + def test_meter_switch_port_transmit_drops(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.transmit.drops', expected_data) + + def test_meter_switch_port_receive_errors(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.receive.errors', expected_data) + + def test_meter_switch_port_transmit_errors(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.transmit.errors', expected_data) + + def test_meter_switch_port_receive_frame_error(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.receive.frame_error', expected_data) + + def test_meter_switch_port_receive_overrun_error(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.receive.overrun_error', + expected_data) + + def test_meter_switch_port_receive_crc_error(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.receive.crc_error', expected_data) + + def test_meter_switch_port_collision_count(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '4'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '3'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '2'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '1'}), + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'port': '0'}), + ] + self._test_for_meter('switch.port.collision.count', expected_data) + + def test_meter_switch_table(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1'}), + ] + self._test_for_meter('switch.table', expected_data) + + def test_meter_switch_table_active_entries(self): + expected_data = [ + (11, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + (20, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1'}), + ] + self._test_for_meter('switch.table.active.entries', expected_data) + + def test_meter_switch_table_lookup_packets(self): + expected_data = [ + (816, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + (10, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1'}), + ] + self._test_for_meter('switch.table.lookup.packets', expected_data) + + def test_meter_switch_table_matched_packets(self): + expected_data = [ + (220, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0'}), + (5, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1'}), + ] + self._test_for_meter('switch.table.matched.packets', expected_data) + + def test_meter_switch_flow(self): + expected_data = [ + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1" + }), + (1, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.2", + "flow_actions_@type": "output", + "flow_actions_port_id": "4", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:03", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1" + }), + ] + self._test_for_meter('switch.flow', expected_data) + + def test_meter_switch_flow_duration_seconds(self): + expected_data = [ + (1828, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + (5648, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.2", + "flow_actions_@type": "output", + "flow_actions_port_id": "4", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:03", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.duration_seconds', expected_data) + + def test_meter_switch_flow_duration_nanoseconds(self): + expected_data = [ + (397000000, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + (200000, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.2", + "flow_actions_@type": "output", + "flow_actions_port_id": "4", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:03", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.duration_nanoseconds', expected_data) + + def test_meter_switch_flow_packets(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + (30, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.2", + "flow_actions_@type": "output", + "flow_actions_port_id": "4", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:03", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.packets', expected_data) + + def test_meter_switch_flow_bytes(self): + expected_data = [ + (0, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '0', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.1", + "flow_actions_@type": "output", + "flow_actions_port_id": "3", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:02", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + (89, "00:00:00:00:00:00:00:02", { + 'controller': 'OpenDaylight', + 'container': 'default', + 'table_id': '1', + 'flow_id': '0', + "flow_match_matchField[0]_type": "DL_TYPE", + "flow_match_matchField[0]_value": "2048", + "flow_match_matchField[1]_mask": "255.255.255.255", + "flow_match_matchField[1]_type": "NW_DST", + "flow_match_matchField[1]_value": "1.1.1.2", + "flow_actions_@type": "output", + "flow_actions_port_id": "4", + "flow_actions_port_node_id": "00:00:00:00:00:00:00:03", + "flow_actions_port_node_type": "OF", + "flow_actions_port_type": "OF", + "flow_hardTimeout": "0", + "flow_idleTimeout": "0", + "flow_priority": "1"}), + ] + self._test_for_meter('switch.flow.bytes', expected_data) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/network/statistics/test_statistics.py ceilometer-2014.1~rc1/ceilometer/tests/network/statistics/test_statistics.py --- ceilometer-2014.1~b3/ceilometer/tests/network/statistics/test_statistics.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/network/statistics/test_statistics.py 2014-03-31 15:32:25.000000000 +0000 @@ -13,9 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -from stevedore import extension -from stevedore.tests import manager as test_manager - from ceilometer.network import statistics from ceilometer.network.statistics import driver from ceilometer.openstack.common import test @@ -72,13 +69,12 @@ self.pollster = FakePollster() - def _setup_ext_mgr(self, *drivers): - extensions = [ - extension.Extension(str(d), None, None, d()) - for d in drivers] - ext_mgr = test_manager.TestExtensionManager( - extensions) - self.pollster.extension_manager = ext_mgr + def tearDown(self): + statistics._Base.drivers = {} + super(TestBaseGetSamples, self).tearDown() + + def _setup_ext_mgr(self, **drivers): + statistics._Base.drivers = drivers def _make_fake_driver(self, *return_values): class FakeDriver(driver.Driver): @@ -86,12 +82,12 @@ def __init__(self): self.index = 0 - def get_sample_data(self, meter_name, resource, cache): + def get_sample_data(self, meter_name, parse_url, params, cache): if self.index >= len(return_values): - return None + yield None retval = return_values[self.index] self.index += 1 - return retval + yield retval return FakeDriver def _make_timestamps(self, count): @@ -119,7 +115,7 @@ times[0]), (2, 'b', None, times[1])) - self._setup_ext_mgr(fake_driver) + self._setup_ext_mgr(http=fake_driver()) samples = self._get_samples('http://foo') @@ -133,7 +129,7 @@ (2, 'b', None, times[1]), (3, 'c', None, times[2])) - self._setup_ext_mgr(fake_driver) + self._setup_ext_mgr(http=fake_driver()) samples = self._get_samples('http://foo', 'http://bar') @@ -150,13 +146,12 @@ fake_driver2 = self._make_fake_driver((11, 'A', None, times[2]), (12, 'B', None, times[3])) - self._setup_ext_mgr(fake_driver1, fake_driver2) + self._setup_ext_mgr(http=fake_driver1(), https=fake_driver2()) samples = self._get_samples('http://foo') - self.assertEqual(len(samples), 2) + self.assertEqual(len(samples), 1) self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, times[0]) - self._assert_sample(samples[1], 11, 'A', None, times[2]) def test_get_samples_multi_samples(self): times = self._make_timestamps(2) @@ -164,7 +159,7 @@ times[0]), (2, 'b', None, times[1])]) - self._setup_ext_mgr(fake_driver) + self._setup_ext_mgr(http=fake_driver()) samples = self._get_samples('http://foo') @@ -175,7 +170,7 @@ def test_get_samples_return_none(self): fake_driver = self._make_fake_driver(None) - self._setup_ext_mgr(fake_driver) + self._setup_ext_mgr(http=fake_driver()) samples = self._get_samples('http://foo') diff -Nru ceilometer-2014.1~b3/ceilometer/tests/network/test_floatingip.py ceilometer-2014.1~rc1/ceilometer/tests/network/test_floatingip.py --- ceilometer-2014.1~b3/ceilometer/tests/network/test_floatingip.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/network/test_floatingip.py 2014-03-31 15:32:25.000000000 +0000 @@ -69,28 +69,27 @@ def test_get_samples_not_empty(self): samples = list(self.pollster.get_samples(self.manager, {})) - self.assertEqual(len(samples), 3) + self.assertEqual(3, len(samples)) # It's necessary to verify all the attributes extracted by Nova # API /os-floating-ips to make sure they're available and correct. - self.assertEqual(samples[0].resource_id, 1) - self.assertEqual(samples[0].resource_metadata["address"], "1.1.1.1") - self.assertEqual(samples[0].resource_metadata["pool"], "public") + self.assertEqual(1, samples[0].resource_id) + self.assertEqual("1.1.1.1", samples[0].resource_metadata["address"]) + self.assertEqual("public", samples[0].resource_metadata["pool"]) - self.assertEqual(samples[1].resource_id, 2) - self.assertEqual(samples[1].resource_metadata["address"], "1.1.1.2") - self.assertEqual(samples[1].resource_metadata["pool"], "public") + self.assertEqual(2, samples[1].resource_id) + self.assertEqual("1.1.1.2", samples[1].resource_metadata["address"]) + self.assertEqual("public", samples[1].resource_metadata["pool"]) - self.assertEqual(samples[2].resource_id, 3) - self.assertEqual(samples[2].resource_metadata["address"], "1.1.1.3") - self.assertEqual(samples[2].resource_metadata["pool"], "public") + self.assertEqual(3, samples[2].resource_id) + self.assertEqual("1.1.1.3", samples[2].resource_metadata["address"]) + self.assertEqual("public", samples[2].resource_metadata["pool"]) def test_get_meter_names(self): samples = list(self.pollster.get_samples(self.manager, {})) - self.assertEqual(set([s.name for s in samples]), - set(['ip.floating'])) + self.assertEqual(set(['ip.floating']), set([s.name for s in samples])) def test_get_samples_cached(self): cache = {} cache['floating_ips'] = self.fake_get_ips()[:2] samples = list(self.pollster.get_samples(self.manager, cache)) - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/network/test_notifications.py ceilometer-2014.1~rc1/ceilometer/tests/network/test_notifications.py --- ceilometer-2014.1~b3/ceilometer/tests/network/test_notifications.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/network/test_notifications.py 2014-03-31 15:32:25.000000000 +0000 @@ -252,42 +252,42 @@ def test_network_create(self): v = notifications.Network() samples = list(v.process_notification(NOTIFICATION_NETWORK_CREATE)) - self.assertEqual(len(samples), 2) - self.assertEqual(samples[1].name, "network.create") + self.assertEqual(2, len(samples)) + self.assertEqual("network.create", samples[1].name) def test_subnet_create(self): v = notifications.Subnet() samples = list(v.process_notification(NOTIFICATION_SUBNET_CREATE)) - self.assertEqual(len(samples), 2) - self.assertEqual(samples[1].name, "subnet.create") + self.assertEqual(2, len(samples)) + self.assertEqual("subnet.create", samples[1].name) def test_port_create(self): v = notifications.Port() samples = list(v.process_notification(NOTIFICATION_PORT_CREATE)) - self.assertEqual(len(samples), 2) - self.assertEqual(samples[1].name, "port.create") + self.assertEqual(2, len(samples)) + self.assertEqual("port.create", samples[1].name) def test_port_update(self): v = notifications.Port() samples = list(v.process_notification(NOTIFICATION_PORT_UPDATE)) - self.assertEqual(len(samples), 2) - self.assertEqual(samples[1].name, "port.update") + self.assertEqual(2, len(samples)) + self.assertEqual("port.update", samples[1].name) def test_network_exists(self): v = notifications.Network() samples = v.process_notification(NOTIFICATION_NETWORK_EXISTS) - self.assertEqual(len(list(samples)), 1) + self.assertEqual(1, len(list(samples))) def test_router_exists(self): v = notifications.Router() samples = v.process_notification(NOTIFICATION_ROUTER_EXISTS) - self.assertEqual(len(list(samples)), 1) + self.assertEqual(1, len(list(samples))) def test_floatingip_exists(self): v = notifications.FloatingIP() samples = list(v.process_notification(NOTIFICATION_FLOATINGIP_EXISTS)) - self.assertEqual(len(samples), 1) - self.assertEqual(samples[0].name, "ip.floating") + self.assertEqual(1, len(samples)) + self.assertEqual("ip.floating", samples[0].name) def test_floatingip_update(self): v = notifications.FloatingIP() @@ -298,8 +298,8 @@ def test_metering_report(self): v = notifications.Bandwidth() samples = list(v.process_notification(NOTIFICATION_L3_METER)) - self.assertEqual(len(samples), 1) - self.assertEqual(samples[0].name, "bandwidth") + self.assertEqual(1, len(samples)) + self.assertEqual("bandwidth", samples[0].name) class TestEventTypes(test.BaseTestCase): diff -Nru ceilometer-2014.1~b3/ceilometer/tests/objectstore/test_swift_middleware.py ceilometer-2014.1~rc1/ceilometer/tests/objectstore/test_swift_middleware.py --- ceilometer-2014.1~b3/ceilometer/tests/objectstore/test_swift_middleware.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/objectstore/test_swift_middleware.py 2014-03-31 15:32:25.000000000 +0000 @@ -76,27 +76,27 @@ def test_rpc_setup(self): swift_middleware.CeilometerMiddleware(FakeApp(), {}) - self.assertEqual(self.CONF.control_exchange, 'ceilometer') + self.assertEqual('ceilometer', self.CONF.control_exchange) def test_get(self): app = swift_middleware.CeilometerMiddleware(FakeApp(), {}) req = webob.Request.blank('/1.0/account/container/obj', environ={'REQUEST_METHOD': 'GET'}) resp = app(req.environ, self.start_response) - self.assertEqual(list(resp), ["This string is 28 bytes long"]) + self.assertEqual(["This string is 28 bytes long"], list(resp)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) data = samples[0] - self.assertEqual(data.volume, 28) - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') - self.assertEqual(data.resource_metadata['object'], 'obj') + self.assertEqual(28, data.volume) + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) + self.assertEqual('obj', data.resource_metadata['object']) # test the # of request and the request method data = samples[1] - self.assertEqual(data.name, 'storage.api.request') - self.assertEqual(data.volume, 1) - self.assertEqual(data.resource_metadata['method'], 'get') + self.assertEqual('storage.api.request', data.name) + self.assertEqual(1, data.volume) + self.assertEqual('get', data.resource_metadata['method']) def test_put(self): app = swift_middleware.CeilometerMiddleware(FakeApp(body=['']), {}) @@ -106,18 +106,18 @@ six.moves.cStringIO('some stuff')}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) data = samples[0] - self.assertEqual(data.volume, 10) - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') - self.assertEqual(data.resource_metadata['object'], 'obj') + self.assertEqual(10, data.volume) + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) + self.assertEqual('obj', data.resource_metadata['object']) # test the # of request and the request method data = samples[1] - self.assertEqual(data.name, 'storage.api.request') - self.assertEqual(data.volume, 1) - self.assertEqual(data.resource_metadata['method'], 'put') + self.assertEqual('storage.api.request', data.name) + self.assertEqual(1, data.volume) + self.assertEqual('put', data.resource_metadata['method']) def test_post(self): app = swift_middleware.CeilometerMiddleware(FakeApp(body=['']), {}) @@ -127,18 +127,18 @@ 'wsgi.input': six.moves.cStringIO('some other stuff')}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) data = samples[0] - self.assertEqual(data.volume, 16) - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') - self.assertEqual(data.resource_metadata['object'], 'obj') + self.assertEqual(16, data.volume) + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) + self.assertEqual('obj', data.resource_metadata['object']) # test the # of request and the request method data = samples[1] - self.assertEqual(data.name, 'storage.api.request') - self.assertEqual(data.volume, 1) - self.assertEqual(data.resource_metadata['method'], 'post') + self.assertEqual('storage.api.request', data.name) + self.assertEqual(1, data.volume) + self.assertEqual('post', data.resource_metadata['method']) def test_head(self): app = swift_middleware.CeilometerMiddleware(FakeApp(body=['']), {}) @@ -146,15 +146,15 @@ environ={'REQUEST_METHOD': 'HEAD'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) data = samples[0] - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') - self.assertEqual(data.resource_metadata['object'], 'obj') - self.assertEqual(data.resource_metadata['method'], 'head') + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) + self.assertEqual('obj', data.resource_metadata['object']) + self.assertEqual('head', data.resource_metadata['method']) - self.assertEqual(data.name, 'storage.api.request') - self.assertEqual(data.volume, 1) + self.assertEqual('storage.api.request', data.name) + self.assertEqual(1, data.volume) def test_bogus_request(self): """Test even for arbitrary request method, this will still work.""" @@ -164,15 +164,15 @@ list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) data = samples[0] - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') - self.assertEqual(data.resource_metadata['object'], 'obj') - self.assertEqual(data.resource_metadata['method'], 'bogus') + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) + self.assertEqual('obj', data.resource_metadata['object']) + self.assertEqual('bogus', data.resource_metadata['method']) - self.assertEqual(data.name, 'storage.api.request') - self.assertEqual(data.volume, 1) + self.assertEqual('storage.api.request', data.name) + self.assertEqual(1, data.volume) def test_get_container(self): app = swift_middleware.CeilometerMiddleware(FakeApp(), {}) @@ -180,11 +180,11 @@ environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) data = samples[0] - self.assertEqual(data.volume, 28) - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') + self.assertEqual(28, data.volume) + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) self.assertIsNone(data.resource_metadata['object']) def test_no_metadata_headers(self): @@ -193,13 +193,13 @@ environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) data = samples[0] http_headers = [k for k in data.resource_metadata.keys() if k.startswith('http_header_')] - self.assertEqual(len(http_headers), 0) - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') + self.assertEqual(0, len(http_headers)) + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) self.assertIsNone(data.resource_metadata['object']) def test_metadata_headers(self): @@ -212,18 +212,18 @@ 'X_VAR2': 'value2'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) data = samples[0] http_headers = [k for k in data.resource_metadata.keys() if k.startswith('http_header_')] - self.assertEqual(len(http_headers), 2) - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') + self.assertEqual(2, len(http_headers)) + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) self.assertIsNone(data.resource_metadata['object']) - self.assertEqual(data.resource_metadata['http_header_x_var1'], - 'value1') - self.assertEqual(data.resource_metadata['http_header_x_var2'], - 'value2') + self.assertEqual('value1', + data.resource_metadata['http_header_x_var1']) + self.assertEqual('value2', + data.resource_metadata['http_header_x_var2']) self.assertFalse('http_header_x_var3' in data.resource_metadata) def test_metadata_headers_on_not_existing_header(self): @@ -234,13 +234,13 @@ environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) data = samples[0] http_headers = [k for k in data.resource_metadata.keys() if k.startswith('http_header_')] - self.assertEqual(len(http_headers), 0) - self.assertEqual(data.resource_metadata['version'], '1.0') - self.assertEqual(data.resource_metadata['container'], 'container') + self.assertEqual(0, len(http_headers)) + self.assertEqual('1.0', data.resource_metadata['version']) + self.assertEqual('container', data.resource_metadata['container']) self.assertIsNone(data.resource_metadata['object']) def test_bogus_path(self): @@ -249,14 +249,14 @@ environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 0) + self.assertEqual(0, len(samples)) def test_missing_resource_id(self): app = swift_middleware.CeilometerMiddleware(FakeApp(), {}) req = webob.Request.blank('/5.0/', environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 0) + self.assertEqual(0, len(samples)) @mock.patch.object(swift_middleware.CeilometerMiddleware, 'publish_sample') @@ -267,8 +267,8 @@ environ={'REQUEST_METHOD': 'GET'}) resp = list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples - self.assertEqual(len(samples), 0) - self.assertEqual(resp, ["test"]) + self.assertEqual(0, len(samples)) + self.assertEqual(["test"], resp) mocked_publish_sample.assert_called_once_with(mock.ANY, 0, 4) def test_reseller_prefix(self): @@ -278,7 +278,7 @@ environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples[0] - self.assertEqual(samples.resource_id, "account") + self.assertEqual("account", samples.resource_id) # Custom reseller prefix set app = swift_middleware.CeilometerMiddleware( @@ -287,7 +287,7 @@ environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples[0] - self.assertEqual(samples.resource_id, "account") + self.assertEqual("account", samples.resource_id) def test_invalid_reseller_prefix(self): # Custom reseller prefix set, but without trailing underscore @@ -297,4 +297,4 @@ environ={'REQUEST_METHOD': 'GET'}) list(app(req.environ, self.start_response)) samples = self.pipeline_manager.pipelines[0].samples[0] - self.assertEqual(samples.resource_id, "account") + self.assertEqual("account", samples.resource_id) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/objectstore/test_swift.py ceilometer-2014.1~rc1/ceilometer/tests/objectstore/test_swift.py --- ceilometer-2014.1~b3/ceilometer/tests/objectstore/test_swift.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/objectstore/test_swift.py 2014-03-31 15:32:25.000000000 +0000 @@ -108,7 +108,7 @@ self.assertTrue(self.pollster.CACHE_KEY_TENANT in cache) self.assertTrue(self.pollster.CACHE_KEY_METHOD in cache) - self.assertEqual(data, []) + self.assertEqual([], data) def test_iter_accounts_tenants_cached(self): # Verify that if there are tenants pre-cached then the account @@ -130,7 +130,7 @@ } data = list(self.pollster._iter_accounts(mock.Mock(), cache)) self.assertTrue(self.pollster.CACHE_KEY_METHOD in cache) - self.assertEqual(data[0][0], self.ACCOUNTS[0][0]) + self.assertEqual(self.ACCOUNTS[0][0], data[0][0]) def test_neaten_url(self): test_endpoint = 'http://127.0.0.1:8080' @@ -155,19 +155,19 @@ side_effect=self.fake_iter_accounts): samples = list(self.pollster.get_samples(self.manager, {})) - self.assertEqual(len(samples), 2) + self.assertEqual(2, len(samples)) def test_get_meter_names(self): with PatchObject(self.factory, '_iter_accounts', side_effect=self.fake_iter_accounts): samples = list(self.pollster.get_samples(self.manager, {})) - self.assertEqual(set([s.name for s in samples]), - set([samples[0].name])) + self.assertEqual(set([samples[0].name]), + set([s.name for s in samples])) def test_endpoint_notfound(self): with PatchObject(self.manager.keystone.service_catalog, 'url_for', side_effect=self.fake_ks_service_catalog_url_for): samples = list(self.pollster.get_samples(self.manager, {})) - self.assertEqual(len(samples), 0) + self.assertEqual(0, len(samples)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/pipeline_base.py ceilometer-2014.1~rc1/ceilometer/tests/pipeline_base.py --- ceilometer-2014.1~b3/ceilometer/tests/pipeline_base.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/pipeline_base.py 2014-03-31 15:32:25.000000000 +0000 @@ -233,7 +233,7 @@ self.transformer_manager) pipe = pipeline_manager.pipelines[0] - self.assertEqual(pipe.get_interval(), 5) + self.assertEqual(5, pipe.get_interval()) def test_publisher_transformer_invoked(self): pipeline_manager = pipeline.PipelineManager(self.pipeline_cfg, @@ -243,11 +243,11 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(len(self.TransformerClass.samples), 1) - self.assertEqual(getattr(publisher.samples[0], "name"), 'a_update') - self.assertEqual(getattr(self.TransformerClass.samples[0], "name"), - 'a') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, len(self.TransformerClass.samples)) + self.assertEqual('a_update', getattr(publisher.samples[0], "name")) + self.assertEqual('a', + getattr(self.TransformerClass.samples[0], "name")) def test_multiple_included_counters(self): counter_cfg = ['a', 'b'] @@ -259,7 +259,7 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) + self.assertEqual(1, len(publisher.samples)) self.test_counter = sample.Sample( name='b', @@ -276,10 +276,10 @@ with pipeline_manager.publisher(None) as p: p([self.test_counter]) - self.assertEqual(len(publisher.samples), 2) - self.assertEqual(len(self.TransformerClass.samples), 2) - self.assertEqual(getattr(publisher.samples[0], "name"), 'a_update') - self.assertEqual(getattr(publisher.samples[1], "name"), 'b_update') + self.assertEqual(2, len(publisher.samples)) + self.assertEqual(2, len(self.TransformerClass.samples)) + self.assertEqual('a_update', getattr(publisher.samples[0], "name")) + self.assertEqual('b_update', getattr(publisher.samples[1], "name")) def test_counter_dont_match(self): counter_cfg = ['nomatch'] @@ -290,8 +290,8 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 0) - self.assertEqual(publisher.calls, 0) + self.assertEqual(0, len(publisher.samples)) + self.assertEqual(0, publisher.calls) def test_wildcard_counter(self): counter_cfg = ['*'] @@ -302,9 +302,9 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(len(self.TransformerClass.samples), 1) - self.assertEqual(getattr(publisher.samples[0], "name"), 'a_update') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, len(self.TransformerClass.samples)) + self.assertEqual('a_update', getattr(publisher.samples[0], "name")) def test_wildcard_excluded_counters(self): counter_cfg = ['*', '!a'] @@ -321,10 +321,9 @@ with pipeline_manager.publisher(None) as p: p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(len(self.TransformerClass.samples), 1) - self.assertEqual(getattr(publisher.samples[0], "name"), - 'a_update') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, len(self.TransformerClass.samples)) + self.assertEqual('a_update', getattr(publisher.samples[0], "name")) def test_all_excluded_counters_not_excluded(self): counter_cfg = ['!b', '!c'] @@ -335,11 +334,11 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(len(self.TransformerClass.samples), 1) - self.assertEqual(getattr(publisher.samples[0], "name"), 'a_update') - self.assertEqual(getattr(self.TransformerClass.samples[0], "name"), - 'a') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, len(self.TransformerClass.samples)) + self.assertEqual('a_update', getattr(publisher.samples[0], "name")) + self.assertEqual('a', + getattr(self.TransformerClass.samples[0], "name")) def test_all_excluded_counters_is_excluded(self): counter_cfg = ['!a', '!c'] @@ -405,18 +404,18 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(publisher.calls, 1) - self.assertEqual(getattr(publisher.samples[0], "name"), 'a_update') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, publisher.calls) + self.assertEqual('a_update', getattr(publisher.samples[0], "name")) new_publisher = pipeline_manager.pipelines[1].publishers[0] - self.assertEqual(len(new_publisher.samples), 1) - self.assertEqual(new_publisher.calls, 1) - self.assertEqual(getattr(new_publisher.samples[0], "name"), 'b_new') - self.assertEqual(len(self.TransformerClass.samples), 2) - self.assertEqual(getattr(self.TransformerClass.samples[0], "name"), - 'a') - self.assertEqual(getattr(self.TransformerClass.samples[1], "name"), - 'b') + self.assertEqual(1, len(new_publisher.samples)) + self.assertEqual(1, new_publisher.calls) + self.assertEqual('b_new', getattr(new_publisher.samples[0], "name")) + self.assertEqual(2, len(self.TransformerClass.samples)) + self.assertEqual('a', + getattr(self.TransformerClass.samples[0], "name")) + self.assertEqual('b', + getattr(self.TransformerClass.samples[1], "name")) def test_multiple_pipeline_exception(self): self._break_pipeline_cfg() @@ -442,14 +441,14 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(publisher.calls, 1) - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(getattr(publisher.samples[0], "name"), 'a_update') - self.assertEqual(len(self.TransformerClass.samples), 2) - self.assertEqual(getattr(self.TransformerClass.samples[0], "name"), - 'a') - self.assertEqual(getattr(self.TransformerClass.samples[1], "name"), - 'b') + self.assertEqual(1, publisher.calls) + self.assertEqual(1, len(publisher.samples)) + self.assertEqual('a_update', getattr(publisher.samples[0], "name")) + self.assertEqual(2, len(self.TransformerClass.samples)) + self.assertEqual('a', + getattr(self.TransformerClass.samples[0], "name")) + self.assertEqual('b', + getattr(self.TransformerClass.samples[1], "name")) def test_none_transformer_pipeline(self): self._set_pipeline_cfg('transformers', None) @@ -458,9 +457,9 @@ with pipeline_manager.publisher(None) as p: p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(publisher.calls, 1) - self.assertEqual(getattr(publisher.samples[0], 'name'), 'a') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, publisher.calls) + self.assertEqual('a', getattr(publisher.samples[0], 'name')) def test_empty_transformer_pipeline(self): self._set_pipeline_cfg('transformers', []) @@ -469,9 +468,9 @@ with pipeline_manager.publisher(None) as p: p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(publisher.calls, 1) - self.assertEqual(getattr(publisher.samples[0], 'name'), 'a') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, publisher.calls) + self.assertEqual('a', getattr(publisher.samples[0], 'name')) def test_multiple_transformer_same_class(self): transformer_cfg = [ @@ -492,15 +491,15 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(publisher.calls, 1) - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(getattr(publisher.samples[0], 'name'), - 'a_update_update') - self.assertEqual(len(self.TransformerClass.samples), 2) - self.assertEqual(getattr(self.TransformerClass.samples[0], 'name'), - 'a') - self.assertEqual(getattr(self.TransformerClass.samples[1], 'name'), - 'a_update') + self.assertEqual(1, publisher.calls) + self.assertEqual(1, len(publisher.samples)) + self.assertEqual('a_update_update', + getattr(publisher.samples[0], 'name')) + self.assertEqual(2, len(self.TransformerClass.samples)) + self.assertEqual('a', + getattr(self.TransformerClass.samples[0], 'name')) + self.assertEqual('a_update', + getattr(self.TransformerClass.samples[1], 'name')) def test_multiple_transformer_same_class_different_parameter(self): transformer_cfg = [ @@ -525,15 +524,16 @@ with pipeline_manager.publisher(None) as p: p([self.test_counter]) - self.assertEqual(len(self.TransformerClass.samples), 2) - self.assertEqual(getattr(self.TransformerClass.samples[0], 'name'), - 'a') - self.assertEqual(getattr(self.TransformerClass.samples[1], 'name'), - 'a_update') - publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(getattr(publisher.samples[0], 'name'), - 'a_update_new') + self.assertEqual(2, len(self.TransformerClass.samples)) + self.assertEqual('a', + getattr(self.TransformerClass.samples[0], 'name')) + self.assertEqual('a_update', + getattr(self.TransformerClass.samples[1], 'name')) + publisher = pipeline_manager.pipelines[0].publishers[0] + self.assertEqual(1, + len(publisher.samples)) + self.assertEqual('a_update_new', + getattr(publisher.samples[0], 'name')) def test_multiple_transformer_drop_transformer(self): transformer_cfg = [ @@ -563,13 +563,14 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 0) - self.assertEqual(len(self.TransformerClass.samples), 1) - self.assertEqual(getattr(self.TransformerClass.samples[0], 'name'), - 'a') - self.assertEqual(len(self.TransformerClassDrop.samples), 1) - self.assertEqual(getattr(self.TransformerClassDrop.samples[0], 'name'), - 'a_update') + self.assertEqual(0, len(publisher.samples)) + self.assertEqual(1, len(self.TransformerClass.samples)) + self.assertEqual('a', + getattr(self.TransformerClass.samples[0], 'name')) + self.assertEqual(1, + len(self.TransformerClassDrop.samples)) + self.assertEqual('a_update', + getattr(self.TransformerClassDrop.samples[0], 'name')) def test_multiple_publisher(self): self._set_pipeline_cfg('publishers', ['test://', 'new://']) @@ -581,12 +582,12 @@ publisher = pipeline_manager.pipelines[0].publishers[0] new_publisher = pipeline_manager.pipelines[0].publishers[1] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(len(new_publisher.samples), 1) - self.assertEqual(getattr(new_publisher.samples[0], 'name'), - 'a_update') - self.assertEqual(getattr(publisher.samples[0], 'name'), - 'a_update') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, len(new_publisher.samples)) + self.assertEqual('a_update', + getattr(new_publisher.samples[0], 'name')) + self.assertEqual('a_update', + getattr(publisher.samples[0], 'name')) def test_multiple_publisher_isolation(self): self._set_pipeline_cfg('publishers', ['except://', 'new://']) @@ -596,9 +597,9 @@ p([self.test_counter]) new_publisher = pipeline_manager.pipelines[0].publishers[1] - self.assertEqual(len(new_publisher.samples), 1) - self.assertEqual(getattr(new_publisher.samples[0], 'name'), - 'a_update') + self.assertEqual(1, len(new_publisher.samples)) + self.assertEqual('a_update', + getattr(new_publisher.samples[0], 'name')) def test_multiple_counter_pipeline(self): self._set_pipeline_cfg('counters', ['a', 'b']) @@ -619,9 +620,9 @@ )]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 2) - self.assertEqual(getattr(publisher.samples[0], 'name'), 'a_update') - self.assertEqual(getattr(publisher.samples[1], 'name'), 'b_update') + self.assertEqual(2, len(publisher.samples)) + self.assertEqual('a_update', getattr(publisher.samples[0], 'name')) + self.assertEqual('b_update', getattr(publisher.samples[1], 'name')) def test_flush_pipeline_cache(self): CACHE_SIZE = 10 @@ -647,18 +648,17 @@ pipe.publish_sample(None, self.test_counter) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 0) + self.assertEqual(0, len(publisher.samples)) pipe.flush(None) - self.assertEqual(len(publisher.samples), 0) + self.assertEqual(0, len(publisher.samples)) pipe.publish_sample(None, self.test_counter) pipe.flush(None) - self.assertEqual(len(publisher.samples), 0) + self.assertEqual(0, len(publisher.samples)) for i in range(CACHE_SIZE - 2): pipe.publish_sample(None, self.test_counter) pipe.flush(None) - self.assertEqual(len(publisher.samples), CACHE_SIZE) - self.assertEqual(getattr(publisher.samples[0], 'name'), - 'a_update_new') + self.assertEqual(CACHE_SIZE, len(publisher.samples)) + self.assertEqual('a_update_new', getattr(publisher.samples[0], 'name')) def test_flush_pipeline_cache_multiple_counter(self): CACHE_SIZE = 3 @@ -696,16 +696,16 @@ )]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 0) + self.assertEqual(0, len(publisher.samples)) with pipeline_manager.publisher(None) as p: p([self.test_counter]) - self.assertEqual(len(publisher.samples), CACHE_SIZE) - self.assertEqual(getattr(publisher.samples[0], 'name'), - 'a_update_new') - self.assertEqual(getattr(publisher.samples[1], 'name'), - 'b_update_new') + self.assertEqual(CACHE_SIZE, len(publisher.samples)) + self.assertEqual('a_update_new', + getattr(publisher.samples[0], 'name')) + self.assertEqual('b_update_new', + getattr(publisher.samples[1], 'name')) def test_flush_pipeline_cache_before_publisher(self): extra_transformer_cfg = [{ @@ -719,11 +719,11 @@ publisher = pipe.publishers[0] pipe.publish_sample(None, self.test_counter) - self.assertEqual(len(publisher.samples), 0) + self.assertEqual(0, len(publisher.samples)) pipe.flush(None) - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(getattr(publisher.samples[0], 'name'), - 'a_update') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual('a_update', + getattr(publisher.samples[0], 'name')) def test_variable_counter(self): self.pipeline_cfg = [{ @@ -755,12 +755,12 @@ p([self.test_counter]) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) - self.assertEqual(len(self.TransformerClass.samples), 1) - self.assertEqual(getattr(publisher.samples[0], "name"), - 'a:b_update') - self.assertEqual(getattr(self.TransformerClass.samples[0], "name"), - 'a:b') + self.assertEqual(1, len(publisher.samples)) + self.assertEqual(1, len(self.TransformerClass.samples)) + self.assertEqual('a:b_update', + getattr(publisher.samples[0], "name")) + self.assertEqual('a:b', + getattr(self.TransformerClass.samples[0], "name")) def test_global_unit_conversion(self): scale = 'volume / ((10**6) * 60)' @@ -797,14 +797,14 @@ pipe.publish_samples(None, counters) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 1) + self.assertEqual(1, len(publisher.samples)) pipe.flush(None) - self.assertEqual(len(publisher.samples), 1) + self.assertEqual(1, len(publisher.samples)) cpu_mins = publisher.samples[-1] - self.assertEqual(getattr(cpu_mins, 'name'), 'cpu_mins') - self.assertEqual(getattr(cpu_mins, 'unit'), 'min') - self.assertEqual(getattr(cpu_mins, 'type'), sample.TYPE_CUMULATIVE) - self.assertEqual(getattr(cpu_mins, 'volume'), 20) + self.assertEqual('cpu_mins', getattr(cpu_mins, 'name')) + self.assertEqual('min', getattr(cpu_mins, 'unit')) + self.assertEqual(sample.TYPE_CUMULATIVE, getattr(cpu_mins, 'type')) + self.assertEqual(20, getattr(cpu_mins, 'volume')) def test_unit_identified_source_unit_conversion(self): transformer_cfg = [ @@ -851,16 +851,16 @@ pipe.publish_samples(None, counters) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 2) + self.assertEqual(2, len(publisher.samples)) core_temp = publisher.samples[1] - self.assertEqual(getattr(core_temp, 'name'), 'core_temperature') - self.assertEqual(getattr(core_temp, 'unit'), '°F') - self.assertEqual(getattr(core_temp, 'volume'), 96.8) + self.assertEqual('core_temperature', getattr(core_temp, 'name')) + self.assertEqual('°F', getattr(core_temp, 'unit')) + self.assertEqual(96.8, getattr(core_temp, 'volume')) amb_temp = publisher.samples[0] - self.assertEqual(getattr(amb_temp, 'name'), 'ambient_temperature') - self.assertEqual(getattr(amb_temp, 'unit'), '°F') - self.assertEqual(getattr(amb_temp, 'volume'), 88.8) - self.assertEqual(getattr(core_temp, 'volume'), 96.8) + self.assertEqual('ambient_temperature', getattr(amb_temp, 'name')) + self.assertEqual('°F', getattr(amb_temp, 'unit')) + self.assertEqual(88.8, getattr(amb_temp, 'volume')) + self.assertEqual(96.8, getattr(core_temp, 'volume')) def _do_test_rate_of_change_conversion(self, prev, curr, type, expected, offset=1, weight=None): @@ -941,21 +941,21 @@ pipe.publish_samples(None, counters) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 2) + self.assertEqual(2, len(publisher.samples)) pipe.flush(None) - self.assertEqual(len(publisher.samples), 2) + self.assertEqual(2, len(publisher.samples)) cpu_util = publisher.samples[0] - self.assertEqual(getattr(cpu_util, 'name'), 'cpu_util') - self.assertEqual(getattr(cpu_util, 'resource_id'), 'test_resource') - self.assertEqual(getattr(cpu_util, 'unit'), '%') - self.assertEqual(getattr(cpu_util, 'type'), sample.TYPE_GAUGE) - self.assertEqual(getattr(cpu_util, 'volume'), expected) + self.assertEqual('cpu_util', getattr(cpu_util, 'name')) + self.assertEqual('test_resource', getattr(cpu_util, 'resource_id')) + self.assertEqual('%', getattr(cpu_util, 'unit')) + self.assertEqual(sample.TYPE_GAUGE, getattr(cpu_util, 'type')) + self.assertEqual(expected, getattr(cpu_util, 'volume')) cpu_util = publisher.samples[1] - self.assertEqual(getattr(cpu_util, 'name'), 'cpu_util') - self.assertEqual(getattr(cpu_util, 'resource_id'), 'test_resource2') - self.assertEqual(getattr(cpu_util, 'unit'), '%') - self.assertEqual(getattr(cpu_util, 'type'), sample.TYPE_GAUGE) - self.assertEqual(getattr(cpu_util, 'volume'), expected * 2) + self.assertEqual('cpu_util', getattr(cpu_util, 'name')) + self.assertEqual('test_resource2', getattr(cpu_util, 'resource_id')) + self.assertEqual('%', getattr(cpu_util, 'unit')) + self.assertEqual(sample.TYPE_GAUGE, getattr(cpu_util, 'type')) + self.assertEqual(expected * 2, getattr(cpu_util, 'volume')) def test_rate_of_change_conversion(self): self._do_test_rate_of_change_conversion(120000000000, @@ -1026,23 +1026,22 @@ pipe.publish_samples(None, counters) publisher = pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(publisher.samples), 0) + self.assertEqual(0, len(publisher.samples)) pipe.flush(None) - self.assertEqual(len(publisher.samples), 0) + self.assertEqual(0, len(publisher.samples)) def test_resources(self): resources = ['test1://', 'test2://'] self._set_pipeline_cfg('resources', resources) pipeline_manager = pipeline.PipelineManager(self.pipeline_cfg, self.transformer_manager) - self.assertEqual(pipeline_manager.pipelines[0].resources, - resources) + self.assertEqual(resources, + pipeline_manager.pipelines[0].resources) def test_no_resources(self): pipeline_manager = pipeline.PipelineManager(self.pipeline_cfg, self.transformer_manager) - self.assertEqual(len(pipeline_manager.pipelines[0].resources), - 0) + self.assertEqual(0, len(pipeline_manager.pipelines[0].resources)) def _do_test_rate_of_change_mapping(self, pipe, meters, units): now = timeutils.utcnow() @@ -1070,21 +1069,21 @@ pipe.publish_samples(None, counters) publisher = pipe.publishers[0] - self.assertEqual(len(publisher.samples), 2) + self.assertEqual(2, len(publisher.samples)) pipe.flush(None) - self.assertEqual(len(publisher.samples), 2) + self.assertEqual(2, len(publisher.samples)) bps = publisher.samples[0] - self.assertEqual(getattr(bps, 'name'), '%s.rate' % meters[0]) - self.assertEqual(getattr(bps, 'resource_id'), 'resource1') - self.assertEqual(getattr(bps, 'unit'), '%s/s' % units[0]) - self.assertEqual(getattr(bps, 'type'), sample.TYPE_GAUGE) - self.assertEqual(getattr(bps, 'volume'), rate) + self.assertEqual('%s.rate' % meters[0], getattr(bps, 'name')) + self.assertEqual('resource1', getattr(bps, 'resource_id')) + self.assertEqual('%s/s' % units[0], getattr(bps, 'unit')) + self.assertEqual(sample.TYPE_GAUGE, getattr(bps, 'type')) + self.assertEqual(rate, getattr(bps, 'volume')) rps = publisher.samples[1] - self.assertEqual(getattr(rps, 'name'), '%s.rate' % meters[1]) - self.assertEqual(getattr(rps, 'resource_id'), 'resource2') - self.assertEqual(getattr(rps, 'unit'), '%s/s' % units[1]) - self.assertEqual(getattr(rps, 'type'), sample.TYPE_GAUGE) - self.assertEqual(getattr(rps, 'volume'), rate) + self.assertEqual('%s.rate' % meters[1], getattr(rps, 'name')) + self.assertEqual('resource2', getattr(rps, 'resource_id')) + self.assertEqual('%s/s' % units[1], getattr(rps, 'unit')) + self.assertEqual(sample.TYPE_GAUGE, getattr(rps, 'type')) + self.assertEqual(rate, getattr(rps, 'volume')) def test_rate_of_change_mapping(self): map_from = {'name': 'disk\\.(read|write)\\.(bytes|requests)', diff -Nru ceilometer-2014.1~b3/ceilometer/tests/publisher/test_file.py ceilometer-2014.1~rc1/ceilometer/tests/publisher/test_file.py --- ceilometer-2014.1~b3/ceilometer/tests/publisher/test_file.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/publisher/test_file.py 2014-03-31 15:32:25.000000000 +0000 @@ -81,9 +81,9 @@ handler = publisher.publisher_logger.handlers[0] self.assertIsInstance(handler, logging.handlers.RotatingFileHandler) - self.assertEqual([handler.maxBytes, handler.baseFilename, - handler.backupCount], - [50, name, 3]) + self.assertEqual([50, name, 3], [handler.maxBytes, + handler.baseFilename, + handler.backupCount]) # The rotating file gets created since only allow 50 bytes. self.assertTrue(os.path.exists('%s.1' % name)) @@ -99,9 +99,9 @@ handler = publisher.publisher_logger.handlers[0] self.assertIsInstance(handler, logging.handlers.RotatingFileHandler) - self.assertEqual([handler.maxBytes, handler.baseFilename, - handler.backupCount], - [0, name, 0]) + self.assertEqual([0, name, 0], [handler.maxBytes, + handler.baseFilename, + handler.backupCount]) # Test the content is corrected saved in the file self.assertTrue(os.path.exists(name)) with open(name, 'r') as f: diff -Nru ceilometer-2014.1~b3/ceilometer/tests/publisher/test_rpc_publisher.py ceilometer-2014.1~rc1/ceilometer/tests/publisher/test_rpc_publisher.py --- ceilometer-2014.1~b3/ceilometer/tests/publisher/test_rpc_publisher.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/publisher/test_rpc_publisher.py 2014-03-31 15:32:25.000000000 +0000 @@ -114,38 +114,37 @@ network_utils.urlsplit('rpc://')) publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 1) - self.assertEqual(self.published[0][0], - self.CONF.publisher_rpc.metering_topic) + self.assertEqual(1, len(self.published)) + self.assertEqual(self.CONF.publisher_rpc.metering_topic, + self.published[0][0]) self.assertIsInstance(self.published[0][1]['args']['data'], list) - self.assertEqual(self.published[0][1]['method'], - 'record_metering_data') + self.assertEqual('record_metering_data', + self.published[0][1]['method']) def test_publish_target(self): publisher = rpc.RPCPublisher( network_utils.urlsplit('rpc://?target=custom_procedure_call')) publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 1) - self.assertEqual(self.published[0][0], - self.CONF.publisher_rpc.metering_topic) + self.assertEqual(1, len(self.published)) + self.assertEqual(self.CONF.publisher_rpc.metering_topic, + self.published[0][0]) self.assertIsInstance(self.published[0][1]['args']['data'], list) - self.assertEqual(self.published[0][1]['method'], - 'custom_procedure_call') + self.assertEqual('custom_procedure_call', + self.published[0][1]['method']) def test_published_with_per_meter_topic(self): publisher = rpc.RPCPublisher( network_utils.urlsplit('rpc://?per_meter_topic=1')) publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 4) + self.assertEqual(4, len(self.published)) for topic, rpc_call in self.published: meters = rpc_call['args']['data'] self.assertIsInstance(meters, list) if topic != self.CONF.publisher_rpc.metering_topic: - self.assertEqual(len(set(meter['counter_name'] - for meter in meters)), - 1, + self.assertEqual(1, len(set(meter['counter_name'] + for meter in meters)), "Meter are published grouped by name") topics = [topic for topic, meter in self.published] @@ -184,9 +183,9 @@ job1.wait() job2.wait() - self.assertEqual(publisher.policy, 'default') - self.assertEqual(len(self.published), 2) - self.assertEqual(len(publisher.local_queue), 0) + self.assertEqual('default', publisher.policy) + self.assertEqual(2, len(self.published)) + self.assertEqual(0, len(publisher.local_queue)) @mock.patch('ceilometer.publisher.rpc.LOG') def test_published_with_no_policy(self, mylog): @@ -199,9 +198,9 @@ SystemExit, publisher.publish_samples, None, self.test_data) - self.assertEqual(publisher.policy, 'default') - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 0) + self.assertEqual('default', publisher.policy) + self.assertEqual(0, len(self.published)) + self.assertEqual(0, len(publisher.local_queue)) @mock.patch('ceilometer.publisher.rpc.LOG') def test_published_with_policy_block(self, mylog): @@ -213,8 +212,8 @@ SystemExit, publisher.publish_samples, None, self.test_data) - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 0) + self.assertEqual(0, len(self.published)) + self.assertEqual(0, len(publisher.local_queue)) @mock.patch('ceilometer.publisher.rpc.LOG') def test_published_with_policy_incorrect(self, mylog): @@ -226,9 +225,9 @@ publisher.publish_samples, None, self.test_data) self.assertTrue(mylog.warn.called) - self.assertEqual(publisher.policy, 'default') - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 0) + self.assertEqual('default', publisher.policy) + self.assertEqual(0, len(self.published)) + self.assertEqual(0, len(publisher.local_queue)) def test_published_with_policy_drop_and_rpc_down(self): self.rpc_unreachable = True @@ -236,8 +235,8 @@ network_utils.urlsplit('rpc://?policy=drop')) publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 0) + self.assertEqual(0, len(self.published)) + self.assertEqual(0, len(publisher.local_queue)) def test_published_with_policy_queue_and_rpc_down(self): self.rpc_unreachable = True @@ -245,8 +244,8 @@ network_utils.urlsplit('rpc://?policy=queue')) publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 1) + self.assertEqual(0, len(self.published)) + self.assertEqual(1, len(publisher.local_queue)) def test_published_with_policy_queue_and_rpc_down_up(self): self.rpc_unreachable = True @@ -254,15 +253,15 @@ network_utils.urlsplit('rpc://?policy=queue')) publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 1) + self.assertEqual(0, len(self.published)) + self.assertEqual(1, len(publisher.local_queue)) self.rpc_unreachable = False publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 2) - self.assertEqual(len(publisher.local_queue), 0) + self.assertEqual(2, len(self.published)) + self.assertEqual(0, len(publisher.local_queue)) def test_published_with_policy_sized_queue_and_rpc_down(self): self.rpc_unreachable = True @@ -273,20 +272,17 @@ s.source = 'test-%d' % i publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 3) - self.assertEqual( - publisher.local_queue[0][2]['args']['data'][0]['source'], - 'test-2' - ) - self.assertEqual( - publisher.local_queue[1][2]['args']['data'][0]['source'], - 'test-3' - ) - self.assertEqual( - publisher.local_queue[2][2]['args']['data'][0]['source'], - 'test-4' - ) + self.assertEqual(0, len(self.published)) + self.assertEqual(3, len(publisher.local_queue)) + self.assertEqual('test-2', + publisher.local_queue[0][2]['args']['data'][0] + ['source']) + self.assertEqual('test-3', + publisher.local_queue[1][2]['args']['data'][0] + ['source']) + self.assertEqual('test-4', + publisher.local_queue[2][2]['args']['data'][0] + ['source']) def test_published_with_policy_default_sized_queue_and_rpc_down(self): self.rpc_unreachable = True @@ -297,13 +293,11 @@ s.source = 'test-%d' % i publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.published), 0) - self.assertEqual(len(publisher.local_queue), 1024) - self.assertEqual( - publisher.local_queue[0][2]['args']['data'][0]['source'], - 'test-976' - ) - self.assertEqual( - publisher.local_queue[1023][2]['args']['data'][0]['source'], - 'test-1999' - ) + self.assertEqual(0, len(self.published)) + self.assertEqual(1024, len(publisher.local_queue)) + self.assertEqual('test-976', + publisher.local_queue[0][2]['args']['data'][0] + ['source']) + self.assertEqual('test-1999', + publisher.local_queue[1023][2]['args']['data'][0] + ['source']) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/publisher/test_udp.py ceilometer-2014.1~rc1/ceilometer/tests/publisher/test_udp.py --- ceilometer-2014.1~b3/ceilometer/tests/publisher/test_udp.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/publisher/test_udp.py 2014-03-31 15:32:25.000000000 +0000 @@ -123,7 +123,7 @@ publisher.publish_samples(None, self.test_data) - self.assertEqual(len(self.data_sent), 5) + self.assertEqual(5, len(self.data_sent)) sent_counters = [] @@ -132,16 +132,13 @@ sent_counters.append(counter) # Check destination - self.assertEqual(dest, ('somehost', - self.CONF.collector.udp_port)) + self.assertEqual(('somehost', + self.CONF.collector.udp_port), dest) # Check that counters are equal - self.assertEqual(sorted(sent_counters), - sorted( - [utils.meter_message_from_counter( - d, - "not-so-secret") - for d in self.test_data])) + self.assertEqual(sorted( + [utils.meter_message_from_counter(d, "not-so-secret") + for d in self.test_data]), sorted(sent_counters)) @staticmethod def _raise_ioerror(*args): diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/sqlalchemy/test_models.py ceilometer-2014.1~rc1/ceilometer/tests/storage/sqlalchemy/test_models.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/sqlalchemy/test_models.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/sqlalchemy/test_models.py 2014-03-31 15:32:25.000000000 +0000 @@ -49,24 +49,24 @@ def test_load_dialect_impl_mysql(self): result = self._type.load_dialect_impl(self._mysql_dialect) - self.assertEqual(type(result), NUMERIC) - self.assertEqual(result.precision, 20) - self.assertEqual(result.scale, 6) + self.assertEqual(NUMERIC, type(result)) + self.assertEqual(20, result.precision) + self.assertEqual(6, result.scale) self.assertTrue(result.asdecimal) def test_load_dialect_impl_postgres(self): result = self._type.load_dialect_impl(self._postgres_dialect) - self.assertEqual(type(result), sqlalchemy.DateTime) + self.assertEqual(sqlalchemy.DateTime, type(result)) def test_process_bind_param_store_decimal_mysql(self): expected = utils.dt_to_decimal(self._date) result = self._type.process_bind_param(self._date, self._mysql_dialect) - self.assertEqual(result, expected) + self.assertEqual(expected, result) def test_process_bind_param_store_datetime_postgres(self): result = self._type.process_bind_param(self._date, self._postgres_dialect) - self.assertEqual(result, self._date) + self.assertEqual(self._date, result) def test_process_bind_param_store_none_mysql(self): result = self._type.process_bind_param(None, self._mysql_dialect) @@ -81,12 +81,12 @@ dec_value = utils.dt_to_decimal(self._date) result = self._type.process_result_value(dec_value, self._mysql_dialect) - self.assertEqual(result, self._date) + self.assertEqual(self._date, result) def test_process_result_value_datetime_postgres(self): result = self._type.process_result_value(self._date, self._postgres_dialect) - self.assertEqual(result, self._date) + self.assertEqual(self._date, result) def test_process_result_value_none_mysql(self): result = self._type.process_result_value(None, diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_base.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_base.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_base.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_base.py 2014-03-31 15:32:25.000000000 +0000 @@ -29,34 +29,32 @@ datetime.datetime(2013, 1, 1, 12, 0), datetime.datetime(2013, 1, 1, 13, 0), 60)) - self.assertEqual(len(times), 60) - self.assertEqual(times[10], - (datetime.datetime(2013, 1, 1, 12, 10), - datetime.datetime(2013, 1, 1, 12, 11))) - self.assertEqual(times[21], - (datetime.datetime(2013, 1, 1, 12, 21), - datetime.datetime(2013, 1, 1, 12, 22))) + self.assertEqual(60, len(times)) + self.assertEqual((datetime.datetime(2013, 1, 1, 12, 10), + datetime.datetime(2013, 1, 1, 12, 11)), times[10]) + self.assertEqual((datetime.datetime(2013, 1, 1, 12, 21), + datetime.datetime(2013, 1, 1, 12, 22)), times[21]) def test_iter_period_bis(self): times = list(base.iter_period( datetime.datetime(2013, 1, 2, 13, 0), datetime.datetime(2013, 1, 2, 14, 0), 55)) - self.assertEqual(len(times), math.ceil(3600 / 55.0)) - self.assertEqual(times[10], - (datetime.datetime(2013, 1, 2, 13, 9, 10), - datetime.datetime(2013, 1, 2, 13, 10, 5))) - self.assertEqual(times[21], - (datetime.datetime(2013, 1, 2, 13, 19, 15), - datetime.datetime(2013, 1, 2, 13, 20, 10))) + self.assertEqual(math.ceil(3600 / 55.0), len(times)) + self.assertEqual((datetime.datetime(2013, 1, 2, 13, 9, 10), + datetime.datetime(2013, 1, 2, 13, 10, 5)), + times[10]) + self.assertEqual((datetime.datetime(2013, 1, 2, 13, 19, 15), + datetime.datetime(2013, 1, 2, 13, 20, 10)), + times[21]) def test_handle_sort_key(self): sort_keys_alarm = base._handle_sort_key('alarm') - self.assertEqual(sort_keys_alarm, ['name', 'user_id', 'project_id']) + self.assertEqual(['name', 'user_id', 'project_id'], sort_keys_alarm) sort_keys_meter = base._handle_sort_key('meter', 'foo') - self.assertEqual(sort_keys_meter, ['foo', 'user_id', 'project_id']) + self.assertEqual(['foo', 'user_id', 'project_id'], sort_keys_meter) sort_keys_resource = base._handle_sort_key('resource', 'project_id') - self.assertEqual(sort_keys_resource, - ['project_id', 'user_id', 'timestamp']) + self.assertEqual(['project_id', 'user_id', 'timestamp'], + sort_keys_resource) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_db2.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_db2.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_db2.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_db2.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,76 @@ +# -*- encoding: utf-8 -*- +# +# Copyright Ericsson AB 2014. All rights reserved +# +# Authors: Ildiko Vancsa +# +# 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. +"""Tests for ceilometer/storage/impl_db2.py + +.. note:: + In order to run the tests against another MongoDB server set the + environment variable CEILOMETER_TEST_DB2_URL to point to a DB2 + server before running the tests. + +""" + +from ceilometer.tests import db as tests_db + + +class DB2EngineTestBase(tests_db.TestBase): + database_connection = tests_db.DB2FakeConnectionUrl() + + +class CapabilitiesTest(DB2EngineTestBase): + # Check the returned capabilities list, which is specific to each DB + # driver + + def test_capabilities(self): + expected_capabilities = { + 'meters': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'resources': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'samples': {'pagination': False, + 'groupby': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': True}}, + 'statistics': {'pagination': False, + 'groupby': True, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}, + 'aggregation': {'standard': True, + 'selectable': { + 'max': False, + 'min': False, + 'sum': False, + 'avg': False, + 'count': False, + 'stddev': False, + 'cardinality': False}} + }, + 'alarms': {'query': {'simple': True, + 'complex': True}, + 'history': {'query': {'simple': True, + 'complex': False}}}, + 'events': {'query': {'simple': False}} + } + + actual_capabilities = self.conn.get_capabilities() + self.assertEqual(expected_capabilities, actual_capabilities) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_hbase.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_hbase.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_hbase.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_hbase.py 2014-03-31 15:32:25.000000000 +0000 @@ -39,7 +39,7 @@ def test_hbase_connection(self): self.CONF.database.connection = str(self.database_connection) conn = hbase.Connection(self.CONF) - self.assertIsInstance(conn.conn, hbase.MConnection) + self.assertIsInstance(conn.conn_pool.connection(), hbase.MConnection) class TestConn(object): def __init__(self, host, port): @@ -48,11 +48,56 @@ def open(self): pass - def get_connection(conf): + def get_connection_pool(conf): return TestConn(conf['host'], conf['port']) self.CONF.database.connection = 'hbase://test_hbase:9090' - with patch.object(hbase.Connection, '_get_connection', - side_effect=get_connection): + with patch.object(hbase.Connection, '_get_connection_pool', + side_effect=get_connection_pool): conn = hbase.Connection(self.CONF) - self.assertIsInstance(conn.conn, TestConn) + self.assertIsInstance(conn.conn_pool, TestConn) + + +class CapabilitiesTest(HBaseEngineTestBase): + # Check the returned capabilities list, which is specific to each DB + # driver + + def test_capabilities(self): + expected_capabilities = { + 'meters': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'resources': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'samples': {'pagination': False, + 'groupby': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'statistics': {'pagination': False, + 'groupby': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}, + 'aggregation': {'standard': True, + 'selectable': { + 'max': False, + 'min': False, + 'sum': False, + 'avg': False, + 'count': False, + 'stddev': False, + 'cardinality': False}} + }, + 'alarms': {'query': {'simple': False, + 'complex': False}, + 'history': {'query': {'simple': False, + 'complex': False}}}, + 'events': {'query': {'simple': False}} + } + + actual_capabilities = self.conn.get_capabilities() + self.assertEqual(expected_capabilities, actual_capabilities) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_mongodb.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_mongodb.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_mongodb.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_mongodb.py 2014-03-31 15:32:25.000000000 +0000 @@ -24,12 +24,6 @@ """ -import copy -import datetime -from mock import patch - -from ceilometer.publisher import utils -from ceilometer import sample from ceilometer.storage import base from ceilometer.storage import impl_mongodb from ceilometer.tests import db as tests_db @@ -61,7 +55,7 @@ marker=marker, flag=flag) expect = {'k3': {'$lt': 'v3'}, 'k2': {'eq': 'v2'}, 'k1': {'eq': 'v1'}} - self.assertEqual(ret, expect) + self.assertEqual(expect, ret) class MongoDBTestMarkerBase(test_storage_scenarios.DBTestBase, @@ -72,14 +66,14 @@ marker_pairs = {'user_id': 'user-id-4'} ret = impl_mongodb.Connection._get_marker(self.conn.db.resource, marker_pairs) - self.assertEqual(ret['project_id'], 'project-id-4') + self.assertEqual('project-id-4', ret['project_id']) def test_get_marker_None(self): marker_pairs = {'user_id': 'user-id-foo'} try: ret = impl_mongodb.Connection._get_marker(self.conn.db.resource, marker_pairs) - self.assertEqual(ret['project_id'], 'project-id-foo') + self.assertEqual('project-id-foo', ret['project_id']) except base.NoResultFound: self.assertTrue(True) @@ -88,7 +82,7 @@ marker_pairs = {'project_id': 'project-id'} ret = impl_mongodb.Connection._get_marker(self.conn.db.resource, marker_pairs) - self.assertEqual(ret['project_id'], 'project-id-foo') + self.assertEqual('project-id-foo', ret['project_id']) except base.MultipleResultsFound: self.assertTrue(True) @@ -111,8 +105,9 @@ self.conn.upgrade() self.assertFalse(self.conn.db.meter.ensure_index('foo', name='meter_ttl')) - self.assertEqual(self.conn.db.meter.index_information()[ - 'meter_ttl']['expireAfterSeconds'], 456789) + self.assertEqual(456789, + self.conn.db.meter.index_information() + ['meter_ttl']['expireAfterSeconds']) self.CONF.set_override('time_to_live', -1, group='database') self.conn.upgrade() @@ -120,151 +115,6 @@ name='meter_ttl')) -class CompatibilityTest(test_storage_scenarios.DBTestBase, - MongoDBEngineTestBase): - def prepare_data(self): - def old_record_metering_data(self, data): - self.db.user.update( - {'_id': data['user_id']}, - {'$addToSet': {'source': data['source'], - }, - }, - upsert=True, - ) - self.db.project.update( - {'_id': data['project_id']}, - {'$addToSet': {'source': data['source'], - }, - }, - upsert=True, - ) - received_timestamp = datetime.datetime.utcnow() - self.db.resource.update( - {'_id': data['resource_id']}, - {'$set': {'project_id': data['project_id'], - 'user_id': data['user_id'], - # Current metadata being used and when it was - # last updated. - 'timestamp': data['timestamp'], - 'received_timestamp': received_timestamp, - 'metadata': data['resource_metadata'], - 'source': data['source'], - }, - '$addToSet': {'meter': {'counter_name': data['counter_name'], - 'counter_type': data['counter_type'], - }, - }, - }, - upsert=True, - ) - - record = copy.copy(data) - self.db.meter.insert(record) - - # Stubout with the old version DB schema, the one w/o 'counter_unit' - with patch.object(self.conn, 'record_metering_data', - side_effect=old_record_metering_data): - self.counters = [] - c = sample.Sample( - 'volume.size', - 'gauge', - 'GiB', - 5, - 'user-id', - 'project1', - 'resource-id', - timestamp=datetime.datetime(2012, 9, 25, 10, 30), - resource_metadata={'display_name': 'test-volume', - 'tag': 'self.counter', - }, - source='test', - ) - self.counters.append(c) - msg = utils.meter_message_from_counter( - c, - secret='not-so-secret') - self.conn.record_metering_data(self.conn, msg) - - # Create the old format alarm with a dict instead of a - # array for matching_metadata - alarm = dict(alarm_id='0ld-4l3rt', - enabled=True, - name='old-alert', - description='old-alert', - timestamp=None, - meter_name='cpu', - user_id='me', - project_id='and-da-boys', - comparison_operator='lt', - threshold=36, - statistic='count', - evaluation_periods=1, - period=60, - state="insufficient data", - state_timestamp=None, - ok_actions=[], - alarm_actions=['http://nowhere/alarms'], - insufficient_data_actions=[], - repeat_actions=False, - matching_metadata={'key': 'value'}) - - self.conn.db.alarm.update( - {'alarm_id': alarm['alarm_id']}, - {'$set': alarm}, - upsert=True) - - alarm['alarm_id'] = 'other-kind-of-0ld-4l3rt' - alarm['name'] = 'other-old-alaert' - alarm['matching_metadata'] = [{'key': 'key1', 'value': 'value1'}, - {'key': 'key2', 'value': 'value2'}] - self.conn.db.alarm.update( - {'alarm_id': alarm['alarm_id']}, - {'$set': alarm}, - upsert=True) - - def test_alarm_get_old_format_matching_metadata_dict(self): - old = list(self.conn.get_alarms(name='old-alert'))[0] - self.assertEqual(old.type, 'threshold') - self.assertEqual(old.rule['query'], - [{'field': 'key', - 'op': 'eq', - 'value': 'value', - 'type': 'string'}]) - self.assertEqual(old.rule['period'], 60) - self.assertEqual(old.rule['meter_name'], 'cpu') - self.assertEqual(old.rule['evaluation_periods'], 1) - self.assertEqual(old.rule['statistic'], 'count') - self.assertEqual(old.rule['comparison_operator'], 'lt') - self.assertEqual(old.rule['threshold'], 36) - - def test_alarm_get_old_format_matching_metadata_array(self): - old = list(self.conn.get_alarms(name='other-old-alaert'))[0] - self.assertEqual(old.type, 'threshold') - self.assertEqual(sorted(old.rule['query']), - sorted([{'field': 'key1', - 'op': 'eq', - 'value': 'value1', - 'type': 'string'}, - {'field': 'key2', - 'op': 'eq', - 'value': 'value2', - 'type': 'string'}])) - self.assertEqual(old.rule['meter_name'], 'cpu') - self.assertEqual(old.rule['period'], 60) - self.assertEqual(old.rule['evaluation_periods'], 1) - self.assertEqual(old.rule['statistic'], 'count') - self.assertEqual(old.rule['comparison_operator'], 'lt') - self.assertEqual(old.rule['threshold'], 36) - - def test_alarm_without_time_constraints(self): - old = list(self.conn.get_alarms(name='other-old-alaert'))[0] - self.assertEqual([], old.time_constraints) - - def test_counter_unit(self): - meters = list(self.conn.get_meters()) - self.assertEqual(len(meters), 1) - - class AlarmTestPagination(test_storage_scenarios.AlarmTestBase, MongoDBEngineTestBase): def test_alarm_get_marker(self): @@ -272,7 +122,7 @@ marker_pairs = {'name': 'red-alert'} ret = impl_mongodb.Connection._get_marker(self.conn.db.alarm, marker_pairs=marker_pairs) - self.assertEqual(ret['rule']['meter_name'], 'test.one') + self.assertEqual('test.one', ret['rule']['meter_name']) def test_alarm_get_marker_None(self): self.add_some_alarms() @@ -280,8 +130,7 @@ marker_pairs = {'name': 'user-id-foo'} ret = impl_mongodb.Connection._get_marker(self.conn.db.alarm, marker_pairs) - self.assertEqual(ret['rule']['meter_name'], - 'meter_name-foo') + self.assertEqual('meter_name-foo', ret['rule']['meter_name']) except base.NoResultFound: self.assertTrue(True) @@ -291,7 +140,51 @@ marker_pairs = {'user_id': 'me'} ret = impl_mongodb.Connection._get_marker(self.conn.db.alarm, marker_pairs) - self.assertEqual(ret['rule']['meter_name'], - 'counter-name-foo') + self.assertEqual('counter-name-foo', ret['rule']['meter_name']) except base.MultipleResultsFound: self.assertTrue(True) + + +class CapabilitiesTest(MongoDBEngineTestBase): + # Check the returned capabilities list, which is specific to each DB + # driver + + def test_capabilities(self): + expected_capabilities = { + 'meters': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'resources': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'samples': {'pagination': False, + 'groupby': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': True}}, + 'statistics': {'pagination': False, + 'groupby': True, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}, + 'aggregation': {'standard': True, + 'selectable': { + 'max': True, + 'min': True, + 'sum': True, + 'avg': True, + 'count': True, + 'stddev': True, + 'cardinality': True}} + }, + 'alarms': {'query': {'simple': True, + 'complex': True}, + 'history': {'query': {'simple': True, + 'complex': True}}}, + 'events': {'query': {'simple': False}} + } + + actual_capabilities = self.conn.get_capabilities() + self.assertEqual(expected_capabilities, actual_capabilities) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_sqlalchemy.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_sqlalchemy.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_impl_sqlalchemy.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_impl_sqlalchemy.py 2014-03-31 15:32:25.000000000 +0000 @@ -47,7 +47,7 @@ def test_ceilometer_base(self): base = sql_models.CeilometerBase() base['key'] = 'value' - self.assertEqual(base['key'], 'value') + self.assertEqual('value', base['key']) class TraitTypeTest(EventTestBase): @@ -58,9 +58,9 @@ tt1 = self.conn._get_or_create_trait_type("foo", 0) self.assertTrue(tt1.id >= 0) tt2 = self.conn._get_or_create_trait_type("foo", 0) - self.assertEqual(tt1.id, tt2.id) - self.assertEqual(tt1.desc, tt2.desc) - self.assertEqual(tt1.data_type, tt2.data_type) + self.assertEqual(tt2.id, tt1.id) + self.assertEqual(tt2.desc, tt1.desc) + self.assertEqual(tt2.data_type, tt1.data_type) def test_new_trait_type(self): tt1 = self.conn._get_or_create_trait_type("foo", 0) @@ -76,7 +76,7 @@ self.assertTrue(tt1.id >= 0) tt2 = self.conn._get_or_create_trait_type("foo", 1) self.assertNotEqual(tt1.id, tt2.id) - self.assertEqual(tt1.desc, tt2.desc) + self.assertEqual(tt2.desc, tt1.desc) self.assertNotEqual(tt1.data_type, tt2.data_type) # Test the method __repr__ returns a string self.assertTrue(repr.repr(tt2)) @@ -90,8 +90,8 @@ et1 = self.conn._get_or_create_event_type("foo") self.assertTrue(et1.id >= 0) et2 = self.conn._get_or_create_event_type("foo") - self.assertEqual(et1.id, et2.id) - self.assertEqual(et1.desc, et2.desc) + self.assertEqual(et2.id, et1.id) + self.assertEqual(et2.desc, et1.desc) def test_event_type_unique(self): et1 = self.conn._get_or_create_event_type("foo") @@ -111,43 +111,43 @@ def test_string_traits(self): model = models.Trait("Foo", models.Trait.TEXT_TYPE, "my_text") trait = self.conn._make_trait(model, None) - self.assertEqual(trait.trait_type.data_type, models.Trait.TEXT_TYPE) + self.assertEqual(models.Trait.TEXT_TYPE, trait.trait_type.data_type) self.assertIsNone(trait.t_float) self.assertIsNone(trait.t_int) self.assertIsNone(trait.t_datetime) - self.assertEqual(trait.t_string, "my_text") + self.assertEqual("my_text", trait.t_string) self.assertIsNotNone(trait.trait_type.desc) def test_int_traits(self): model = models.Trait("Foo", models.Trait.INT_TYPE, 100) trait = self.conn._make_trait(model, None) - self.assertEqual(trait.trait_type.data_type, models.Trait.INT_TYPE) + self.assertEqual(models.Trait.INT_TYPE, trait.trait_type.data_type) self.assertIsNone(trait.t_float) self.assertIsNone(trait.t_string) self.assertIsNone(trait.t_datetime) - self.assertEqual(trait.t_int, 100) + self.assertEqual(100, trait.t_int) self.assertIsNotNone(trait.trait_type.desc) def test_float_traits(self): model = models.Trait("Foo", models.Trait.FLOAT_TYPE, 123.456) trait = self.conn._make_trait(model, None) - self.assertEqual(trait.trait_type.data_type, models.Trait.FLOAT_TYPE) + self.assertEqual(models.Trait.FLOAT_TYPE, trait.trait_type.data_type) self.assertIsNone(trait.t_int) self.assertIsNone(trait.t_string) self.assertIsNone(trait.t_datetime) - self.assertEqual(trait.t_float, 123.456) + self.assertEqual(123.456, trait.t_float) self.assertIsNotNone(trait.trait_type.desc) def test_datetime_traits(self): now = datetime.datetime.utcnow() model = models.Trait("Foo", models.Trait.DATETIME_TYPE, now) trait = self.conn._make_trait(model, None) - self.assertEqual(trait.trait_type.data_type, - models.Trait.DATETIME_TYPE) + self.assertEqual(models.Trait.DATETIME_TYPE, + trait.trait_type.data_type) self.assertIsNone(trait.t_int) self.assertIsNone(trait.t_string) self.assertIsNone(trait.t_float) - self.assertEqual(trait.t_datetime, now) + self.assertEqual(now, trait.t_datetime) self.assertIsNotNone(trait.trait_type.desc) def test_bad_event(self): @@ -160,7 +160,7 @@ problem_events = self.conn.record_events(m) self.assertEqual(2, len(problem_events)) for bad, event in problem_events: - self.assertEqual(models.Event.UNKNOWN_PROBLEM, bad) + self.assertEqual(bad, models.Event.UNKNOWN_PROBLEM) def test_get_none_value_traits(self): model = sql_models.Trait(None, None, 5) @@ -196,29 +196,74 @@ meta_tables = [sql_models.MetaText, sql_models.MetaFloat, sql_models.MetaBigInt, sql_models.MetaBool] for table in meta_tables: - self.assertEqual(session.query(table) + self.assertEqual(0, session.query(table) .filter(~table.id.in_( session.query(sql_models.Sample.id) .group_by(sql_models.Sample.id) - )).count(), 0) + )).count()) def test_clear_metering_data_associations(self): timeutils.utcnow.override_time = datetime.datetime(2012, 7, 2, 10, 45) self.conn.clear_expired_metering_data(3 * 60) session = self.conn._get_db_session() - self.assertEqual(session.query(sql_models.sourceassoc) + self.assertEqual(0, session.query(sql_models.sourceassoc) .filter(~sql_models.sourceassoc.c.sample_id.in_( session.query(sql_models.Sample.id) .group_by(sql_models.Sample.id) - )).count(), 0) - self.assertEqual(session.query(sql_models.sourceassoc) + )).count()) + self.assertEqual(0, session.query(sql_models.sourceassoc) .filter(~sql_models.sourceassoc.c.project_id.in_( session.query(sql_models.Project.id) .group_by(sql_models.Project.id) - )).count(), 0) - self.assertEqual(session.query(sql_models.sourceassoc) + )).count()) + self.assertEqual(0, session.query(sql_models.sourceassoc) .filter(~sql_models.sourceassoc.c.user_id.in_( session.query(sql_models.User.id) .group_by(sql_models.User.id) - )).count(), 0) + )).count()) + + +class CapabilitiesTest(EventTestBase): + # Check the returned capabilities list, which is specific to each DB + # driver + + def test_capabilities(self): + expected_capabilities = { + 'meters': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'resources': {'pagination': False, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}}, + 'samples': {'pagination': True, + 'groupby': True, + 'query': {'simple': True, + 'metadata': True, + 'complex': True}}, + 'statistics': {'pagination': False, + 'groupby': True, + 'query': {'simple': True, + 'metadata': True, + 'complex': False}, + 'aggregation': {'standard': True, + 'selectable': { + 'max': True, + 'min': True, + 'sum': True, + 'avg': True, + 'count': True, + 'stddev': True, + 'cardinality': True}} + }, + 'alarms': {'query': {'simple': True, + 'complex': True}, + 'history': {'query': {'simple': True, + 'complex': True}}}, + 'events': {'query': {'simple': True}} + } + + actual_capabilities = self.conn.get_capabilities() + self.assertEqual(expected_capabilities, actual_capabilities) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_models.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_models.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_models.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_models.py 2014-03-31 15:32:25.000000000 +0000 @@ -31,27 +31,29 @@ def test_create_attributes(self): m = FakeModel(1, 2) - self.assertEqual(m.arg1, 1) - self.assertEqual(m.arg2, 2) + self.assertEqual(1, m.arg1) + self.assertEqual(2, m.arg2) def test_as_dict(self): m = FakeModel(1, 2) d = m.as_dict() - self.assertEqual(d, {'arg1': 1, 'arg2': 2}) + self.assertEqual({'arg1': 1, 'arg2': 2}, d) def test_as_dict_recursive(self): m = FakeModel(1, FakeModel('a', 'b')) d = m.as_dict() - self.assertEqual(d, {'arg1': 1, - 'arg2': {'arg1': 'a', - 'arg2': 'b'}}) + self.assertEqual({'arg1': 1, + 'arg2': {'arg1': 'a', + 'arg2': 'b'}}, + d) def test_as_dict_recursive_list(self): m = FakeModel(1, [FakeModel('a', 'b')]) d = m.as_dict() - self.assertEqual(d, {'arg1': 1, - 'arg2': [{'arg1': 'a', - 'arg2': 'b'}]}) + self.assertEqual({'arg1': 1, + 'arg2': [{'arg1': 'a', + 'arg2': 'b'}]}, + d) def test_event_repr_no_traits(self): x = models.Event("1", "name", "now", None) @@ -91,19 +93,19 @@ def test_convert_value(self): v = models.Trait.convert_value( models.Trait.INT_TYPE, '10') - self.assertEqual(v, 10) + self.assertEqual(10, v) self.assertIsInstance(v, int) v = models.Trait.convert_value( models.Trait.FLOAT_TYPE, '10') - self.assertEqual(v, 10.0) + self.assertEqual(10.0, v) self.assertIsInstance(v, float) v = models.Trait.convert_value( models.Trait.DATETIME_TYPE, '2013-08-08 21:05:37.123456') - self.assertEqual(v, datetime.datetime(2013, 8, 8, 21, 5, 37, 123456)) + self.assertEqual(datetime.datetime(2013, 8, 8, 21, 5, 37, 123456), v) self.assertIsInstance(v, datetime.datetime) v = models.Trait.convert_value( models.Trait.TEXT_TYPE, 10) - self.assertEqual(v, "10") + self.assertEqual("10", v) self.assertIsInstance(v, str) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_pymongo_base.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_pymongo_base.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_pymongo_base.py 1970-01-01 00:00:00.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_pymongo_base.py 2014-03-31 15:32:25.000000000 +0000 @@ -0,0 +1,176 @@ +# -*- encoding: utf-8 -*- +# 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. +"""Tests the mongodb and db2 common functionality +""" + +import copy +import datetime + +from mock import patch +import testscenarios + +from ceilometer.publisher import utils +from ceilometer import sample +from ceilometer.tests import db as tests_db +from ceilometer.tests.storage import test_storage_scenarios + +load_tests = testscenarios.load_tests_apply_scenarios + + +class CompatibilityTest(test_storage_scenarios.DBTestBase, + tests_db.MixinTestsWithBackendScenarios): + + scenarios = [ + ('mongodb', + dict(database_connection=tests_db.MongoDBFakeConnectionUrl())), + ('db2', + dict(database_connection=tests_db.DB2FakeConnectionUrl())), + ] + + def prepare_data(self): + def old_record_metering_data(self, data): + self.db.user.update( + {'_id': data['user_id']}, + {'$addToSet': {'source': data['source'], + }, + }, + upsert=True, + ) + self.db.project.update( + {'_id': data['project_id']}, + {'$addToSet': {'source': data['source'], + }, + }, + upsert=True, + ) + received_timestamp = datetime.datetime.utcnow() + self.db.resource.update( + {'_id': data['resource_id']}, + {'$set': {'project_id': data['project_id'], + 'user_id': data['user_id'], + # Current metadata being used and when it was + # last updated. + 'timestamp': data['timestamp'], + 'received_timestamp': received_timestamp, + 'metadata': data['resource_metadata'], + 'source': data['source'], + }, + '$addToSet': {'meter': {'counter_name': data['counter_name'], + 'counter_type': data['counter_type'], + }, + }, + }, + upsert=True, + ) + + record = copy.copy(data) + self.db.meter.insert(record) + + # Stubout with the old version DB schema, the one w/o 'counter_unit' + with patch.object(self.conn, 'record_metering_data', + side_effect=old_record_metering_data): + self.counters = [] + c = sample.Sample( + 'volume.size', + 'gauge', + 'GiB', + 5, + 'user-id', + 'project1', + 'resource-id', + timestamp=datetime.datetime(2012, 9, 25, 10, 30), + resource_metadata={'display_name': 'test-volume', + 'tag': 'self.counter', + }, + source='test', + ) + self.counters.append(c) + msg = utils.meter_message_from_counter( + c, + secret='not-so-secret') + self.conn.record_metering_data(self.conn, msg) + + # Create the old format alarm with a dict instead of a + # array for matching_metadata + alarm = dict(alarm_id='0ld-4l3rt', + enabled=True, + name='old-alert', + description='old-alert', + timestamp=None, + meter_name='cpu', + user_id='me', + project_id='and-da-boys', + comparison_operator='lt', + threshold=36, + statistic='count', + evaluation_periods=1, + period=60, + state="insufficient data", + state_timestamp=None, + ok_actions=[], + alarm_actions=['http://nowhere/alarms'], + insufficient_data_actions=[], + repeat_actions=False, + matching_metadata={'key': 'value'}) + + self.conn.db.alarm.update( + {'alarm_id': alarm['alarm_id']}, + {'$set': alarm}, + upsert=True) + + alarm['alarm_id'] = 'other-kind-of-0ld-4l3rt' + alarm['name'] = 'other-old-alaert' + alarm['matching_metadata'] = [{'key': 'key1', 'value': 'value1'}, + {'key': 'key2', 'value': 'value2'}] + self.conn.db.alarm.update( + {'alarm_id': alarm['alarm_id']}, + {'$set': alarm}, + upsert=True) + + def test_alarm_get_old_format_matching_metadata_dict(self): + old = list(self.conn.get_alarms(name='old-alert'))[0] + self.assertEqual('threshold', old.type) + self.assertEqual([{'field': 'key', + 'op': 'eq', + 'value': 'value', + 'type': 'string'}], + old.rule['query']) + self.assertEqual(60, old.rule['period']) + self.assertEqual('cpu', old.rule['meter_name']) + self.assertEqual(1, old.rule['evaluation_periods']) + self.assertEqual('count', old.rule['statistic']) + self.assertEqual('lt', old.rule['comparison_operator']) + self.assertEqual(36, old.rule['threshold']) + + def test_alarm_get_old_format_matching_metadata_array(self): + old = list(self.conn.get_alarms(name='other-old-alaert'))[0] + self.assertEqual('threshold', old.type) + self.assertEqual(sorted([{'field': 'key1', + 'op': 'eq', + 'value': 'value1', + 'type': 'string'}, + {'field': 'key2', + 'op': 'eq', + 'value': 'value2', + 'type': 'string'}]), + sorted(old.rule['query']),) + self.assertEqual('cpu', old.rule['meter_name']) + self.assertEqual(60, old.rule['period']) + self.assertEqual(1, old.rule['evaluation_periods']) + self.assertEqual('count', old.rule['statistic']) + self.assertEqual('lt', old.rule['comparison_operator']) + self.assertEqual(36, old.rule['threshold']) + + def test_counter_unit(self): + meters = list(self.conn.get_meters()) + self.assertEqual(1, len(meters)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/storage/test_storage_scenarios.py ceilometer-2014.1~rc1/ceilometer/tests/storage/test_storage_scenarios.py --- ceilometer-2014.1~b3/ceilometer/tests/storage/test_storage_scenarios.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/storage/test_storage_scenarios.py 2014-03-31 15:32:25.000000000 +0000 @@ -262,9 +262,21 @@ def test_get_resources_by_user(self): resources = list(self.conn.get_resources(user='user-id')) - self.assertEqual(len(resources), 2) + self.assertTrue(len(resources) == 2 or len(resources) == 1) ids = set(r.resource_id for r in resources) - self.assertEqual(ids, set(['resource-id', 'resource-id-alternate'])) + # tolerate storage driver only reporting latest owner of resource + resources_ever_owned_by = set(['resource-id', + 'resource-id-alternate']) + resources_now_owned_by = set(['resource-id']) + self.assertTrue(ids == resources_ever_owned_by or + ids == resources_now_owned_by, + 'unexpected resources: %s' % ids) + + def test_get_resources_by_alternate_user(self): + resources = list(self.conn.get_resources(user='user-id-alternate')) + self.assertEqual(1, len(resources)) + # only a single resource owned by this user ever + self.assertEqual('resource-id-alternate', resources[0].resource_id) def test_get_resources_by_project(self): resources = list(self.conn.get_resources(project='project-id')) @@ -1153,6 +1165,39 @@ secret='not-so-secret', ) self.conn.record_metering_data(msg) + for i in range(3): + c = sample.Sample( + 'memory', + 'gauge', + 'MB', + 8 + i, + 'user-5', + 'project2', + 'resource-6', + timestamp=datetime.datetime(2012, 9, 25, 10 + i, 30 + i), + resource_metadata={}, + source='test', + ) + msg = utils.meter_message_from_counter( + c, + secret='not-so-secret', + ) + self.conn.record_metering_data(msg) + + def test_by_meter(self): + f = storage.SampleFilter( + meter='memory' + ) + results = list(self.conn.get_meter_statistics(f))[0] + self.assertEqual(results.duration, + (datetime.datetime(2012, 9, 25, 12, 32) + - datetime.datetime(2012, 9, 25, 10, 30)).seconds) + self.assertEqual(results.count, 3) + self.assertEqual(results.unit, 'MB') + self.assertEqual(results.min, 8) + self.assertEqual(results.max, 10) + self.assertEqual(results.sum, 27) + self.assertEqual(results.avg, 9) def test_by_user(self): f = storage.SampleFilter( @@ -2550,6 +2595,16 @@ self.assertIn(a.name, set(["yellow-alert", "red-alert"])) self.assertTrue(a.enabled) + def test_filter_for_alarm_id(self): + self.add_some_alarms() + filter_expr = {"=": {"alarm_id": "0r4ng3"}} + + result = list(self.conn.query_alarms(filter_expr=filter_expr)) + + self.assertEqual(1, len(result)) + for a in result: + self.assertEqual(a.alarm_id, "0r4ng3") + def test_filter_and_orderby(self): self.add_some_alarms() result = list(self.conn.query_alarms(filter_expr={"=": diff -Nru ceilometer-2014.1~b3/ceilometer/tests/test_bin.py ceilometer-2014.1~rc1/ceilometer/tests/test_bin.py --- ceilometer-2014.1~b3/ceilometer/tests/test_bin.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/test_bin.py 2014-03-31 15:32:25.000000000 +0000 @@ -46,7 +46,7 @@ def test_dbsync_run(self): subp = subprocess.Popen(['ceilometer-dbsync', "--config-file=%s" % self.tempfile]) - self.assertEqual(subp.wait(), 0) + self.assertEqual(0, subp.wait()) def test_run_expirer_ttl_disabled(self): subp = subprocess.Popen(['ceilometer-expirer', @@ -54,7 +54,7 @@ "--config-file=%s" % self.tempfile], stderr=subprocess.PIPE) __, err = subp.communicate() - self.assertEqual(subp.poll(), 0) + self.assertEqual(0, subp.poll()) self.assertIn("Nothing to clean", err) def test_run_expirer_ttl_enabled(self): @@ -69,7 +69,7 @@ "--config-file=%s" % self.tempfile], stderr=subprocess.PIPE) __, err = subp.communicate() - self.assertEqual(subp.poll(), 0) + self.assertEqual(0, subp.poll()) self.assertIn("Dropping data with TTL 1", err) @@ -94,7 +94,7 @@ "--config-file=%s" % self.tempfile, "--sample-resource=someuuid", "--sample-name=mycounter"]) - self.assertEqual(subp.wait(), 0) + self.assertEqual(0, subp.wait()) class BinApiTestCase(base.BaseTestCase): @@ -145,10 +145,10 @@ def test_v1(self): response, content = self.get_response('v1/meters') - self.assertEqual(response.status, 200) - self.assertEqual(json.loads(content), {'meters': []}) + self.assertEqual(200, response.status) + self.assertEqual({'meters': []}, json.loads(content)) def test_v2(self): response, content = self.get_response('v2/meters') - self.assertEqual(response.status, 200) - self.assertEqual(json.loads(content), []) + self.assertEqual(200, response.status) + self.assertEqual([], json.loads(content)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/test_middleware.py ceilometer-2014.1~rc1/ceilometer/tests/test_middleware.py --- ceilometer-2014.1~b3/ceilometer/tests/test_middleware.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/test_middleware.py 2014-03-31 15:32:25.000000000 +0000 @@ -77,30 +77,26 @@ sample = list(middleware.HTTPRequest().process_notification( HTTP_REQUEST ))[0] - self.assertEqual(sample.user_id, - HTTP_REQUEST['payload']['request']['HTTP_X_USER_ID']) - self.assertEqual(sample.project_id, - HTTP_REQUEST['payload']['request'] - ['HTTP_X_PROJECT_ID']) - self.assertEqual(sample.resource_id, - HTTP_REQUEST['payload']['request'] - ['HTTP_X_SERVICE_NAME']) - self.assertEqual(sample.volume, 1) + self.assertEqual(HTTP_REQUEST['payload']['request']['HTTP_X_USER_ID'], + sample.user_id) + self.assertEqual(HTTP_REQUEST['payload']['request'] + ['HTTP_X_PROJECT_ID'], sample.project_id) + self.assertEqual(HTTP_REQUEST['payload']['request'] + ['HTTP_X_SERVICE_NAME'], sample.resource_id) + self.assertEqual(1, sample.volume) def test_process_response_notification(self): sample = list(middleware.HTTPResponse().process_notification( HTTP_RESPONSE ))[0] - self.assertEqual(sample.user_id, - HTTP_RESPONSE['payload']['request']['HTTP_X_USER_ID']) - self.assertEqual(sample.project_id, - HTTP_RESPONSE['payload']['request'] - ['HTTP_X_PROJECT_ID']) - self.assertEqual(sample.resource_id, - HTTP_RESPONSE['payload']['request'] - ['HTTP_X_SERVICE_NAME']) - self.assertEqual(sample.volume, 1) + self.assertEqual(HTTP_RESPONSE['payload']['request']['HTTP_X_USER_ID'], + sample.user_id) + self.assertEqual(HTTP_RESPONSE['payload']['request'] + ['HTTP_X_PROJECT_ID'], sample.project_id) + self.assertEqual(HTTP_RESPONSE['payload']['request'] + ['HTTP_X_SERVICE_NAME'], sample.resource_id) + self.assertEqual(1, sample.volume) def test_exchanges(self): topics = middleware.HTTPRequest().get_exchange_topics(self.CONF) - self.assertEqual(len(topics), 4) + self.assertEqual(4, len(topics)) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/test_notifier.py ceilometer-2014.1~rc1/ceilometer/tests/test_notifier.py --- ceilometer-2014.1~b3/ceilometer/tests/test_notifier.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/test_notifier.py 2014-03-31 15:32:25.000000000 +0000 @@ -81,7 +81,7 @@ transformer_manager) pub = notifier._pipeline_manager.pipelines[0].publishers[0] - self.assertEqual(len(pub.samples), 0) + self.assertEqual(0, len(pub.samples)) notifier.notify(None, MESSAGE) self.assertTrue(len(pub.samples) > 0) self.assertIn('disk.ephemeral.size', diff -Nru ceilometer-2014.1~b3/ceilometer/tests/test_novaclient.py ceilometer-2014.1~rc1/ceilometer/tests/test_novaclient.py --- ceilometer-2014.1~b3/ceilometer/tests/test_novaclient.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/test_novaclient.py 2014-03-31 15:32:25.000000000 +0000 @@ -94,11 +94,11 @@ side_effect=self.fake_servers_list): instances = self.nv.instance_get_all_by_host('foobar') - self.assertEqual(len(instances), 1) - self.assertEqual(instances[0].flavor['name'], 'm1.tiny') - self.assertEqual(instances[0].image['name'], 'ubuntu-12.04-x86') - self.assertEqual(instances[0].kernel_id, 11) - self.assertEqual(instances[0].ramdisk_id, 21) + self.assertEqual(1, len(instances)) + self.assertEqual('m1.tiny', instances[0].flavor['name']) + self.assertEqual('ubuntu-12.04-x86', instances[0].image['name']) + self.assertEqual(11, instances[0].kernel_id) + self.assertEqual(21, instances[0].ramdisk_id) @staticmethod def fake_servers_list_unknown_flavor(*args, **kwargs): @@ -113,8 +113,8 @@ side_effect=self.fake_servers_list_unknown_flavor): instances = self.nv.instance_get_all_by_host('foobar') - self.assertEqual(len(instances), 1) - self.assertEqual(instances[0].flavor['name'], 'unknown-id-666') + self.assertEqual(1, len(instances)) + self.assertEqual('unknown-id-666', instances[0].flavor['name']) @staticmethod def fake_servers_list_unknown_image(*args, **kwargs): @@ -145,22 +145,22 @@ side_effect=self.fake_servers_list_unknown_image): instances = self.nv.instance_get_all_by_host('foobar') - self.assertEqual(len(instances), 1) - self.assertEqual(instances[0].image['name'], 'unknown-id-666') + self.assertEqual(1, len(instances)) + self.assertEqual('unknown-id-666', instances[0].image['name']) def test_with_flavor_and_image(self): results = self.nv._with_flavor_and_image(self.fake_servers_list()) instance = results[0] - self.assertEqual(instance.image['name'], 'ubuntu-12.04-x86') - self.assertEqual(instance.flavor['name'], 'm1.tiny') - self.assertEqual(instance.kernel_id, 11) - self.assertEqual(instance.ramdisk_id, 21) + self.assertEqual('ubuntu-12.04-x86', instance.image['name']) + self.assertEqual('m1.tiny', instance.flavor['name']) + self.assertEqual(11, instance.kernel_id) + self.assertEqual(21, instance.ramdisk_id) def test_with_flavor_and_image_unknown_image(self): instances = self.fake_servers_list_unknown_image() results = self.nv._with_flavor_and_image(instances) instance = results[0] - self.assertEqual(instance.image['name'], 'unknown-id-666') + self.assertEqual('unknown-id-666', instance.image['name']) self.assertNotEqual(instance.flavor['name'], 'unknown-id-666') self.assertIsNone(instance.kernel_id) self.assertIsNone(instance.ramdisk_id) @@ -169,13 +169,13 @@ instances = self.fake_servers_list_unknown_flavor() results = self.nv._with_flavor_and_image(instances) instance = results[0] - self.assertEqual(instance.flavor['name'], 'unknown-id-666') - self.assertEqual(instance.flavor['vcpus'], 0) - self.assertEqual(instance.flavor['ram'], 0) - self.assertEqual(instance.flavor['disk'], 0) + self.assertEqual('unknown-id-666', instance.flavor['name']) + self.assertEqual(0, instance.flavor['vcpus']) + self.assertEqual(0, instance.flavor['ram']) + self.assertEqual(0, instance.flavor['disk']) self.assertNotEqual(instance.image['name'], 'unknown-id-666') - self.assertEqual(instance.kernel_id, 11) - self.assertEqual(instance.ramdisk_id, 21) + self.assertEqual(11, instance.kernel_id) + self.assertEqual(21, instance.ramdisk_id) def test_with_flavor_and_image_none_metadata(self): instances = self.fake_servers_list_image_missing_metadata(3) @@ -195,7 +195,7 @@ instances = self.fake_servers_list_image_missing_metadata(5) results = self.nv._with_flavor_and_image(instances) instance = results[0] - self.assertEqual(instance.kernel_id, 11) + self.assertEqual(11, instance.kernel_id) self.assertIsNone(instance.ramdisk_id) def test_with_flavor_and_image_missing_kernel(self): @@ -203,7 +203,7 @@ results = self.nv._with_flavor_and_image(instances) instance = results[0] self.assertIsNone(instance.kernel_id) - self.assertEqual(instance.ramdisk_id, 21) + self.assertEqual(21, instance.ramdisk_id) def test_with_missing_image_instance(self): instances = self.fake_instance_image_missing() diff -Nru ceilometer-2014.1~b3/ceilometer/tests/test_plugin.py ceilometer-2014.1~rc1/ceilometer/tests/test_plugin.py --- ceilometer-2014.1~b3/ceilometer/tests/test_plugin.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/test_plugin.py 2014-03-31 15:32:25.000000000 +0000 @@ -106,4 +106,4 @@ c = self.FakeComputePlugin() n = self.FakeNetworkPlugin() self.assertTrue(len(list(c.to_samples(TEST_NOTIFICATION))) > 0) - self.assertEqual(len(list(n.to_samples(TEST_NOTIFICATION))), 0) + self.assertEqual(0, len(list(n.to_samples(TEST_NOTIFICATION)))) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/test_utils.py ceilometer-2014.1~rc1/ceilometer/tests/test_utils.py --- ceilometer-2014.1~b3/ceilometer/tests/test_utils.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/test_utils.py 2014-03-31 15:32:25.000000000 +0000 @@ -32,27 +32,22 @@ expected = 1356093296.12 utc_datetime = datetime.datetime.utcfromtimestamp(expected) actual = utils.dt_to_decimal(utc_datetime) - self.assertEqual(float(actual), expected) + self.assertEqual(expected, float(actual)) def test_decimal_to_datetime(self): expected = 1356093296.12 dexpected = decimal.Decimal(str(expected)) # Python 2.6 wants str() expected_datetime = datetime.datetime.utcfromtimestamp(expected) actual_datetime = utils.decimal_to_dt(dexpected) - self.assertEqual(actual_datetime, expected_datetime) + self.assertEqual(expected_datetime, actual_datetime) def test_recursive_keypairs(self): - data = {'a': 'A', - 'b': 'B', - 'nested': {'a': 'A', - 'b': 'B', - }, - } + data = {'a': 'A', 'b': 'B', + 'nested': {'a': 'A', 'b': 'B'}} pairs = list(utils.recursive_keypairs(data)) - self.assertEqual(pairs, [('a', 'A'), - ('b', 'B'), - ('nested:a', 'A'), - ('nested:b', 'B')]) + self.assertEqual([('a', 'A'), ('b', 'B'), + ('nested:a', 'A'), ('nested:b', 'B')], + pairs) def test_recursive_keypairs_with_separator(self): data = {'a': 'A', @@ -63,10 +58,11 @@ } separator = '.' pairs = list(utils.recursive_keypairs(data, separator)) - self.assertEqual(pairs, [('a', 'A'), - ('b', 'B'), - ('nested.a', 'A'), - ('nested.b', 'B')]) + self.assertEqual([('a', 'A'), + ('b', 'B'), + ('nested.a', 'A'), + ('nested.b', 'B')], + pairs) def test_recursive_keypairs_with_list_of_dict(self): small = 1 @@ -80,7 +76,7 @@ 'b': 'B', 'nested': {'list': [nested]}} pairs = list(utils.recursive_keypairs(data)) - self.assertEqual(pairs, expected) + self.assertEqual(expected, pairs) def test_decimal_to_dt_with_none_parameter(self): self.assertIsNone(utils.decimal_to_dt(None)) @@ -94,9 +90,9 @@ 'nested2': [{'c': 'A'}, {'c': 'B'}] } pairs = list(utils.dict_to_keyval(data)) - self.assertEqual(pairs, [('a', 'A'), - ('b', 'B'), - ('nested2[0].c', 'A'), - ('nested2[1].c', 'B'), - ('nested.a', 'A'), - ('nested.b', 'B')]) + self.assertEqual([('a', 'A'), ('b', 'B'), + ('nested2[0].c', 'A'), + ('nested2[1].c', 'B'), + ('nested.a', 'A'), + ('nested.b', 'B')], + pairs) diff -Nru ceilometer-2014.1~b3/ceilometer/tests/volume/test_notifications.py ceilometer-2014.1~rc1/ceilometer/tests/volume/test_notifications.py --- ceilometer-2014.1~b3/ceilometer/tests/volume/test_notifications.py 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/tests/volume/test_notifications.py 2014-03-31 15:32:25.000000000 +0000 @@ -105,61 +105,61 @@ def _verify_common_sample(self, s, name, notification): self.assertIsNotNone(s) self.assertEqual(s.name, name) - self.assertEqual(s.resource_id, notification['payload']['volume_id']) - self.assertEqual(s.timestamp, notification['timestamp']) + self.assertEqual(notification['payload']['volume_id'], s.resource_id) + self.assertEqual(notification['timestamp'], s.timestamp) metadata = s.resource_metadata - self.assertEqual(metadata.get('host'), notification['publisher_id']) + self.assertEqual(notification['publisher_id'], metadata.get('host')) def test_volume_exists(self): v = notifications.Volume() samples = list(v.process_notification(NOTIFICATION_VOLUME_EXISTS)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) s = samples[0] self._verify_common_sample(s, 'volume', NOTIFICATION_VOLUME_EXISTS) - self.assertEqual(s.volume, 1) + self.assertEqual(1, s.volume) def test_volume_size_exists(self): v = notifications.VolumeSize() samples = list(v.process_notification(NOTIFICATION_VOLUME_EXISTS)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) s = samples[0] self._verify_common_sample(s, 'volume.size', NOTIFICATION_VOLUME_EXISTS) - self.assertEqual(s.volume, - NOTIFICATION_VOLUME_EXISTS['payload']['size']) + self.assertEqual(NOTIFICATION_VOLUME_EXISTS['payload']['size'], + s.volume) def test_volume_delete(self): v = notifications.Volume() samples = list(v.process_notification(NOTIFICATION_VOLUME_DELETE)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) s = samples[0] self._verify_common_sample(s, 'volume', NOTIFICATION_VOLUME_DELETE) - self.assertEqual(s.volume, 1) + self.assertEqual(1, s.volume) def test_volume_size_delete(self): v = notifications.VolumeSize() samples = list(v.process_notification(NOTIFICATION_VOLUME_DELETE)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) s = samples[0] self._verify_common_sample(s, 'volume.size', NOTIFICATION_VOLUME_DELETE) - self.assertEqual(s.volume, - NOTIFICATION_VOLUME_DELETE['payload']['size']) + self.assertEqual(NOTIFICATION_VOLUME_DELETE['payload']['size'], + s.volume) def test_volume_resize(self): v = notifications.Volume() samples = list(v.process_notification(NOTIFICATION_VOLUME_RESIZE)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) s = samples[0] self._verify_common_sample(s, 'volume', NOTIFICATION_VOLUME_RESIZE) - self.assertEqual(s.volume, 1) + self.assertEqual(1, s.volume) def test_volume_size_resize(self): v = notifications.VolumeSize() samples = list(v.process_notification(NOTIFICATION_VOLUME_RESIZE)) - self.assertEqual(len(samples), 1) + self.assertEqual(1, len(samples)) s = samples[0] self._verify_common_sample(s, 'volume.size', NOTIFICATION_VOLUME_RESIZE) - self.assertEqual(s.volume, - NOTIFICATION_VOLUME_RESIZE['payload']['size']) + self.assertEqual(NOTIFICATION_VOLUME_RESIZE['payload']['size'], + s.volume) diff -Nru ceilometer-2014.1~b3/ceilometer/utils.py ceilometer-2014.1~rc1/ceilometer/utils.py --- ceilometer-2014.1~b3/ceilometer/utils.py 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer/utils.py 2014-03-31 15:32:25.000000000 +0000 @@ -19,8 +19,10 @@ """Utilities and helper functions.""" import calendar +import copy import datetime import decimal +import multiprocessing from ceilometer.openstack.common import timeutils from ceilometer.openstack.common import units @@ -134,14 +136,34 @@ mapping[key] = value.lower() -def update_nested(d, u): +def update_nested(original_dict, updates): """Updates the leaf nodes in a nest dict, without replacing entire sub-dicts. """ - for k, v in u.iteritems(): - if isinstance(v, dict): - r = update_nested(d.get(k, {}), v) - d[k] = r + dict_to_update = copy.deepcopy(original_dict) + for key, value in updates.iteritems(): + if isinstance(value, dict): + sub_dict = update_nested(dict_to_update.get(key, {}), value) + dict_to_update[key] = sub_dict else: - d[k] = u[k] - return d + dict_to_update[key] = updates[key] + return dict_to_update + + +def cpu_count(): + try: + return multiprocessing.cpu_count() or 1 + except NotImplementedError: + return 1 + + +def uniq(dupes, attrs): + """Exclude elements of dupes with a duplicated set of attribute values.""" + key = lambda d: '/'.join([getattr(d, a) or '' for a in attrs]) + keys = [] + deduped = [] + for d in dupes: + if key(d) not in keys: + deduped.append(d) + keys.append(key(d)) + return deduped diff -Nru ceilometer-2014.1~b3/ceilometer.egg-info/entry_points.txt ceilometer-2014.1~rc1/ceilometer.egg-info/entry_points.txt --- ceilometer-2014.1~b3/ceilometer.egg-info/entry_points.txt 2014-03-06 16:37:13.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer.egg-info/entry_points.txt 2014-03-31 15:37:13.000000000 +0000 @@ -1,163 +1,172 @@ -[ceilometer.event.trait_plugin] -split = ceilometer.event.trait_plugins:SplitterTraitPlugin -bitfield = ceilometer.event.trait_plugins:BitfieldTraitPlugin - [ceilometer.alarm.evaluator] -threshold = ceilometer.alarm.evaluator.threshold:ThresholdEvaluator combination = ceilometer.alarm.evaluator.combination:CombinationEvaluator - -[paste.filter_factory] -swift = ceilometer.objectstore.swift_middleware:filter_factory - -[ceilometer.poll.central] -hardware.memory.total = ceilometer.hardware.pollsters.memory:MemoryTotalPollster -energy = ceilometer.energy.kwapi:EnergyPollster -switch.port.receive.packets = ceilometer.network.statistics.port:PortPollsterReceivePackets -switch.port.transmit.drops = ceilometer.network.statistics.port:PortPollsterTransmitDrops -hardware.network.bandwidth.bytes = ceilometer.hardware.pollsters.net:BandwidthBytesPollster -switch.port = ceilometer.network.statistics.port:PortPollster -switch.table.matched.packets = ceilometer.network.statistics.table:TablePollsterMatchedPackets -image.size = ceilometer.image.glance:ImageSizePollster -storage.containers.objects = ceilometer.objectstore.swift:ContainersObjectsPollster -switch.port.transmit.packets = ceilometer.network.statistics.port:PortPollsterTransmitPackets -hardware.cpu.util.1min = ceilometer.hardware.pollsters.cpu:CPUUtil1MinPollster -hardware.network.outgoing.errors = ceilometer.hardware.pollsters.net:OutgoingErrorsPollster -storage.objects.containers = ceilometer.objectstore.swift:ObjectsContainersPollster -switch.flow.packets = ceilometer.network.statistics.flow:FlowPollsterPackets -hardware.disk.size.total = ceilometer.hardware.pollsters.disk:DiskTotalPollster -storage.objects = ceilometer.objectstore.swift:ObjectsPollster -switch.flow.duration.nanoseconds = ceilometer.network.statistics.flow:FlowPollsterDurationNanoseconds -hardware.cpu.util.15min = ceilometer.hardware.pollsters.cpu:CPUUtil15MinPollster -switch.table = ceilometer.network.statistics.table:TablePollster -switch.port.receive.drops = ceilometer.network.statistics.port:PortPollsterReceiveDrops -hardware.disk.size.used = ceilometer.hardware.pollsters.disk:DiskUsedPollster -switch.table.active.entries = ceilometer.network.statistics.table:TablePollsterActiveEntries -switch.port.receive.bytes = ceilometer.network.statistics.port:PortPollsterReceiveBytes -image = ceilometer.image.glance:ImagePollster -hardware.network.outgoing.bytes = ceilometer.hardware.pollsters.net:OutgoingBytesPollster -switch.port.collision.count = ceilometer.network.statistics.port:PortPollsterCollisionCount -power = ceilometer.energy.kwapi:PowerPollster -hardware.network.incoming.bytes = ceilometer.hardware.pollsters.net:IncomingBytesPollster -switch.port.transmit.errors = ceilometer.network.statistics.port:PortPollsterTransmitErrors -switch.port.receive.frame_error = ceilometer.network.statistics.port:PortPollsterReceiveFrameErrors -switch.port.receive.crc_error = ceilometer.network.statistics.port:PortPollsterReceiveCRCErrors -switch.port.receive.overrun_error = ceilometer.network.statistics.port:PortPollsterReceiveOverrunErrors -switch.port.transmit.bytes = ceilometer.network.statistics.port:PortPollsterTransmitBytes -hardware.memory.used = ceilometer.hardware.pollsters.memory:MemoryUsedPollster -switch.flow.bytes = ceilometer.network.statistics.flow:FlowPollsterBytes -switch.flow = ceilometer.network.statistics.flow:FlowPollster -switch.flow.duration.seconds = ceilometer.network.statistics.flow:FlowPollsterDurationSeconds -switch = ceilometer.network.statistics.switch:SWPollster -switch.port.receive.errors = ceilometer.network.statistics.port:PortPollsterReceiveErrors -switch.table.lookup.packets = ceilometer.network.statistics.table:TablePollsterLookupPackets -hardware.cpu.util.5min = ceilometer.hardware.pollsters.cpu:CPUUtil5MinPollster -ip.floating = ceilometer.network.floatingip:FloatingIPPollster -storage.containers.objects.size = ceilometer.objectstore.swift:ContainersSizePollster -storage.objects.size = ceilometer.objectstore.swift:ObjectsSizePollster - -[ceilometer.dispatcher] -file = ceilometer.dispatcher.file:FileDispatcher -database = ceilometer.dispatcher.database:DatabaseDispatcher - -[ceilometer.publisher] -udp = ceilometer.publisher.udp:UDPPublisher -meter = ceilometer.publisher.rpc:RPCPublisher -meter_publisher = ceilometer.publisher.rpc:RPCPublisher -rpc = ceilometer.publisher.rpc:RPCPublisher -file = ceilometer.publisher.file:FilePublisher -test = ceilometer.publisher.test:TestPublisher +threshold = ceilometer.alarm.evaluator.threshold:ThresholdEvaluator [ceilometer.alarm.notifier] -test = ceilometer.alarm.notifier.test:TestAlarmNotifier http = ceilometer.alarm.notifier.rest:RestAlarmNotifier -log = ceilometer.alarm.notifier.log:LogAlarmNotifier https = ceilometer.alarm.notifier.rest:RestAlarmNotifier +log = ceilometer.alarm.notifier.log:LogAlarmNotifier +test = ceilometer.alarm.notifier.test:TestAlarmNotifier [ceilometer.compute.virt] hyperv = ceilometer.compute.virt.hyperv.inspector:HyperVInspector libvirt = ceilometer.compute.virt.libvirt.inspector:LibvirtInspector - -[ceilometer.hardware.inspectors] -snmp = ceilometer.hardware.inspector.snmp:SNMPInspector +vsphere = ceilometer.compute.virt.vmware.inspector:VsphereInspector [ceilometer.discover] local_instances = ceilometer.compute.discovery:InstanceDiscovery -[ceilometer.transformer] -accumulator = ceilometer.transformer.accumulator:TransformerAccumulator -unit_conversion = ceilometer.transformer.conversions:ScalingTransformer -rate_of_change = ceilometer.transformer.conversions:RateOfChangeTransformer +[ceilometer.dispatcher] +database = ceilometer.dispatcher.database:DatabaseDispatcher +file = ceilometer.dispatcher.file:FileDispatcher -[network.statistics.drivers] +[ceilometer.event.trait_plugin] +bitfield = ceilometer.event.trait_plugins:BitfieldTraitPlugin +split = ceilometer.event.trait_plugins:SplitterTraitPlugin +[ceilometer.hardware.inspectors] +snmp = ceilometer.hardware.inspector.snmp:SNMPInspector [ceilometer.notification] -instance_delete = ceilometer.compute.notifications.instance:InstanceDelete -image = ceilometer.image.notifications:Image -instance_flavor = ceilometer.compute.notifications.instance:InstanceFlavor bandwidth = ceilometer.network.notifications:Bandwidth -instance_scheduled = ceilometer.compute.notifications.instance:InstanceScheduled -cpu_kernel_percent = ceilometer.compute.notifications.cpu:CpuKernelPercent -port = ceilometer.network.notifications:Port -subnet = ceilometer.network.notifications:Subnet -network = ceilometer.network.notifications:Network -cpu_percent = ceilometer.compute.notifications.cpu:CpuPercent -cpu_idle_time = ceilometer.compute.notifications.cpu:CpuIdleTime -http.response = ceilometer.middleware:HTTPResponse cpu_frequency = ceilometer.compute.notifications.cpu:CpuFrequency -instance = ceilometer.compute.notifications.instance:Instance -memory = ceilometer.compute.notifications.instance:Memory -image_crud = ceilometer.image.notifications:ImageCRUD -volume_size = ceilometer.volume.notifications:VolumeSize cpu_idle_percent = ceilometer.compute.notifications.cpu:CpuIdlePercent -http.request = ceilometer.middleware:HTTPRequest -volume = ceilometer.volume.notifications:Volume +cpu_idle_time = ceilometer.compute.notifications.cpu:CpuIdleTime +cpu_iowait_percent = ceilometer.compute.notifications.cpu:CpuIowaitPercent cpu_iowait_time = ceilometer.compute.notifications.cpu:CpuIowaitTime -cpu_user_percent = ceilometer.compute.notifications.cpu:CpuUserPercent -image_size = ceilometer.image.notifications:ImageSize +cpu_kernel_percent = ceilometer.compute.notifications.cpu:CpuKernelPercent cpu_kernel_time = ceilometer.compute.notifications.cpu:CpuKernelTime -cpu_iowait_percent = ceilometer.compute.notifications.cpu:CpuIowaitPercent -image_download = ceilometer.image.notifications:ImageDownload -disk_ephemeral_size = ceilometer.compute.notifications.instance:EphemeralDiskSize -floatingip = ceilometer.network.notifications:FloatingIP +cpu_percent = ceilometer.compute.notifications.cpu:CpuPercent +cpu_user_percent = ceilometer.compute.notifications.cpu:CpuUserPercent cpu_user_time = ceilometer.compute.notifications.cpu:CpuUserTime -stack_crud = ceilometer.orchestration.notifications:StackCRUD -vcpus = ceilometer.compute.notifications.instance:VCpus +disk_ephemeral_size = ceilometer.compute.notifications.instance:EphemeralDiskSize disk_root_size = ceilometer.compute.notifications.instance:RootDiskSize +floatingip = ceilometer.network.notifications:FloatingIP +http.request = ceilometer.middleware:HTTPRequest +http.response = ceilometer.middleware:HTTPResponse +image = ceilometer.image.notifications:Image +image_crud = ceilometer.image.notifications:ImageCRUD +image_download = ceilometer.image.notifications:ImageDownload image_serve = ceilometer.image.notifications:ImageServe +image_size = ceilometer.image.notifications:ImageSize +instance = ceilometer.compute.notifications.instance:Instance +instance_delete = ceilometer.compute.notifications.instance:InstanceDelete +instance_flavor = ceilometer.compute.notifications.instance:InstanceFlavor +instance_scheduled = ceilometer.compute.notifications.instance:InstanceScheduled +memory = ceilometer.compute.notifications.instance:Memory +network = ceilometer.network.notifications:Network +port = ceilometer.network.notifications:Port router = ceilometer.network.notifications:Router +stack_crud = ceilometer.orchestration.notifications:StackCRUD +subnet = ceilometer.network.notifications:Subnet +vcpus = ceilometer.compute.notifications.instance:VCpus +volume = ceilometer.volume.notifications:Volume +volume_size = ceilometer.volume.notifications:VolumeSize + +[ceilometer.poll.central] +energy = ceilometer.energy.kwapi:EnergyPollster +hardware.cpu.util.15min = ceilometer.hardware.pollsters.cpu:CPUUtil15MinPollster +hardware.cpu.util.1min = ceilometer.hardware.pollsters.cpu:CPUUtil1MinPollster +hardware.cpu.util.5min = ceilometer.hardware.pollsters.cpu:CPUUtil5MinPollster +hardware.disk.size.total = ceilometer.hardware.pollsters.disk:DiskTotalPollster +hardware.disk.size.used = ceilometer.hardware.pollsters.disk:DiskUsedPollster +hardware.memory.total = ceilometer.hardware.pollsters.memory:MemoryTotalPollster +hardware.memory.used = ceilometer.hardware.pollsters.memory:MemoryUsedPollster +hardware.network.bandwidth.bytes = ceilometer.hardware.pollsters.net:BandwidthBytesPollster +hardware.network.incoming.bytes = ceilometer.hardware.pollsters.net:IncomingBytesPollster +hardware.network.outgoing.bytes = ceilometer.hardware.pollsters.net:OutgoingBytesPollster +hardware.network.outgoing.errors = ceilometer.hardware.pollsters.net:OutgoingErrorsPollster +image = ceilometer.image.glance:ImagePollster +image.size = ceilometer.image.glance:ImageSizePollster +ip.floating = ceilometer.network.floatingip:FloatingIPPollster +power = ceilometer.energy.kwapi:PowerPollster +storage.containers.objects = ceilometer.objectstore.swift:ContainersObjectsPollster +storage.containers.objects.size = ceilometer.objectstore.swift:ContainersSizePollster +storage.objects = ceilometer.objectstore.swift:ObjectsPollster +storage.objects.containers = ceilometer.objectstore.swift:ObjectsContainersPollster +storage.objects.size = ceilometer.objectstore.swift:ObjectsSizePollster +switch = ceilometer.network.statistics.switch:SWPollster +switch.flow = ceilometer.network.statistics.flow:FlowPollster +switch.flow.bytes = ceilometer.network.statistics.flow:FlowPollsterBytes +switch.flow.duration.nanoseconds = ceilometer.network.statistics.flow:FlowPollsterDurationNanoseconds +switch.flow.duration.seconds = ceilometer.network.statistics.flow:FlowPollsterDurationSeconds +switch.flow.packets = ceilometer.network.statistics.flow:FlowPollsterPackets +switch.port = ceilometer.network.statistics.port:PortPollster +switch.port.collision.count = ceilometer.network.statistics.port:PortPollsterCollisionCount +switch.port.receive.bytes = ceilometer.network.statistics.port:PortPollsterReceiveBytes +switch.port.receive.crc_error = ceilometer.network.statistics.port:PortPollsterReceiveCRCErrors +switch.port.receive.drops = ceilometer.network.statistics.port:PortPollsterReceiveDrops +switch.port.receive.errors = ceilometer.network.statistics.port:PortPollsterReceiveErrors +switch.port.receive.frame_error = ceilometer.network.statistics.port:PortPollsterReceiveFrameErrors +switch.port.receive.overrun_error = ceilometer.network.statistics.port:PortPollsterReceiveOverrunErrors +switch.port.receive.packets = ceilometer.network.statistics.port:PortPollsterReceivePackets +switch.port.transmit.bytes = ceilometer.network.statistics.port:PortPollsterTransmitBytes +switch.port.transmit.drops = ceilometer.network.statistics.port:PortPollsterTransmitDrops +switch.port.transmit.errors = ceilometer.network.statistics.port:PortPollsterTransmitErrors +switch.port.transmit.packets = ceilometer.network.statistics.port:PortPollsterTransmitPackets +switch.table = ceilometer.network.statistics.table:TablePollster +switch.table.active.entries = ceilometer.network.statistics.table:TablePollsterActiveEntries +switch.table.lookup.packets = ceilometer.network.statistics.table:TablePollsterLookupPackets +switch.table.matched.packets = ceilometer.network.statistics.table:TablePollsterMatchedPackets [ceilometer.poll.compute] +cpu = ceilometer.compute.pollsters.cpu:CPUPollster +cpu_util = ceilometer.compute.pollsters.cpu:CPUUtilPollster +disk.read.bytes = ceilometer.compute.pollsters.disk:ReadBytesPollster +disk.read.bytes.rate = ceilometer.compute.pollsters.disk:ReadBytesRatePollster disk.read.requests = ceilometer.compute.pollsters.disk:ReadRequestsPollster +disk.read.requests.rate = ceilometer.compute.pollsters.disk:ReadRequestsRatePollster disk.write.bytes = ceilometer.compute.pollsters.disk:WriteBytesPollster +disk.write.bytes.rate = ceilometer.compute.pollsters.disk:WriteBytesRatePollster disk.write.requests = ceilometer.compute.pollsters.disk:WriteRequestsPollster -instance_flavor = ceilometer.compute.pollsters.instance:InstanceFlavorPollster +disk.write.requests.rate = ceilometer.compute.pollsters.disk:WriteRequestsRatePollster instance = ceilometer.compute.pollsters.instance:InstancePollster -disk.read.bytes = ceilometer.compute.pollsters.disk:ReadBytesPollster +instance_flavor = ceilometer.compute.pollsters.instance:InstanceFlavorPollster +memory.usage = ceilometer.compute.pollsters.memory:MemoryUsagePollster +network.incoming.bytes = ceilometer.compute.pollsters.net:IncomingBytesPollster +network.incoming.bytes.rate = ceilometer.compute.pollsters.net:IncomingBytesRatePollster network.incoming.packets = ceilometer.compute.pollsters.net:IncomingPacketsPollster network.outgoing.bytes = ceilometer.compute.pollsters.net:OutgoingBytesPollster -network.incoming.bytes = ceilometer.compute.pollsters.net:IncomingBytesPollster +network.outgoing.bytes.rate = ceilometer.compute.pollsters.net:OutgoingBytesRatePollster network.outgoing.packets = ceilometer.compute.pollsters.net:OutgoingPacketsPollster -cpu = ceilometer.compute.pollsters.cpu:CPUPollster + +[ceilometer.publisher] +file = ceilometer.publisher.file:FilePublisher +meter = ceilometer.publisher.rpc:RPCPublisher +meter_publisher = ceilometer.publisher.rpc:RPCPublisher +rpc = ceilometer.publisher.rpc:RPCPublisher +test = ceilometer.publisher.test:TestPublisher +udp = ceilometer.publisher.udp:UDPPublisher [ceilometer.storage] -sqlite = ceilometer.storage.impl_sqlalchemy:SQLAlchemyStorage -postgresql = ceilometer.storage.impl_sqlalchemy:SQLAlchemyStorage +db2 = ceilometer.storage.impl_db2:DB2Storage +hbase = ceilometer.storage.impl_hbase:HBaseStorage log = ceilometer.storage.impl_log:LogStorage mongodb = ceilometer.storage.impl_mongodb:MongoDBStorage mysql = ceilometer.storage.impl_sqlalchemy:SQLAlchemyStorage -hbase = ceilometer.storage.impl_hbase:HBaseStorage -db2 = ceilometer.storage.impl_db2:DB2Storage +postgresql = ceilometer.storage.impl_sqlalchemy:SQLAlchemyStorage +sqlite = ceilometer.storage.impl_sqlalchemy:SQLAlchemyStorage + +[ceilometer.transformer] +accumulator = ceilometer.transformer.accumulator:TransformerAccumulator +rate_of_change = ceilometer.transformer.conversions:RateOfChangeTransformer +unit_conversion = ceilometer.transformer.conversions:ScalingTransformer [console_scripts] -ceilometer-collector = ceilometer.collector:collector -ceilometer-dbsync = ceilometer.storage:dbsync -ceilometer-agent-compute = ceilometer.compute.manager:agent_compute -ceilometer-api = ceilometer.api.app:start -ceilometer-alarm-evaluator = ceilometer.alarm.service:alarm_evaluator +ceilometer-agent-central = ceilometer.cli:agent_central +ceilometer-agent-compute = ceilometer.cli:agent_compute +ceilometer-agent-notification = ceilometer.cli:agent_notification +ceilometer-alarm-evaluator = ceilometer.cli:alarm_evaluator +ceilometer-alarm-notifier = ceilometer.cli:alarm_notifier +ceilometer-api = ceilometer.cli:api +ceilometer-collector = ceilometer.cli:collector_service +ceilometer-dbsync = ceilometer.cli:storage_dbsync +ceilometer-expirer = ceilometer.cli:storage_expirer ceilometer-send-sample = ceilometer.cli:send_sample -ceilometer-expirer = ceilometer.storage:expirer -ceilometer-alarm-notifier = ceilometer.alarm.service:alarm_notifier -ceilometer-agent-notification = ceilometer.notification:agent -ceilometer-agent-central = ceilometer.central.manager:agent_central + +[network.statistics.drivers] +opendaylight = ceilometer.network.statistics.opendaylight.driver:OpenDayLightDriver + +[paste.filter_factory] +swift = ceilometer.objectstore.swift_middleware:filter_factory diff -Nru ceilometer-2014.1~b3/ceilometer.egg-info/PKG-INFO ceilometer-2014.1~rc1/ceilometer.egg-info/PKG-INFO --- ceilometer-2014.1~b3/ceilometer.egg-info/PKG-INFO 2014-03-06 16:37:13.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer.egg-info/PKG-INFO 2014-03-31 15:37:13.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: ceilometer -Version: 2014.1.b3 +Version: 2014.1.rc1 Summary: OpenStack Telemetry Home-page: http://www.openstack.org/ Author: OpenStack diff -Nru ceilometer-2014.1~b3/ceilometer.egg-info/requires.txt ceilometer-2014.1~rc1/ceilometer.egg-info/requires.txt --- ceilometer-2014.1~b3/ceilometer.egg-info/requires.txt 2014-03-06 16:37:13.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer.egg-info/requires.txt 2014-03-31 15:37:13.000000000 +0000 @@ -11,6 +11,7 @@ lockfile>=0.8 lxml>=2.3 msgpack-python +netaddr>=0.7.6 oslo.config>=1.2.0 oslo.vmware pbr>=0.6,<1.0 diff -Nru ceilometer-2014.1~b3/ceilometer.egg-info/SOURCES.txt ceilometer-2014.1~rc1/ceilometer.egg-info/SOURCES.txt --- ceilometer-2014.1~b3/ceilometer.egg-info/SOURCES.txt 2014-03-06 16:37:13.000000000 +0000 +++ ceilometer-2014.1~rc1/ceilometer.egg-info/SOURCES.txt 2014-03-31 15:37:13.000000000 +0000 @@ -83,6 +83,7 @@ ceilometer/compute/manager.py ceilometer/compute/nova_notifier.py ceilometer/compute/plugin.py +ceilometer/compute/util.py ceilometer/compute/notifications/__init__.py ceilometer/compute/notifications/cpu.py ceilometer/compute/notifications/instance.py @@ -90,6 +91,7 @@ ceilometer/compute/pollsters/cpu.py ceilometer/compute/pollsters/disk.py ceilometer/compute/pollsters/instance.py +ceilometer/compute/pollsters/memory.py ceilometer/compute/pollsters/net.py ceilometer/compute/pollsters/util.py ceilometer/compute/virt/__init__.py @@ -100,6 +102,7 @@ ceilometer/compute/virt/libvirt/__init__.py ceilometer/compute/virt/libvirt/inspector.py ceilometer/compute/virt/vmware/__init__.py +ceilometer/compute/virt/vmware/inspector.py ceilometer/compute/virt/vmware/vsphere_operations.py ceilometer/dispatcher/__init__.py ceilometer/dispatcher/database.py @@ -132,6 +135,7 @@ ceilometer/locale/cs/LC_MESSAGES/ceilometer.po ceilometer/locale/da/LC_MESSAGES/ceilometer.po ceilometer/locale/de/LC_MESSAGES/ceilometer.po +ceilometer/locale/el/LC_MESSAGES/ceilometer.po ceilometer/locale/en_AU/LC_MESSAGES/ceilometer.po ceilometer/locale/en_GB/LC_MESSAGES/ceilometer.po ceilometer/locale/en_US/LC_MESSAGES/ceilometer.po @@ -174,8 +178,12 @@ ceilometer/locale/ru_RU/LC_MESSAGES/ceilometer.po ceilometer/locale/sk/LC_MESSAGES/ceilometer.po ceilometer/locale/sl_SI/LC_MESSAGES/ceilometer.po +ceilometer/locale/sq/LC_MESSAGES/ceilometer.po +ceilometer/locale/sr/LC_MESSAGES/ceilometer.po ceilometer/locale/sv/LC_MESSAGES/ceilometer.po ceilometer/locale/sw_KE/LC_MESSAGES/ceilometer.po +ceilometer/locale/ta/LC_MESSAGES/ceilometer.po +ceilometer/locale/te_IN/LC_MESSAGES/ceilometer.po ceilometer/locale/tl/LC_MESSAGES/ceilometer.po ceilometer/locale/tl_PH/LC_MESSAGES/ceilometer.po ceilometer/locale/tr_TR/LC_MESSAGES/ceilometer.po @@ -194,6 +202,9 @@ ceilometer/network/statistics/port.py ceilometer/network/statistics/switch.py ceilometer/network/statistics/table.py +ceilometer/network/statistics/opendaylight/__init__.py +ceilometer/network/statistics/opendaylight/client.py +ceilometer/network/statistics/opendaylight/driver.py ceilometer/objectstore/__init__.py ceilometer/objectstore/swift.py ceilometer/objectstore/swift_middleware.py @@ -338,6 +349,8 @@ ceilometer/storage/sqlalchemy/migrate_repo/versions/030_rename_meter_table.py ceilometer/storage/sqlalchemy/migrate_repo/versions/031_add_new_meter_table.py ceilometer/storage/sqlalchemy/migrate_repo/versions/032_add_alarm_time_constraints.py +ceilometer/storage/sqlalchemy/migrate_repo/versions/033_alarm_id_rename.py +ceilometer/storage/sqlalchemy/migrate_repo/versions/034_drop_dump_tables.py ceilometer/storage/sqlalchemy/migrate_repo/versions/__init__.py ceilometer/tests/__init__.py ceilometer/tests/agentbase.py @@ -368,6 +381,7 @@ ceilometer/tests/alarm/partition/__init__.py ceilometer/tests/alarm/partition/test_coordination.py ceilometer/tests/api/__init__.py +ceilometer/tests/api/test_app.py ceilometer/tests/api/v1/__init__.py ceilometer/tests/api/v1/test_app.py ceilometer/tests/api/v1/test_compute_duration_by_resource_scenarios.py @@ -386,6 +400,7 @@ ceilometer/tests/api/v2/test_acl_scenarios.py ceilometer/tests/api/v2/test_alarm_scenarios.py ceilometer/tests/api/v2/test_app.py +ceilometer/tests/api/v2/test_capabilities.py ceilometer/tests/api/v2/test_complex_query.py ceilometer/tests/api/v2/test_complex_query_scenarios.py ceilometer/tests/api/v2/test_compute_duration_by_resource_scenarios.py @@ -412,6 +427,7 @@ ceilometer/tests/compute/pollsters/test_diskio.py ceilometer/tests/compute/pollsters/test_instance.py ceilometer/tests/compute/pollsters/test_location_metadata.py +ceilometer/tests/compute/pollsters/test_memory.py ceilometer/tests/compute/pollsters/test_net.py ceilometer/tests/compute/virt/__init__.py ceilometer/tests/compute/virt/hyperv/__init__.py @@ -420,6 +436,7 @@ ceilometer/tests/compute/virt/libvirt/__init__.py ceilometer/tests/compute/virt/libvirt/test_inspector.py ceilometer/tests/compute/virt/vmware/__init__.py +ceilometer/tests/compute/virt/vmware/test_inspector.py ceilometer/tests/compute/virt/vmware/test_vsphere_operations.py ceilometer/tests/dispatcher/__init__.py ceilometer/tests/dispatcher/test_db.py @@ -453,6 +470,9 @@ ceilometer/tests/network/statistics/test_statistics.py ceilometer/tests/network/statistics/test_switch.py ceilometer/tests/network/statistics/test_table.py +ceilometer/tests/network/statistics/opendaylight/__init__.py +ceilometer/tests/network/statistics/opendaylight/test_client.py +ceilometer/tests/network/statistics/opendaylight/test_driver.py ceilometer/tests/objectstore/__init__.py ceilometer/tests/objectstore/test_swift.py ceilometer/tests/objectstore/test_swift_middleware.py @@ -466,11 +486,13 @@ ceilometer/tests/storage/__init__.py ceilometer/tests/storage/test_base.py ceilometer/tests/storage/test_get_engine.py +ceilometer/tests/storage/test_impl_db2.py ceilometer/tests/storage/test_impl_hbase.py ceilometer/tests/storage/test_impl_log.py ceilometer/tests/storage/test_impl_mongodb.py ceilometer/tests/storage/test_impl_sqlalchemy.py ceilometer/tests/storage/test_models.py +ceilometer/tests/storage/test_pymongo_base.py ceilometer/tests/storage/test_storage_scenarios.py ceilometer/tests/storage/sqlalchemy/__init__.py ceilometer/tests/storage/sqlalchemy/test_models.py diff -Nru ceilometer-2014.1~b3/ChangeLog ceilometer-2014.1~rc1/ChangeLog --- ceilometer-2014.1~b3/ChangeLog 2014-03-06 16:37:13.000000000 +0000 +++ ceilometer-2014.1~rc1/ChangeLog 2014-03-31 15:37:13.000000000 +0000 @@ -1,9 +1,74 @@ CHANGES ======= +2014.1.rc1 +---------- + +* Imported Translations from Transifex +* Use ConectionPool instead of one Connection in HBase +* remove dump tables from previous migrations +* De-dupe selectable aggregate list in statistics API +* improve performance of resource-list in sql +* SSL errors thrown with Postgres on multi workers +* Remove escape character in string format +* Verify user/project ID for alarm created by non-admin user +* enable a single worker by default +* Fix ceilometer.conf.sample mismatch +* Fix order of arguments in assertEquals +* Documenting hypervisor support for nova meters +* Ensure idempotency of cardinality reduction in mongo +* VMware vSphere: Improve the accuracy of queried samples +* Fix validation error for invalid field name in simple query +* fix create_or_update logic to avoid rollbacks +* Avoid swallowing AssertionError in test skipping logic +* Fix hardware pollster to inspect multiple resources +* spawn multiple workers in services +* Install global lazy _() +* Fixes Hyper-V metrics units +* Ensure intended indices on project_id are created for mongo +* Fix the type of the disk IO rate measurements +* Change the sample_type from tuple to string +* Fix order of arguments in assertEquals +* Ensure alarm rule conform to alarm type +* insecure flag added to novaclient +* Fixes duplicated names in alarm time constraints +* Eventlet monkeypatch must be done before anything +* 028 migration script incorrectly skips over section +* Fix bug in get_capabilities behavior in DB drivers +* Added documentation for selectable aggregates +* Make sure use IPv6 sockets for ceilometer in IPv6 environment +* VMware vSphere: Bug fixes +* Ensure insecure config option propagated by alarm evaluator +* Fix order of arguments in assertEquals +* Fix order of arguments in assertEquals +* Fix order of arguments in assertEquals +* Rationalize get_resources for mongodb +* Ensure insecure config option propagated by alarm service +* add host meters to doc +* Add field translation to complex query from OldSample to Sample +* Extend test case to cover old alarm style conversion +* Updated doc with debug instructions +* Corrected the sample names in hardware pollsters +* Make ceilometer work with sqla 0.9.x +* Implements monitoring-network-from-opendaylight +* Add user-supplied arguments in log_handler +* VMware vSphere support: Disk rates +* Fix updating alarm can specify existing alarm name +* Changes for networking metrics support for vSphere +* VMware vSphere: Changes for cpu_util +* VMware vSphere support: Memory Usage +* Fix broken statistics in sqlalchemy +* Fixes Hyper-V Inspector network metrics values +* Set storage engine for the trait_type table +* Enable monkeypatch for select module +* Rename id to alarm_id of Alarm in SqlAlchemy +* Fix some spelling mistakes and a incorrect url +* Skip central agent interval_task when keystone fails + 2014.1.b3 --------- +* Ensure user metadata mapped for instance notifications * Per pipeline pluggable resource discovery * Wider selection of aggregates for sqlalchemy * Wider selection of aggregates for mongodb @@ -15,6 +80,7 @@ * Add simple capabilities API * Removed global state modification by api test * VMware vSphere support: Performance Mgr APIs +* Fix typo * move databases to test requirements * Make recording and scanning data more determined * Implements "not" operator for complex query @@ -40,6 +106,7 @@ * rename meter table to sample * storage: store recording timestamp * Fixed spelling error in Ceilometer +* Adds doc string to query validate functions in V2 API * Updated from global requirements * Remove code that works around a (now-resolved) bug in pecan * Fix missing source field content on /v2/samples API diff -Nru ceilometer-2014.1~b3/debian/changelog ceilometer-2014.1~rc1/debian/changelog --- ceilometer-2014.1~b3/debian/changelog 2014-03-20 17:13:01.000000000 +0000 +++ ceilometer-2014.1~rc1/debian/changelog 2014-03-31 19:12:49.000000000 +0000 @@ -1,3 +1,9 @@ +ceilometer (2014.1~rc1-0ubuntu1) trusty; urgency=medium + + * New upstream release. + + -- Corey Bryant Mon, 31 Mar 2014 11:50:09 -0400 + ceilometer (2014.1~b3-0ubuntu3) trusty; urgency=medium * debian/patches/fix-requirements.patch: Explicity disable snmp. diff -Nru ceilometer-2014.1~b3/doc/source/contributing/source.rst ceilometer-2014.1~rc1/doc/source/contributing/source.rst --- ceilometer-2014.1~b3/doc/source/contributing/source.rst 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/doc/source/contributing/source.rst 2014-03-31 15:32:25.000000000 +0000 @@ -68,6 +68,13 @@ $ tox -e py27 -- api.v2 + To debug tests (ie. break into pdb debugger), you can use ''venv'' command:: + + $ tox -e venv "python -m unittest discover ceilometer" + + Unfortunately, debugging currently has some limitations: + You cannot run a specific test, you have to launch the whole test suite. + .. seealso:: * tox_ diff -Nru ceilometer-2014.1~b3/doc/source/measurements.rst ceilometer-2014.1~rc1/doc/source/measurements.rst --- ceilometer-2014.1~b3/doc/source/measurements.rst 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/doc/source/measurements.rst 2014-03-31 15:32:25.000000000 +0000 @@ -50,13 +50,13 @@ and Documentation) and new sampling code should not be merged without the appropriate documentation. -============ ======== ============== ===== +============ ======== ============== ======================= Dimension Unit Abbreviations Note -============ ======== ============== ===== +============ ======== ============== ======================= None N/A Dimension-less variable Volume byte B Time seconds s -============ ======== ============== ===== +============ ======== ============== ======================= Here are the meter types by components that are currently implemented: @@ -65,39 +65,75 @@ All meters are related to the guest machine, not the host. -============================= ========== ========= ======== ============ ================================================================== -Name Type Unit Resource Origin Note -============================= ========== ========= ======== ============ ================================================================== -instance Gauge instance inst ID both Existence of instance -instance: Gauge instance inst ID both Existence of instance (openstack types) -memory Gauge MB inst ID notification Volume of RAM in MB -cpu Cumulative ns inst ID pollster CPU time used -cpu_util Gauge % inst ID pollster Average CPU utilisation -vcpus Gauge vcpu inst ID notification Number of VCPUs -disk.read.requests Cumulative request inst ID pollster Number of read requests -disk.read.requests.rate Gauge request/s inst ID pollster Average rate of read requests per second -disk.write.requests Cumulative request inst ID pollster Number of write requests -disk.write.requests.rate Cumulative request/s inst ID pollster Average rate of write requests per second -disk.read.bytes Cumulative B inst ID pollster Volume of reads in B -disk.read.bytes.rate Cumulative B/s inst ID pollster Average rate of reads in B per second -disk.write.bytes Cumulative B inst ID pollster Volume of writes in B -disk.write.bytes.rate Cumulative B/s inst ID pollster Average volume of writes in B per second -disk.root.size Gauge GB inst ID notification Size of root disk in GB -disk.ephemeral.size Gauge GB inst ID notification Size of ephemeral disk in GB -network.incoming.bytes Cumulative B iface ID pollster Number of incoming bytes on a VM network interface -network.incoming.bytes.rate Gauge B/s iface ID pollster Average rate per sec of incoming bytes on a VM network interface -network.outgoing.bytes Cumulative B iface ID pollster Number of outgoing bytes on a VM network interface -network.outgoing.bytes.rate Gauge B/s iface ID pollster Average rate per sec of outgoing bytes on a VM network interface -network.incoming.packets Cumulative packet iface ID pollster Number of incoming packets on a VM network interface -network.incoming.packets.rate Gauge packet/s iface ID pollster Average rate per sec of incoming packets on a VM network interface -network.outgoing.packets Cumulative packet iface ID pollster Number of outgoing packets on a VM network interface -network.outgoing.packets.rate Gauge packet/s iface ID pollster Average rate per sec of outgoing packets on a VM network interface -============================= ========== ========= ======== ============ ================================================================== - -At present, most of the Nova meters will only work with libvirt front-end -hypervisors while test coverage was mostly done based on KVM. Contributors -are welcome to implement other virtualization backends' meters or complete -the existing ones. +============================= ===== ========= ======== ======== ========== ================================================================== +Name Type* Unit Resource Origin** Support*** Note +============================= ===== ========= ======== ======== ========== ================================================================== +instance g instance inst ID both 1, 2, 3 Existence of instance +instance: g instance inst ID both 1, 2, 3 Existence of instance (openstack types) +memory g MB inst ID n 1, 2 Volume of RAM allocated in MB +memory.usage g MB inst ID p 3 Volume of RAM used in MB +cpu c ns inst ID p 1, 2 CPU time used +cpu_util g % inst ID p 1, 2, 3 Average CPU utilisation +vcpus g vcpu inst ID n 1, 2 Number of VCPUs +disk.read.requests c request inst ID p 1, 2 Number of read requests +disk.read.requests.rate g request/s inst ID p 1, 2, 3 Average rate of read requests per second +disk.write.requests c request inst ID p 1, 2 Number of write requests +disk.write.requests.rate g request/s inst ID p 1, 2, 3 Average rate of write requests per second +disk.read.bytes c B inst ID p 1, 2 Volume of reads in B +disk.read.bytes.rate g B/s inst ID p 1, 2, 3 Average rate of reads in B per second +disk.write.bytes c B inst ID p 1, 2 Volume of writes in B +disk.write.bytes.rate g B/s inst ID p 1, 2, 3 Average volume of writes in B per second +disk.root.size g GB inst ID n 1, 2 Size of root disk in GB +disk.ephemeral.size g GB inst ID n 1, 2 Size of ephemeral disk in GB +network.incoming.bytes c B iface ID p 1, 2 Number of incoming bytes on a VM network interface +network.incoming.bytes.rate g B/s iface ID p 1, 2, 3 Average rate per sec of incoming bytes on a VM network interface +network.outgoing.bytes c B iface ID p 1, 2 Number of outgoing bytes on a VM network interface +network.outgoing.bytes.rate g B/s iface ID p 1, 2, 3 Average rate per sec of outgoing bytes on a VM network interface +network.incoming.packets c packet iface ID p 1, 2 Number of incoming packets on a VM network interface +network.incoming.packets.rate g packet/s iface ID p 1, 2, 3 Average rate per sec of incoming packets on a VM network interface +network.outgoing.packets c packet iface ID p 1, 2 Number of outgoing packets on a VM network interface +network.outgoing.packets.rate g packet/s iface ID p 1, 2, 3 Average rate per sec of outgoing packets on a VM network interface +============================= ===== ========= ======== ======== ========== ================================================================== + +:: + + Legend: + * + [g]: gauge + [c]: cumulative + ** + [p]: pollster + [n]: notification + *** + [1]: Libvirt support + [2]: HyperV support + [3]: Vsphere support + +Contributors are welcome to extend other virtualization backends' meters +or complete the existing ones. + +The meters below are related to the host machine. + +.. note:: + +By default, Nova will not collect the following meters related to the host +compute node machine. Nova option 'compute_monitors = ComputeDriverCPUMonitor' +should be set in nova.conf to enable meters. + +=============================== ========== ========= ======== ============ ======================== +Name Type Unit Resource Origin Note +=============================== ========== ========= ======== ============ ======================== +compute.node.cpu.frequency Gauge MHz host ID notification CPU frequency +compute.node.cpu.kernel.time Cumulative ns host ID notification CPU kernel time +compute.node.cpu.idle.time Cumulative ns host ID notification CPU idle time +compute.node.cpu.user.time Cumulative ns host ID notification CPU user mode time +compute.node.cpu.iowait.time Cumulative ns host ID notification CPU I/O wait time +compute.node.cpu.kernel.percent Gauge % host ID notification CPU kernel percentage +compute.node.cpu.idle.percent Gauge % host ID notification CPU idle percentage +compute.node.cpu.user.percent Gauge % host ID notification CPU user mode percentage +compute.node.cpu.iowait.percent Gauge % host ID notification CPU I/O wait percentage +compute.node.cpu.percent Gauge % host ID notification CPU utilization +=============================== ========== ========= ======== ============ ======================== Network (Neutron) ================= @@ -196,7 +232,7 @@ ========================== ========== ========== ======== ========= ============================================== Network (From SDN Controller) -============= +============================= These meters based on OpenFlow Switch metrics. In order to enable these meters, each driver needs to be configured. @@ -246,7 +282,7 @@ Naming convention ================= -If you plan on adding meters, please follow the convention bellow: +If you plan on adding meters, please follow the convention below: 1. Always use '.' as separator and go from least to most discriminant word. For example, do not use ephemeral_disk_size but disk.ephemeral.size diff -Nru ceilometer-2014.1~b3/doc/source/webapi/v2.rst ceilometer-2014.1~rc1/doc/source/webapi/v2.rst --- ceilometer-2014.1~b3/doc/source/webapi/v2.rst 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/doc/source/webapi/v2.rst 2014-03-31 15:32:25.000000000 +0000 @@ -37,6 +37,41 @@ .. autotype:: ceilometer.api.controllers.v2.Statistics :members: +When a simple statistics request is invoked (using GET /v2/meters//statistics), it will return the standard set of *Statistics*: *avg*, *sum*, +*min*, *max*, and *count*. + +Selectable Aggregates ++++++++++++++++++++++ + +The Statistics API has been extended to include the aggregate functions *stddev* and *cardinality*. You can explicitly select these functions or any from the +standard set by specifying an aggregate function in the statistics query:: + + GET /v2/meters//statistics?aggregate.func=&aggregate.param= + +(where aggregate.param is optional). See the :ref:`functional-examples` +section for more detail. + +.. note:: Currently only *cardinality* needs aggregate.param to be specified. + +.. autotype:: ceilometer.api.controllers.v2.Aggregate + :members: + +Capabilities +============ + +The Capabilities API allows you to directly discover which functions from the +V2 API functionality, including the selectable aggregate functions, are +supported by the currently configured storage driver. A capabilities query +returns a flattened dictionary of properties with associated boolean values - +a 'False' or absent value means that the corresponding feature is not +available in the backend. + +.. rest-controller:: ceilometer.api.controllers.v2:CapabilitiesController + :webprefix: /v2/capabilities + +.. autotype:: ceilometer.api.controllers.v2.Capabilities + :members: + .. _alarms-api: Alarms @@ -193,6 +228,15 @@ "?q.field=metadata.event_type&q.value=compute.instance.exists"\ "&q.field=timestamp&q.op=gt&q.value=2013-07-03T13:34:17" +A query to find the maximum value and standard deviation (*max*, *stddev*) of +the CPU utilization for a given instance (identified by *resource_id*):: + + curl -H 'X-Auth-Token: ' \ + "http://localhost:8777/v2/meters/cpu_util/statistics?aggregate.func=max&aggregate.func=stddev"\ + "&q.field=resource_id&q.op=eq&q.value=64da755c-9120-4236-bee1-54acafe24980" + +.. note:: If any of the requested aggregates are not supported by the storage driver, a HTTP 400 error code will be returned along with an appropriate error message. + JSON based example:: @@ -207,6 +251,7 @@ "'{"field": "project_id","op": "eq","value":"8d6057bc-5b90-4296-afe0-84acaa2ef909"}]}' \ http://localhost:8777/v2/meters/instance +.. _functional-examples: Functional examples +++++++++++++++++++ @@ -227,7 +272,8 @@ "value": "2013-07-01T00:00:00"}] -Get the list of samples about instances running for June 2013 for a particular project:: +Get the list of samples about instances running for June 2013 for a particular +project:: GET /v2/meters/instance q: [{"field": "timestamp", @@ -240,7 +286,8 @@ "op": "eq", "value": "8d6057bc-5b90-4296-afe0-84acaa2ef909"}] -Get the list of samples about instances with *m1.tiny* flavor running for June 2013 for a particular project:: +Get the list of samples about instances with *m1.tiny* flavor running for June +2013 for a particular project:: GET /v2/meters/instance:m1.tiny q: [{"field": "timestamp", @@ -361,6 +408,79 @@ "resource_id": "eaed9cf4-fc99-4115-93ae-4a5c37a1a7d7"}, "unit": "image"}] +You can request specific aggregate functions as well. For example, if you only +want the average CPU utilization, the GET request would look like this:: + + GET /v2/meters/cpu_util/statistics?aggregate.func=avg + +Use the same syntax to access the aggregate functions not in the standard set, +e.g. *stddev* and *cardinality*. A request for the standard deviation of CPU utilization would take the form:: + + GET /v2/meters/cpu_util/statistics?aggregate.func=stddev + +And would give a response such as the example:: + + [{"aggregate": {"stddev":0.6858829535841072}, + "duration_start": "2014-01-30T11:13:23", + "duration_end": "2014-01-31T16:07:13", + "duration": 104030.0, + "period": 0, + "period_start": "2014-01-30T11:13:23", + "period_end": "2014-01-31T16:07:13", + "groupby": null, + "unit" : "%"}] + +The request syntax is similar for *cardinality* but with the aggregate.param +option provided. So, for example, if you want to know the number of distinct +tenants with images, you would do:: + + GET /v2/meters/image/statistics?aggregate.func=cardinality + &aggregate.param=project_id + +For a more involved example, consider a requirement for determining, for some +tenant, the number of distinct instances (*cardinality*) as well as the total +number of instance samples (*count*). You might also want to see this +information with 15 minute long intervals. Then, using the *period* and +*groupby* options, a query would look like the following:: + + GET /v2/meters/instance/statistics?aggregate.func=cardinality + &aggregate.param=resource_id + &aggregate.func=count + &groupby=project_id&period=900 + +This would give an example response of the form:: + + [{"count": 19, + "aggregate": {"count": 19.0, "cardinality/resource_id": 3.0}, + "duration": 328.478029, + "duration_start": "2014-01-31T10:00:41.823919", + "duration_end": "2014-01-31T10:06:10.301948", + "period": 900, + "period_start": "2014-01-31T10:00:00", + "period_end": "2014-01-31T10:15:00", + "groupby": {"project_id": "061a5c91811e4044b7dc86c6136c4f99"}, + "unit": "instance"}, + {"count": 22, + "aggregate": {"count": 22.0, "cardinality/resource_id": 4.0}, + "duration": 808.00384, + "duration_start": "2014-01-31T10:15:15", + "duration_end": "2014-01-31T10:28:43.003840", + "period": 900, + "period_start": "2014-01-31T10:15:00", + "period_end": "2014-01-31T10:30:00", + "groupby": {"project_id": "061a5c91811e4044b7dc86c6136c4f99"}, + "unit": "instance"}, + {"count": 2, + "aggregate": {"count": 2.0, "cardinality/resource_id": 2.0}, + "duration": 0.0, + "duration_start": "2014-01-31T10:35:15", + "duration_end": "2014-01-31T10:35:15", + "period": 900, + "period_start": "2014-01-31T10:30:00", + "period_end": "2014-01-31T10:45:00", + "groupby": {"project_id": "061a5c91811e4044b7dc86c6136c4f99"}, + "unit": "instance"}] + If you want to retrieve all the instances (not the list of samples, but the resource itself) that have been run during this month for a given project, you should ask the resource endpoint for the list of resources (all types: diff -Nru ceilometer-2014.1~b3/etc/ceilometer/ceilometer.conf.sample ceilometer-2014.1~rc1/etc/ceilometer/ceilometer.conf.sample --- ceilometer-2014.1~b3/etc/ceilometer/ceilometer.conf.sample 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/etc/ceilometer/ceilometer.conf.sample 2014-03-31 15:32:25.000000000 +0000 @@ -40,6 +40,14 @@ # Dispatcher to process data. (multi valued) #dispatcher=database +# Number of workers for collector service. A single +# collector is enabled by default. (integer value) +#collector_workers=1 + +# Number of workers for notification service. A single +# notification agent is enabled by default. (integer value) +#notification_workers=1 + # # Options defined in ceilometer.api.app @@ -62,7 +70,7 @@ # -# Options defined in ceilometer.compute.pollsters.util +# Options defined in ceilometer.compute.util # # List of metadata prefixes reserved for metering use. (list @@ -521,6 +529,14 @@ [alarm] # +# Options defined in ceilometer.cli +# + +# Class to launch as alarm evaluation service. (string value) +#evaluation_service=ceilometer.alarm.service.SingletonAlarmService + + +# # Options defined in ceilometer.alarm.notifier.rest # @@ -558,9 +574,6 @@ # Deprecated group/name - [alarm]/threshold_evaluation_interval #evaluation_interval=60 -# Class to launch as alarm evaluation service. (string value) -#evaluation_service=ceilometer.alarm.service.SingletonAlarmService - # # Options defined in ceilometer.api.controllers.v2 @@ -982,3 +995,27 @@ #key_file= +[vmware] + +# +# Options defined in ceilometer.compute.virt.vmware.inspector +# + +# IP address of the VMware Vsphere host (string value) +#host_ip= + +# Username of VMware Vsphere (string value) +#host_username= + +# Password of VMware Vsphere (string value) +#host_password= + +# Number of times a VMware Vsphere API must be retried +# (integer value) +#api_retry_count=10 + +# Sleep time in seconds for polling an ongoing async task +# (floating point value) +#task_poll_interval=0.5 + + diff -Nru ceilometer-2014.1~b3/MAINTAINERS ceilometer-2014.1~rc1/MAINTAINERS --- ceilometer-2014.1~b3/MAINTAINERS 2014-03-06 16:33:27.000000000 +0000 +++ ceilometer-2014.1~rc1/MAINTAINERS 2014-03-31 15:32:25.000000000 +0000 @@ -2,7 +2,7 @@ The current members of ceilometer-core are listed here: - https://launchpad.net/~ceilometer-core/+members#active + https://launchpad.net/~ceilometer-drivers/+members#active This group can +2 and approve patches in Ceilometer. However, they may choose to seek feedback from the appropriate specialist maintainer before diff -Nru ceilometer-2014.1~b3/PKG-INFO ceilometer-2014.1~rc1/PKG-INFO --- ceilometer-2014.1~b3/PKG-INFO 2014-03-06 16:37:13.000000000 +0000 +++ ceilometer-2014.1~rc1/PKG-INFO 2014-03-31 15:37:13.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: ceilometer -Version: 2014.1.b3 +Version: 2014.1.rc1 Summary: OpenStack Telemetry Home-page: http://www.openstack.org/ Author: OpenStack diff -Nru ceilometer-2014.1~b3/requirements.txt ceilometer-2014.1~rc1/requirements.txt --- ceilometer-2014.1~b3/requirements.txt 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/requirements.txt 2014-03-31 15:32:25.000000000 +0000 @@ -12,6 +12,7 @@ lockfile>=0.8 lxml>=2.3 msgpack-python +netaddr>=0.7.6 oslo.config>=1.2.0 oslo.vmware pbr>=0.6,<1.0 diff -Nru ceilometer-2014.1~b3/setup.cfg ceilometer-2014.1~rc1/setup.cfg --- ceilometer-2014.1~b3/setup.cfg 2014-03-06 16:37:13.000000000 +0000 +++ ceilometer-2014.1~rc1/setup.cfg 2014-03-31 15:37:13.000000000 +0000 @@ -70,13 +70,21 @@ disk.write.requests = ceilometer.compute.pollsters.disk:WriteRequestsPollster disk.read.bytes = ceilometer.compute.pollsters.disk:ReadBytesPollster disk.write.bytes = ceilometer.compute.pollsters.disk:WriteBytesPollster + disk.read.requests.rate = ceilometer.compute.pollsters.disk:ReadRequestsRatePollster + disk.write.requests.rate = ceilometer.compute.pollsters.disk:WriteRequestsRatePollster + disk.read.bytes.rate = ceilometer.compute.pollsters.disk:ReadBytesRatePollster + disk.write.bytes.rate = ceilometer.compute.pollsters.disk:WriteBytesRatePollster cpu = ceilometer.compute.pollsters.cpu:CPUPollster + cpu_util = ceilometer.compute.pollsters.cpu:CPUUtilPollster network.incoming.bytes = ceilometer.compute.pollsters.net:IncomingBytesPollster network.incoming.packets = ceilometer.compute.pollsters.net:IncomingPacketsPollster network.outgoing.bytes = ceilometer.compute.pollsters.net:OutgoingBytesPollster network.outgoing.packets = ceilometer.compute.pollsters.net:OutgoingPacketsPollster + network.incoming.bytes.rate = ceilometer.compute.pollsters.net:IncomingBytesRatePollster + network.outgoing.bytes.rate = ceilometer.compute.pollsters.net:OutgoingBytesRatePollster instance = ceilometer.compute.pollsters.instance:InstancePollster instance_flavor = ceilometer.compute.pollsters.instance:InstanceFlavorPollster + memory.usage = ceilometer.compute.pollsters.memory:MemoryUsagePollster ceilometer.poll.central = ip.floating = ceilometer.network.floatingip:FloatingIPPollster image = ceilometer.image.glance:ImagePollster @@ -133,6 +141,7 @@ ceilometer.compute.virt = libvirt = ceilometer.compute.virt.libvirt.inspector:LibvirtInspector hyperv = ceilometer.compute.virt.hyperv.inspector:HyperVInspector + vsphere = ceilometer.compute.virt.vmware.inspector:VsphereInspector ceilometer.hardware.inspectors = snmp = ceilometer.hardware.inspector.snmp:SNMPInspector ceilometer.transformer = @@ -160,20 +169,21 @@ paste.filter_factory = swift = ceilometer.objectstore.swift_middleware:filter_factory console_scripts = - ceilometer-api = ceilometer.api.app:start - ceilometer-agent-central = ceilometer.central.manager:agent_central - ceilometer-agent-compute = ceilometer.compute.manager:agent_compute - ceilometer-agent-notification = ceilometer.notification:agent + ceilometer-api = ceilometer.cli:api + ceilometer-agent-central = ceilometer.cli:agent_central + ceilometer-agent-compute = ceilometer.cli:agent_compute + ceilometer-agent-notification = ceilometer.cli:agent_notification ceilometer-send-sample = ceilometer.cli:send_sample - ceilometer-dbsync = ceilometer.storage:dbsync - ceilometer-expirer = ceilometer.storage:expirer - ceilometer-collector = ceilometer.collector:collector - ceilometer-alarm-evaluator = ceilometer.alarm.service:alarm_evaluator - ceilometer-alarm-notifier = ceilometer.alarm.service:alarm_notifier + ceilometer-dbsync = ceilometer.cli:storage_dbsync + ceilometer-expirer = ceilometer.cli:storage_expirer + ceilometer-collector = ceilometer.cli:collector_service + ceilometer-alarm-evaluator = ceilometer.cli:alarm_evaluator + ceilometer-alarm-notifier = ceilometer.cli:alarm_notifier ceilometer.dispatcher = database = ceilometer.dispatcher.database:DatabaseDispatcher file = ceilometer.dispatcher.file:FileDispatcher network.statistics.drivers = + opendaylight = ceilometer.network.statistics.opendaylight.driver:OpenDayLightDriver [build_sphinx] all_files = 1 diff -Nru ceilometer-2014.1~b3/tox.ini ceilometer-2014.1~rc1/tox.ini --- ceilometer-2014.1~b3/tox.ini 2014-03-06 16:33:29.000000000 +0000 +++ ceilometer-2014.1~rc1/tox.ini 2014-03-31 15:32:25.000000000 +0000 @@ -12,7 +12,6 @@ EVENTLET_NO_GREENDNS=yes commands = bash -x {toxinidir}/setup-test-env.sh python setup.py testr --slowest --testr-args="{posargs}" - {toxinidir}/tools/config/check_uptodate.sh downloadcache = {toxworkdir}/_download [testenv:cover]