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.openstack.common.apiclient import exceptions
from ceilometerclient.tests.unit import fakes from ceilometerclient.tests.unit import fakes
from ceilometerclient.tests.unit import utils from ceilometerclient.tests.unit import utils
from ceilometerclient.v1 import client as v1client
from ceilometerclient.v2 import client as v2client from ceilometerclient.v2 import client as v2client
FAKE_ENV = { FAKE_ENV = {
@@ -64,20 +63,7 @@ class ClientTest(utils.BaseTestCase):
self.assertTrue(session.request.called) self.assertTrue(session.request.called)
self.assertTrue(resp.json.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): 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) c2 = self.create_client(env=FAKE_ENV, api_version=2)
self.assertIsInstance(c2, v2client.Client) 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 >>> 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) >>> 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:: Then call methods on its managers::
@@ -44,5 +44,4 @@ For more information, see the reference:
:maxdepth: 2 :maxdepth: 2
ref/index ref/index
ref/v1/index
ref/v2/index ref/v2/index

View File

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

View File

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