def __init__(self, body, deployment, routing_key, json): super(NovaNotification, self).__init__(body, deployment, routing_key, json) self.state = self.payload.get('state', '') self.old_state = self.payload.get('old_state', '') self.old_task = self.payload.get('old_task_state', '') self.task = self.payload.get('new_task_state', '') self.image_type = image_type.get_numeric_code(self.payload) image_meta = self.payload.get('image_meta', {}) self.os_architecture = \ image_meta.get('org.openstack__1__architecture', '') self.os_distro = image_meta.get('org.openstack__1__os_distro', '') self.os_version = image_meta.get('org.openstack__1__os_version', '') self.rax_options = image_meta.get('com.rackspace__1__options', '') self.instance_type_id = self.payload.get('instance_type_id', None) self.instance_flavor_id = self.payload.get('instance_flavor_id', None) self.new_instance_type_id = \ self.payload.get('new_instance_type_id', None) self.launched_at = self.payload.get('launched_at', None) self.deleted_at = self.payload.get('deleted_at', None) self.terminated_at = self.payload.get('terminated_at', None) self.audit_period_beginning = self.payload.get( 'audit_period_beginning', None) self.audit_period_ending = self.payload.get('audit_period_ending', None) self.message = self.payload.get('message', None) # (TMaddox) bandwidth could be None in the payload. bandwidth = self.payload.get('bandwidth', {}) or {} bandwidth_public = bandwidth.get('public', {}) self.bandwidth_public_out = bandwidth_public.get('bw_out', 0)
def __init__(self, body, deployment, routing_key, json): super(GlanceNotification, self).__init__(body, deployment, routing_key, json) if isinstance(self.payload, dict): self.properties = self.payload.get('properties', {}) self.image_type = image_type.get_numeric_code(self.payload) self.status = self.payload.get('status', None) self.uuid = self.payload.get('id', None) self.size = self.payload.get('size', None) created_at = self.payload.get('created_at', None) self.created_at = created_at and utils.str_time_to_unix(created_at) audit_period_beginning = self.payload.get( 'audit_period_beginning', None) self.audit_period_beginning = audit_period_beginning and\ utils.str_time_to_unix(audit_period_beginning) audit_period_ending = self.payload.get( 'audit_period_ending', None) self.audit_period_ending = audit_period_ending and \ utils.str_time_to_unix(audit_period_ending) else: self.properties = {} self.image_type = None self.status = None self.uuid = None self.size = None self.created_at = None self.audit_period_beginning = None self.audit_period_ending = None
def __init__(self, body, deployment, routing_key, json): super(NovaNotification, self).__init__(body, deployment, routing_key, json) self.state = self.payload.get('state', '') self.old_state = self.payload.get('old_state', '') self.old_task = self.payload.get('old_task_state', '') self.task = self.payload.get('new_task_state', '') self.image_type = image_type.get_numeric_code(self.payload) image_meta = self.payload.get('image_meta', {}) self.os_architecture = \ image_meta.get('org.openstack__1__architecture', '') self.os_distro = image_meta.get('org.openstack__1__os_distro', '') self.os_version = image_meta.get('org.openstack__1__os_version', '') self.rax_options = image_meta.get('com.rackspace__1__options', '') self.instance_type_id = self.payload.get('instance_type_id', None) self.instance_flavor_id = self.payload.get('instance_flavor_id', None) self.new_instance_type_id = \ self.payload.get('new_instance_type_id', None) self.launched_at = self.payload.get('launched_at', None) self.deleted_at = self.payload.get('deleted_at', None) self.terminated_at = self.payload.get('terminated_at', None) self.audit_period_beginning = self.payload.get( 'audit_period_beginning', None) self.audit_period_ending = self.payload.get( 'audit_period_ending', None) self.message = self.payload.get('message', None) # (TMaddox) bandwidth could be None in the payload. bandwidth = self.payload.get('bandwidth', {}) or {} bandwidth_public = bandwidth.get('public', {}) self.bandwidth_public_out = bandwidth_public.get('bw_out', 0)
def test_save_should_persist_nova_rawdata_to_database(self): body = { "event_type": "compute.instance.exists", '_context_request_id': REQUEST_ID_1, '_context_project_id': TENANT_ID_1, "timestamp": TIMESTAMP_1, "publisher_id": "compute.global.preprod-ord.ohthree.com", "payload": { 'instance_id': INSTANCE_ID_1, "status": "saving", "container_format": "ovf", "properties": { "image_type": "snapshot", }, "tenant": "5877054", "old_state": 'old_state', "old_task_state": 'old_task', "image_meta": { "org.openstack__1__architecture": 'os_arch', "org.openstack__1__os_distro": 'os_distro', "org.openstack__1__os_version": 'os_version', "com.rackspace__1__options": 'rax_opt', }, "state": 'state', "new_task_state": 'task' } } deployment = "1" routing_key = "monitor.info" json_body = json.dumps([routing_key, body]) raw = self.mox.CreateMockAnything() self.mox.StubOutWithMock(db, 'create_nova_rawdata') db.create_nova_rawdata( deployment="1", tenant=TENANT_ID_1, json=json_body, routing_key=routing_key, when=utils.str_time_to_unix(TIMESTAMP_1), publisher="compute.global.preprod-ord.ohthree.com", event="compute.instance.exists", service="compute", host="global.preprod-ord.ohthree.com", instance=INSTANCE_ID_1, request_id=REQUEST_ID_1, image_type=image_type.get_numeric_code(body['payload']), old_state='old_state', old_task='old_task', os_architecture='os_arch', os_distro='os_distro', os_version='os_version', rax_options='rax_opt', state='state', task='task').AndReturn(raw) self.mox.ReplayAll() notification = NovaNotification(body, deployment, routing_key, json_body) self.assertEquals(notification.save(), raw) self.mox.VerifyAll()
def _extract_states(payload): return { 'state' : payload.get('state', ""), 'old_state' : payload.get('old_state', ""), 'old_task' : payload.get('old_task_state', ""), 'task' : payload.get('new_task_state', ""), 'image_type' : image_type.get_numeric_code(payload) }
def _extract_states(payload): return { 'state': payload.get('state', ""), 'old_state': payload.get('old_state', ""), 'old_task': payload.get('old_task_state', ""), 'task': payload.get('new_task_state', ""), 'image_type': image_type.get_numeric_code(payload) }
def test_os_type_in_payload_not_meta(self): payload = { "image_meta": {}, "os_type": "linux" } result = image_type.get_numeric_code(payload) self.assertEqual(result, image_type.LINUX_IMAGE)
def test_os_type_in_meta_with_empty_os_type_in_payload(self): payload = { "image_meta": { "os_type": "windows" }, "os_type": '' } result = image_type.get_numeric_code(payload) self.assertEqual(result, image_type.WINDOWS_IMAGE)
def test_os_type_in_meta_has_precedent_over_one_in_payload(self): payload = { "image_meta": { "os_type": "linux" }, "os_type": "windows" } result = image_type.get_numeric_code(payload) self.assertEqual(result, image_type.LINUX_IMAGE)
def _test_get_numeric_code(self, image, os_type, os_distro, expected, default=0): payload = { "image_meta": { "image_type": image, "os_type": os_type, "os_distro": os_distro } } result = image_type.get_numeric_code(payload, default) self.assertEqual(result, expected)
def __init__(self, body): self.body = body self.request_id = body['_context_request_id'] self.payload = body.get('payload', {}) self.state = self.payload.get('state', "") self.old_state = self.payload.get('old_state', "") self.old_task = self.payload.get('old_task_state', "") self.task = self.payload.get('new_task_state', "") self.image_type = image_type.get_numeric_code(self.payload) self.publisher = self.body['publisher_id'] self.event = self.body['event_type'] image_meta = self.payload.get('image_meta', {}) self.os_architecture = image_meta.get('org.openstack__1__architecture', '') self.os_distro = image_meta.get('org.openstack__1__os_distro', '') self.os_version = image_meta.get('org.openstack__1__os_version', '') self.rax_options = image_meta.get('com.rackspace__1__options', '')
def __init__(self, body, deployment, routing_key, json): super(GlanceNotification, self).__init__(body, deployment, routing_key, json) if isinstance(self.payload, dict): self.properties = self.payload.get('properties', {}) self.image_type = image_type.get_numeric_code(self.payload) self.status = self.payload.get('status', None) self.uuid = self.payload.get('id', None) self.size = self.payload.get('size', None) created_at = self.payload.get('created_at', None) self.created_at = created_at and utils.str_time_to_unix(created_at) else: self.properties = {} self.image_type = None self.status = None self.uuid = None self.size = None self.created_at = None
def fix_chunk(hours, length): now = datetime.datetime.utcnow() start = now - datetime.timedelta(hours=hours+length) end = now - datetime.timedelta(hours=hours) dstart = dt.dt_to_decimal(start) dend = dt.dt_to_decimal(end) done = 0 updated = 0 block = 0 print "Hours ago (%d to %d) %d - %d" % (hours + length, hours, dstart, dend) updates = models.RawData.objects.filter(event='compute.instance.update', when__gt=dstart, when__lte=dend)\ .only('task', 'image_type', 'json') for raw in updates: queue, body = json.loads(raw.json) payload = body.get('payload', {}) task = payload.get('new_task_state', None) if task != None and task != 'None': states[task] = states.get(task, 0) + 1 raw.task = task raw.image_type = image_type.get_numeric_code(payload, raw.image_type) updated += 1 raw.save() done += 1 if done >= 10000: block += 1 done = 0 print "# 10k blocks processed: %d (events %d)" % \ (block, updated) updated = 0 for kv in states.iteritems(): print "%s = %d" % kv
def __init__(self, body, deployment, routing_key, json): super(NovaNotification, self).__init__(body, deployment, routing_key, json) self.state = self.payload.get('state', '') self.old_state = self.payload.get('old_state', '') self.old_task = self.payload.get('old_task_state', '') self.task = self.payload.get('new_task_state', '') self.image_type = image_type.get_numeric_code(self.payload) image_meta = self.payload.get('image_meta', {}) self.os_architecture = \ image_meta.get('org.openstack__1__architecture', '') self.os_distro = image_meta.get('org.openstack__1__os_distro', '') self.os_version = image_meta.get('org.openstack__1__os_version', '') self.rax_options = image_meta.get('com.rackspace__1__options', '') self.instance_type_id = self.payload.get('instance_type_id', None) self.new_instance_type_id = \ self.payload.get('new_instance_type_id', None) self.launched_at = self.payload.get('launched_at', None) self.deleted_at = self.payload.get('deleted_at', None) self.audit_period_beginning = self.payload.get( 'audit_period_beginning', None) self.audit_period_ending = self.payload.get( 'audit_period_ending', None) self.message = self.payload.get('message', None)
def test_empty_meta_in_get_numeric_code(self): result = image_type.get_numeric_code({'image_meta': {}}) self.assertEqual(result, 0x0)
def test_empty_os_type_in_payload_not_meta(self): result = image_type.get_numeric_code({'image_meta': {}, 'os_type': ''}) self.assertEqual(result, 0x0)
def test_save_should_persist_nova_rawdata_to_database(self): body = { "event_type": "compute.instance.exists", '_context_request_id': REQUEST_ID_1, '_context_project_id': TENANT_ID_1, "timestamp": TIMESTAMP_1, "publisher_id": "compute.global.preprod-ord.ohthree.com", "payload": { 'instance_id': INSTANCE_ID_1, "status": "saving", "container_format": "ovf", "properties": { "image_type": "snapshot", }, "tenant": "5877054", "old_state": 'old_state', "old_task_state": 'old_task', "image_meta": { "org.openstack__1__architecture": 'os_arch', "org.openstack__1__os_distro": 'os_distro', "org.openstack__1__os_version": 'os_version', "com.rackspace__1__options": 'rax_opt', }, "state": 'state', "new_task_state": 'task', "bandwidth": { "private": { "bw_in": 0, "bw_out": 264902 }, "public": { "bw_in": 0, "bw_out": 1697240969 } } } } deployment = "1" routing_key = "monitor.info" json_body = json.dumps([routing_key, body]) raw = self.mox.CreateMockAnything() self.mox.StubOutWithMock(db, 'create_nova_rawdata') db.create_nova_rawdata( deployment="1", tenant=TENANT_ID_1, json=json_body, routing_key=routing_key, when=utils.str_time_to_unix(TIMESTAMP_1), publisher="compute.global.preprod-ord.ohthree.com", event="compute.instance.exists", service="compute", host="global.preprod-ord.ohthree.com", instance=INSTANCE_ID_1, request_id=REQUEST_ID_1, image_type=image_type.get_numeric_code(body['payload']), old_state='old_state', old_task='old_task', os_architecture='os_arch', os_distro='os_distro', os_version='os_version', rax_options='rax_opt', state='state', task='task').AndReturn(raw) self.mox.ReplayAll() notification = NovaNotification(body, deployment, routing_key, json_body) self.assertEquals(notification.save(), raw) self.mox.VerifyAll()
def test_os_type_in_payload_not_meta(self): payload = {"image_meta": {}, "os_type": "linux"} result = image_type.get_numeric_code(payload) self.assertEqual(result, image_type.LINUX_IMAGE)
def test_os_type_in_meta_with_empty_os_type_in_payload(self): payload = {"image_meta": {"os_type": "windows"}, "os_type": ''} result = image_type.get_numeric_code(payload) self.assertEqual(result, image_type.WINDOWS_IMAGE)
def test_empty_payload_in_get_numeric_code(self): result = image_type.get_numeric_code({}) self.assertEqual(result, 0x0)
def test_os_type_in_meta_has_precedent_over_one_in_payload(self): payload = {"image_meta": {"os_type": "linux"}, "os_type": "windows"} result = image_type.get_numeric_code(payload) self.assertEqual(result, image_type.LINUX_IMAGE)