the db2 nosql product is not in development anymore as IBM has moved
on to an alternate solution. the existing driver code is untested
in the community and IBM products are moving off of it. this patch
marks db2 nosql driver for deprecation.
Closes-Bug: #1491819
Change-Id: Ic4e906615931143744f25d70935bdb8138a6b93a
This removes the cp of the meters.yaml file to /etc/ceilometer. It
is not needed.
This is part of a regular process of keeping the plugin and the
devstack version functionally equivalent until the devstack version
finally goes away.
Change-Id: I1261f054f077b73d3d64529ca9c59678ecbf15de
the nova_notifier plugin was removed in Kilo. this removes the
corresponding processing code.
Change-Id: Ibd39b392293247ec088ceea4b592383b4b92f3f0
Closes-Bug: #1491603
this patch restricts the scope of returned events. if admin role,
user is allowed to query all events which have traits.project_id
value that match it's own project OR any event without any
project_id trait.
Implements: blueprint events-rbac
Change-Id: I41d30b2fc11c226e109c499e7a35fdb2fa057e0b
Delete all the old snmp pollsters and to register the new declarative
snmp pollster to be used.
Change-Id: I8ebb2a53bca52eed77229d4cc56cf1f42aaa1a7b
Implements: blueprint declarative-snmp-metrics
Make AgentManager to load pollster extensions at runtime. So that a
pollster builder may build multiple pollster extensions to be used by
the AgentManager.
In this way, we don't need to change the existing pollsters interface in
order to support declarative pollster, which means a single pollster
class might gives more than one meters.
All pollsters which implements classmethod interface build_pollsters()
should be registered in the namesapce of ceilometer.builder.poll.xxx, so
that AgentManger can correctly find it and use to dynamically generate
multiple pollsters through the 'builder' logic.
Change-Id: If7f8f80301474e2684ea0f1bbdc69cc202b9ef7e
Implements: blueprint declarative-snmp-metrics
The snmp declarative hardware pollster loads the metric definition from
a special yaml file and can poll those metrics. This enables the
developers to modify the yaml file only to add new snmp metrics without
writing any new python code.
Added a new classmethod interface build_pollsters for PollsterBase. The
pollster plugin which implements this interface should return a list of
tuple (name, pollster), where name is the meter name it will return, and
pollster is the pollster object instances. All the pollsters returned by
this would be wrapped in stevedore extensions in
PollsterBase.get_pollster_extensions().
This pollster doesn't get registered temporarily to avoid duplicating
samples. Will be registered in the following patches when old snmp
pollsters are deleted.
Implements: blueprint declarative-snmp-metrics
Change-Id: I5abbe704cc08ea84aacf742eda7cee215141c3bb
when workload_partitioning is enabled,
publishing of samples occurs in the
pipeline listeners. If publishing fails
when single publisher is configured, event
will not be requeued or ack'ed.
This fix requeues or acks the event based on
ack_on_event_error.
Change-Id: I8f2f889736c8897e5b15952ab32308cf33205c3f
Closes-Bug: 1488202
Non-admin users should be restricted to see only those
events that were generated by them and not the events
associated with other users.The current behavior doesn't
have any restrictions on the events that a non-admin user
can view.As part of this patch, a non-admin user will see
only the events that are associated with the user_id and
project_id that the user requesting events belongs to.
Events stored in the ceilometer database has information
from all other services and in a cloud environment, there
must be restrictions on the data a non-admin user can access.
Change-Id: I2ed7425c14a70d1db4621a277ba5f4f575a15eba
blueprint: events-rbac
Descriptions in autoscaling yaml talk about three servers
when only two are used.
This change fixes that.
Change-Id: Iac981b51fb3e380aa0a0a7971f5bb4fe83708530
Resource table's metadata_hash column is not indexed.
Adding index on metadata_hash column reduces number
of rows scanned to one. That is if a resource
(same resource_id) has say n rows in resource table
(due to difference in metadata), with additional index
only one row will have to be scanned.
Change-Id: I2a99bdac88f5fa14ac5f82497d1a12196419ae68
Closes-Bug: #1488544
This change makes it so that if you call `tox` or `tox -r` you will
get a useful result as a developer running tests:
* py27 and py34 unit tests
* a single functional test run (using mongodb)
* pep8
This is slightly different from what was there before which was
as above but _two_ functional test runs, with mysql and postgresql.
The goal here is to make it dead simple for someone to (as quickly
as possible) make sure that there code is okay before committing.
Change-Id: I27dcf5265dea18be541b8b2857b0a135ff22f499
Identity trust event types have resource_type
prefixed with OS-TRUST:, this patch fixes
the declarative meter definition file to
include that change.
Closes-Bug: 1488707
DocImpact
Change-Id: I1f82049a78b7693f8d03803ce500f8f4c268b0a1
Some resource_id looks like "812c9916-83f7-460b-8b27-ab5a2ba98275/foobar".
This change uses urllib.quote to encode them when they are used into
a url.
Related-bug: #1480346
Change-Id: If19b0aec5f89e031b886b7f1e2233c0a88d1b4b1
currently,the cpu notifications has extremely verbose metadata which
is list of all metrics in message. ie, each meter has metadata like:
u'metrics': [
{'timestamp': u'2013-07-29T06:51:34.472416',
'name': 'cpu.frequency', 'value': 1600,
'source': 'libvirt.LibvirtDriver'},
...
{'timestamp': u'2013-07-29T06:51:34.472416',
'name': 'cpu.user.time', 'value': 17421440000000,
'source': 'libvirt.LibvirtDriver'}],
...
}
the original metadata pre-declarative notifications is:
{'timestamp': u'2013-07-29T06:51:34.472416',
'name': 'cpu.frequency',
'value': 1600,
'source': 'libvirt.LibvirtDriver',
'event_type': 'compute.metrics.update',
'host': <publisher_id>}
the proposed metadata removes all data already included in meter:
{'source': 'libvirt.LibvirtDriver',
'event_type': 'compute.metrics.update',
'host': <publisher_id>}
Change-Id: I2c8d4ba7768cba378b931acbfe84a29549da7f8b
The ceilometer events RBAC is currently hard-coded so
that only an admin user can view events.The end-user
should be able to customize who should be able to view
events rather than hard-coding the control to admins.
This changeset adds two new rules into the policy.json
so that RBAC for events index and show methods can be
configured using the policy.json file.
DocImpact
Change-Id: I7bf4d385b9ee8fa8f1097b6400cbbc4135f2a9b6
blueprint: events-rbac
The role based access control of events api needs project-
scoped tokens to process the request. The project information
has to be available in the request header to be able to filter
events based on the project.In addition to the project, the user
information is also mandated as part of this change. The request
fails with a 403 if this information is not available in the
request.
Change-Id: I55e3d8eaf278024e89e43e36a9dbb92b1c432646
blueprint: events-rbac
this patch makes the payload we generate via polling agents and
api a dictionary. this gives us more flexibility to include metadata
on how the data was generated that we don't necessary want to
include in sample metadata.
Change-Id: I1350c78c52fad8111241b3f77698fef6c4aa77a9
Closes-Bug: #1484937
The NotificationDispatcher in oslo_messaging is able to requeue
notifications which cannot be successfully handled by endpoint. That need
endpoint return a 'requeue' if exception happened on handling. In
EventsNotificationEndpoint of ceilometer, the return value was always
None.
Change-Id: Iab10ca06766e1454d1d2338e72087b6bca7590b6
Closes-Bug: #1489431
existing code will create queues from the cartesian product of the
set of pipelines and the set of agents. these queues are identified
by pipe_type-pipe_name-agent_id. the problem arises where if an agent
dies, any messages left on it's queue will be lost as agent_id's tend
to be unique.
this patch changes the logic so rather than using the number of agents
as the set we build our cartesian product from, we use a set of numbers
of a configurable size. by default, it will be a set of 10 so that queues
are created from the product set of the set of pipelines and the set
{0, 1, 2, 3, ... 9}. similarly, the pipelines queues will be identified
by pipe_type-pipe_name-x, where x is value from numerical set. this
way, if an agent dies, the queues are still known and can be
redistributed and processed among the active agents.
Change-Id: I35e3afdd2c9f97ab5bc6bb89531bd20308c5f8c0
Closes-Bug: #1486754