Пример #1
0
 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)
Пример #2
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
Пример #3
0
 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)
Пример #4
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()
Пример #5
0
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)
    }
Пример #6
0
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)
    }
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
 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', '')
Пример #12
0
    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)
Пример #13
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)
     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
Пример #15
0
 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)
Пример #16
0
    def test_empty_meta_in_get_numeric_code(self):
        result = image_type.get_numeric_code({'image_meta': {}})

        self.assertEqual(result, 0x0)
Пример #17
0
    def test_empty_os_type_in_payload_not_meta(self):
        result = image_type.get_numeric_code({'image_meta': {}, 'os_type': ''})

        self.assertEqual(result, 0x0)
Пример #18
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',
                "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()
Пример #19
0
    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)
Пример #20
0
    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)
Пример #21
0
    def test_empty_os_type_in_payload_not_meta(self):
        result = image_type.get_numeric_code({'image_meta': {}, 'os_type': ''})

        self.assertEqual(result, 0x0)
Пример #22
0
    def test_empty_meta_in_get_numeric_code(self):
        result = image_type.get_numeric_code({'image_meta': {}})

        self.assertEqual(result, 0x0)
Пример #23
0
    def test_empty_payload_in_get_numeric_code(self):
        result = image_type.get_numeric_code({})

        self.assertEqual(result, 0x0)
Пример #24
0
    def test_empty_payload_in_get_numeric_code(self):
        result = image_type.get_numeric_code({})

        self.assertEqual(result, 0x0)
Пример #25
0
    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)