Merge pull request #150 from ramielrowe/master
Including metadata on reconciler instance when verify fails
This commit is contained in:
commit
a2c2c05022
@ -141,7 +141,8 @@ class Reconciler(object):
|
||||
reconciled = False
|
||||
region = self._region_for_usage(exists)
|
||||
try:
|
||||
instance = self.client.get_instance(region, exists.instance)
|
||||
instance = self.client.get_instance(region, exists.instance,
|
||||
get_metadata=True)
|
||||
match_code = self._fields_match(exists, instance)
|
||||
if match_code == 0:
|
||||
self._reconcile_instance(exists, self.client.src_str,
|
||||
|
@ -233,7 +233,8 @@ class ReconcilerTestCase(unittest.TestCase):
|
||||
exists = self._fake_usage(is_exists=True, mock_deployment=True)
|
||||
launched_at = exists.launched_at
|
||||
rec_inst = self._fake_reconciler_instance(launched_at=launched_at)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1).AndReturn(rec_inst)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1,
|
||||
get_metadata=True).AndReturn(rec_inst)
|
||||
reconcile_vals = {
|
||||
'instance': exists.instance,
|
||||
'launched_at': exists.launched_at,
|
||||
@ -262,7 +263,8 @@ class ReconcilerTestCase(unittest.TestCase):
|
||||
rec_inst = self._fake_reconciler_instance(launched_at=launched_at,
|
||||
deleted=True,
|
||||
deleted_at=deleted_at)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1).AndReturn(rec_inst)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1,
|
||||
get_metadata=True).AndReturn(rec_inst)
|
||||
reconcile_vals = {
|
||||
'instance': exists.instance,
|
||||
'launched_at': exists.launched_at,
|
||||
@ -297,7 +299,8 @@ class ReconcilerTestCase(unittest.TestCase):
|
||||
rec_inst = self._fake_reconciler_instance(launched_at=launched_at,
|
||||
deleted=True,
|
||||
deleted_at=beginning_d+1)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1).AndReturn(rec_inst)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1,
|
||||
get_metadata=True).AndReturn(rec_inst)
|
||||
self.mox.ReplayAll()
|
||||
result = self.reconciler.failed_validation(exists)
|
||||
self.assertFalse(result)
|
||||
@ -315,7 +318,8 @@ class ReconcilerTestCase(unittest.TestCase):
|
||||
exists.deployment().AndReturn(deployment)
|
||||
deployment.name = 'RegionOne.prod.cell1'
|
||||
rec_inst = self._fake_reconciler_instance(launched_at=launched_at)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1).AndReturn(rec_inst)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1,
|
||||
get_metadata=True).AndReturn(rec_inst)
|
||||
self.mox.ReplayAll()
|
||||
result = self.reconciler.failed_validation(exists)
|
||||
self.assertFalse(result)
|
||||
@ -333,7 +337,8 @@ class ReconcilerTestCase(unittest.TestCase):
|
||||
exists.deployment().AndReturn(deployment)
|
||||
deployment.name = 'RegionOne.prod.cell1'
|
||||
ex = exceptions.NotFound()
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1).AndRaise(ex)
|
||||
self.client.get_instance('RegionOne', INSTANCE_ID_1,
|
||||
get_metadata=True).AndRaise(ex)
|
||||
self.mox.ReplayAll()
|
||||
result = self.reconciler.failed_validation(exists)
|
||||
self.assertFalse(result)
|
||||
@ -462,6 +467,45 @@ class NovaJSONBridgeClientTestCase(unittest.TestCase):
|
||||
self.assertTrue(instance['deleted'])
|
||||
self.mox.VerifyAll()
|
||||
|
||||
def _fake_metadata(self):
|
||||
metadata = [
|
||||
{'key': 'image_org.openstack__1__architecture',
|
||||
'value': DEFAULT_OS_ARCH},
|
||||
{'key': 'image_org.openstack__1__os_distro',
|
||||
'value': DEFAULT_OS_DISTRO},
|
||||
{'key': 'image_org.openstack__1__os_version',
|
||||
'value': DEFAULT_OS_VERSION},
|
||||
{'key': 'image_com.rackspace__1__options',
|
||||
'value': DEFAULT_RAX_OPTIONS},
|
||||
]
|
||||
return metadata
|
||||
|
||||
def test_get_instance_with_metadata(self):
|
||||
launched_at = datetime.datetime.utcnow() - datetime.timedelta(minutes=5)
|
||||
launched_at = str(launched_at)
|
||||
terminated_at = str(datetime.datetime.utcnow())
|
||||
results = [self._fake_instance(launched_at=launched_at,
|
||||
terminated_at=terminated_at,
|
||||
deleted=True)]
|
||||
metadata_results = self._fake_metadata()
|
||||
self.mock_for_query('nova', nova.GET_INSTANCE_QUERY % INSTANCE_ID_1,
|
||||
results)
|
||||
self.mock_for_query('nova',
|
||||
nova.GET_INSTANCE_SYSTEM_METADATA % INSTANCE_ID_1,
|
||||
metadata_results)
|
||||
self.mox.ReplayAll()
|
||||
instance = self.client.get_instance('RegionOne', INSTANCE_ID_1,
|
||||
get_metadata=True)
|
||||
self.assertIsNotNone(instance)
|
||||
self.assertEqual(instance['id'], INSTANCE_ID_1)
|
||||
self.assertEqual(instance['instance_type_id'], '1')
|
||||
launched_at_dec = stackutils.str_time_to_unix(launched_at)
|
||||
self.assertEqual(instance['launched_at'], launched_at_dec)
|
||||
terminated_at_dec = stackutils.str_time_to_unix(terminated_at)
|
||||
self.assertEqual(instance['deleted_at'], terminated_at_dec)
|
||||
self.assertTrue(instance['deleted'])
|
||||
self.mox.VerifyAll()
|
||||
|
||||
def test_get_instance_not_found(self):
|
||||
self.mock_for_query('nova', nova.GET_INSTANCE_QUERY % INSTANCE_ID_1,
|
||||
[])
|
||||
|
@ -25,6 +25,8 @@ import time
|
||||
import unittest
|
||||
import uuid
|
||||
|
||||
|
||||
from django.db import transaction
|
||||
import kombu.common
|
||||
import kombu.entity
|
||||
import kombu.pools
|
||||
@ -1085,6 +1087,10 @@ class VerifierTestCase(unittest.TestCase):
|
||||
self.verifier.reconcile = True
|
||||
self.mox.StubOutWithMock(self.verifier, '_keep_running')
|
||||
self.verifier._keep_running().AndReturn(True)
|
||||
self.mox.StubOutWithMock(transaction, 'commit_on_success')
|
||||
fake_transaction = self.mox.CreateMockAnything()
|
||||
transaction.commit_on_success().AndReturn(fake_transaction)
|
||||
fake_transaction.__enter__()
|
||||
start = datetime.datetime.utcnow()
|
||||
self.mox.StubOutWithMock(self.verifier, '_utcnow')
|
||||
self.verifier._utcnow().AndReturn(start)
|
||||
@ -1105,6 +1111,7 @@ class VerifierTestCase(unittest.TestCase):
|
||||
result2.successful().AndReturn(True)
|
||||
result2.get().AndReturn((True, None))
|
||||
self.verifier.reconcile_failed()
|
||||
fake_transaction.__exit__(None, None, None)
|
||||
self.mox.StubOutWithMock(time, 'sleep', use_mock_anything=True)
|
||||
time.sleep(self.config['tick_time'])
|
||||
self.verifier._keep_running().AndReturn(False)
|
||||
@ -1116,6 +1123,10 @@ class VerifierTestCase(unittest.TestCase):
|
||||
self.verifier_notif.reconcile = True
|
||||
self.mox.StubOutWithMock(self.verifier_notif, '_keep_running')
|
||||
self.verifier_notif._keep_running().AndReturn(True)
|
||||
self.mox.StubOutWithMock(transaction, 'commit_on_success')
|
||||
fake_transaction = self.mox.CreateMockAnything()
|
||||
transaction.commit_on_success().AndReturn(fake_transaction)
|
||||
fake_transaction.__enter__()
|
||||
start = datetime.datetime.utcnow()
|
||||
self.mox.StubOutWithMock(self.verifier_notif, '_utcnow')
|
||||
self.verifier_notif._utcnow().AndReturn(start)
|
||||
@ -1137,6 +1148,7 @@ class VerifierTestCase(unittest.TestCase):
|
||||
result2.successful().AndReturn(True)
|
||||
result2.get().AndReturn((True, None))
|
||||
self.verifier_notif.reconcile_failed()
|
||||
fake_transaction.__exit__(None, None, None)
|
||||
self.mox.StubOutWithMock(time, 'sleep', use_mock_anything=True)
|
||||
time.sleep(self.config['tick_time'])
|
||||
self.verifier_notif._keep_running().AndReturn(False)
|
||||
|
Loading…
x
Reference in New Issue
Block a user