214
214
self.assertRaises(exception.DuplicateVlan,
215
215
db.network_create_safe, ctxt, values2)
217
def test_instance_update_with_instance_id(self):
218
""" test instance_update() works when an instance id is passed """
219
ctxt = context.get_admin_context()
221
# Create an instance with some metadata
222
values = {'metadata': {'host': 'foo'},
223
'system_metadata': {'original_image_ref': 'blah'}}
224
instance = db.instance_create(ctxt, values)
226
# Update the metadata
227
values = {'metadata': {'host': 'bar'},
228
'system_metadata': {'original_image_ref': 'baz'}}
229
db.instance_update(ctxt, instance['uuid'], values)
231
# Retrieve the user-provided metadata to ensure it was successfully
233
instance_meta = db.instance_metadata_get(ctxt, instance.uuid)
234
self.assertEqual('bar', instance_meta['host'])
236
# Retrieve the system metadata to ensure it was successfully updated
237
system_meta = db.instance_system_metadata_get(ctxt, instance.uuid)
238
self.assertEqual('baz', system_meta['original_image_ref'])
240
217
def test_instance_update_with_instance_uuid(self):
241
218
""" test instance_update() works when an instance UUID is passed """
242
219
ctxt = context.get_admin_context()
905
895
self.assertEquals(item.running_vms, 0)
906
896
self.assertEquals(item.current_workload, 0)
908
def test_compute_node_create_with_reservations(self):
909
self.flags(reserved_host_memory_mb=256)
910
item = self._create_helper('host1')
911
self.assertEquals(item.free_ram_mb, 1024 - 256)
913
def test_compute_node_set(self):
914
self._create_helper('host1')
916
x = db.compute_node_utilization_set(self.ctxt, 'host1',
917
free_ram_mb=2048, free_disk_gb=4096)
918
self.assertEquals(x.free_ram_mb, 2048)
919
self.assertEquals(x.free_disk_gb, 4096)
920
self.assertEquals(x.running_vms, 0)
921
self.assertEquals(x.current_workload, 0)
923
x = db.compute_node_utilization_set(self.ctxt, 'host1', work=3)
924
self.assertEquals(x.free_ram_mb, 2048)
925
self.assertEquals(x.free_disk_gb, 4096)
926
self.assertEquals(x.current_workload, 3)
927
self.assertEquals(x.running_vms, 0)
929
x = db.compute_node_utilization_set(self.ctxt, 'host1', vms=5)
930
self.assertEquals(x.free_ram_mb, 2048)
931
self.assertEquals(x.free_disk_gb, 4096)
932
self.assertEquals(x.current_workload, 3)
933
self.assertEquals(x.running_vms, 5)
935
def test_compute_node_utilization_update(self):
936
self._create_helper('host1')
938
x = db.compute_node_utilization_update(self.ctxt, 'host1',
939
free_ram_mb_delta=-24)
940
self.assertEquals(x.free_ram_mb, 1000)
941
self.assertEquals(x.free_disk_gb, 2048)
942
self.assertEquals(x.running_vms, 0)
943
self.assertEquals(x.current_workload, 0)
945
x = db.compute_node_utilization_update(self.ctxt, 'host1',
946
free_disk_gb_delta=-48)
947
self.assertEquals(x.free_ram_mb, 1000)
948
self.assertEquals(x.free_disk_gb, 2000)
949
self.assertEquals(x.running_vms, 0)
950
self.assertEquals(x.current_workload, 0)
952
x = db.compute_node_utilization_update(self.ctxt, 'host1',
954
self.assertEquals(x.free_ram_mb, 1000)
955
self.assertEquals(x.free_disk_gb, 2000)
956
self.assertEquals(x.current_workload, 3)
957
self.assertEquals(x.running_vms, 0)
959
x = db.compute_node_utilization_update(self.ctxt, 'host1',
961
self.assertEquals(x.free_ram_mb, 1000)
962
self.assertEquals(x.free_disk_gb, 2000)
963
self.assertEquals(x.current_workload, 2)
964
self.assertEquals(x.running_vms, 0)
966
x = db.compute_node_utilization_update(self.ctxt, 'host1',
968
self.assertEquals(x.free_ram_mb, 1000)
969
self.assertEquals(x.free_disk_gb, 2000)
970
self.assertEquals(x.current_workload, 2)
971
self.assertEquals(x.running_vms, 5)
898
stats = self._stats_as_dict(item['stats'])
899
self.assertEqual(3, stats['num_instances'])
900
self.assertEqual(2, stats['num_proj_12345'])
901
self.assertEqual(3, stats['num_vm_building'])
903
def test_compute_node_get_all(self):
904
item = self._create_helper('host1')
905
nodes = db.compute_node_get_all(self.ctxt)
906
self.assertEqual(1, len(nodes))
909
self.assertEqual(2, node['vcpus'])
911
stats = self._stats_as_dict(node['stats'])
912
self.assertEqual(3, int(stats['num_instances']))
913
self.assertEqual(2, int(stats['num_proj_12345']))
914
self.assertEqual(3, int(stats['num_vm_building']))
916
def test_compute_node_update(self):
917
item = self._create_helper('host1')
919
compute_node_id = item['id']
920
stats = self._stats_as_dict(item['stats'])
922
# change some values:
923
stats['num_instances'] = 8
924
stats['num_tribbles'] = 1
929
item = db.compute_node_update(self.ctxt, compute_node_id, values)
930
stats = self._stats_as_dict(item['stats'])
932
self.assertEqual(4, item['vcpus'])
933
self.assertEqual(8, int(stats['num_instances']))
934
self.assertEqual(2, int(stats['num_proj_12345']))
935
self.assertEqual(1, int(stats['num_tribbles']))
937
def test_compute_node_stat_prune(self):
938
item = self._create_helper('host1')
939
for stat in item['stats']:
940
if stat['key'] == 'num_instances':
941
num_instance_stat = stat
945
'stats': dict(num_instances=1)
947
db.compute_node_update(self.ctxt, item['id'], values, prune_stats=True)
948
item = db.compute_node_get_all(self.ctxt)[0]
949
self.assertEqual(1, len(item['stats']))
951
stat = item['stats'][0]
952
self.assertEqual(num_instance_stat['id'], stat['id'])
953
self.assertEqual(num_instance_stat['key'], stat['key'])
954
self.assertEqual(1, int(stat['value']))
974
957
class TestIpAllocation(test.TestCase):