Added support of availability zones for compute.
models.Service got additional field availability_zone and was created ZoneScheduler that make decisions based on this field. Also replaced fake 'nova' zone in EC2 cloud api.
This commit is contained in:
@@ -133,10 +133,35 @@ class CloudTestCase(test.TestCase):
|
||||
db.volume_destroy(self.context, vol1['id'])
|
||||
db.volume_destroy(self.context, vol2['id'])
|
||||
|
||||
def test_describe_availability_zones(self):
|
||||
"""Makes sure describe_availability_zones works and filters results."""
|
||||
service1 = db.service_create(self.context, {'host': 'host1_zones',
|
||||
'binary': "nova-compute",
|
||||
'topic': 'compute',
|
||||
'report_count': 0,
|
||||
'availability_zone': "zone1"})
|
||||
service2 = db.service_create(self.context, {'host': 'host2_zones',
|
||||
'binary': "nova-compute",
|
||||
'topic': 'compute',
|
||||
'report_count': 0,
|
||||
'availability_zone': "zone2"})
|
||||
result = self.cloud.describe_availability_zones(self.context)
|
||||
self.assertEqual(len(result['availabilityZoneInfo']), 3)
|
||||
db.service_destroy(self.context, service1['id'])
|
||||
db.service_destroy(self.context, service2['id'])
|
||||
|
||||
def test_describe_instances(self):
|
||||
"""Makes sure describe_instances works and filters results."""
|
||||
inst1 = db.instance_create(self.context, {'reservation_id': 'a'})
|
||||
inst2 = db.instance_create(self.context, {'reservation_id': 'a'})
|
||||
inst1 = db.instance_create(self.context, {'reservation_id': 'a',
|
||||
'host': 'host1'})
|
||||
inst2 = db.instance_create(self.context, {'reservation_id': 'a',
|
||||
'host': 'host2'})
|
||||
comp1 = db.service_create(self.context, {'host': 'host1',
|
||||
'availability_zone': 'zone1',
|
||||
'topic': "compute"})
|
||||
comp2 = db.service_create(self.context, {'host': 'host2',
|
||||
'availability_zone': 'zone2',
|
||||
'topic': "compute"})
|
||||
result = self.cloud.describe_instances(self.context)
|
||||
result = result['reservationSet'][0]
|
||||
self.assertEqual(len(result['instancesSet']), 2)
|
||||
@@ -147,8 +172,12 @@ class CloudTestCase(test.TestCase):
|
||||
self.assertEqual(len(result['instancesSet']), 1)
|
||||
self.assertEqual(result['instancesSet'][0]['instanceId'],
|
||||
instance_id)
|
||||
self.assertEqual(result['instancesSet'][0]
|
||||
['placement']['availabilityZone'], 'zone2')
|
||||
db.instance_destroy(self.context, inst1['id'])
|
||||
db.instance_destroy(self.context, inst2['id'])
|
||||
db.service_destroy(self.context, comp1['id'])
|
||||
db.service_destroy(self.context, comp2['id'])
|
||||
|
||||
def test_console_output(self):
|
||||
image_id = FLAGS.default_image
|
||||
@@ -241,6 +270,19 @@ class CloudTestCase(test.TestCase):
|
||||
LOG.debug(_("Terminating instance %s"), instance_id)
|
||||
rv = self.compute.terminate_instance(instance_id)
|
||||
|
||||
def test_describe_instances(self):
|
||||
"""Makes sure describe_instances works."""
|
||||
instance1 = db.instance_create(self.context, {'host': 'host2'})
|
||||
comp1 = db.service_create(self.context, {'host': 'host2',
|
||||
'availability_zone': 'zone1',
|
||||
'topic': "compute"})
|
||||
result = self.cloud.describe_instances(self.context)
|
||||
self.assertEqual(result['reservationSet'][0]
|
||||
['instancesSet'][0]
|
||||
['placement']['availabilityZone'], 'zone1')
|
||||
db.instance_destroy(self.context, instance1['id'])
|
||||
db.service_destroy(self.context, comp1['id'])
|
||||
|
||||
def test_instance_update_state(self):
|
||||
def instance(num):
|
||||
return {
|
||||
|
Reference in New Issue
Block a user