Merge "blueprint host-aggregates: improvements and clean-up"
This commit is contained in:
@@ -338,6 +338,15 @@ class AggregateDBApiTestCase(test.TestCase):
|
||||
result = _create_aggregate(metadata=None)
|
||||
self.assertEqual(result['operational_state'], 'created')
|
||||
|
||||
def test_aggregate_create_avoid_name_conflict(self):
|
||||
"""Test we can avoid conflict on deleted aggregates."""
|
||||
r1 = _create_aggregate(metadata=None)
|
||||
db.aggregate_delete(context.get_admin_context(), r1.id)
|
||||
values = {'name': r1.name, 'availability_zone': 'new_zone'}
|
||||
r2 = _create_aggregate(values=values)
|
||||
self.assertEqual(r2.name, values['name'])
|
||||
self.assertEqual(r2.availability_zone, values['availability_zone'])
|
||||
|
||||
def test_aggregate_create_raise_exist_exc(self):
|
||||
"""Ensure aggregate names are distinct."""
|
||||
_create_aggregate(metadata=None)
|
||||
@@ -383,6 +392,20 @@ class AggregateDBApiTestCase(test.TestCase):
|
||||
self.assertEqual(_get_fake_aggr_hosts(), expected.hosts)
|
||||
self.assertEqual(_get_fake_aggr_metadata(), expected.metadetails)
|
||||
|
||||
def test_aggregate_get_by_host(self):
|
||||
"""Ensure we can get an aggregate by host."""
|
||||
ctxt = context.get_admin_context()
|
||||
r1 = _create_aggregate_with_hosts(context=ctxt)
|
||||
r2 = db.aggregate_get_by_host(ctxt, 'foo.openstack.org')
|
||||
self.assertEqual(r1.id, r2.id)
|
||||
|
||||
def test_aggregate_get_by_host_not_found(self):
|
||||
"""Ensure AggregateHostNotFound is raised with unknown host."""
|
||||
ctxt = context.get_admin_context()
|
||||
_create_aggregate_with_hosts(context=ctxt)
|
||||
self.assertRaises(exception.AggregateHostNotFound,
|
||||
db.aggregate_get_by_host, ctxt, 'unknown_host')
|
||||
|
||||
def test_aggregate_delete_raise_not_found(self):
|
||||
"""Ensure AggregateNotFound is raised when deleting an aggregate."""
|
||||
ctxt = context.get_admin_context()
|
||||
|
||||
@@ -1757,10 +1757,13 @@ class XenAPIAggregateTestCase(test.TestCase):
|
||||
'Dom0IptablesFirewallDriver',
|
||||
host='host')
|
||||
xenapi_fake.reset()
|
||||
host_ref = xenapi_fake.get_all('host')[0]
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
|
||||
self.context = context.get_admin_context()
|
||||
self.conn = xenapi_conn.get_connection(False)
|
||||
self.fake_metadata = {'master_compute': 'host'}
|
||||
self.fake_metadata = {'master_compute': 'host',
|
||||
'host': xenapi_fake.get_record('host',
|
||||
host_ref)['uuid']}
|
||||
|
||||
def tearDown(self):
|
||||
super(XenAPIAggregateTestCase, self).tearDown()
|
||||
@@ -1871,7 +1874,7 @@ class XenAPIAggregateTestCase(test.TestCase):
|
||||
aggregate = self._aggregate_setup(aggr_state=aggregate_states.ACTIVE,
|
||||
hosts=['host', 'host2'],
|
||||
metadata=self.fake_metadata)
|
||||
self.assertRaises(exception.AggregateError,
|
||||
self.assertRaises(exception.InvalidAggregateAction,
|
||||
self.conn._pool.remove_from_aggregate,
|
||||
self.context, aggregate, "host")
|
||||
|
||||
|
||||
@@ -202,6 +202,12 @@ class FakeSessionForVMTests(fake.SessionBase):
|
||||
vm['is_a_template'] = False
|
||||
vm['is_control_domain'] = False
|
||||
vm['domid'] = random.randrange(1, 1 << 16)
|
||||
return vm
|
||||
|
||||
def VM_start_on(self, _1, vm_ref, host_ref, _2, _3):
|
||||
vm_rec = self.VM_start(_1, vm_ref, _2, _3)
|
||||
host_rec = fake.get_record('host', host_ref)
|
||||
vm_rec['resident_on'] = host_rec['uuid']
|
||||
|
||||
def VM_snapshot(self, session_ref, vm_ref, label):
|
||||
status = "Running"
|
||||
@@ -334,7 +340,7 @@ class FakeSessionForVolumeFailedTests(FakeSessionForVolumeTests):
|
||||
pass
|
||||
|
||||
|
||||
class FakeSessionForMigrationTests(fake.SessionBase):
|
||||
class FakeSessionForMigrationTests(FakeSessionForVMTests):
|
||||
"""Stubs out a XenAPISession for Migration tests"""
|
||||
def __init__(self, uri):
|
||||
super(FakeSessionForMigrationTests, self).__init__(uri)
|
||||
@@ -342,16 +348,6 @@ class FakeSessionForMigrationTests(fake.SessionBase):
|
||||
def VDI_get_by_uuid(self, *args):
|
||||
return 'hurr'
|
||||
|
||||
def VM_start(self, _1, ref, _2, _3):
|
||||
vm = fake.get_record('VM', ref)
|
||||
if vm['power_state'] != 'Halted':
|
||||
raise fake.Failure(['VM_BAD_POWER_STATE', ref, 'Halted',
|
||||
vm['power_state']])
|
||||
vm['power_state'] = 'Running'
|
||||
vm['is_a_template'] = False
|
||||
vm['is_control_domain'] = False
|
||||
vm['domid'] = random.randrange(1, 1 << 16)
|
||||
|
||||
def VM_set_name_label(self, *args):
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user