drop v1 client

we dropped v1 back in Juno. as icehouse is EOL and the client
follows stable/branches, v1 is completely inaccessible and can be
removed

Change-Id: If4c6c07e65a6c47f47c59de6c99e8c40ef4e63cb
Co-Authored-By: ZhiQiang Fan <aji.zqfan@gmail.com>
Closes-Bug: #1389331
This commit is contained in:
gordon chung
2015-10-20 11:27:47 -04:00
parent 32a6fbd91b
commit cba4f4b7d3
14 changed files with 1 additions and 1067 deletions

View File

@@ -23,7 +23,6 @@ from ceilometerclient import exc
from ceilometerclient.openstack.common.apiclient import exceptions
from ceilometerclient.tests.unit import fakes
from ceilometerclient.tests.unit import utils
from ceilometerclient.v1 import client as v1client
from ceilometerclient.v2 import client as v2client
FAKE_ENV = {
@@ -64,20 +63,7 @@ class ClientTest(utils.BaseTestCase):
self.assertTrue(session.request.called)
self.assertTrue(resp.json.called)
def test_client_v1_with_session(self):
resp = mock.Mock(status_code=200, text=b'')
resp.json.return_value = {'resources': []}
session = mock.Mock()
session.request.return_value = resp
c = client.get_client(1, session=session)
c.resources.list()
self.assertTrue(session.request.called)
self.assertTrue(resp.json.called)
def test_client_version(self):
c1 = self.create_client(env=FAKE_ENV, api_version=1)
self.assertIsInstance(c1, v1client.Client)
c2 = self.create_client(env=FAKE_ENV, api_version=2)
self.assertIsInstance(c2, v2client.Client)

View File

@@ -1,162 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient.openstack.common.apiclient import client
from ceilometerclient.openstack.common.apiclient import fake_client
from ceilometerclient.tests.unit import utils
import ceilometerclient.v1.meters
fixtures = {
'/v1/meters': {
'GET': (
{},
{'meters': [
{
'resource_id': 'a',
'project_id': 'dig_the_ditch',
'user_id': 'freddy',
'name': 'this',
'type': 'counter',
},
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
},
]},
),
},
'/v1/users/joey/meters': {
'GET': (
{},
{'meters': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
},
]},
),
},
'/v1/projects/dig_the_ditch/meters': {
'GET': (
{},
{'meters': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
},
]},
),
},
'/v1/sources/openstack/meters': {
'GET': (
{},
{'meters': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
},
{
'resource_id': 'q',
'project_id': 'dig_the_trench',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
},
]},
),
},
'/v1/meters?metadata.zxc_id=foo': {
'GET': (
{},
{'meters': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
},
]},
),
},
}
class MeterManagerTest(utils.BaseTestCase):
def setUp(self):
super(MeterManagerTest, self).setUp()
self.http_client = fake_client.FakeHTTPClient(fixtures=fixtures)
self.api = client.BaseClient(self.http_client)
self.mgr = ceilometerclient.v1.meters.MeterManager(self.api)
def test_list_all(self):
resources = list(self.mgr.list())
expect = [
'GET', '/v1/meters'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 2)
self.assertEqual(resources[0].resource_id, 'a')
self.assertEqual(resources[1].resource_id, 'b')
def test_list_by_source(self):
resources = list(self.mgr.list(source='openstack'))
expect = [
'GET', '/v1/sources/openstack/meters'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 2)
self.assertEqual(resources[0].resource_id, 'b')
self.assertEqual(resources[1].resource_id, 'q')
def test_list_by_user(self):
resources = list(self.mgr.list(user_id='joey'))
expect = [
'GET', '/v1/users/joey/meters'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0].resource_id, 'b')
def test_list_by_project(self):
resources = list(self.mgr.list(project_id='dig_the_ditch'))
expect = [
'GET', '/v1/projects/dig_the_ditch/meters'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0].resource_id, 'b')
def test_list_by_metaquery(self):
resources = list(self.mgr.list(metaquery='metadata.zxc_id=foo'))
expect = [
'GET', '/v1/meters?metadata.zxc_id=foo'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0].resource_id, 'b')

View File

@@ -1,65 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient.openstack.common.apiclient import client
from ceilometerclient.openstack.common.apiclient import fake_client
from ceilometerclient.tests.unit import utils
import ceilometerclient.v1.meters
fixtures = {
'/v1/projects': {
'GET': (
{},
{'projects': [
'a',
'b',
]},
),
},
'/v1/sources/source_b/projects': {
'GET': (
{},
{'projects': ['b']},
),
},
}
class ProjectManagerTest(utils.BaseTestCase):
def setUp(self):
super(ProjectManagerTest, self).setUp()
self.http_client = fake_client.FakeHTTPClient(fixtures=fixtures)
self.api = client.BaseClient(self.http_client)
self.mgr = ceilometerclient.v1.meters.ProjectManager(self.api)
def test_list_all(self):
projects = list(self.mgr.list())
expect = [
'GET', '/v1/projects'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(projects), 2)
self.assertEqual(projects[0].project_id, 'a')
self.assertEqual(projects[1].project_id, 'b')
def test_list_by_source(self):
projects = list(self.mgr.list(source='source_b'))
expect = [
'GET', '/v1/sources/source_b/projects'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(projects), 1)
self.assertEqual(projects[0].project_id, 'b')

View File

@@ -1,161 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient.openstack.common.apiclient import client
from ceilometerclient.openstack.common.apiclient import fake_client
from ceilometerclient.tests.unit import utils
import ceilometerclient.v1.meters
fixtures = {
'/v1/resources': {
'GET': (
{},
{'resources': [
{
'resource_id': 'a',
'project_id': 'project_bla',
'user_id': 'freddy',
'timestamp': 'now',
'meter': ['this', 'that'],
'metadata': {'zxc_id': 'bla'},
},
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'timestamp': 'now',
'meter': ['this', 'that'],
'metadata': {'zxc_id': 'foo'},
},
]},
),
},
'/v1/users/joey/resources': {
'GET': (
{},
{'resources': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'timestamp': 'now',
'meter': ['this', 'that'],
'metadata': {'zxc_id': 'foo'},
},
]},
),
},
'/v1/resources?metadata.zxc_id=foo': {
'GET': (
{},
{'resources': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'timestamp': 'now',
'meter': ['this', 'that'],
'metadata': {'zxc_id': 'foo'},
},
]},
),
},
'/v1/projects/project_bla/resources': {
'GET': (
{},
{'resources': [
{
'resource_id': 'a',
'project_id': 'project_bla',
'user_id': 'freddy',
'timestamp': 'now',
'meter': ['this', 'that'],
'metadata': {'zxc_id': 'bla'},
},
]},
),
},
'/v1/resources?start_timestamp=now&end_timestamp=now': {
'GET': (
{},
{'resources': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'timestamp': 'now',
'meter': ['this', 'that'],
'metadata': {'zxc_id': 'foo'},
},
]},
),
},
}
class ResourceManagerTest(utils.BaseTestCase):
def setUp(self):
super(ResourceManagerTest, self).setUp()
self.http_client = fake_client.FakeHTTPClient(fixtures=fixtures)
self.api = client.BaseClient(self.http_client)
self.mgr = ceilometerclient.v1.meters.ResourceManager(self.api)
def test_list_all(self):
resources = list(self.mgr.list())
expect = [
'GET', '/v1/resources'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 2)
self.assertEqual(resources[0].resource_id, 'a')
self.assertEqual(resources[1].resource_id, 'b')
def test_list_by_user(self):
resources = list(self.mgr.list(user_id='joey'))
expect = [
'GET', '/v1/users/joey/resources'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0].resource_id, 'b')
def test_list_by_metaquery(self):
resources = list(self.mgr.list(metaquery='metadata.zxc_id=foo'))
expect = [
'GET', '/v1/resources?metadata.zxc_id=foo'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0].resource_id, 'b')
def test_list_by_project(self):
resources = list(self.mgr.list(project_id='project_bla'))
expect = [
'GET', '/v1/projects/project_bla/resources'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0].resource_id, 'a')
def test_list_by_timestamp(self):
resources = list(self.mgr.list(start_timestamp='now',
end_timestamp='now'))
expect = [
'GET', '/v1/resources?start_timestamp=now&end_timestamp=now'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0].resource_id, 'b')

View File

@@ -1,196 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient.openstack.common.apiclient import client
from ceilometerclient.openstack.common.apiclient import fake_client
from ceilometerclient.tests.unit import utils
import ceilometerclient.v1.meters
fixtures = {
'/v1/users/freddy/meters/balls': {
'GET': (
{},
{'events': [
{
'resource_id': 'inst-0045',
'project_id': 'melbourne_open',
'user_id': 'freddy',
'name': 'tennis',
'type': 'counter',
'unit': 'balls',
'volume': 3,
'timestamp': None,
'resource_metadata': None,
},
]},
),
},
'/v1/sources/openstack/meters/this': {
'GET': (
{},
{'events': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
'unit': 'b',
'volume': 45,
'timestamp': None,
'resource_metadata': None,
},
]},
),
},
'/v1/projects/dig_the_ditch/meters/meters': {
'GET': (
{},
{'events': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'meters',
'type': 'counter',
'unit': 'meters',
'volume': 345,
'timestamp': None,
'resource_metadata': None,
},
]},
),
},
'/v1/meters?metadata.zxc_id=foo': {
'GET': (
{},
{'events': [
{
'resource_id': 'b',
'project_id': 'dig_the_ditch',
'user_id': 'joey',
'name': 'this',
'type': 'counter',
'unit': 'meters',
'volume': 98,
'timestamp': None,
'resource_metadata': {'zxc_id': 'foo'},
},
]},
),
},
'/v1/users/freddy/meters/balls?start_timestamp=now&end_timestamp=now': {
'GET': (
{},
{'events': [
{
'resource_id': 'inst-0045',
'project_id': 'melbourne_open',
'user_id': 'freddy',
'name': 'tennis',
'type': 'counter',
'unit': 'balls',
'volume': 3,
'timestamp': 'now',
'resource_metadata': None,
},
]},
),
},
'/v1/meters': {
'GET': (
{},
{'meters': []},
),
},
}
class SampleManagerTest(utils.BaseTestCase):
def setUp(self):
super(SampleManagerTest, self).setUp()
self.http_client = fake_client.FakeHTTPClient(fixtures=fixtures)
self.api = client.BaseClient(self.http_client)
self.mgr = ceilometerclient.v1.meters.SampleManager(self.api)
def test_list_all(self):
samples = list(self.mgr.list(counter_name=None))
expect = [
'GET', '/v1/meters'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(samples), 0)
def test_list_by_source(self):
samples = list(self.mgr.list(source='openstack',
counter_name='this'))
expect = [
'GET', '/v1/sources/openstack/meters/this'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(samples), 1)
self.assertEqual(samples[0].resource_id, 'b')
def test_list_by_user(self):
samples = list(self.mgr.list(user_id='freddy',
counter_name='balls'))
expect = [
'GET', '/v1/users/freddy/meters/balls'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(samples), 1)
self.assertEqual(samples[0].project_id, 'melbourne_open')
self.assertEqual(samples[0].user_id, 'freddy')
self.assertEqual(samples[0].volume, 3)
def test_list_by_project(self):
samples = list(self.mgr.list(project_id='dig_the_ditch',
counter_name='meters'))
expect = [
'GET', '/v1/projects/dig_the_ditch/meters/meters'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(samples), 1)
self.assertEqual(samples[0].project_id, 'dig_the_ditch')
self.assertEqual(samples[0].volume, 345)
self.assertEqual(samples[0].unit, 'meters')
def test_list_by_metaquery(self):
samples = list(self.mgr.list(metaquery='metadata.zxc_id=foo',
counter_name='this'))
expect = [
'GET', '/v1/meters?metadata.zxc_id=foo'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(samples), 1)
self.assertEqual(samples[0].resource_metadata['zxc_id'], 'foo')
def test_list_by_timestamp(self):
samples = list(self.mgr.list(user_id='freddy',
counter_name='balls',
start_timestamp='now',
end_timestamp='now'))
expect = [
'GET',
'/v1/users/freddy/meters/balls?' +
'start_timestamp=now&end_timestamp=now'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(samples), 1)
self.assertEqual(samples[0].project_id, 'melbourne_open')
self.assertEqual(samples[0].user_id, 'freddy')
self.assertEqual(samples[0].volume, 3)

View File

@@ -1,65 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient.openstack.common.apiclient import client
from ceilometerclient.openstack.common.apiclient import fake_client
from ceilometerclient.tests.unit import utils
import ceilometerclient.v1.meters
fixtures = {
'/v1/users': {
'GET': (
{},
{'users': [
'a',
'b',
]},
),
},
'/v1/sources/source_b/users': {
'GET': (
{},
{'users': ['b']},
),
},
}
class UserManagerTest(utils.BaseTestCase):
def setUp(self):
super(UserManagerTest, self).setUp()
self.http_client = fake_client.FakeHTTPClient(fixtures=fixtures)
self.api = client.BaseClient(self.http_client)
self.mgr = ceilometerclient.v1.meters.UserManager(self.api)
def test_list_all(self):
users = list(self.mgr.list())
expect = [
'GET', '/v1/users'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(users), 2)
self.assertEqual(users[0].user_id, 'a')
self.assertEqual(users[1].user_id, 'b')
def test_list_by_source(self):
users = list(self.mgr.list(source='source_b'))
expect = [
'GET', '/v1/sources/source_b/users'
]
self.http_client.assert_called(*expect)
self.assertEqual(len(users), 1)
self.assertEqual(users[0].user_id, 'b')

View File

@@ -1,16 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient.v1.client import Client # noqa

View File

@@ -1,56 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient import client as ceiloclient
from ceilometerclient.v1 import meters
class Client(object):
"""Client for the Ceilometer v1 API.
:param session: a keystoneauth/keystoneclient session object
:type session: keystoneclient.session.Session
:param str service_type: The default service_type for URL discovery
:param str service_name: The default service_name for URL discovery
:param str interface: The default interface for URL discovery
(Default: public)
:param str region_name: The default region_name for URL discovery
:param str endpoint_override: Always use this endpoint URL for requests
for this ceiloclient
:param auth: An auth plugin to use instead of the session one
:type auth: keystoneclient.auth.base.BaseAuthPlugin
:param str user_agent: The User-Agent string to set
(Default is python-ceilometer-client)
:param int connect_retries: the maximum number of retries that should be
attempted for connection errors
:param logger: A logging object
:type logger: logging.Logger
"""
def __init__(self, *args, **kwargs):
"""Initialize a new client for the Ceilometer v1 API."""
if not kwargs.get('auth_plugin'):
kwargs['auth_plugin'] = ceiloclient.get_auth_plugin(*args,
**kwargs)
self.auth_plugin = kwargs.get('auth_plugin')
self.http_client = ceiloclient._construct_http_client(**kwargs)
self.meters = meters.MeterManager(self.http_client)
self.samples = meters.SampleManager(self.http_client)
self.users = meters.UserManager(self.http_client)
self.resources = meters.ResourceManager(self.http_client)
self.projects = meters.ProjectManager(self.http_client)

View File

@@ -1,191 +0,0 @@
# Copyright 2012 OpenMeter LLC.
# 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 ceilometerclient.common import base
def _get_opt_path(simple_params=None, **kwargs):
l = []
simple_params = simple_params or []
# get simple paramters
for key in simple_params:
val = kwargs.get(key)
if val:
l.append(key + '=' + val)
# get metadata query paramters
metaquery = kwargs.get('metaquery')
if metaquery:
l.extend(metaquery.split(':'))
return '&'.join(l)
class User(base.Resource):
def __init__(self, manager, info, loaded=False):
_d = {six.u('user_id'): info}
super(User, self).__init__(manager, _d, loaded)
def __repr__(self):
return "<User %s>" % self._info
def data(self, **kwargs):
return self.manager.data(self, **kwargs)
class UserManager(base.Manager):
resource_class = User
def list(self, **kwargs):
s = kwargs.get('source')
if s:
path = '/sources/%s/users' % s
else:
path = '/users'
return self._list('/v1%s' % path, 'users')
class Project(base.Resource):
def __init__(self, manager, info, loaded=False):
_d = {six.u('project_id'): info}
super(Project, self).__init__(manager, _d, loaded)
def __repr__(self):
return "<Project %s>" % self._info
def data(self, **kwargs):
return self.manager.data(self, **kwargs)
class ProjectManager(base.Manager):
resource_class = Project
def list(self, **kwargs):
s = kwargs.get('source')
if s:
path = '/sources/%s/projects' % (kwargs['source'])
else:
path = '/projects'
return self._list('/v1%s' % path, 'projects')
class Resource(base.Resource):
def __repr__(self):
return "<Resource %s>" % self._info
def data(self, **kwargs):
return self.manager.data(self, **kwargs)
class ResourceManager(base.Manager):
resource_class = Resource
def list(self, **kwargs):
u = kwargs.get('user_id')
s = kwargs.get('source')
p = kwargs.get('project_id')
opts_path = _get_opt_path(['start_timestamp', 'end_timestamp'],
**kwargs)
if u:
path = '/users/%s/resources' % u
elif s:
path = '/sources/%s/resources' % s
elif p:
path = '/projects/%s/resources' % p
else:
path = '/resources'
if opts_path:
path = '/v1%s?%s' % (path, opts_path)
else:
path = '/v1%s' % path
return self._list(path, 'resources')
class Sample(base.Resource):
def __init__(self, manager, info, loaded=False):
smaller = dict((k, v) for (k, v) in six.iteritems(info)
if k not in ('metadata', 'message_signature'))
super(Sample, self).__init__(manager, smaller, loaded)
def __repr__(self):
return "<Sample %s>" % self._info
def data(self, **kwargs):
return self.manager.data(self, **kwargs)
class SampleManager(base.Manager):
resource_class = Sample
def list(self, **kwargs):
c = kwargs['counter_name']
r = kwargs.get('resource_id')
u = kwargs.get('user_id')
p = kwargs.get('project_id')
s = kwargs.get('source')
opts_path = _get_opt_path(['start_timestamp', 'end_timestamp'],
**kwargs)
if r:
path = '/resources/%s/meters/%s' % (r, c)
elif u:
path = '/users/%s/meters/%s' % (u, c)
elif p:
path = '/projects/%s/meters/%s' % (p, c)
elif s:
path = '/sources/%s/meters/%s' % (s, c)
else:
path = '/meters'
if opts_path:
path = '/v1%s?%s' % (path, opts_path)
else:
path = '/v1%s' % path
return self._list(path, 'events')
class Meter(base.Resource):
def __repr__(self):
return "<Meter %s>" % self._info
def data(self, **kwargs):
return self.manager.data(self, **kwargs)
class MeterManager(base.Manager):
resource_class = Meter
def list(self, **kwargs):
r = kwargs.get('resource_id')
u = kwargs.get('user_id')
p = kwargs.get('project_id')
s = kwargs.get('source')
opts_path = _get_opt_path(**kwargs)
if u:
path = '/users/%s/meters' % u
elif r:
path = '/resources/%s/meters' % r
elif p:
path = '/projects/%s/meters' % p
elif s:
path = '/sources/%s/meters' % s
else:
path = '/meters'
if opts_path:
path = '/v1%s?%s' % (path, opts_path)
else:
path = '/v1%s' % path
return self._list(path, 'meters')

View File

@@ -1,136 +0,0 @@
# Copyright 2012 OpenStack Foundation
# 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 ceilometerclient.common import utils
import ceilometerclient.exc as exc
@utils.arg('-m', '--metaquery', metavar='<METAQUERY>',
help='Query into the metadata metadata.key=value:..')
@utils.arg('-s', '--source', metavar='<SOURCE>',
help='ID of the resource to show samples for.')
@utils.arg('-r', '--resource_id', metavar='<RESOURCE_ID>',
help='ID of the resource to show samples for.')
@utils.arg('-u', '--user_id', metavar='<USER_ID>',
help='ID of the user to show samples for.')
@utils.arg('-p', '--project_id', metavar='<PROJECT_ID>',
help='ID of the project to show samples for.')
@utils.arg('-c', '--counter_name', metavar='<NAME>',
help='Name of meter to show samples for.')
@utils.arg('--start', metavar='<START_TIMESTAMP>',
help='ISO date in UTC which limits events by '
'timestamp >= this value')
@utils.arg('--end', metavar='<END_TIMESTAMP>',
help='ISO date in UTC which limits events by '
'timestamp <= this value')
def do_sample_list(cc, args):
'''List the samples for this meters.'''
fields = {'counter_name': args.counter_name,
'resource_id': args.resource_id,
'user_id': args.user_id,
'project_id': args.project_id,
'source': args.source,
'start_timestamp': args.start,
'end_timestamp': args.end,
'metaquery': args.metaquery}
try:
samples = cc.samples.list(**fields)
except exc.HTTPNotFound:
raise exc.CommandError('Samples not found: %s' % args.counter_name)
else:
field_labels = ['Resource ID', 'Name', 'Type', 'Volume', 'Timestamp']
fields = ['resource_id', 'counter_name', 'counter_type',
'counter_volume', 'timestamp']
utils.print_list(samples, fields, field_labels,
sortby=0)
@utils.arg('-m', '--metaquery', metavar='<METAQUERY>',
help='Query into the metadata metadata.key=value:..')
@utils.arg('-s', '--source', metavar='<SOURCE>',
help='ID of the resource to show samples for.')
@utils.arg('-r', '--resource_id', metavar='<RESOURCE_ID>',
help='ID of the resource to show samples for.')
@utils.arg('-u', '--user_id', metavar='<USER_ID>',
help='ID of the user to show samples for.')
@utils.arg('-p', '--project_id', metavar='<PROJECT_ID>',
help='ID of the project to show samples for.')
def do_meter_list(cc, args={}):
'''List the user's meter.'''
fields = {'resource_id': args.resource_id,
'user_id': args.user_id,
'project_id': args.project_id,
'source': args.source}
meters = cc.meters.list(**fields)
field_labels = ['Name', 'Type', 'Resource ID', 'User ID', 'Project ID']
fields = ['name', 'type', 'resource_id',
'user_id', 'project_id']
utils.print_list(meters, fields, field_labels,
sortby=0)
@utils.arg('-s', '--source', metavar='<SOURCE>',
help='ID of the resource to show projects for.')
def do_user_list(cc, args={}):
'''List the users.'''
kwargs = {'source': args.source}
users = cc.users.list(**kwargs)
field_labels = ['User ID']
fields = ['user_id']
utils.print_list(users, fields, field_labels,
sortby=0)
@utils.arg('-s', '--source', metavar='<SOURCE>',
help='ID of the resource to show for.')
@utils.arg('-u', '--user_id', metavar='<USER_ID>',
help='ID of the user to show resources for.')
@utils.arg('-p', '--project_id', metavar='<PROJECT_ID>',
help='ID of the project to show samples for.')
@utils.arg('-m', '--metaquery', metavar='<METAQUERY>',
help='Query into the metadata metadata.key=value:..')
@utils.arg('--start', metavar='<START_TIMESTAMP>',
help='ISO date in UTC which limits resouces by '
'last update time >= this value')
@utils.arg('--end', metavar='<END_TIMESTAMP>',
help='ISO date in UTC which limits resouces by '
'last update time <= this value')
def do_resource_list(cc, args={}):
"""List the resources."""
kwargs = {'source': args.source,
'user_id': args.user_id,
'project_id': args.project_id,
'start_timestamp': args.start,
'end_timestamp': args.end,
'metaquery': args.metaquery}
resources = cc.resources.list(**kwargs)
field_labels = ['Resource ID', 'Source', 'User ID', 'Project ID']
fields = ['resource_id', 'source', 'user_id', 'project_id']
utils.print_list(resources, fields, field_labels,
sortby=1)
@utils.arg('-s', '--source', metavar='<SOURCE>',
help='ID of the resource to show projects for.')
def do_project_list(cc, args={}):
"""List the projects."""
kwargs = {'source': args.source}
projects = cc.projects.list(**kwargs)
field_labels = ['Project ID']
fields = ['project_id']
utils.print_list(projects, fields, field_labels,
sortby=0)

View File

@@ -14,7 +14,7 @@ First create a client instance with your credentials::
>>> import ceilometerclient.client
>>> cclient = ceilometerclient.client.get_client(VERSION, os_username=USERNAME, os_password=PASSWORD, os_tenant_name=PROJECT_NAME, os_auth_url=AUTH_URL)
Here ``VERSION`` can be: ``1`` and ``2``.
Here ``VERSION`` should be: ``2``.
Then call methods on its managers::
@@ -44,5 +44,4 @@ For more information, see the reference:
:maxdepth: 2
ref/index
ref/v1/index
ref/v2/index

View File

@@ -16,8 +16,6 @@ execfile(os.path.join("..", "ext", "gen_ref.py"))
project = 'python-ceilometerclient'
gen_ref("", "Client Reference", ["client", "exc"])
gen_ref("v1", "Version 1 API Reference",
["meters"])
gen_ref("v2", "Version 2 API Reference",
["meters", "samples", "statistics", "resources", "query", "alarms",
"events", "event_types", "traits", "trait_descriptions"])

View File

@@ -22,7 +22,6 @@ Contents:
shell
api
ref/index
ref/v1/index
ref/v2/index
Contributing