880
879
config_drive=None, disk_config=None, reservation_id=None,
881
880
files={}, admin_pass='foo')
882
def test_server_create_with_stack_scheduler_hints(self):
883
return_server = self.fc.servers.list()[1]
884
return_server.id = '5678'
885
servers.cfg.CONF.set_override('stack_scheduler_hints', True)
886
# Unroll _create_test_server, to enable check
887
# for addition of heat ids (stack id, resource name)
888
stack_name = 'test_server_w_stack_sched_hints_s'
889
server_name = 'server_w_stack_sched_hints'
890
(t, stack) = self._get_test_template(stack_name, server_name)
892
resource_defns = t.resource_definitions(stack)
893
server = servers.Server(server_name,
894
resource_defns['WebServer'], stack)
896
self._mock_get_image_id_success('CentOS 5.2', 1,
897
server_rebuild=False)
899
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
900
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
902
self.m.StubOutWithMock(self.fc.servers, 'create')
903
self.fc.servers.create(
904
image=1, flavor=1, key_name='test',
907
userdata=mox.IgnoreArg(),
908
scheduler_hints={'heat_root_stack_id': stack.root_stack.id,
909
'heat_stack_id': stack.id,
910
'heat_stack_name': stack.name,
911
'heat_path_in_stack': [(None, stack.name)],
912
'heat_resource_name': server.name},
913
meta=None, nics=None, availability_zone=None,
914
block_device_mapping=None, block_device_mapping_v2=None,
915
config_drive=None, disk_config=None, reservation_id=None,
916
files={}, admin_pass=None).AndReturn(return_server)
919
scheduler.TaskRunner(server.create)()
920
# this makes sure the auto increment worked on server creation
921
self.assertTrue(server.id > 0)
883
925
def test_check_maximum(self):
884
926
msg = 'test_check_maximum'
885
927
self.assertIsNone(servers.Server._check_maximum(1, 1, msg))
2439
2481
return fake_interface(port, net, ip)
2483
def test_get_network_id_neutron(self):
2484
return_server = self.fc.servers.list()[3]
2485
server = self._create_test_server(return_server, 'networks_update')
2487
self.patchobject(server, 'is_using_neutron', return_value=True)
2489
net = {'port': '2a60cbaa-3d33-4af6-a9ce-83594ac546fc'}
2490
net_id = server._get_network_id(net)
2491
self.assertEqual(None, net_id)
2493
net = {'network': 'f3ef5d2f-d7ba-4b27-af66-58ca0b81e032',
2494
'fixed_ip': '1.2.3.4'}
2495
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
2496
return_value='f3ef5d2f-d7ba-4b27-af66-58ca0b81e032')
2497
net_id = server._get_network_id(net)
2498
self.assertEqual('f3ef5d2f-d7ba-4b27-af66-58ca0b81e032', net_id)
2500
net = {'network': 'private_net',
2501
'fixed_ip': '1.2.3.4'}
2502
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
2503
return_value='f3ef5d2f-d7ba-4b27-af66-58ca0b81e032')
2504
net_id = server._get_network_id(net)
2505
self.assertEqual('f3ef5d2f-d7ba-4b27-af66-58ca0b81e032', net_id)
2507
def test_get_network_id_nova(self):
2508
return_server = self.fc.servers.list()[3]
2509
server = self._create_test_server(return_server, 'networks_update')
2511
self.patchobject(server, 'is_using_neutron', return_value=False)
2513
net = {'port': '2a60cbaa-3d33-4af6-a9ce-83594ac546fc'}
2515
net_id = server._get_network_id(net)
2516
self.assertEqual(None, net_id)
2518
net = {'network': 'f3ef5d2f-d7ba-4b27-af66-58ca0b81e032',
2519
'fixed_ip': '1.2.3.4'}
2521
self.patchobject(nova.NovaClientPlugin, 'get_nova_network_id',
2522
return_value='f3ef5d2f-d7ba-4b27-af66-58ca0b81e032')
2523
net_id = server._get_network_id(net)
2524
self.assertEqual('f3ef5d2f-d7ba-4b27-af66-58ca0b81e032', net_id)
2526
net = {'network': 'private_net',
2527
'fixed_ip': '1.2.3.4'}
2528
self.patchobject(nova.NovaClientPlugin, 'get_nova_network_id',
2529
return_value='f3ef5d2f-d7ba-4b27-af66-58ca0b81e032')
2530
net_id = server._get_network_id(net)
2531
self.assertEqual('f3ef5d2f-d7ba-4b27-af66-58ca0b81e032', net_id)
2441
2533
def test_get_network_matches_no_matching(self):
2442
2534
return_server = self.fc.servers.list()[3]
2443
2535
server = self._create_test_server(return_server, 'networks_update')
2502
2594
self.create_old_net(port='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'),
2503
2595
self.create_old_net(net='gggggggg-1111-1111-1111-gggggggggggg',
2505
self.create_old_net(net='f3ef5d2f-d7ba-4b27-af66-58ca0b81e032'),
2597
self.create_old_net(net='gggggggg-1111-1111-1111-gggggggggggg'),
2506
2598
self.create_old_net(port='dddddddd-dddd-dddd-dddd-dddddddddddd'),
2507
2599
self.create_old_net(uuid='gggggggg-1111-1111-1111-gggggggggggg',
2514
2606
self.create_fake_iface('cccccccc-cccc-cccc-cccc-cccccccccccc',
2515
2607
nets[2]['network'], '10.0.0.11'),
2516
2608
self.create_fake_iface(nets[3]['port'],
2517
'f3ef5d2f-d7ba-4b27-af66-58ca0b81e032',
2609
'gggggggg-1111-1111-1111-gggggggggggg',
2519
2611
self.create_fake_iface(nets[0]['port'],
2520
2612
'gggggggg-1111-1111-1111-gggggggggggg',
2550
2642
'fixed_ip': None,
2551
2643
'uuid': '0da8adbf-a7e2-4c59-a511-96b03d2da0d7'}]
2645
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
2646
return_value='gggggggg-1111-1111-1111-gggggggggggg')
2553
2648
server.update_networks_matching_iface_port(nets, interfaces)
2554
2649
self.assertEqual(expected, nets)
2616
2711
return_server.interface_attach(None, new_networks[0]['network'],
2617
2712
new_networks[0]['fixed_ip']).AndReturn(
2714
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
2715
return_value='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
2619
2716
self.stub_NetworkConstraint_validate()
2620
2717
self.m.ReplayAll()
2712
2809
return_server.interface_detach(
2713
2810
poor_interfaces[3].port_id).InAnyOrder().AndReturn(None)
2812
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
2813
return_value='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
2715
2814
self.m.StubOutWithMock(return_server, 'interface_attach')
2716
2815
return_server.interface_attach(
2717
2816
new_networks[1]['port'], None, None).AndReturn(None)