diff options
-rw-r--r-- | doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json | 19 | ||||
-rw-r--r-- | doc/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json (renamed from doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json) | 4 | ||||
-rw-r--r-- | nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json.tpl | 55 | ||||
-rw-r--r-- | nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json.tpl | 19 | ||||
-rw-r--r-- | nova/tests/functional/test_api_samples.py | 56 | ||||
-rw-r--r-- | nova/tests/functional/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json.tpl | 14 | ||||
-rw-r--r-- | nova/tests/functional/v3/test_preserve_ephemeral_rebuild.py | 34 |
7 files changed, 40 insertions, 161 deletions
diff --git a/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json b/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json deleted file mode 100644 index 99a95cde5b..0000000000 --- a/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "rebuild" : { - "imageRef" : "http://openstack.example.com/v2/32278/images/70a599e0-31e7-49b7-b260-868f441e862b", - "name" : "new-server-test", - "adminPass" : "seekr3t", - "accessIPv4" : "1.2.3.4", - "accessIPv6" : "fe80::100", - "metadata" : { - "meta var" : "meta val" - }, - "personality" : [ - { - "path" : "/etc/banner.txt", - "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" - } - ], - "preserve_ephemeral": true - } -}
\ No newline at end of file diff --git a/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json b/doc/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json index bd44136f0a..f8098e8b9d 100644 --- a/doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json +++ b/doc/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json @@ -1,7 +1,7 @@ { "server": { "accessIPv4": "1.2.3.4", - "accessIPv6": "fe80::100", + "accessIPv6": "80fe::", "addresses": { "private": [ { @@ -43,7 +43,7 @@ } ], "metadata": { - "meta var": "meta val" + "meta_var": "meta_val" }, "name": "foobar", "progress": 0, diff --git a/nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json.tpl b/nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json.tpl deleted file mode 100644 index cd7fdcf2d3..0000000000 --- a/nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-resp.json.tpl +++ /dev/null @@ -1,55 +0,0 @@ -{ - "server": { - "accessIPv4": "%(ip)s", - "accessIPv6": "%(ip6)s", - "addresses": { - "private": [ - { - "addr": "%(ip)s", - "version": 4 - } - ] - }, - "adminPass": "%(password)s", - "created": "%(isotime)s", - "flavor": { - "id": "1", - "links": [ - { - "href": "%(host)s/openstack/flavors/1", - "rel": "bookmark" - } - ] - }, - "hostId": "%(hostid)s", - "id": "%(uuid)s", - "image": { - "id": "%(uuid)s", - "links": [ - { - "href": "%(host)s/openstack/images/%(uuid)s", - "rel": "bookmark" - } - ] - }, - "links": [ - { - "href": "%(host)s/v2/openstack/servers/%(uuid)s", - "rel": "self" - }, - { - "href": "%(host)s/openstack/servers/%(uuid)s", - "rel": "bookmark" - } - ], - "metadata": { - "meta var": "meta val" - }, - "name": "%(name)s", - "progress": 0, - "status": "ACTIVE", - "tenant_id": "openstack", - "updated": "%(isotime)s", - "user_id": "fake" - } -} diff --git a/nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json.tpl b/nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json.tpl deleted file mode 100644 index 2f06fd7008..0000000000 --- a/nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json.tpl +++ /dev/null @@ -1,19 +0,0 @@ -{ - "rebuild" : { - "imageRef" : "%(host)s/v2/32278/images/%(uuid)s", - "name" : "%(name)s", - "adminPass" : "%(pass)s", - "accessIPv4" : "%(ip)s", - "accessIPv6" : "%(ip6)s", - "metadata" : { - "meta var" : "meta val" - }, - "personality" : [ - { - "path" : "/etc/banner.txt", - "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" - } - ], - "preserve_ephemeral": %(preserve_ephemeral)s - } -} diff --git a/nova/tests/functional/test_api_samples.py b/nova/tests/functional/test_api_samples.py index ce309fb5ff..c7ea1017b0 100644 --- a/nova/tests/functional/test_api_samples.py +++ b/nova/tests/functional/test_api_samples.py @@ -26,7 +26,6 @@ import testtools from nova.api.metadata import password # Import extensions to pull in osapi_compute_extension CONF option used below. -from nova.compute import api as compute_api from nova.console import manager as console_manager # noqa - only for cfg from nova.network.neutronv2 import api as neutron_api # noqa - only for cfg from nova import test @@ -630,61 +629,6 @@ class ExtendedAvailabilityZoneJsonTests(ServersSampleBase): self._verify_response('servers-detail-resp', subs, response, 200) -class PreserveEphemeralOnRebuildJsonTest(ServersSampleBase): - extension_name = ('nova.api.openstack.compute.contrib.' - 'preserve_ephemeral_rebuild.' - 'Preserve_ephemeral_rebuild') - - def _test_server_action(self, uuid, action, - subs=None, resp_tpl=None, code=202): - subs = subs or {} - subs.update({'action': action}) - response = self._do_post('servers/%s/action' % uuid, - 'server-action-%s' % action.lower(), - subs) - if resp_tpl: - subs.update(self._get_regexes()) - self._verify_response(resp_tpl, subs, response, code) - else: - self.assertEqual(response.status_code, code) - self.assertEqual(response.content, "") - - def test_rebuild_server_preserve_ephemeral_false(self): - uuid = self._post_server() - image = self.api.get_images()[0]['id'] - subs = {'host': self._get_host(), - 'uuid': image, - 'name': 'foobar', - 'pass': 'seekr3t', - 'ip': '1.2.3.4', - 'ip6': 'fe80::100', - 'hostid': '[a-f0-9]+', - 'preserve_ephemeral': 'false'} - self._test_server_action(uuid, 'rebuild', subs, - 'server-action-rebuild-resp') - - def test_rebuild_server_preserve_ephemeral_true(self): - image = self.api.get_images()[0]['id'] - subs = {'host': self._get_host(), - 'uuid': image, - 'name': 'new-server-test', - 'pass': 'seekr3t', - 'ip': '1.2.3.4', - 'ip6': 'fe80::100', - 'hostid': '[a-f0-9]+', - 'preserve_ephemeral': 'true'} - - def fake_rebuild(self_, context, instance, image_href, admin_password, - **kwargs): - self.assertTrue(kwargs['preserve_ephemeral']) - self.stubs.Set(compute_api.API, 'rebuild', fake_rebuild) - - instance_uuid = self._post_server() - response = self._do_post('servers/%s/action' % instance_uuid, - 'server-action-rebuild', subs) - self.assertEqual(response.status_code, 202) - - class ServerGroupQuotas_LimitsSampleJsonTest(LimitsSampleJsonTest): sample_dir = None extension_name = ("nova.api.openstack.compute.contrib." diff --git a/nova/tests/functional/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json.tpl b/nova/tests/functional/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json.tpl index 3c44eb8d7e..ae6fdfc00c 100644 --- a/nova/tests/functional/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json.tpl +++ b/nova/tests/functional/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json.tpl @@ -1,12 +1,12 @@ { "server": { + "accessIPv4": "%(access_ip_v4)s", + "accessIPv6": "%(access_ip_v6)s", "addresses": { "private": [ { "addr": "%(ip)s", - "version": 4, - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed" + "version": 4 } ] }, @@ -16,7 +16,7 @@ "id": "1", "links": [ { - "href": "%(host)s/flavors/1", + "href": "%(host)s/openstack/flavors/1", "rel": "bookmark" } ] @@ -27,18 +27,18 @@ "id": "%(uuid)s", "links": [ { - "href": "%(host)s/images/%(uuid)s", + "href": "%(host)s/openstack/images/%(uuid)s", "rel": "bookmark" } ] }, "links": [ { - "href": "%(host)s/v3/servers/%(uuid)s", + "href": "%(host)s/v2/openstack/servers/%(uuid)s", "rel": "self" }, { - "href": "%(host)s/servers/%(uuid)s", + "href": "%(host)s/openstack/servers/%(uuid)s", "rel": "bookmark" } ], diff --git a/nova/tests/functional/v3/test_preserve_ephemeral_rebuild.py b/nova/tests/functional/v3/test_preserve_ephemeral_rebuild.py index 61ad20672b..235ff6bdaa 100644 --- a/nova/tests/functional/v3/test_preserve_ephemeral_rebuild.py +++ b/nova/tests/functional/v3/test_preserve_ephemeral_rebuild.py @@ -12,15 +12,31 @@ # License for the specific language governing permissions and limitations # under the License. +from oslo_config import cfg + from nova.compute import api as compute_api from nova.tests.functional.v3 import test_servers from nova.tests.unit.image import fake +CONF = cfg.CONF +CONF.import_opt('osapi_compute_extension', + 'nova.api.openstack.compute.extensions') + class PreserveEphemeralOnRebuildJsonTest(test_servers.ServersSampleBase): extension_name = 'os-preserve-ephemeral-rebuild' + extra_extensions_to_load = ["os-access-ips"] + _api_version = 'v2' + + def _get_flags(self): + f = super(PreserveEphemeralOnRebuildJsonTest, self)._get_flags() + f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] + f['osapi_compute_extension'].append( + 'nova.api.openstack.compute.contrib.preserve_ephemeral_rebuild.' + 'Preserve_ephemeral_rebuild') + return f - def _test_server_rebuild_preserve_ephemeral(self, value): + def _test_server_rebuild_preserve_ephemeral(self, value, resp_tpl=None): uuid = self._post_server() image = fake.get_valid_image_id() subs = {'host': self._get_host(), @@ -31,20 +47,32 @@ class PreserveEphemeralOnRebuildJsonTest(test_servers.ServersSampleBase): 'preserve_ephemeral': str(value).lower(), 'action': 'rebuild', 'glance_host': self._get_glance_host(), + 'access_ip_v4': '1.2.3.4', + 'access_ip_v6': '80fe::' } + old_rebuild = compute_api.API.rebuild def fake_rebuild(self_, context, instance, image_href, admin_password, files_to_inject=None, **kwargs): self.assertEqual(kwargs['preserve_ephemeral'], value) + if resp_tpl: + return old_rebuild(self_, context, instance, image_href, + admin_password, files_to_inject=None, + **kwargs) self.stubs.Set(compute_api.API, 'rebuild', fake_rebuild) response = self._do_post('servers/%s/action' % uuid, 'server-action-rebuild-preserve-ephemeral', subs) - self.assertEqual(response.status_code, 202) + if resp_tpl: + subs.update(self._get_regexes()) + self._verify_response(resp_tpl, subs, response, 202) + else: + self.assertEqual(response.status_code, 202) def test_server_rebuild_preserve_ephemeral_true(self): self._test_server_rebuild_preserve_ephemeral(True) def test_server_rebuild_preserve_ephemeral_false(self): - self._test_server_rebuild_preserve_ephemeral(False) + self._test_server_rebuild_preserve_ephemeral(False, + resp_tpl='server-action-rebuild-preserve-ephemeral-resp') |