summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorPavlo Shchelokovskyy <pshchelokovskyy@mirantis.com>2015-06-04 22:26:52 +0300
committerPavlo Shchelokovskyy <pshchelokovskyy@mirantis.com>2015-07-27 14:52:45 +0300
commit4d910cbaa2713d8b35203c2683c8b3084730b7de (patch)
tree463bb4b8e8fff62c24f75695258a9d043d1ac54c /contrib
parent72f8bc4abccf22cd2f09858de9a849896fcd2fde (diff)
downloadheat-4d910cbaa2713d8b35203c2683c8b3084730b7de.tar.gz
Do not use rich server objects in servers' create
Fixed Rackspace CloudServer and its unit tests as well. AWS Instance resource is still using VolumeAttachTasks, which will be fixed in a subsequent patch. Partial-Bug: #1393268 Change-Id: Id72e1155dc0ab9b21f2859fe868b4bd090faba7a
Diffstat (limited to 'contrib')
-rw-r--r--contrib/rackspace/rackspace/resources/cloud_server.py8
-rw-r--r--contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py68
2 files changed, 48 insertions, 28 deletions
diff --git a/contrib/rackspace/rackspace/resources/cloud_server.py b/contrib/rackspace/rackspace/resources/cloud_server.py
index 9c7bf3184..1e2b763b8 100644
--- a/contrib/rackspace/rackspace/resources/cloud_server.py
+++ b/contrib/rackspace/rackspace/resources/cloud_server.py
@@ -160,12 +160,14 @@ class CloudServer(server.Server):
msg = _("Unknown RackConnect automation status: %s") % rc_status
raise exception.Error(msg)
- def check_create_complete(self, server):
+ def check_create_complete(self, server_id):
"""Check if server creation is complete and handle server configs."""
- if not super(CloudServer, self).check_create_complete(server):
+ if not super(CloudServer, self).check_create_complete(server_id):
return False
- self.client_plugin().refresh_server(server)
+ server = self.client_plugin().fetch_server(server_id)
+ if not server:
+ return False
if ('rack_connect' in self.context.roles and not
self._check_rack_connect_complete(server)):
diff --git a/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py b/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py
index c4a70051e..e5deef893 100644
--- a/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py
+++ b/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py
@@ -146,6 +146,8 @@ class CloudServersTest(common.HeatTestCase):
server = self._setup_test_server(return_server, name,
stub_create=stub_create,
exit_code=exit_code)
+ self.m.StubOutWithMock(self.fc.servers, 'get')
+ self.fc.servers.get(server.id).AndReturn(return_server)
self.m.ReplayAll()
scheduler.TaskRunner(server.create)()
return server
@@ -157,11 +159,12 @@ class CloudServersTest(common.HeatTestCase):
def test_rackconnect_deployed(self):
return_server = self.fc.servers.list()[1]
return_server.metadata = {'rackconnect_automation_status': 'DEPLOYED'}
- self.m.StubOutWithMock(return_server, 'get')
- return_server.get()
server = self._setup_test_server(return_server,
'test_rackconnect_deployed')
server.context.roles = ['rack_connect']
+ self.m.StubOutWithMock(self.fc.servers, 'get')
+ self.fc.servers.get(return_server.id).MultipleTimes(
+ ).AndReturn(return_server)
self.m.ReplayAll()
scheduler.TaskRunner(server.create)()
self.assertEqual('CREATE', server.action)
@@ -171,8 +174,9 @@ class CloudServersTest(common.HeatTestCase):
def test_rackconnect_failed(self):
return_server = self.fc.servers.list()[1]
return_server.metadata = {'rackconnect_automation_status': 'FAILED'}
- self.m.StubOutWithMock(return_server, 'get')
- return_server.get()
+ self.m.StubOutWithMock(self.fc.servers, 'get')
+ self.fc.servers.get(return_server.id).MultipleTimes(
+ ).AndReturn(return_server)
server = self._setup_test_server(return_server,
'test_rackconnect_failed')
server.context.roles = ['rack_connect']
@@ -189,8 +193,9 @@ class CloudServersTest(common.HeatTestCase):
'UNPROCESSABLE',
'rackconnect_unprocessable_reason':
'Fake reason'}
- self.m.StubOutWithMock(return_server, 'get')
- return_server.get()
+ self.m.StubOutWithMock(self.fc.servers, 'get')
+ self.fc.servers.get(return_server.id).MultipleTimes(
+ ).AndReturn(return_server)
server = self._setup_test_server(return_server,
'test_rackconnect_unprocessable')
server.context.roles = ['rack_connect']
@@ -203,8 +208,9 @@ class CloudServersTest(common.HeatTestCase):
def test_rackconnect_unknown(self):
return_server = self.fc.servers.list()[1]
return_server.metadata = {'rackconnect_automation_status': 'FOO'}
- self.m.StubOutWithMock(return_server, 'get')
- return_server.get()
+ self.m.StubOutWithMock(self.fc.servers, 'get')
+ self.fc.servers.get(return_server.id).MultipleTimes(
+ ).AndReturn(return_server)
server = self._setup_test_server(return_server,
'test_rackconnect_unknown')
server.context.roles = ['rack_connect']
@@ -228,12 +234,16 @@ class CloudServersTest(common.HeatTestCase):
def activate_status(server):
check_iterations[0] += 1
if check_iterations[0] == 1:
- server.metadata['rackconnect_automation_status'] = 'DEPLOYING'
+ return_server.metadata[
+ 'rackconnect_automation_status'] = 'DEPLOYING'
if check_iterations[0] == 2:
- server.status = 'ACTIVE'
+ return_server.status = 'ACTIVE'
if check_iterations[0] > 3:
- server.metadata['rackconnect_automation_status'] = 'DEPLOYED'
- return_server.get = activate_status.__get__(return_server)
+ return_server.metadata[
+ 'rackconnect_automation_status'] = 'DEPLOYED'
+ return return_server
+ self.patchobject(self.fc.servers, 'get',
+ side_effect=activate_status)
self.m.ReplayAll()
scheduler.TaskRunner(server.create)()
@@ -254,12 +264,15 @@ class CloudServersTest(common.HeatTestCase):
def activate_status(server):
check_iterations[0] += 1
if check_iterations[0] == 1:
- server.status = 'ACTIVE'
+ return_server.status = 'ACTIVE'
if check_iterations[0] == 2:
- server.metadata = {}
+ return_server.metadata = {}
if check_iterations[0] > 2:
- server.metadata['rackconnect_automation_status'] = 'DEPLOYED'
- return_server.get = activate_status.__get__(return_server)
+ return_server.metadata[
+ 'rackconnect_automation_status'] = 'DEPLOYED'
+ return return_server
+ self.patchobject(self.fc.servers, 'get',
+ side_effect=activate_status)
self.m.ReplayAll()
scheduler.TaskRunner(server.create)()
@@ -280,18 +293,21 @@ class CloudServersTest(common.HeatTestCase):
def activate_status(server):
check_iterations[0] += 1
if check_iterations[0] == 1:
- server.status = 'ACTIVE'
+ return_server.status = 'ACTIVE'
if check_iterations[0] == 2:
- server.metadata = {'rackconnect_automation_status': 'DEPLOYED'}
+ return_server.metadata = {
+ 'rackconnect_automation_status': 'DEPLOYED'}
if check_iterations[0] == 3:
- server.metadata = {
+ return_server.metadata = {
'rackconnect_automation_status': 'DEPLOYED',
'rax_service_level_automation': 'In Progress'}
if check_iterations[0] > 3:
- server.metadata = {
+ return_server.metadata = {
'rackconnect_automation_status': 'DEPLOYED',
'rax_service_level_automation': 'Complete'}
- return_server.get = activate_status.__get__(return_server)
+ return return_server
+ self.patchobject(self.fc.servers, 'get',
+ side_effect=activate_status)
self.m.ReplayAll()
scheduler.TaskRunner(server.create)()
@@ -303,11 +319,12 @@ class CloudServersTest(common.HeatTestCase):
return_server = self.fc.servers.list()[1]
return_server.metadata = {'rax_service_level_automation':
'Build Error'}
- self.m.StubOutWithMock(return_server, 'get')
- return_server.get()
server = self._setup_test_server(return_server,
'test_managed_cloud_build_error')
server.context.roles = ['rax_managed']
+ self.m.StubOutWithMock(self.fc.servers, 'get')
+ self.fc.servers.get(return_server.id).MultipleTimes(
+ ).AndReturn(return_server)
self.m.ReplayAll()
create = scheduler.TaskRunner(server.create)
exc = self.assertRaises(exception.ResourceFailure, create)
@@ -318,11 +335,12 @@ class CloudServersTest(common.HeatTestCase):
def test_managed_cloud_unknown(self):
return_server = self.fc.servers.list()[1]
return_server.metadata = {'rax_service_level_automation': 'FOO'}
- self.m.StubOutWithMock(return_server, 'get')
- return_server.get()
server = self._setup_test_server(return_server,
'test_managed_cloud_unknown')
server.context.roles = ['rax_managed']
+ self.m.StubOutWithMock(self.fc.servers, 'get')
+ self.fc.servers.get(return_server.id).MultipleTimes(
+ ).AndReturn(return_server)
self.m.ReplayAll()
create = scheduler.TaskRunner(server.create)
exc = self.assertRaises(exception.ResourceFailure, create)