summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json19
-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.tpl55
-rw-r--r--nova/tests/functional/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild.json.tpl19
-rw-r--r--nova/tests/functional/test_api_samples.py56
-rw-r--r--nova/tests/functional/v3/api_samples/os-preserve-ephemeral-rebuild/server-action-rebuild-preserve-ephemeral-resp.json.tpl14
-rw-r--r--nova/tests/functional/v3/test_preserve_ephemeral_rebuild.py34
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')