70
class FloatingIpCommandsTestCase(test.TestCase):
72
super(FloatingIpCommandsTestCase, self).setUp()
73
db_fakes.stub_out_db_network_api(self.stubs)
74
self.commands = nova_manage.FloatingIpCommands()
76
def test_address_to_hosts(self):
77
def assert_loop(result, expected):
79
self.assertTrue(str(ip) in expected)
81
address_to_hosts = self.commands.address_to_hosts
83
self.assertRaises(exception.InvalidInput, address_to_hosts,
85
self.assertRaises(exception.InvalidInput, address_to_hosts,
88
expected = ["192.168.100.%s" % i for i in range(1, 3)]
89
result = address_to_hosts('192.168.100.0/30')
90
self.assertTrue(len(list(result)) == 2)
91
assert_loop(result, expected)
93
expected = ["192.168.100.%s" % i for i in range(1, 7)]
94
result = address_to_hosts('192.168.100.0/29')
95
self.assertTrue(len(list(result)) == 6)
96
assert_loop(result, expected)
98
expected = ["192.168.100.%s" % i for i in range(1, 15)]
99
result = address_to_hosts('192.168.100.0/28')
100
self.assertTrue(len(list(result)) == 14)
101
assert_loop(result, expected)
70
104
class NetworkCommandsTestCase(test.TestCase):
72
106
super(NetworkCommandsTestCase, self).setUp()
239
class ExportAuthTestCase(test.TestCase):
241
def test_export_with_noauth(self):
242
self._do_test_export()
244
def test_export_with_deprecated_auth(self):
245
self.flags(auth_strategy='deprecated')
246
self._do_test_export(noauth=False)
248
def _do_test_export(self, noauth=True):
249
self.flags(allowed_roles=['role1', 'role2'])
250
am = nova.auth.manager.AuthManager(new=True)
251
user1 = am.create_user('user1', 'a1', 's1')
252
user2 = am.create_user('user2', 'a2', 's2')
253
user3 = am.create_user('user3', 'a3', 's3')
254
proj1 = am.create_project('proj1', user1, member_users=[user1, user2])
255
proj2 = am.create_project('proj2', user2, member_users=[user2, user3])
256
am.add_role(user1, 'role1', proj1)
257
am.add_role(user1, 'role1', proj2)
258
am.add_role(user3, 'role1', proj1)
259
am.add_role(user3, 'role2', proj2)
261
commands = nova_manage.ExportCommands()
262
output = commands._get_auth_data()
265
return ('user' if noauth else 'a') + str(idx)
269
{"id": "user1", "name": "user1", 'password': pw(1)},
270
{"id": "user2", "name": "user2", 'password': pw(2)},
271
{"id": "user3", "name": "user3", 'password': pw(3)},
273
"roles": ["role1", "role2"],
274
"role_user_tenant_list": [
275
{"user_id": "user1", "role": "role1", "tenant_id": "proj1"},
276
{"user_id": "user3", "role": "role2", "tenant_id": "proj2"},
278
"user_tenant_list": [
279
{"tenant_id": "proj1", "user_id": "user1"},
280
{"tenant_id": "proj1", "user_id": "user2"},
281
{"tenant_id": "proj2", "user_id": "user2"},
282
{"tenant_id": "proj2", "user_id": "user3"},
285
{"access_key": pw(1), "secret_key": "s1", "user_id": "user1"},
286
{"access_key": pw(2), "secret_key": "s2", "user_id": "user2"},
287
{"access_key": pw(3), "secret_key": "s3", "user_id": "user3"},
290
{"description": "proj1", "id": "proj1", "name": "proj1"},
291
{"description": "proj2", "id": "proj2", "name": "proj2"},
295
self.assertDictMatch(output, expected)
273
class InstanceTypeCommandsTestCase(test.TestCase):
275
super(InstanceTypeCommandsTestCase, self).setUp()
277
values = dict(name="test.small",
283
ref = db.instance_type_create(context.get_admin_context(),
285
self.instance_type_name = ref["name"]
286
self.instance_type_id = ref["id"]
287
self.instance_type_flavorid = ref["flavorid"]
288
self.set_key = nova_manage.InstanceTypeCommands().set_key
289
self.unset_key = nova_manage.InstanceTypeCommands().unset_key
292
db.instance_type_destroy(context.get_admin_context(),
294
super(InstanceTypeCommandsTestCase, self).tearDown()
296
def _test_extra_specs_empty(self):
298
actual_specs = db.instance_type_extra_specs_get(
299
context.get_admin_context(),
300
self.instance_type_id)
301
self.assertEquals(empty_specs, actual_specs)
303
def test_extra_specs_set_unset(self):
304
expected_specs = {'k1': 'v1'}
306
self._test_extra_specs_empty()
308
self.set_key(self.instance_type_name, "k1", "v1")
309
actual_specs = db.instance_type_extra_specs_get(
310
context.get_admin_context(),
311
self.instance_type_flavorid)
312
self.assertEquals(expected_specs, actual_specs)
314
self.unset_key(self.instance_type_name, "k1")
315
self._test_extra_specs_empty()
317
def test_extra_specs_update(self):
318
expected_specs = {'k1': 'v1'}
319
updated_specs = {'k1': 'v2'}
321
self._test_extra_specs_empty()
323
self.set_key(self.instance_type_name, "k1", "v1")
324
actual_specs = db.instance_type_extra_specs_get(
325
context.get_admin_context(),
326
self.instance_type_flavorid)
327
self.assertEquals(expected_specs, actual_specs)
329
self.set_key(self.instance_type_name, "k1", "v2")
330
actual_specs = db.instance_type_extra_specs_get(
331
context.get_admin_context(),
332
self.instance_type_flavorid)
333
self.assertEquals(updated_specs, actual_specs)
335
self.unset_key(self.instance_type_name, "k1")
337
def test_extra_specs_multiple(self):
338
two_items_extra_specs = {'k1': 'v1',
341
self._test_extra_specs_empty()
343
self.set_key(self.instance_type_name, "k1", "v1")
344
self.set_key(self.instance_type_name, "k3", "v3")
345
actual_specs = db.instance_type_extra_specs_get(
346
context.get_admin_context(),
347
self.instance_type_flavorid)
348
self.assertEquals(two_items_extra_specs, actual_specs)
350
self.unset_key(self.instance_type_name, "k1")
351
self.unset_key(self.instance_type_name, "k3")