summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi NATSUME <natsume.takashi@lab.ntt.co.jp>2015-12-25 11:55:05 +0900
committerTakashi NATSUME <natsume.takashi@lab.ntt.co.jp>2016-01-27 02:45:22 +0000
commitf194a5abadfaf996c305e9c12aabdd53443773fb (patch)
tree20d5e69a468d39980d48da56156512ef460487a4
parentf9aa277c62a05648e030dfeaf21d653ec6a388f3 (diff)
downloadpython-novaclient-f194a5abadfaf996c305e9c12aabdd53443773fb.tar.gz
Add return-request-id-to-caller function(2/5)
Add return-request-id-to-caller function to resources and resource managers in the following files. The methods in the resource class and resource manager return a wrapper class that has 'request_ids' property. The caller can get request ids of the callee via the property. * novaclient/v2/agents.py * novaclient/v2/aggregates.py * novaclient/v2/availability_zones.py * novaclient/v2/certs.py * novaclient/v2/cloudpipe.py * novaclient/v2/fixed_ips.py * novaclient/v2/flavor_access.py * novaclient/v2/flavors.py * novaclient/v2/floating_ip_dns.py * novaclient/v2/floating_ip_pools.py * novaclient/v2/floating_ips_bulk.py * novaclient/v2/floating_ips.py * novaclient/v2/fping.py * novaclient/v2/hosts.py * novaclient/v2/hypervisors.py * novaclient/v2/images.py Co-authored-by: Ankit Agrawal <ankit11.agrawal@nttdata.com> Change-Id: Ic624d532f1a468dd45105bbb5aa6d8a730984338 Implements: blueprint return-request-id-to-caller
-rw-r--r--novaclient/tests/unit/fixture_data/aggregates.py3
-rw-r--r--novaclient/tests/unit/fixture_data/floatingips.py5
-rw-r--r--novaclient/tests/unit/fixture_data/hosts.py2
-rw-r--r--novaclient/tests/unit/fixture_data/hypervisors.py2
-rw-r--r--novaclient/tests/unit/fixture_data/images.py5
-rw-r--r--novaclient/tests/unit/v2/fakes.py25
-rw-r--r--novaclient/tests/unit/v2/test_agents.py11
-rw-r--r--novaclient/tests/unit/v2/test_aggregates.py28
-rw-r--r--novaclient/tests/unit/v2/test_availability_zone.py3
-rw-r--r--novaclient/tests/unit/v2/test_certs.py3
-rw-r--r--novaclient/tests/unit/v2/test_cloudpipe.py6
-rw-r--r--novaclient/tests/unit/v2/test_fixed_ips.py8
-rw-r--r--novaclient/tests/unit/v2/test_flavor_access.py3
-rw-r--r--novaclient/tests/unit/v2/test_flavors.py40
-rw-r--r--novaclient/tests/unit/v2/test_floating_ip_dns.py25
-rw-r--r--novaclient/tests/unit/v2/test_floating_ip_pools.py2
-rw-r--r--novaclient/tests/unit/v2/test_floating_ips.py13
-rw-r--r--novaclient/tests/unit/v2/test_floating_ips_bulk.py6
-rw-r--r--novaclient/tests/unit/v2/test_fping.py7
-rw-r--r--novaclient/tests/unit/v2/test_hosts.py16
-rw-r--r--novaclient/tests/unit/v2/test_hypervisors.py9
-rw-r--r--novaclient/tests/unit/v2/test_images.py18
-rw-r--r--novaclient/v2/agents.py9
-rw-r--r--novaclient/v2/aggregates.py16
-rw-r--r--novaclient/v2/cloudpipe.py10
-rw-r--r--novaclient/v2/fixed_ips.py12
-rw-r--r--novaclient/v2/flavor_access.py8
-rw-r--r--novaclient/v2/flavors.py28
-rw-r--r--novaclient/v2/floating_ip_dns.py59
-rw-r--r--novaclient/v2/floating_ips.py11
-rw-r--r--novaclient/v2/hosts.py13
-rw-r--r--novaclient/v2/images.py15
32 files changed, 328 insertions, 93 deletions
diff --git a/novaclient/tests/unit/fixture_data/aggregates.py b/novaclient/tests/unit/fixture_data/aggregates.py
index ed743ed1..96c3d207 100644
--- a/novaclient/tests/unit/fixture_data/aggregates.py
+++ b/novaclient/tests/unit/fixture_data/aggregates.py
@@ -49,4 +49,5 @@ class Fixture(base.Fixture):
json=get_aggregates_1,
headers=self.json_headers)
- self.requests.register_uri('DELETE', self.url(1), status_code=202)
+ self.requests.register_uri('DELETE', self.url(1), status_code=202,
+ headers=self.json_headers)
diff --git a/novaclient/tests/unit/fixture_data/floatingips.py b/novaclient/tests/unit/fixture_data/floatingips.py
index f5ad1c10..6ddc9e36 100644
--- a/novaclient/tests/unit/fixture_data/floatingips.py
+++ b/novaclient/tests/unit/fixture_data/floatingips.py
@@ -83,10 +83,11 @@ class DNSFixture(base.Fixture):
headers=self.json_headers,
status_code=205)
- self.requests.register_uri('DELETE', self.url('testdomain'))
+ self.requests.register_uri('DELETE', self.url('testdomain'),
+ headers=self.json_headers)
url = self.url('testdomain', 'entries', 'testname')
- self.requests.register_uri('DELETE', url)
+ self.requests.register_uri('DELETE', url, headers=self.json_headers)
def put_dns_testdomain_entries_testname(request, context):
body = jsonutils.loads(request.body)
diff --git a/novaclient/tests/unit/fixture_data/hosts.py b/novaclient/tests/unit/fixture_data/hosts.py
index 160eb398..7c9b3be8 100644
--- a/novaclient/tests/unit/fixture_data/hosts.py
+++ b/novaclient/tests/unit/fixture_data/hosts.py
@@ -36,7 +36,7 @@ class BaseFixture(base.Fixture):
]
}
- headers = {'Content-Type': 'application/json'}
+ headers = self.json_headers
self.requests.register_uri('GET', self.url('host'),
json=get_os_hosts_host,
diff --git a/novaclient/tests/unit/fixture_data/hypervisors.py b/novaclient/tests/unit/fixture_data/hypervisors.py
index 62952f08..229dfd75 100644
--- a/novaclient/tests/unit/fixture_data/hypervisors.py
+++ b/novaclient/tests/unit/fixture_data/hypervisors.py
@@ -27,7 +27,7 @@ class V1(base.Fixture):
]
}
- self.headers = {'Content-Type': 'application/json'}
+ self.headers = self.json_headers
self.requests.register_uri('GET', self.url(),
json=get_os_hypervisors,
diff --git a/novaclient/tests/unit/fixture_data/images.py b/novaclient/tests/unit/fixture_data/images.py
index 0eb8a14f..9498b8e3 100644
--- a/novaclient/tests/unit/fixture_data/images.py
+++ b/novaclient/tests/unit/fixture_data/images.py
@@ -30,7 +30,7 @@ class V1(base.Fixture):
]
}
- headers = {'Content-Type': 'application/json'}
+ headers = self.json_headers
self.requests.register_uri('GET', self.url(),
json=get_images,
@@ -78,7 +78,8 @@ class V1(base.Fixture):
headers=headers)
for u in (1, '1/metadata/test_key'):
- self.requests.register_uri('DELETE', self.url(u), status_code=204)
+ self.requests.register_uri('DELETE', self.url(u), status_code=204,
+ headers=headers)
class V3(V1):
diff --git a/novaclient/tests/unit/v2/fakes.py b/novaclient/tests/unit/v2/fakes.py
index ceb6672e..668ee95c 100644
--- a/novaclient/tests/unit/v2/fakes.py
+++ b/novaclient/tests/unit/v2/fakes.py
@@ -809,7 +809,7 @@ class FakeHTTPClient(base_client.HTTPClient):
if k not in ['id', 'name']:
del flavor[k]
- return (200, {}, flavors)
+ return (200, FAKE_RESPONSE_HEADERS, flavors)
def get_flavors_detail(self, **kw):
flavors = {'flavors': [
@@ -852,12 +852,12 @@ class FakeHTTPClient(base_client.HTTPClient):
if not v['os-flavor-access:is_public']
]
- return (200, {}, flavors)
+ return (200, FAKE_RESPONSE_HEADERS, flavors)
def get_flavors_1(self, **kw):
return (
200,
- {},
+ FAKE_RESPONSE_HEADERS,
{'flavor':
self.get_flavors_detail(is_public='None')[2]['flavors'][0]}
)
@@ -874,7 +874,7 @@ class FakeHTTPClient(base_client.HTTPClient):
# Diablo has no ephemeral
return (
200,
- {},
+ FAKE_RESPONSE_HEADERS,
{'flavor': {
'id': 3,
'name': '256 MB Server',
@@ -896,7 +896,7 @@ class FakeHTTPClient(base_client.HTTPClient):
# Alphanumeric flavor id are allowed.
return (
200,
- {},
+ FAKE_RESPONSE_HEADERS,
{'flavor':
self.get_flavors_detail(is_public='None')[2]['flavors'][3]}
)
@@ -910,15 +910,15 @@ class FakeHTTPClient(base_client.HTTPClient):
)
def delete_flavors_flavordelete(self, **kw):
- return (202, {}, None)
+ return (202, FAKE_RESPONSE_HEADERS, None)
def delete_flavors_2(self, **kw):
- return (202, {}, None)
+ return (202, FAKE_RESPONSE_HEADERS, None)
def post_flavors(self, body, **kw):
return (
202,
- {},
+ FAKE_RESPONSE_HEADERS,
{'flavor':
self.get_flavors_detail(is_public='None')[2]['flavors'][0]}
)
@@ -952,7 +952,7 @@ class FakeHTTPClient(base_client.HTTPClient):
required=['k1'])
return (
200,
- {},
+ FAKE_RESPONSE_HEADERS,
{'extra_specs': {"k1": "v1"}})
def post_flavors_4_os_extra_specs(self, body, **kw):
@@ -960,7 +960,7 @@ class FakeHTTPClient(base_client.HTTPClient):
return (
200,
- {},
+ FAKE_RESPONSE_HEADERS,
body)
def delete_flavors_1_os_extra_specs_k1(self, **kw):
@@ -975,12 +975,13 @@ class FakeHTTPClient(base_client.HTTPClient):
def get_flavors_2_os_flavor_access(self, **kw):
return (
- 200, {},
+ 200, FAKE_RESPONSE_HEADERS,
{'flavor_access': [{'flavor_id': '2', 'tenant_id': 'proj1'},
{'flavor_id': '2', 'tenant_id': 'proj2'}]})
def post_flavors_2_action(self, body, **kw):
- return (202, {}, self.get_flavors_2_os_flavor_access()[2])
+ return (202, FAKE_RESPONSE_HEADERS,
+ self.get_flavors_2_os_flavor_access()[2])
#
# Floating IPs
diff --git a/novaclient/tests/unit/v2/test_agents.py b/novaclient/tests/unit/v2/test_agents.py
index e7fa7d6e..8cf67c1a 100644
--- a/novaclient/tests/unit/v2/test_agents.py
+++ b/novaclient/tests/unit/v2/test_agents.py
@@ -16,6 +16,7 @@
from novaclient.tests.unit.fixture_data import agents as data
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import agents
@@ -50,7 +51,8 @@ class AgentsTest(utils.FixturedTestCase):
]
}
- headers = {'Content-Type': 'application/json'}
+ headers = {'Content-Type': 'application/json',
+ 'x-openstack-request-id': fakes.FAKE_REQUEST_ID}
self.requests.register_uri('GET', self.data_fixture.url(),
json=get_os_agents,
headers=headers)
@@ -59,6 +61,7 @@ class AgentsTest(utils.FixturedTestCase):
self.stub_hypervisors()
ags = self.cs.agents.list()
self.assert_called('GET', '/os-agents')
+ self.assert_request_id(ags, fakes.FAKE_REQUEST_ID_LIST)
for a in ags:
self.assertIsInstance(a, agents.Agent)
self.assertEqual('kvm', a.hypervisor)
@@ -67,6 +70,7 @@ class AgentsTest(utils.FixturedTestCase):
self.stub_hypervisors('xen')
ags = self.cs.agents.list('xen')
self.assert_called('GET', '/os-agents?hypervisor=xen')
+ self.assert_request_id(ags, fakes.FAKE_REQUEST_ID_LIST)
for a in ags:
self.assertIsInstance(a, agents.Agent)
self.assertEqual('xen', a.hypervisor)
@@ -76,6 +80,7 @@ class AgentsTest(utils.FixturedTestCase):
'/xxx/xxx/xxx',
'add6bb58e139be103324d04d82d8f546',
'xen')
+ self.assert_request_id(ag, fakes.FAKE_REQUEST_ID_LIST)
body = {'agent': {'url': '/xxx/xxx/xxx',
'hypervisor': 'xen',
'md5hash': 'add6bb58e139be103324d04d82d8f546',
@@ -86,7 +91,8 @@ class AgentsTest(utils.FixturedTestCase):
self.assertEqual(1, ag._info.copy()['id'])
def test_agents_delete(self):
- self.cs.agents.delete('1')
+ ret = self.cs.agents.delete('1')
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-agents/1')
def _build_example_update_body(self):
@@ -99,6 +105,7 @@ class AgentsTest(utils.FixturedTestCase):
ag = self.cs.agents.update('1', '8.0',
'/yyy/yyyy/yyyy',
'add6bb58e139be103324d04d82d8f546')
+ self.assert_request_id(ag, fakes.FAKE_REQUEST_ID_LIST)
body = self._build_example_update_body()
self.assert_called('PUT', '/os-agents/1', body)
self.assertEqual(1, ag.id)
diff --git a/novaclient/tests/unit/v2/test_aggregates.py b/novaclient/tests/unit/v2/test_aggregates.py
index 97a3ffc2..1de12823 100644
--- a/novaclient/tests/unit/v2/test_aggregates.py
+++ b/novaclient/tests/unit/v2/test_aggregates.py
@@ -16,6 +16,7 @@
from novaclient.tests.unit.fixture_data import aggregates as data
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import aggregates
@@ -28,6 +29,7 @@ class AggregatesTest(utils.FixturedTestCase):
def test_list_aggregates(self):
result = self.cs.aggregates.list()
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-aggregates')
for aggregate in result:
self.assertIsInstance(aggregate, aggregates.Aggregate)
@@ -35,24 +37,29 @@ class AggregatesTest(utils.FixturedTestCase):
def test_create_aggregate(self):
body = {"aggregate": {"name": "test", "availability_zone": "nova1"}}
aggregate = self.cs.aggregates.create("test", "nova1")
+ self.assert_request_id(aggregate, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates', body)
self.assertIsInstance(aggregate, aggregates.Aggregate)
def test_get(self):
aggregate = self.cs.aggregates.get("1")
+ self.assert_request_id(aggregate, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-aggregates/1')
self.assertIsInstance(aggregate, aggregates.Aggregate)
aggregate2 = self.cs.aggregates.get(aggregate)
+ self.assert_request_id(aggregate2, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-aggregates/1')
self.assertIsInstance(aggregate2, aggregates.Aggregate)
def test_get_details(self):
aggregate = self.cs.aggregates.get_details("1")
+ self.assert_request_id(aggregate, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-aggregates/1')
self.assertIsInstance(aggregate, aggregates.Aggregate)
aggregate2 = self.cs.aggregates.get_details(aggregate)
+ self.assert_request_id(aggregate2, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-aggregates/1')
self.assertIsInstance(aggregate2, aggregates.Aggregate)
@@ -62,10 +69,12 @@ class AggregatesTest(utils.FixturedTestCase):
body = {"aggregate": values}
result1 = aggregate.update(values)
+ self.assert_request_id(result1, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-aggregates/1', body)
self.assertIsInstance(result1, aggregates.Aggregate)
result2 = self.cs.aggregates.update(2, values)
+ self.assert_request_id(result2, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-aggregates/2', body)
self.assertIsInstance(result2, aggregates.Aggregate)
@@ -75,6 +84,7 @@ class AggregatesTest(utils.FixturedTestCase):
body = {"aggregate": values}
result3 = self.cs.aggregates.update(aggregate, values)
+ self.assert_request_id(result3, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-aggregates/1', body)
self.assertIsInstance(result3, aggregates.Aggregate)
@@ -84,14 +94,17 @@ class AggregatesTest(utils.FixturedTestCase):
body = {"add_host": {"host": "host1"}}
result1 = aggregate.add_host(host)
+ self.assert_request_id(result1, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/1/action', body)
self.assertIsInstance(result1, aggregates.Aggregate)
result2 = self.cs.aggregates.add_host("2", host)
+ self.assert_request_id(result2, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/2/action', body)
self.assertIsInstance(result2, aggregates.Aggregate)
result3 = self.cs.aggregates.add_host(aggregate, host)
+ self.assert_request_id(result3, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/1/action', body)
self.assertIsInstance(result3, aggregates.Aggregate)
@@ -101,14 +114,17 @@ class AggregatesTest(utils.FixturedTestCase):
body = {"remove_host": {"host": "host1"}}
result1 = aggregate.remove_host(host)
+ self.assert_request_id(result1, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/1/action', body)
self.assertIsInstance(result1, aggregates.Aggregate)
result2 = self.cs.aggregates.remove_host("2", host)
+ self.assert_request_id(result2, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/2/action', body)
self.assertIsInstance(result2, aggregates.Aggregate)
result3 = self.cs.aggregates.remove_host(aggregate, host)
+ self.assert_request_id(result3, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/1/action', body)
self.assertIsInstance(result3, aggregates.Aggregate)
@@ -118,24 +134,30 @@ class AggregatesTest(utils.FixturedTestCase):
body = {"set_metadata": {"metadata": metadata}}
result1 = aggregate.set_metadata(metadata)
+ self.assert_request_id(result1, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/1/action', body)
self.assertIsInstance(result1, aggregates.Aggregate)
result2 = self.cs.aggregates.set_metadata(2, metadata)
+ self.assert_request_id(result2, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/2/action', body)
self.assertIsInstance(result2, aggregates.Aggregate)
result3 = self.cs.aggregates.set_metadata(aggregate, metadata)
+ self.assert_request_id(result3, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-aggregates/1/action', body)
self.assertIsInstance(result3, aggregates.Aggregate)
def test_delete_aggregate(self):
aggregate = self.cs.aggregates.list()[0]
- aggregate.delete()
+ result1 = aggregate.delete()
+ self.assert_request_id(result1, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-aggregates/1')
- self.cs.aggregates.delete('1')
+ result2 = self.cs.aggregates.delete('1')
+ self.assert_request_id(result2, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-aggregates/1')
- self.cs.aggregates.delete(aggregate)
+ result3 = self.cs.aggregates.delete(aggregate)
+ self.assert_request_id(result3, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-aggregates/1')
diff --git a/novaclient/tests/unit/v2/test_availability_zone.py b/novaclient/tests/unit/v2/test_availability_zone.py
index a7d6d82e..ac2bf0f2 100644
--- a/novaclient/tests/unit/v2/test_availability_zone.py
+++ b/novaclient/tests/unit/v2/test_availability_zone.py
@@ -19,6 +19,7 @@ import six
from novaclient.tests.unit.fixture_data import availability_zones as data
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import availability_zones
@@ -45,6 +46,7 @@ class AvailabilityZoneTest(utils.FixturedTestCase):
def test_list_availability_zone(self):
zones = self.cs.availability_zones.list(detailed=False)
+ self.assert_request_id(zones, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-availability-zone')
for zone in zones:
@@ -65,6 +67,7 @@ class AvailabilityZoneTest(utils.FixturedTestCase):
def test_detail_availability_zone(self):
zones = self.cs.availability_zones.list(detailed=True)
+ self.assert_request_id(zones, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-availability-zone/detail')
for zone in zones:
diff --git a/novaclient/tests/unit/v2/test_certs.py b/novaclient/tests/unit/v2/test_certs.py
index 6ec2258f..d0e89958 100644
--- a/novaclient/tests/unit/v2/test_certs.py
+++ b/novaclient/tests/unit/v2/test_certs.py
@@ -14,6 +14,7 @@
from novaclient.tests.unit.fixture_data import certs as data
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import certs
@@ -27,10 +28,12 @@ class CertsTest(utils.FixturedTestCase):
def test_create_cert(self):
cert = self.cs.certs.create()
+ self.assert_request_id(cert, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-certificates')
self.assertIsInstance(cert, self.cert_type)
def test_get_root_cert(self):
cert = self.cs.certs.get()
+ self.assert_request_id(cert, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-certificates/root')
self.assertIsInstance(cert, self.cert_type)
diff --git a/novaclient/tests/unit/v2/test_cloudpipe.py b/novaclient/tests/unit/v2/test_cloudpipe.py
index 59b18c36..10a44d7c 100644
--- a/novaclient/tests/unit/v2/test_cloudpipe.py
+++ b/novaclient/tests/unit/v2/test_cloudpipe.py
@@ -16,6 +16,7 @@ import six
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import cloudpipe as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import cloudpipe
@@ -28,6 +29,7 @@ class CloudpipeTest(utils.FixturedTestCase):
def test_list_cloudpipes(self):
cp = self.cs.cloudpipe.list()
+ self.assert_request_id(cp, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-cloudpipe')
for c in cp:
self.assertIsInstance(c, cloudpipe.Cloudpipe)
@@ -35,12 +37,14 @@ class CloudpipeTest(utils.FixturedTestCase):
def test_create(self):
project = "test"
cp = self.cs.cloudpipe.create(project)
+ self.assert_request_id(cp, fakes.FAKE_REQUEST_ID_LIST)
body = {'cloudpipe': {'project_id': project}}
self.assert_called('POST', '/os-cloudpipe', body)
self.assertIsInstance(cp, six.string_types)
def test_update(self):
- self.cs.cloudpipe.update("192.168.1.1", 2345)
+ cp = self.cs.cloudpipe.update("192.168.1.1", 2345)
+ self.assert_request_id(cp, fakes.FAKE_REQUEST_ID_LIST)
body = {'configure_project': {'vpn_ip': "192.168.1.1",
'vpn_port': 2345}}
self.assert_called('PUT', '/os-cloudpipe/configure-project', body)
diff --git a/novaclient/tests/unit/v2/test_fixed_ips.py b/novaclient/tests/unit/v2/test_fixed_ips.py
index 02ba39b6..d7d74bf2 100644
--- a/novaclient/tests/unit/v2/test_fixed_ips.py
+++ b/novaclient/tests/unit/v2/test_fixed_ips.py
@@ -16,6 +16,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import fixedips as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
class FixedIpsTest(utils.FixturedTestCase):
@@ -27,6 +28,7 @@ class FixedIpsTest(utils.FixturedTestCase):
def test_get_fixed_ip(self):
info = self.cs.fixed_ips.get(fixed_ip='192.168.1.1')
+ self.assert_request_id(info, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-fixed-ips/192.168.1.1')
self.assertEqual('192.168.1.0/24', info.cidr)
self.assertEqual('192.168.1.1', info.address)
@@ -35,10 +37,12 @@ class FixedIpsTest(utils.FixturedTestCase):
def test_reserve_fixed_ip(self):
body = {"reserve": None}
- self.cs.fixed_ips.reserve(fixed_ip='192.168.1.1')
+ fixedip = self.cs.fixed_ips.reserve(fixed_ip='192.168.1.1')
+ self.assert_request_id(fixedip, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-fixed-ips/192.168.1.1/action', body)
def test_unreserve_fixed_ip(self):
body = {"unreserve": None}
- self.cs.fixed_ips.unreserve(fixed_ip='192.168.1.1')
+ fixedip = self.cs.fixed_ips.unreserve(fixed_ip='192.168.1.1')
+ self.assert_request_id(fixedip, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-fixed-ips/192.168.1.1/action', body)
diff --git a/novaclient/tests/unit/v2/test_flavor_access.py b/novaclient/tests/unit/v2/test_flavor_access.py
index 7d1bca18..c6cafdf8 100644
--- a/novaclient/tests/unit/v2/test_flavor_access.py
+++ b/novaclient/tests/unit/v2/test_flavor_access.py
@@ -26,6 +26,7 @@ class FlavorAccessTest(utils.TestCase):
def test_list_access_by_flavor_private(self):
kwargs = {'flavor': cs.flavors.get(2)}
r = cs.flavor_access.list(**kwargs)
+ self.assert_request_id(r, fakes.FAKE_REQUEST_ID_LIST)
cs.assert_called('GET', '/flavors/2/os-flavor-access')
for a in r:
self.assertIsInstance(a, flavor_access.FlavorAccess)
@@ -34,6 +35,7 @@ class FlavorAccessTest(utils.TestCase):
flavor = cs.flavors.get(2)
tenant = 'proj2'
r = cs.flavor_access.add_tenant_access(flavor, tenant)
+ self.assert_request_id(r, fakes.FAKE_REQUEST_ID_LIST)
body = {
"addTenantAccess": {
@@ -49,6 +51,7 @@ class FlavorAccessTest(utils.TestCase):
flavor = cs.flavors.get(2)
tenant = 'proj2'
r = cs.flavor_access.remove_tenant_access(flavor, tenant)
+ self.assert_request_id(r, fakes.FAKE_REQUEST_ID_LIST)
body = {
"removeTenantAccess": {
diff --git a/novaclient/tests/unit/v2/test_flavors.py b/novaclient/tests/unit/v2/test_flavors.py
index ff564b26..70eb8e40 100644
--- a/novaclient/tests/unit/v2/test_flavors.py
+++ b/novaclient/tests/unit/v2/test_flavors.py
@@ -15,6 +15,7 @@
import mock
+from novaclient import base
from novaclient import exceptions
from novaclient.tests.unit import utils
from novaclient.tests.unit.v2 import fakes
@@ -35,45 +36,53 @@ class FlavorsTest(utils.TestCase):
def test_list_flavors(self):
fl = self.cs.flavors.list()
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/detail')
for flavor in fl:
self.assertIsInstance(flavor, self.flavor_type)
def test_list_flavors_undetailed(self):
fl = self.cs.flavors.list(detailed=False)
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors')
for flavor in fl:
self.assertIsInstance(flavor, self.flavor_type)
def test_list_flavors_with_marker_limit(self):
- self.cs.flavors.list(marker=1234, limit=4)
+ fl = self.cs.flavors.list(marker=1234, limit=4)
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/detail?limit=4&marker=1234')
def test_list_flavors_with_sort_key_dir(self):
- self.cs.flavors.list(sort_key='id', sort_dir='asc')
+ fl = self.cs.flavors.list(sort_key='id', sort_dir='asc')
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET',
'/flavors/detail?sort_dir=asc&sort_key=id')
def test_list_flavors_is_public_none(self):
fl = self.cs.flavors.list(is_public=None)
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/detail?is_public=None')
for flavor in fl:
self.assertIsInstance(flavor, self.flavor_type)
def test_list_flavors_is_public_false(self):
fl = self.cs.flavors.list(is_public=False)
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/detail?is_public=False')
for flavor in fl:
self.assertIsInstance(flavor, self.flavor_type)
def test_list_flavors_is_public_true(self):
fl = self.cs.flavors.list(is_public=True)
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/detail')
for flavor in fl:
self.assertIsInstance(flavor, self.flavor_type)
def test_get_flavor_details(self):
f = self.cs.flavors.get(1)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/1')
self.assertIsInstance(f, self.flavor_type)
self.assertEqual(256, f.ram)
@@ -83,6 +92,7 @@ class FlavorsTest(utils.TestCase):
def test_get_flavor_details_alphanum_id(self):
f = self.cs.flavors.get('aa1')
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/aa1')
self.assertIsInstance(f, self.flavor_type)
self.assertEqual(128, f.ram)
@@ -92,6 +102,7 @@ class FlavorsTest(utils.TestCase):
def test_get_flavor_details_diablo(self):
f = self.cs.flavors.get(3)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/3')
self.assertIsInstance(f, self.flavor_type)
self.assertEqual(256, f.ram)
@@ -101,10 +112,12 @@ class FlavorsTest(utils.TestCase):
def test_find(self):
f = self.cs.flavors.find(ram=256)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('GET', '/flavors/detail')
self.assertEqual('256 MB Server', f.name)
f = self.cs.flavors.find(disk=0)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
self.assertEqual('128 MB Server', f.name)
self.assertRaises(exceptions.NotFound, self.cs.flavors.find,
@@ -129,6 +142,7 @@ class FlavorsTest(utils.TestCase):
def test_create(self):
f = self.cs.flavors.create("flavorcreate", 512, 1, 10, 1234,
ephemeral=10, is_public=False)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
body = self._create_body("flavorcreate", 512, 1, 10, 10, 1234, 0, 1.0,
False)
@@ -141,6 +155,7 @@ class FlavorsTest(utils.TestCase):
f = self.cs.flavors.create("flavorcreate", 512,
1, 10, flavor_id, ephemeral=10,
is_public=False)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
body = self._create_body("flavorcreate", 512, 1, 10, 10, flavor_id, 0,
1.0, False)
@@ -150,6 +165,7 @@ class FlavorsTest(utils.TestCase):
def test_create_ephemeral_ispublic_defaults(self):
f = self.cs.flavors.create("flavorcreate", 512, 1, 10, 1234)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
body = self._create_body("flavorcreate", 512, 1, 10, 0, 1234, 0,
1.0, True)
@@ -181,22 +197,26 @@ class FlavorsTest(utils.TestCase):
ephemeral=0, rxtx_factor=1.0, is_public='invalid')
def test_delete(self):
- self.cs.flavors.delete("flavordelete")
+ ret = self.cs.flavors.delete("flavordelete")
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('DELETE', '/flavors/flavordelete')
def test_delete_with_flavor_instance(self):
f = self.cs.flavors.get(2)
- self.cs.flavors.delete(f)
+ ret = self.cs.flavors.delete(f)
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('DELETE', '/flavors/2')
def test_delete_with_flavor_instance_method(self):
f = self.cs.flavors.get(2)
- f.delete()
+ ret = f.delete()
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('DELETE', '/flavors/2')
def test_set_keys(self):
f = self.cs.flavors.get(1)
- f.set_keys({'k1': 'v1'})
+ fk = f.set_keys({'k1': 'v1'})
+ self.assert_request_id(fk, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('POST', '/flavors/1/os-extra_specs',
{"extra_specs": {'k1': 'v1'}})
@@ -206,7 +226,8 @@ class FlavorsTest(utils.TestCase):
f = self.cs.flavors.get(4)
for key in valid_keys:
- f.set_keys({key: 'v4'})
+ fk = f.set_keys({key: 'v4'})
+ self.assert_request_id(fk, fakes.FAKE_REQUEST_ID_LIST)
self.cs.assert_called('POST', '/flavors/4/os-extra_specs',
{"extra_specs": {key: 'v4'}})
@@ -221,7 +242,10 @@ class FlavorsTest(utils.TestCase):
def test_unset_keys(self, mock_delete):
f = self.cs.flavors.get(1)
keys = ['k1', 'k2']
- f.unset_keys(keys)
+ mock_delete.return_value = base.TupleWithMeta(
+ (), fakes.FAKE_REQUEST_ID_LIST)
+ fu = f.unset_keys(keys)
+ self.assert_request_id(fu, fakes.FAKE_REQUEST_ID_LIST)
mock_delete.assert_has_calls([
mock.call("/flavors/1/os-extra_specs/k1"),
mock.call("/flavors/1/os-extra_specs/k2")
diff --git a/novaclient/tests/unit/v2/test_floating_ip_dns.py b/novaclient/tests/unit/v2/test_floating_ip_dns.py
index ec20e56c..8d9f912e 100644
--- a/novaclient/tests/unit/v2/test_floating_ip_dns.py
+++ b/novaclient/tests/unit/v2/test_floating_ip_dns.py
@@ -14,6 +14,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import floatingips as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import floating_ip_dns
@@ -25,6 +26,7 @@ class FloatingIPDNSDomainTest(utils.FixturedTestCase):
def test_dns_domains(self):
domainlist = self.cs.dns_domains.domains()
+ self.assert_request_id(domainlist, fakes.FAKE_REQUEST_ID_LIST)
self.assertEqual(2, len(domainlist))
for entry in domainlist:
@@ -34,17 +36,20 @@ class FloatingIPDNSDomainTest(utils.FixturedTestCase):
self.assertEqual('example.com', domainlist[1].domain)
def test_create_private_domain(self):
- self.cs.dns_domains.create_private(self.testdomain, 'test_avzone')
+ pd = self.cs.dns_domains.create_private(self.testdomain, 'test_avzone')
+ self.assert_request_id(pd, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-floating-ip-dns/%s' %
self.testdomain)
def test_create_public_domain(self):
- self.cs.dns_domains.create_public(self.testdomain, 'test_project')
+ pd = self.cs.dns_domains.create_public(self.testdomain, 'test_project')
+ self.assert_request_id(pd, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-floating-ip-dns/%s' %
self.testdomain)
def test_delete_domain(self):
- self.cs.dns_domains.delete(self.testdomain)
+ ret = self.cs.dns_domains.delete(self.testdomain)
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-floating-ip-dns/%s' %
self.testdomain)
@@ -61,6 +66,7 @@ class FloatingIPDNSEntryTest(utils.FixturedTestCase):
def test_get_dns_entries_by_ip(self):
entries = self.cs.dns_entries.get_for_ip(self.testdomain,
ip=self.testip)
+ self.assert_request_id(entries, fakes.FAKE_REQUEST_ID_LIST)
self.assertEqual(2, len(entries))
for entry in entries:
@@ -73,19 +79,22 @@ class FloatingIPDNSEntryTest(utils.FixturedTestCase):
def test_get_dns_entry_by_name(self):
entry = self.cs.dns_entries.get(self.testdomain,
self.testname)
+ self.assert_request_id(entry, fakes.FAKE_REQUEST_ID_LIST)
self.assertIsInstance(entry, floating_ip_dns.FloatingIPDNSEntry)
self.assertEqual(entry.name, self.testname)
def test_create_entry(self):
- self.cs.dns_entries.create(self.testdomain,
- self.testname,
- self.testip,
- self.testtype)
+ entry = self.cs.dns_entries.create(self.testdomain,
+ self.testname,
+ self.testip,
+ self.testtype)
+ self.assert_request_id(entry, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-floating-ip-dns/%s/entries/%s' %
(self.testdomain, self.testname))
def test_delete_entry(self):
- self.cs.dns_entries.delete(self.testdomain, self.testname)
+ ret = self.cs.dns_entries.delete(self.testdomain, self.testname)
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-floating-ip-dns/%s/entries/%s' %
(self.testdomain, self.testname))
diff --git a/novaclient/tests/unit/v2/test_floating_ip_pools.py b/novaclient/tests/unit/v2/test_floating_ip_pools.py
index a138fc28..7eac3df5 100644
--- a/novaclient/tests/unit/v2/test_floating_ip_pools.py
+++ b/novaclient/tests/unit/v2/test_floating_ip_pools.py
@@ -17,6 +17,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import floatingips as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import floating_ip_pools
@@ -27,6 +28,7 @@ class TestFloatingIPPools(utils.FixturedTestCase):
def test_list_floating_ips(self):
fl = self.cs.floating_ip_pools.list()
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-floating-ip-pools')
for f in fl:
self.assertIsInstance(f, floating_ip_pools.FloatingIPPool)
diff --git a/novaclient/tests/unit/v2/test_floating_ips.py b/novaclient/tests/unit/v2/test_floating_ips.py
index a9111394..f038ecc9 100644
--- a/novaclient/tests/unit/v2/test_floating_ips.py
+++ b/novaclient/tests/unit/v2/test_floating_ips.py
@@ -17,6 +17,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import floatingips as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import floating_ips
@@ -27,27 +28,33 @@ class FloatingIPsTest(utils.FixturedTestCase):
def test_list_floating_ips(self):
fips = self.cs.floating_ips.list()
+ self.assert_request_id(fips, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-floating-ips')
for fip in fips:
self.assertIsInstance(fip, floating_ips.FloatingIP)
def test_delete_floating_ip(self):
fl = self.cs.floating_ips.list()[0]
- fl.delete()
+ ret = fl.delete()
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-floating-ips/1')
- self.cs.floating_ips.delete(1)
+ ret = self.cs.floating_ips.delete(1)
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-floating-ips/1')
- self.cs.floating_ips.delete(fl)
+ ret = self.cs.floating_ips.delete(fl)
+ self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/os-floating-ips/1')
def test_create_floating_ip(self):
fl = self.cs.floating_ips.create()
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-floating-ips')
self.assertIsNone(fl.pool)
self.assertIsInstance(fl, floating_ips.FloatingIP)
def test_create_floating_ip_with_pool(self):
fl = self.cs.floating_ips.create('nova')
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/os-floating-ips')
self.assertEqual('nova', fl.pool)
self.assertIsInstance(fl, floating_ips.FloatingIP)
diff --git a/novaclient/tests/unit/v2/test_floating_ips_bulk.py b/novaclient/tests/unit/v2/test_floating_ips_bulk.py
index e5cefb6e..37eb2fa1 100644
--- a/novaclient/tests/unit/v2/test_floating_ips_bulk.py
+++ b/novaclient/tests/unit/v2/test_floating_ips_bulk.py
@@ -16,6 +16,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import floatingips as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import floating_ips
@@ -26,18 +27,21 @@ class FloatingIPsBulkTest(utils.FixturedTestCase):
def test_list_floating_ips_bulk(self):
fl = self.cs.floating_ips_bulk.list()
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-floating-ips-bulk')
for f in fl:
self.assertIsInstance(f, floating_ips.FloatingIP)
def test_list_floating_ips_bulk_host_filter(self):
fl = self.cs.floating_ips_bulk.list('testHost')
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-floating-ips-bulk/testHost')
for f in fl:
self.assertIsInstance(f, floating_ips.FloatingIP)
def test_create_floating_ips_bulk(self):
fl = self.cs.floating_ips_bulk.create('192.168.1.0/30')
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
body = {'floating_ips_bulk_create': {'ip_range': '192.168.1.0/30'}}
self.assert_called('POST', '/os-floating-ips-bulk', body)
self.assertEqual(fl.ip_range,
@@ -46,6 +50,7 @@ class FloatingIPsBulkTest(utils.FixturedTestCase):
def test_create_floating_ips_bulk_with_pool_and_host(self):
fl = self.cs.floating_ips_bulk.create('192.168.1.0/30', 'poolTest',
'interfaceTest')
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
body = {'floating_ips_bulk_create': {
'ip_range': '192.168.1.0/30', 'pool': 'poolTest',
'interface': 'interfaceTest'}}
@@ -59,6 +64,7 @@ class FloatingIPsBulkTest(utils.FixturedTestCase):
def test_delete_floating_ips_bulk(self):
fl = self.cs.floating_ips_bulk.delete('192.168.1.0/30')
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
body = {'ip_range': '192.168.1.0/30'}
self.assert_called('PUT', '/os-floating-ips-bulk/delete', body)
self.assertEqual(fl.floating_ips_bulk_delete, body['ip_range'])
diff --git a/novaclient/tests/unit/v2/test_fping.py b/novaclient/tests/unit/v2/test_fping.py
index 0dd7cd30..ed3416d9 100644
--- a/novaclient/tests/unit/v2/test_fping.py
+++ b/novaclient/tests/unit/v2/test_fping.py
@@ -16,6 +16,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import fping as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import fping
@@ -26,10 +27,12 @@ class FpingTest(utils.FixturedTestCase):
def test_fping_repr(self):
r = self.cs.fping.get(1)
+ self.assert_request_id(r, fakes.FAKE_REQUEST_ID_LIST)
self.assertEqual("<Fping: 1>", repr(r))
def test_list_fpings(self):
fl = self.cs.fping.list()
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-fping')
for f in fl:
self.assertIsInstance(f, fping.Fping)
@@ -38,24 +41,28 @@ class FpingTest(utils.FixturedTestCase):
def test_list_fpings_all_tenants(self):
fl = self.cs.fping.list(all_tenants=True)
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
for f in fl:
self.assertIsInstance(f, fping.Fping)
self.assert_called('GET', '/os-fping?all_tenants=1')
def test_list_fpings_exclude(self):
fl = self.cs.fping.list(exclude=['1'])
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
for f in fl:
self.assertIsInstance(f, fping.Fping)
self.assert_called('GET', '/os-fping?exclude=1')
def test_list_fpings_include(self):
fl = self.cs.fping.list(include=['1'])
+ self.assert_request_id(fl, fakes.FAKE_REQUEST_ID_LIST)
for f in fl:
self.assertIsInstance(f, fping.Fping)
self.assert_called('GET', '/os-fping?include=1')
def test_get_fping(self):
f = self.cs.fping.get(1)
+ self.assert_request_id(f, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-fping/1')
self.assertIsInstance(f, fping.Fping)
self.assertEqual("fake-project", f.project_id)
diff --git a/novaclient/tests/unit/v2/test_hosts.py b/novaclient/tests/unit/v2/test_hosts.py
index 8f77e01b..70527ce8 100644
--- a/novaclient/tests/unit/v2/test_hosts.py
+++ b/novaclient/tests/unit/v2/test_hosts.py
@@ -14,6 +14,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import hosts as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import hosts
@@ -24,12 +25,14 @@ class HostsTest(utils.FixturedTestCase):
def test_describe_resource(self):
hs = self.cs.hosts.get('host')
+ self.assert_request_id(hs, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hosts/host')
for h in hs:
self.assertIsInstance(h, hosts.Host)
def test_list_host(self):
hs = self.cs.hosts.list()
+ self.assert_request_id(hs, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hosts')
for h in hs:
self.assertIsInstance(h, hosts.Host)
@@ -37,6 +40,7 @@ class HostsTest(utils.FixturedTestCase):
def test_list_host_with_zone(self):
hs = self.cs.hosts.list('nova')
+ self.assert_request_id(hs, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hosts?zone=nova')
for h in hs:
self.assertIsInstance(h, hosts.Host)
@@ -46,6 +50,7 @@ class HostsTest(utils.FixturedTestCase):
host = self.cs.hosts.get('sample_host')[0]
values = {"status": "enabled"}
result = host.update(values)
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-hosts/sample_host', values)
self.assertIsInstance(result, hosts.Host)
@@ -53,6 +58,7 @@ class HostsTest(utils.FixturedTestCase):
host = self.cs.hosts.get('sample_host')[0]
values = {"maintenance_mode": "enable"}
result = host.update(values)
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-hosts/sample_host', values)
self.assertIsInstance(result, hosts.Host)
@@ -61,24 +67,28 @@ class HostsTest(utils.FixturedTestCase):
values = {"status": "enabled",
"maintenance_mode": "enable"}
result = host.update(values)
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('PUT', '/os-hosts/sample_host', values)
self.assertIsInstance(result, hosts.Host)
def test_host_startup(self):
host = self.cs.hosts.get('sample_host')[0]
- host.startup()
+ resp, result = host.startup()
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called(
'GET', '/os-hosts/sample_host/startup')
def test_host_reboot(self):
host = self.cs.hosts.get('sample_host')[0]
- host.reboot()
+ resp, result = host.reboot()
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called(
'GET', '/os-hosts/sample_host/reboot')
def test_host_shutdown(self):
host = self.cs.hosts.get('sample_host')[0]
- host.shutdown()
+ resp, result = host.shutdown()
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called(
'GET', '/os-hosts/sample_host/shutdown')
diff --git a/novaclient/tests/unit/v2/test_hypervisors.py b/novaclient/tests/unit/v2/test_hypervisors.py
index b297c124..a522b853 100644
--- a/novaclient/tests/unit/v2/test_hypervisors.py
+++ b/novaclient/tests/unit/v2/test_hypervisors.py
@@ -16,6 +16,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import hypervisors as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
class HypervisorsTest(utils.FixturedTestCase):
@@ -33,6 +34,7 @@ class HypervisorsTest(utils.FixturedTestCase):
dict(id=5678, hypervisor_hostname='hyper2')]
result = self.cs.hypervisors.list(False)
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors')
for idx, hyper in enumerate(result):
@@ -76,6 +78,7 @@ class HypervisorsTest(utils.FixturedTestCase):
disk_available_least=100)]
result = self.cs.hypervisors.list()
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors/detail')
for idx, hyper in enumerate(result):
@@ -87,6 +90,7 @@ class HypervisorsTest(utils.FixturedTestCase):
dict(id=5678, hypervisor_hostname='hyper2')]
result = self.cs.hypervisors.search('hyper')
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors/hyper/search')
for idx, hyper in enumerate(result):
@@ -107,6 +111,7 @@ class HypervisorsTest(utils.FixturedTestCase):
]
result = self.cs.hypervisors.search('hyper', True)
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors/hyper/servers')
for idx, hyper in enumerate(result):
@@ -133,6 +138,7 @@ class HypervisorsTest(utils.FixturedTestCase):
disk_available_least=100)
result = self.cs.hypervisors.get(1234)
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors/1234')
self.compare_to_expected(expected, result)
@@ -144,6 +150,7 @@ class HypervisorsTest(utils.FixturedTestCase):
uptime="fake uptime")
result = self.cs.hypervisors.uptime(1234)
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors/1234/uptime')
self.compare_to_expected(expected, result)
@@ -165,12 +172,14 @@ class HypervisorsTest(utils.FixturedTestCase):
)
result = self.cs.hypervisors.statistics()
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors/statistics')
self.compare_to_expected(expected, result)
def test_hypervisor_statistics_data_model(self):
result = self.cs.hypervisor_stats.statistics()
+ self.assert_request_id(result, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/os-hypervisors/statistics')
# Test for Bug #1370415, the line below used to raise AttributeError
diff --git a/novaclient/tests/unit/v2/test_images.py b/novaclient/tests/unit/v2/test_images.py
index f4a6ef86..2c90e2df 100644
--- a/novaclient/tests/unit/v2/test_images.py
+++ b/novaclient/tests/unit/v2/test_images.py
@@ -14,6 +14,7 @@
from novaclient.tests.unit.fixture_data import client
from novaclient.tests.unit.fixture_data import images as data
from novaclient.tests.unit import utils
+from novaclient.tests.unit.v2 import fakes
from novaclient.v2 import images
@@ -24,6 +25,7 @@ class ImagesTest(utils.FixturedTestCase):
def test_list_images(self):
il = self.cs.images.list()
+ self.assert_request_id(il, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/images/detail')
for i in il:
self.assertIsInstance(i, images.Image)
@@ -31,39 +33,47 @@ class ImagesTest(utils.FixturedTestCase):
def test_list_images_undetailed(self):
il = self.cs.images.list(detailed=False)
+ self.assert_request_id(il, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/images')
for i in il:
self.assertIsInstance(i, images.Image)
def test_list_images_with_marker_limit(self):
- self.cs.images.list(marker=1234, limit=4)
+ il = self.cs.images.list(marker=1234, limit=4)
+ self.assert_request_id(il, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/images/detail?limit=4&marker=1234')
def test_get_image_details(self):
i = self.cs.images.get(1)
+ self.assert_request_id(i, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('GET', '/images/1')
self.assertIsInstance(i, images.Image)
self.assertEqual(1, i.id)
self.assertEqual('CentOS 5.2', i.name)
def test_delete_image(self):
- self.cs.images.delete(1)
+ i = self.cs.images.delete(1)
+ self.assert_request_id(i, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/images/1')
def test_delete_meta(self):
- self.cs.images.delete_meta(1, {'test_key': 'test_value'})
+ i = self.cs.images.delete_meta(1, {'test_key': 'test_value'})
+ self.assert_request_id(i, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('DELETE', '/images/1/metadata/test_key')
def test_set_meta(self):
- self.cs.images.set_meta(1, {'test_key': 'test_value'})
+ i = self.cs.images.set_meta(1, {'test_key': 'test_value'})
+ self.assert_request_id(i, fakes.FAKE_REQUEST_ID_LIST)
self.assert_called('POST', '/images/1/metadata',
{"metadata": {'test_key': 'test_value'}})
def test_find(self):
i = self.cs.images.find(name="CentOS 5.2")
+ self.assert_request_id(i, fakes.FAKE_REQUEST_ID_LIST)
self.assertEqual(1, i.id)
self.assert_called('GET', '/images/1')
iml = self.cs.images.findall(status='SAVING')
+ self.assert_request_id(iml, fakes.FAKE_REQUEST_ID_LIST)
self.assertEqual(1, len(iml))
self.assertEqual('My Server Backup', iml[0].name)
diff --git a/novaclient/v2/agents.py b/novaclient/v2/agents.py
index b5372cbd..0a6c223e 100644
--- a/novaclient/v2/agents.py
+++ b/novaclient/v2/agents.py
@@ -63,5 +63,10 @@ class AgentsManager(base.ManagerWithFind):
return self._create('/os-agents', body, 'agent')
def delete(self, id):
- """Deletes an existing agent build."""
- self._delete('/os-agents/%s' % id)
+ """
+ Deletes an existing agent build.
+
+ :param id: The agent's id to delete
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self._delete('/os-agents/%s' % id)
diff --git a/novaclient/v2/aggregates.py b/novaclient/v2/aggregates.py
index 29d90c0d..9d4dff82 100644
--- a/novaclient/v2/aggregates.py
+++ b/novaclient/v2/aggregates.py
@@ -38,7 +38,12 @@ class Aggregate(base.Resource):
return self.manager.set_metadata(self, metadata)
def delete(self):
- self.manager.delete(self)
+ """
+ Delete the own aggregate.
+
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self.manager.delete(self)
class AggregateManager(base.ManagerWithFind):
@@ -91,5 +96,10 @@ class AggregateManager(base.ManagerWithFind):
body, "aggregate")
def delete(self, aggregate):
- """Delete the specified aggregate."""
- self._delete('/os-aggregates/%s' % (base.getid(aggregate)))
+ """
+ Delete the specified aggregate.
+
+ :param aggregate: The aggregate to delete
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self._delete('/os-aggregates/%s' % (base.getid(aggregate)))
diff --git a/novaclient/v2/cloudpipe.py b/novaclient/v2/cloudpipe.py
index 80991452..cf8040b1 100644
--- a/novaclient/v2/cloudpipe.py
+++ b/novaclient/v2/cloudpipe.py
@@ -25,7 +25,12 @@ class Cloudpipe(base.Resource):
return "<Cloudpipe: %s>" % self.project_id
def delete(self):
- self.manager.delete(self)
+ """
+ Delete the own cloudpipe instance
+
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self.manager.delete(self)
class CloudpipeManager(base.ManagerWithFind):
@@ -52,8 +57,9 @@ class CloudpipeManager(base.ManagerWithFind):
:param address: IP address
:param port: Port number
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
body = {'configure_project': {'vpn_ip': address,
'vpn_port': port}}
- self._update("/os-cloudpipe/configure-project", body)
+ return self._update("/os-cloudpipe/configure-project", body)
diff --git a/novaclient/v2/fixed_ips.py b/novaclient/v2/fixed_ips.py
index 7d1377ac..232ac6fd 100644
--- a/novaclient/v2/fixed_ips.py
+++ b/novaclient/v2/fixed_ips.py
@@ -40,16 +40,20 @@ class FixedIPsManager(base.Manager):
"""Reserve a Fixed IP.
:param fixed_ip: Fixed IP address to reserve
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
body = {"reserve": None}
- self.api.client.post('/os-fixed-ips/%s/action' % base.getid(fixed_ip),
- body=body)
+ resp, body = self.api.client.post('/os-fixed-ips/%s/action' %
+ base.getid(fixed_ip), body=body)
+ return self.convert_into_with_meta(body, resp)
def unreserve(self, fixed_ip):
"""Unreserve a Fixed IP.
:param fixed_ip: Fixed IP address to unreserve
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
body = {"unreserve": None}
- self.api.client.post('/os-fixed-ips/%s/action' % base.getid(fixed_ip),
- body=body)
+ resp, body = self.api.client.post('/os-fixed-ips/%s/action' %
+ base.getid(fixed_ip), body=body)
+ return self.convert_into_with_meta(body, resp)
diff --git a/novaclient/v2/flavor_access.py b/novaclient/v2/flavor_access.py
index 4e6fcd4c..73855ee9 100644
--- a/novaclient/v2/flavor_access.py
+++ b/novaclient/v2/flavor_access.py
@@ -62,7 +62,9 @@ class FlavorAccessManager(base.ManagerWithFind):
body = {action: info}
self.run_hooks('modify_body_for_action', body, **kwargs)
url = '/flavors/%s/action' % base.getid(flavor)
- _resp, body = self.api.client.post(url, body=body)
+ resp, body = self.api.client.post(url, body=body)
- return [self.resource_class(self, res)
- for res in body['flavor_access']]
+ items = [self.resource_class(self, res)
+ for res in body['flavor_access']]
+
+ return base.ListWithMeta(items, resp)
diff --git a/novaclient/v2/flavors.py b/novaclient/v2/flavors.py
index 3ce54580..43801d17 100644
--- a/novaclient/v2/flavors.py
+++ b/novaclient/v2/flavors.py
@@ -43,10 +43,14 @@ class Flavor(base.Resource):
return self._info.get("os-flavor-access:is_public", 'N/A')
def get_keys(self):
- """Get extra specs from a flavor."""
- _resp, body = self.manager.api.client.get(
+ """
+ Get extra specs from a flavor.
+
+ :returns: An instance of novaclient.base.DictWithMeta
+ """
+ resp, body = self.manager.api.client.get(
"/flavors/%s/os-extra_specs" % base.getid(self))
- return body["extra_specs"]
+ return self.manager.convert_into_with_meta(body["extra_specs"], resp)
def set_keys(self, metadata):
"""Set extra specs on a flavor.
@@ -64,14 +68,23 @@ class Flavor(base.Resource):
"""Unset extra specs on a flavor.
:param keys: A list of keys to be unset
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
+ result = base.TupleWithMeta((), None)
for k in keys:
- self.manager._delete(
+ ret = self.manager._delete(
"/flavors/%s/os-extra_specs/%s" % (base.getid(self), k))
+ result.append_request_ids(ret.request_ids)
+
+ return result
def delete(self):
- """Delete this flavor."""
- self.manager.delete(self)
+ """
+ Delete this flavor.
+
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self.manager.delete(self)
class FlavorManager(base.ManagerWithFind):
@@ -130,8 +143,9 @@ class FlavorManager(base.ManagerWithFind):
"""Delete a specific flavor.
:param flavor: The ID of the :class:`Flavor` to get.
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
- self._delete("/flavors/%s" % base.getid(flavor))
+ return self._delete("/flavors/%s" % base.getid(flavor))
def _build_body(self, name, ram, vcpus, disk, id, swap,
ephemeral, rxtx_factor, is_public):
diff --git a/novaclient/v2/floating_ip_dns.py b/novaclient/v2/floating_ip_dns.py
index 41df0f62..d6ccb8d5 100644
--- a/novaclient/v2/floating_ip_dns.py
+++ b/novaclient/v2/floating_ip_dns.py
@@ -30,21 +30,38 @@ def _quote_domain(domain):
class FloatingIPDNSDomain(base.Resource):
def delete(self):
- self.manager.delete(self.domain)
+ """
+ Delete the own Floating IP DNS domain.
+
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self.manager.delete(self.domain)
def create(self):
+ """
+ Create a Floating IP DNS domain.
+
+ :returns: An instance of novaclient.base.DictWithMeta
+ """
if self.scope == 'public':
- self.manager.create_public(self.domain, self.project)
+ return self.manager.create_public(self.domain, self.project)
else:
- self.manager.create_private(self.domain, self.availability_zone)
+ return self.manager.create_private(self.domain,
+ self.availability_zone)
def get(self):
+ """
+ Get the own Floating IP DNS domain.
+
+ :returns: An instance of novaclient.base.TupleWithMeta or
+ novaclient.base.ListWithMeta
+ """
entries = self.manager.domains()
for entry in entries:
if entry.get('domain') == self.domain:
return entry
- return None
+ return base.TupleWithMeta((), entries.request_ids)
class FloatingIPDNSDomainManager(base.Manager):
@@ -70,16 +87,32 @@ class FloatingIPDNSDomainManager(base.Manager):
body, 'domain_entry')
def delete(self, fqdomain):
- """Delete the specified domain."""
- self._delete("/os-floating-ip-dns/%s" % _quote_domain(fqdomain))
+ """
+ Delete the specified domain.
+
+ :param fqdomain: The domain to delete
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self._delete("/os-floating-ip-dns/%s" % _quote_domain(fqdomain))
class FloatingIPDNSEntry(base.Resource):
def delete(self):
- self.manager.delete(self.name, self.domain)
+ """
+ Delete the own Floating IP DNS entry.
+
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self.manager.delete(self.name, self.domain)
def create(self):
- self.manager.create(self.domain, self.name, self.ip, self.dns_type)
+ """
+ Create a Floating IP DNS entry.
+
+ :returns: :class:`FloatingIPDNSEntry`
+ """
+ return self.manager.create(self.domain, self.name, self.ip,
+ self.dns_type)
def get(self):
return self.manager.get(self.domain, self.name)
@@ -116,6 +149,10 @@ class FloatingIPDNSEntryManager(base.Manager):
(_quote_domain(domain), name), body, "dns_entry")
def delete(self, domain, name):
- """Delete entry specified by name and domain."""
- self._delete("/os-floating-ip-dns/%s/entries/%s" %
- (_quote_domain(domain), name))
+ """
+ Delete entry specified by name and domain.
+
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self._delete("/os-floating-ip-dns/%s/entries/%s" %
+ (_quote_domain(domain), name))
diff --git a/novaclient/v2/floating_ips.py b/novaclient/v2/floating_ips.py
index e3bc525b..b25bb33f 100644
--- a/novaclient/v2/floating_ips.py
+++ b/novaclient/v2/floating_ips.py
@@ -19,8 +19,12 @@ from novaclient import base
class FloatingIP(base.Resource):
def delete(self):
- """Delete this floating IP"""
- self.manager.delete(self)
+ """
+ Delete this floating IP
+
+ :returns: An instance of novaclient.base.TupleWithMeta
+ """
+ return self.manager.delete(self)
class FloatingIPManager(base.ManagerWithFind):
@@ -38,8 +42,9 @@ class FloatingIPManager(base.ManagerWithFind):
"""Delete (deallocate) a floating IP for a tenant
:param floating_ip: The floating IP address to delete.
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
- self._delete("/os-floating-ips/%s" % base.getid(floating_ip))
+ return self._delete("/os-floating-ips/%s" % base.getid(floating_ip))
def get(self, floating_ip):
"""Retrieve a floating IP"""
diff --git a/novaclient/v2/hosts.py b/novaclient/v2/hosts.py
index 0f979973..ff78fb30 100644
--- a/novaclient/v2/hosts.py
+++ b/novaclient/v2/hosts.py
@@ -69,9 +69,18 @@ class HostManager(base.ManagerWithFind):
return self._update("/os-hosts/%s" % host, values)
def host_action(self, host, action):
- """Perform an action on a host."""
+ """
+ Perform an action on a host.
+
+ :param host: The host to perform an action
+ :param actiob: The action to perform
+ :returns: A Response object and an instance of
+ novaclient.base.DictWithMeta
+ """
url = '/os-hosts/{0}/{1}'.format(host, action)
- return self.api.client.get(url)
+ resp, body = self.api.client.get(url)
+ # For compatibility, return Response object as a first return value
+ return resp, self.convert_into_with_meta(body, resp)
def list(self, zone=None):
url = '/os-hosts'
diff --git a/novaclient/v2/images.py b/novaclient/v2/images.py
index 32001b46..39e9dc06 100644
--- a/novaclient/v2/images.py
+++ b/novaclient/v2/images.py
@@ -33,8 +33,10 @@ class Image(base.Resource):
def delete(self):
"""
Delete this image.
+
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
- self.manager.delete(self)
+ return self.manager.delete(self)
class ImageManager(base.ManagerWithFind):
@@ -81,8 +83,9 @@ class ImageManager(base.ManagerWithFind):
that you didn't create.
:param image: The :class:`Image` (or its ID) to delete.
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
- self._delete("/images/%s" % base.getid(image))
+ return self._delete("/images/%s" % base.getid(image))
def set_meta(self, image, metadata):
"""
@@ -101,6 +104,12 @@ class ImageManager(base.ManagerWithFind):
:param image: The :class:`Image` to delete metadata
:param keys: A list of metadata keys to delete from the image
+ :returns: An instance of novaclient.base.TupleWithMeta
"""
+ result = base.TupleWithMeta((), None)
for k in keys:
- self._delete("/images/%s/metadata/%s" % (base.getid(image), k))
+ ret = self._delete("/images/%s/metadata/%s" %
+ (base.getid(image), k))
+ result.append_request_ids(ret.request_ids)
+
+ return result