Handling deletes without launches
This commit is contained in:
		@@ -257,14 +257,18 @@ def _process_delete(raw):
 | 
			
		||||
    notif = json.loads(raw.json)
 | 
			
		||||
    payload = notif[1]['payload']
 | 
			
		||||
    instance_id = payload['instance_id']
 | 
			
		||||
    launched_at = str_time_to_unix(payload['launched_at'])
 | 
			
		||||
    deleted_at = str_time_to_unix(payload['deleted_at'])
 | 
			
		||||
    values = {
 | 
			
		||||
        'instance': instance_id,
 | 
			
		||||
        'launched_at': launched_at,
 | 
			
		||||
        'deleted_at': deleted_at,
 | 
			
		||||
        'raw': raw
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    launched_at = payload.get('launched_at')
 | 
			
		||||
    if launched_at and launched_at != '':
 | 
			
		||||
        launched_at = str_time_to_unix(launched_at)
 | 
			
		||||
        values['launched_at'] = launched_at
 | 
			
		||||
 | 
			
		||||
    delete = STACKDB.create_instance_delete(**values)
 | 
			
		||||
    STACKDB.save(delete)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -526,6 +526,30 @@ class StacktackUsageParsingTestCase(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(delete.deleted_at, delete_decimal)
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_process_delete_no_launch(self):
 | 
			
		||||
        delete_time = datetime.datetime.utcnow()
 | 
			
		||||
        delete_decimal = utils.decimal_utc(delete_time)
 | 
			
		||||
        notif = utils.create_nova_notif(request_id=REQUEST_ID_1,
 | 
			
		||||
                                        deleted=str(delete_time))
 | 
			
		||||
        json_str = json.dumps(notif)
 | 
			
		||||
        event = 'compute.instance.delete.end'
 | 
			
		||||
        raw = utils.create_raw(self.mox, delete_decimal, event=event,
 | 
			
		||||
                               json_str=json_str)
 | 
			
		||||
        delete = self.mox.CreateMockAnything()
 | 
			
		||||
        delete.instance = INSTANCE_ID_1
 | 
			
		||||
        delete.deleted_at = delete_decimal
 | 
			
		||||
        views.STACKDB.create_instance_delete(instance=INSTANCE_ID_1,
 | 
			
		||||
                                             deleted_at=delete_decimal,
 | 
			
		||||
                                             raw=raw) \
 | 
			
		||||
            .AndReturn(delete)
 | 
			
		||||
        views.STACKDB.save(delete)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        views._process_delete(raw)
 | 
			
		||||
        self.assertEqual(delete.instance, INSTANCE_ID_1)
 | 
			
		||||
        self.assertEqual(delete.deleted_at, delete_decimal)
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_process_exists(self):
 | 
			
		||||
        launch_time = datetime.datetime.utcnow()-datetime.timedelta(hours=23)
 | 
			
		||||
        launch_decimal = utils.decimal_utc(launch_time)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user