summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorghanshyam <ghanshyam.mann@nectechnologies.in>2015-04-14 21:08:12 +0900
committerghanshyam <ghanshyam.mann@nectechnologies.in>2015-06-24 13:32:17 +0900
commit48264179fa82542d40fd07fc24b2f4e4b676beec (patch)
treefe5cf3978185ee7a30062505fc66fe5cf28aa1a3
parent5115a8d2193aee3f4ecade6d72bc7a032054de98 (diff)
downloadnova-12.0.0.0b1.tar.gz
Merge preserve_ephemeral_rebuild tests between v2 & v2.112.0.0.0b1
Currently v2 and v2.1 have separate functional tests and their corresponding sample files. As v2 and v2.1 are supposed to be identical, there is overhead to maintain two set of functional tests and sample files. We can have one set of tests which can run for both v2 and v2.1. This commit merges preserve_ephemeral_rebuild functional tests. Also verifying the response with sample file. In V2.1 os-access-ip is separate plugin where in v2 it was mixed in server plugin itself. So os-access-ip extension is enabled to run merged functional tests for both v2 and v2.1. Change-Id: Id4a2f6d27bb0c1f1930186f97af208a2b20fc542
-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')