~cbehrens/nova/lp844155

« back to all changes in this revision

Viewing changes to nova/tests/api/openstack/test_server_actions.py

  • Committer: Tarmac
  • Author(s): Brian Lamar, Dan Prince
  • Date: 2011-08-31 22:55:34 UTC
  • mfrom: (1443.3.61 instance_states)
  • Revision ID: tarmac-20110831225534-upfhtsvcsafyql6x
Fixed and improved the way instance "states" are set. Instead of relying on solely the power_state of a VM, there are now explicitly defined VM states and VM task states which respectively define the current state of the VM and the task which is currently being performed by the VM.

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
from nova import exception
11
11
from nova import flags
12
12
from nova.api.openstack import create_instance_helper
 
13
from nova.compute import vm_states
13
14
from nova.compute import instance_types
14
 
from nova.compute import power_state
15
15
import nova.db.api
16
16
from nova import test
17
17
from nova.tests.api.openstack import common
35
35
    return _return_server
36
36
 
37
37
 
38
 
def return_server_with_power_state(power_state):
39
 
    return return_server_with_attributes(power_state=power_state)
40
 
 
41
 
 
42
 
def return_server_with_uuid_and_power_state(power_state):
43
 
    return return_server_with_power_state(power_state)
44
 
 
45
 
 
46
 
def stub_instance(id, power_state=0, metadata=None,
47
 
                  image_ref="10", flavor_id="1", name=None):
48
 
 
 
38
def return_server_with_state(vm_state, task_state=None):
 
39
    return return_server_with_attributes(vm_state=vm_state,
 
40
                                         task_state=task_state)
 
41
 
 
42
 
 
43
def return_server_with_uuid_and_state(vm_state, task_state=None):
 
44
    def _return_server(context, id):
 
45
        return return_server_with_state(vm_state, task_state)
 
46
    return _return_server
 
47
 
 
48
 
 
49
def stub_instance(id, metadata=None, image_ref="10", flavor_id="1",
 
50
                  name=None, vm_state=None, task_state=None):
49
51
    if metadata is not None:
50
52
        metadata_items = [{'key':k, 'value':v} for k, v in metadata.items()]
51
53
    else:
66
68
        "launch_index": 0,
67
69
        "key_name": "",
68
70
        "key_data": "",
69
 
        "state": power_state,
70
 
        "state_description": "",
 
71
        "vm_state": vm_state or vm_states.ACTIVE,
 
72
        "task_state": task_state,
71
73
        "memory_mb": 0,
72
74
        "vcpus": 0,
73
75
        "local_gb": 0,
175
177
            },
176
178
        }
177
179
 
178
 
        state = power_state.BUILDING
179
 
        new_return_server = return_server_with_power_state(state)
 
180
        state = vm_states.BUILDING
 
181
        new_return_server = return_server_with_state(state)
180
182
        self.stubs.Set(nova.db.api, 'instance_get', new_return_server)
181
183
        self.stubs.Set(nova.db, 'instance_get_by_uuid',
182
 
                       return_server_with_uuid_and_power_state(state))
 
184
                       return_server_with_uuid_and_state(state))
183
185
 
184
186
        req = webob.Request.blank('/v1.0/servers/1/action')
185
187
        req.method = 'POST'
242
244
        res = req.get_response(fakes.wsgi_app())
243
245
        self.assertEqual(res.status_int, 500)
244
246
 
245
 
    def test_resized_server_has_correct_status(self):
246
 
        req = self.webreq('/1', 'GET')
247
 
 
248
 
        def fake_migration_get(*args):
249
 
            return {}
250
 
 
251
 
        self.stubs.Set(nova.db, 'migration_get_by_instance_and_status',
252
 
                fake_migration_get)
253
 
        res = req.get_response(fakes.wsgi_app())
254
 
        self.assertEqual(res.status_int, 200)
255
 
        body = json.loads(res.body)
256
 
        self.assertEqual(body['server']['status'], 'RESIZE-CONFIRM')
257
 
 
258
247
    def test_confirm_resize_server(self):
259
248
        req = self.webreq('/1/action', 'POST', dict(confirmResize=None))
260
249
 
642
631
            },
643
632
        }
644
633
 
645
 
        state = power_state.BUILDING
646
 
        new_return_server = return_server_with_power_state(state)
 
634
        state = vm_states.BUILDING
 
635
        new_return_server = return_server_with_state(state)
647
636
        self.stubs.Set(nova.db.api, 'instance_get', new_return_server)
648
637
        self.stubs.Set(nova.db, 'instance_get_by_uuid',
649
 
                       return_server_with_uuid_and_power_state(state))
 
638
                       return_server_with_uuid_and_state(state))
650
639
 
651
640
        req = webob.Request.blank('/v1.1/fake/servers/1/action')
652
641
        req.method = 'POST'