Add project arg to event and resource queries
Change-Id: Idfb39d02e8af2b00f6f14520b5219f48dcf8fe8a Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
This commit is contained in:
parent
1c92548c5a
commit
fd6348d363
@ -35,8 +35,16 @@ blueprint = flask.Blueprint('v1', __name__)
|
||||
|
||||
@blueprint.route('/resources', defaults={'source': None})
|
||||
@blueprint.route('/sources/<source>/resources')
|
||||
def list_resources(source):
|
||||
resources = flask.request.storage_conn.get_resources(source=source)
|
||||
@blueprint.route('/users/<user>/resources')
|
||||
@blueprint.route('/projects/<project>/resources')
|
||||
@blueprint.route('/sources/<source>/users/<user>/resources')
|
||||
@blueprint.route('/sources/<source>/projects/<project>/resources')
|
||||
def list_resources(source=None, user=None, project=None):
|
||||
resources = flask.request.storage_conn.get_resources(
|
||||
source=source,
|
||||
user=user,
|
||||
project=project,
|
||||
)
|
||||
return flask.jsonify(resources=list(resources))
|
||||
|
||||
|
||||
@ -53,6 +61,16 @@ def list_users(source):
|
||||
## APIs for working with events.
|
||||
|
||||
|
||||
@blueprint.route('/projects/<project>')
|
||||
@blueprint.route('/projects/<project>/meters/<meter>')
|
||||
@blueprint.route('/projects/<project>/resources/<resource>')
|
||||
@blueprint.route('/projects/<project>/resources/<resource>/meters/<meter>')
|
||||
@blueprint.route('/sources/<source>/projects/<project>')
|
||||
@blueprint.route('/sources/<source>/projects/<project>/meters/<meter>')
|
||||
@blueprint.route('/sources/<source>/projects/<project>/resources/<resource>')
|
||||
@blueprint.route(
|
||||
'/sources/<source>/projects/<project>/resources/<resource>/meters/<meter>'
|
||||
)
|
||||
@blueprint.route('/users/<user>')
|
||||
@blueprint.route('/users/<user>/meters/<meter>')
|
||||
@blueprint.route('/users/<user>/resources/<resource>')
|
||||
@ -63,8 +81,14 @@ def list_users(source):
|
||||
@blueprint.route(
|
||||
'/sources/<source>/users/<user>/resources/<resource>/meters/<meter>'
|
||||
)
|
||||
def list_events(user, meter=None, resource=None, source=None):
|
||||
def list_events(user=None,
|
||||
meter=None,
|
||||
resource=None,
|
||||
source=None,
|
||||
project=None,
|
||||
):
|
||||
f = storage.EventFilter(user=user,
|
||||
project=project,
|
||||
source=source,
|
||||
meter=meter,
|
||||
resource=resource,
|
||||
|
@ -39,7 +39,7 @@ class TestListEvents(tests_api.TestBase):
|
||||
'cumulative',
|
||||
1,
|
||||
'user-id',
|
||||
'project-id',
|
||||
'project1',
|
||||
'resource-id',
|
||||
timestamp=datetime.datetime(2012, 7, 2, 10, 40),
|
||||
duration=0,
|
||||
@ -56,7 +56,7 @@ class TestListEvents(tests_api.TestBase):
|
||||
'cumulative',
|
||||
1,
|
||||
'user-id',
|
||||
'project-id',
|
||||
'project2',
|
||||
'resource-id-alternate',
|
||||
timestamp=datetime.datetime(2012, 7, 2, 10, 41),
|
||||
duration=0,
|
||||
@ -92,3 +92,27 @@ class TestListEvents(tests_api.TestBase):
|
||||
data = self.get('/users/user-id/resources/resource-id')
|
||||
ids = [r['resource_id'] for r in data['events']]
|
||||
self.assertEquals(['resource-id'], ids)
|
||||
|
||||
|
||||
def test_with_project(self):
|
||||
data = self.get('/projects/project1')
|
||||
self.assertEquals(1, len(data['events']))
|
||||
|
||||
def test_with_project_and_meters(self):
|
||||
data = self.get('/projects/project1/meters/instance')
|
||||
self.assertEquals(1, len(data['events']))
|
||||
|
||||
def test_with_project_and_meters_invalid(self):
|
||||
data = self.get('/projects/project2/meters/no-such-meter')
|
||||
self.assertEquals(0, len(data['events']))
|
||||
|
||||
def test_with_source_and_project(self):
|
||||
data = self.get('/sources/source1/projects/project1')
|
||||
ids = [r['resource_id'] for r in data['events']]
|
||||
self.assertEquals(['resource-id'], ids)
|
||||
|
||||
def test_with_resource(self):
|
||||
data = self.get('/projects/project1/resources/resource-id')
|
||||
ids = [r['resource_id'] for r in data['events']]
|
||||
self.assertEquals(['resource-id'], ids)
|
||||
|
||||
|
@ -111,3 +111,82 @@ class TestListResources(tests_api.TestBase):
|
||||
data = self.get('/sources/test_list_resources/resources')
|
||||
ids = [r['resource_id'] for r in data['resources']]
|
||||
self.assertEquals(['resource-id'], ids)
|
||||
|
||||
def test_with_user(self):
|
||||
counter1 = counter.Counter(
|
||||
'test_list_resources',
|
||||
'instance',
|
||||
'cumulative',
|
||||
1,
|
||||
'user-id',
|
||||
'project-id',
|
||||
'resource-id',
|
||||
timestamp=datetime.datetime(2012, 7, 2, 10, 40),
|
||||
duration=0,
|
||||
resource_metadata={'display_name': 'test-server',
|
||||
'tag': 'self.counter',
|
||||
}
|
||||
)
|
||||
msg = meter.meter_message_from_counter(counter1)
|
||||
self.conn.record_metering_data(msg)
|
||||
|
||||
counter2 = counter.Counter(
|
||||
'not-test',
|
||||
'instance',
|
||||
'cumulative',
|
||||
1,
|
||||
'user-id2',
|
||||
'project-id',
|
||||
'resource-id-alternate',
|
||||
timestamp=datetime.datetime(2012, 7, 2, 10, 41),
|
||||
duration=0,
|
||||
resource_metadata={'display_name': 'test-server',
|
||||
'tag': 'self.counter2',
|
||||
}
|
||||
)
|
||||
msg2 = meter.meter_message_from_counter(counter2)
|
||||
self.conn.record_metering_data(msg2)
|
||||
|
||||
data = self.get('/users/user-id/resources')
|
||||
ids = [r['resource_id'] for r in data['resources']]
|
||||
self.assertEquals(['resource-id'], ids)
|
||||
|
||||
def test_with_project(self):
|
||||
counter1 = counter.Counter(
|
||||
'test_list_resources',
|
||||
'instance',
|
||||
'cumulative',
|
||||
1,
|
||||
'user-id',
|
||||
'project-id',
|
||||
'resource-id',
|
||||
timestamp=datetime.datetime(2012, 7, 2, 10, 40),
|
||||
duration=0,
|
||||
resource_metadata={'display_name': 'test-server',
|
||||
'tag': 'self.counter',
|
||||
}
|
||||
)
|
||||
msg = meter.meter_message_from_counter(counter1)
|
||||
self.conn.record_metering_data(msg)
|
||||
|
||||
counter2 = counter.Counter(
|
||||
'not-test',
|
||||
'instance',
|
||||
'cumulative',
|
||||
1,
|
||||
'user-id2',
|
||||
'project-id2',
|
||||
'resource-id-alternate',
|
||||
timestamp=datetime.datetime(2012, 7, 2, 10, 41),
|
||||
duration=0,
|
||||
resource_metadata={'display_name': 'test-server',
|
||||
'tag': 'self.counter2',
|
||||
}
|
||||
)
|
||||
msg2 = meter.meter_message_from_counter(counter2)
|
||||
self.conn.record_metering_data(msg2)
|
||||
|
||||
data = self.get('/projects/project-id/resources')
|
||||
ids = [r['resource_id'] for r in data['resources']]
|
||||
self.assertEquals(['resource-id'], ids)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user