~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to nova/tests/compute/test_rpcapi.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-08-16 14:04:11 UTC
  • mto: This revision was merged to the branch mainline in revision 84.
  • Revision ID: package-import@ubuntu.com-20120816140411-0mr4n241wmk30t9l
Tags: upstream-2012.2~f3
ImportĀ upstreamĀ versionĀ 2012.2~f3

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
from nova.compute import rpcapi as compute_rpcapi
22
22
from nova import context
 
23
from nova import db
23
24
from nova import flags
 
25
from nova.openstack.common import jsonutils
24
26
from nova.openstack.common import rpc
25
27
from nova import test
26
28
 
31
33
class ComputeRpcAPITestCase(test.TestCase):
32
34
 
33
35
    def setUp(self):
34
 
        self.fake_instance = {
35
 
            'uuid': 'fake_uuid',
36
 
            'host': 'fake_host',
37
 
            'name': 'fake_name',
38
 
            'id': 'fake_id',
39
 
        }
 
36
        self.context = context.get_admin_context()
 
37
        inst = db.instance_create(self.context, {'host': 'fake_host',
 
38
                                                 'instance_type_id': 1})
 
39
        self.fake_instance = jsonutils.to_primitive(inst)
40
40
        super(ComputeRpcAPITestCase, self).setUp()
41
41
 
42
42
    def tearDown(self):
43
43
        super(ComputeRpcAPITestCase, self).tearDown()
44
44
 
 
45
    def test_serialized_instance_has_name(self):
 
46
        self.assertTrue('name' in self.fake_instance)
 
47
 
45
48
    def _test_compute_api(self, method, rpc_method, **kwargs):
46
49
        ctxt = context.RequestContext('fake_user', 'fake_project')
 
50
 
47
51
        if 'rpcapi_class' in kwargs:
48
52
            rpcapi_class = kwargs['rpcapi_class']
49
53
            del kwargs['rpcapi_class']
52
56
        rpcapi = rpcapi_class()
53
57
        expected_retval = 'foo' if method == 'call' else None
54
58
 
 
59
        expected_version = kwargs.pop('version', rpcapi.BASE_RPC_API_VERSION)
55
60
        expected_msg = rpcapi.make_msg(method, **kwargs)
56
61
        if 'host_param' in expected_msg['args']:
57
62
            host_param = expected_msg['args']['host_param']
59
64
            expected_msg['args']['host'] = host_param
60
65
        elif 'host' in expected_msg['args']:
61
66
            del expected_msg['args']['host']
62
 
        if 'instance' in expected_msg['args']:
63
 
            instance = expected_msg['args']['instance']
64
 
            del expected_msg['args']['instance']
65
 
            if method in ['rollback_live_migration_at_destination',
66
 
                          'pre_live_migration', 'remove_volume_connection',
67
 
                          'post_live_migration_at_destination']:
68
 
                expected_msg['args']['instance_id'] = instance['id']
69
 
            elif method == 'get_instance_disk_info':
70
 
                expected_msg['args']['instance_name'] = instance['name']
71
 
            else:
72
 
                expected_msg['args']['instance_uuid'] = instance['uuid']
73
 
        expected_msg['version'] = rpcapi.RPC_API_VERSION
 
67
        if 'destination' in expected_msg['args']:
 
68
            del expected_msg['args']['destination']
 
69
        expected_msg['version'] = expected_version
74
70
 
75
71
        cast_and_call = ['confirm_resize', 'stop_instance']
76
72
        if rpc_method == 'call' and method in cast_and_call:
77
73
            kwargs['cast'] = False
78
74
        if 'host' in kwargs:
79
75
            host = kwargs['host']
 
76
        elif 'destination' in kwargs:
 
77
            host = kwargs['destination']
80
78
        else:
81
79
            host = kwargs['instance']['host']
82
80
        expected_topic = '%s.%s' % (FLAGS.compute_topic, host)
105
103
 
106
104
    def test_add_fixed_ip_to_instance(self):
107
105
        self._test_compute_api('add_fixed_ip_to_instance', 'cast',
108
 
                instance=self.fake_instance, network_id='id')
 
106
                instance=self.fake_instance, network_id='id', version='1.8')
109
107
 
110
108
    def test_attach_volume(self):
111
109
        self._test_compute_api('attach_volume', 'cast',
112
 
                instance=self.fake_instance, volume_id='id', mountpoint='mp')
113
 
 
114
 
    def test_check_shared_storage_test_file(self):
115
 
        self._test_compute_api('check_shared_storage_test_file', 'call',
116
 
                filename='fn', host='host')
117
 
 
118
 
    def test_cleanup_shared_storage_test_file(self):
119
 
        self._test_compute_api('cleanup_shared_storage_test_file', 'cast',
120
 
                filename='fn', host='host')
121
 
 
122
 
    def test_compare_cpu(self):
123
 
        self._test_compute_api('compare_cpu', 'call', cpu_info='info',
124
 
                host='host')
 
110
                instance=self.fake_instance, volume_id='id', mountpoint='mp',
 
111
                version='1.9')
 
112
 
 
113
    def test_change_instance_metadata(self):
 
114
        self._test_compute_api('change_instance_metadata', 'cast',
 
115
                instance=self.fake_instance, diff={},
 
116
                version='1.36')
 
117
 
 
118
    def test_check_can_live_migrate_destination(self):
 
119
        self._test_compute_api('check_can_live_migrate_destination', 'call',
 
120
                version='1.10', instance=self.fake_instance,
 
121
                destination='dest', block_migration=True,
 
122
                disk_over_commit=True)
 
123
 
 
124
    def test_check_can_live_migrate_source(self):
 
125
        self._test_compute_api('check_can_live_migrate_source', 'call',
 
126
                version='1.11', instance=self.fake_instance,
 
127
                dest_check_data={"test": "data"})
125
128
 
126
129
    def test_confirm_resize_cast(self):
127
130
        self._test_compute_api('confirm_resize', 'cast',
128
 
                instance=self.fake_instance, migration_id='id', host='host')
 
131
                instance=self.fake_instance, migration_id='id', host='host',
 
132
                reservations=list('fake_res'), version='1.42')
129
133
 
130
134
    def test_confirm_resize_call(self):
131
135
        self._test_compute_api('confirm_resize', 'call',
132
 
                instance=self.fake_instance, migration_id='id', host='host')
133
 
 
134
 
    def test_create_shared_storage_test_file(self):
135
 
        self._test_compute_api('create_shared_storage_test_file', 'call',
136
 
                host='host')
 
136
                instance=self.fake_instance, migration_id='id', host='host',
 
137
                reservations=list('fake_res'), version='1.42')
137
138
 
138
139
    def test_detach_volume(self):
139
140
        self._test_compute_api('detach_volume', 'cast',
140
 
                instance=self.fake_instance, volume_id='id')
 
141
                instance=self.fake_instance, volume_id='id', version='1.13')
141
142
 
142
143
    def test_finish_resize(self):
143
144
        self._test_compute_api('finish_resize', 'cast',
144
145
                instance=self.fake_instance, migration_id='id',
145
 
                image='image', disk_info='disk_info', host='host')
 
146
                image='image', disk_info='disk_info', host='host',
 
147
                reservations=list('fake_res'), version='1.42')
146
148
 
147
149
    def test_finish_revert_resize(self):
148
150
        self._test_compute_api('finish_revert_resize', 'cast',
149
 
                instance=self.fake_instance, migration_id='id', host='host')
 
151
                instance=self.fake_instance, migration_id='id', host='host',
 
152
                reservations=list('fake_res'), version='1.42')
150
153
 
151
154
    def test_get_console_output(self):
152
155
        self._test_compute_api('get_console_output', 'call',
153
 
                instance=self.fake_instance, tail_length='tl')
 
156
                instance=self.fake_instance, tail_length='tl', version='1.7')
154
157
 
155
158
    def test_get_console_pool_info(self):
156
159
        self._test_compute_api('get_console_pool_info', 'call',
161
164
 
162
165
    def test_get_diagnostics(self):
163
166
        self._test_compute_api('get_diagnostics', 'call',
164
 
                instance=self.fake_instance)
165
 
 
166
 
    def test_get_instance_disk_info(self):
167
 
        self._test_compute_api('get_instance_disk_info', 'call',
168
 
                instance=self.fake_instance)
 
167
                instance=self.fake_instance, version='1.16')
169
168
 
170
169
    def test_get_vnc_console(self):
171
170
        self._test_compute_api('get_vnc_console', 'call',
172
 
                instance=self.fake_instance, console_type='type')
 
171
                instance=self.fake_instance, console_type='type',
 
172
                version='1.17')
173
173
 
174
174
    def test_host_maintenance_mode(self):
175
175
        self._test_compute_api('host_maintenance_mode', 'call',
181
181
 
182
182
    def test_inject_file(self):
183
183
        self._test_compute_api('inject_file', 'cast',
184
 
                instance=self.fake_instance, path='path', file_contents='fc')
 
184
                instance=self.fake_instance, path='path', file_contents='fc',
 
185
                version='1.18')
185
186
 
186
187
    def test_inject_network_info(self):
187
188
        self._test_compute_api('inject_network_info', 'cast',
188
 
                instance=self.fake_instance)
 
189
                instance=self.fake_instance, version='1.19')
189
190
 
190
 
    def test_lock_instance(self):
191
 
        self._test_compute_api('lock_instance', 'cast',
192
 
                instance=self.fake_instance)
 
191
    def test_live_migration(self):
 
192
        self._test_compute_api('live_migration', 'cast',
 
193
                instance=self.fake_instance, dest='dest',
 
194
                block_migration='blockity_block', host='tsoh', version='1.43',
 
195
                migrate_data={})
193
196
 
194
197
    def test_post_live_migration_at_destination(self):
195
198
        self._test_compute_api('post_live_migration_at_destination', 'call',
196
199
                instance=self.fake_instance, block_migration='block_migration',
197
 
                host='host')
 
200
                host='host', version='1.20')
198
201
 
199
202
    def test_pause_instance(self):
200
203
        self._test_compute_api('pause_instance', 'cast',
201
 
                instance=self.fake_instance)
 
204
                instance=self.fake_instance, version='1.5')
202
205
 
203
206
    def test_power_off_instance(self):
204
207
        self._test_compute_api('power_off_instance', 'cast',
205
 
                instance=self.fake_instance)
 
208
                instance=self.fake_instance, version='1.21')
206
209
 
207
210
    def test_power_on_instance(self):
208
211
        self._test_compute_api('power_on_instance', 'cast',
209
 
                instance=self.fake_instance)
 
212
                instance=self.fake_instance, version='1.22')
210
213
 
211
214
    def test_pre_live_migration(self):
212
215
        self._test_compute_api('pre_live_migration', 'call',
213
216
                instance=self.fake_instance, block_migration='block_migration',
214
 
                disk='disk', host='host')
 
217
                disk='disk', host='host', version='1.23')
 
218
 
 
219
    def test_prep_resize(self):
 
220
        self._test_compute_api('prep_resize', 'cast',
 
221
                instance=self.fake_instance, instance_type='fake_type',
 
222
                image='fake_image', host='host',
 
223
                reservations=list('fake_res'), version='1.42')
215
224
 
216
225
    def test_reboot_instance(self):
217
226
        self._test_compute_api('reboot_instance', 'cast',
218
 
                instance=self.fake_instance, reboot_type='type')
 
227
                instance=self.fake_instance, reboot_type='type', version='1.4')
219
228
 
220
229
    def test_rebuild_instance(self):
221
230
        self._test_compute_api('rebuild_instance', 'cast',
222
231
                instance=self.fake_instance, new_pass='pass',
223
232
                injected_files='files', image_ref='ref',
224
 
                orig_image_ref='orig_ref')
 
233
                orig_image_ref='orig_ref', version='1.24')
 
234
 
 
235
    def test_reserve_block_device_name(self):
 
236
        self._test_compute_api('reserve_block_device_name', 'call',
 
237
                instance=self.fake_instance, device='device', version='1.44')
225
238
 
226
239
    def refresh_provider_fw_rules(self):
227
240
        self._test_compute_api('refresh_provider_fw_rules', 'cast',
243
256
 
244
257
    def test_remove_fixed_ip_from_instance(self):
245
258
        self._test_compute_api('remove_fixed_ip_from_instance', 'cast',
246
 
                instance=self.fake_instance, address='addr')
 
259
                instance=self.fake_instance, address='addr', version='1.25')
247
260
 
248
261
    def test_remove_volume_connection(self):
249
262
        self._test_compute_api('remove_volume_connection', 'call',
250
 
                instance=self.fake_instance, volume_id='id', host='host')
 
263
                instance=self.fake_instance, volume_id='id', host='host',
 
264
                version='1.26')
251
265
 
252
266
    def test_rescue_instance(self):
253
267
        self._test_compute_api('rescue_instance', 'cast',
254
 
                instance=self.fake_instance, rescue_password='pw')
 
268
                instance=self.fake_instance, rescue_password='pw',
 
269
                version='1.27')
255
270
 
256
271
    def test_reset_network(self):
257
272
        self._test_compute_api('reset_network', 'cast',
258
 
                instance=self.fake_instance)
 
273
                instance=self.fake_instance, version='1.28')
259
274
 
260
275
    def test_resize_instance(self):
261
276
        self._test_compute_api('resize_instance', 'cast',
262
 
                instance=self.fake_instance, migration_id='id', image='image')
 
277
                instance=self.fake_instance, migration_id='id', image='image',
 
278
                reservations=list('fake_res'), version='1.42')
263
279
 
264
280
    def test_resume_instance(self):
265
281
        self._test_compute_api('resume_instance', 'cast',
266
 
                instance=self.fake_instance)
 
282
                instance=self.fake_instance, version='1.30')
267
283
 
268
284
    def test_revert_resize(self):
269
285
        self._test_compute_api('revert_resize', 'cast',
270
 
                instance=self.fake_instance, migration_id='id', host='host')
 
286
                instance=self.fake_instance, migration_id='id', host='host',
 
287
                reservations=list('fake_res'), version='1.42')
271
288
 
272
289
    def test_rollback_live_migration_at_destination(self):
273
290
        self._test_compute_api('rollback_live_migration_at_destination',
274
 
                'cast', instance=self.fake_instance, host='host')
 
291
                'cast', instance=self.fake_instance, host='host',
 
292
                version='1.32')
 
293
 
 
294
    def test_run_instance(self):
 
295
        self._test_compute_api('run_instance', 'cast',
 
296
                instance=self.fake_instance, host='fake_host',
 
297
                request_spec='fake_spec', filter_properties={},
 
298
                requested_networks='networks', injected_files='files',
 
299
                admin_password='pw', is_first_time=True, version='1.39')
275
300
 
276
301
    def test_set_admin_password(self):
277
 
        self._test_compute_api('set_admin_password', 'cast',
278
 
                instance=self.fake_instance, new_pass='pw')
 
302
        self._test_compute_api('set_admin_password', 'call',
 
303
                instance=self.fake_instance, new_pass='pw', version='1.33')
279
304
 
280
305
    def test_set_host_enabled(self):
281
306
        self._test_compute_api('set_host_enabled', 'call',
282
307
                enabled='enabled', host='host')
283
308
 
 
309
    def test_get_host_uptime(self):
 
310
        self._test_compute_api('get_host_uptime', 'call', host='host',
 
311
                version='1.1')
 
312
 
284
313
    def test_snapshot_instance(self):
285
314
        self._test_compute_api('snapshot_instance', 'cast',
286
315
                instance=self.fake_instance, image_id='id', image_type='type',
287
 
                backup_type='type', rotation='rotation')
 
316
                backup_type='type', rotation='rotation',
 
317
                version='1.34')
288
318
 
289
319
    def test_start_instance(self):
290
320
        self._test_compute_api('start_instance', 'cast',
291
 
                instance=self.fake_instance)
 
321
                instance=self.fake_instance, version='1.22')
292
322
 
293
323
    def test_stop_instance_cast(self):
294
324
        self._test_compute_api('stop_instance', 'cast',
295
 
                instance=self.fake_instance)
 
325
                instance=self.fake_instance, version='1.21')
296
326
 
297
327
    def test_stop_instance_call(self):
298
328
        self._test_compute_api('stop_instance', 'call',
299
 
                instance=self.fake_instance)
 
329
                instance=self.fake_instance, version='1.21')
300
330
 
301
331
    def test_suspend_instance(self):
302
332
        self._test_compute_api('suspend_instance', 'cast',
303
 
                instance=self.fake_instance)
 
333
                instance=self.fake_instance, version='1.6')
304
334
 
305
335
    def test_terminate_instance(self):
306
336
        self._test_compute_api('terminate_instance', 'cast',
307
 
                instance=self.fake_instance)
308
 
 
309
 
    def test_unlock_instance(self):
310
 
        self._test_compute_api('unlock_instance', 'cast',
311
 
                instance=self.fake_instance)
 
337
                instance=self.fake_instance, version='1.37')
312
338
 
313
339
    def test_unpause_instance(self):
314
340
        self._test_compute_api('unpause_instance', 'cast',
315
 
                instance=self.fake_instance)
 
341
                instance=self.fake_instance, version='1.5')
316
342
 
317
343
    def test_unrescue_instance(self):
318
344
        self._test_compute_api('unrescue_instance', 'cast',
319
 
                instance=self.fake_instance)
 
345
                instance=self.fake_instance, version='1.35')