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
This commit is contained in:
parent
f9aa277c62
commit
f194a5abad
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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": {
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'])
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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"""
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue