Exemplo n.º 1
0
    def test_process_usage_for_updates_finish_resize_end_later_update(self):
        notification = self._create_mock_notification()
        raw = self.mox.CreateMockAnything()
        raw.event = 'compute.instance.finish_resize.end'

        usage = self.mox.CreateMockAnything()
        usage.launched_at = utils.decimal_utc(LATER_DUMMY_TIME)
        usage.instance_type_id = INSTANCE_TYPE_ID_2
        usage.instance_flavor_id = INSTANCE_FLAVOR_ID_2
        views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                   request_id=REQUEST_ID_1) \
            .AndReturn((usage, True))
        views.STACKDB.save(usage)
        self.mox.ReplayAll()

        views._process_usage_for_updates(raw, notification)

        self.assertEqual(usage.instance_type_id, INSTANCE_TYPE_ID_1)
        self.assertEqual(usage.instance_flavor_id, INSTANCE_FLAVOR_ID_1)
        self.assertEqual(usage.launched_at,
                         utils.decimal_utc(LATER_DUMMY_TIME))
        self.assertEquals(usage.tenant, TENANT_ID_1)
        self.assertEquals(usage.os_architecture, OS_ARCH_1)
        self.assertEquals(usage.os_version, OS_VERSION_1)
        self.assertEquals(usage.os_distro, OS_DISTRO_1)
        self.assertEquals(usage.rax_options, RAX_OPTIONS_1)

        self.mox.VerifyAll()
Exemplo n.º 2
0
    def test_process_delete(self, stackdb_mock):
        delete_time = datetime.datetime.utcnow()
        terminated_time = delete_time - datetime.timedelta(seconds=1)
        launch_time = delete_time - datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        terminated_decimal = utils.decimal_utc(terminated_time)
        notification = MagicMock()
        notification.instance = INSTANCE_ID_1
        notification.deleted_at = str(delete_time)
        notification.terminated_at = str(terminated_time)
        notification.launched_at = str(launch_time)
        raw = MagicMock()
        delete = MagicMock()
        delete.instance = INSTANCE_ID_1
        delete.launched_at = launch_decimal
        # Since there is a terminated_at arg present, it will be used as the deleted_at value.
        delete.deleted_at = terminated_decimal

        stack_db_obj = MagicMock()
        stackdb_mock.get_or_create_instance_delete.return_value = (
            stack_db_obj, False)
        from stacktach import views
        views._process_delete(raw, notification)

        stackdb_mock.get_or_create_instance_delete.assert_called_with(
            instance=delete.instance,
            deleted_at=delete.deleted_at,
            launched_at=delete.launched_at)
        stackdb_mock.save.assert_called_with(stack_db_obj)
Exemplo n.º 3
0
 def test_process_exists_with_deleted_at(self):
     launch_time = datetime.datetime.utcnow()-datetime.timedelta(hours=23)
     launch_decimal = utils.decimal_utc(launch_time)
     deleted_time = datetime.datetime.utcnow()-datetime.timedelta(hours=12)
     deleted_decimal = utils.decimal_utc(deleted_time)
     current_time = datetime.datetime.utcnow()
     current_decimal = utils.decimal_utc(current_time)
     notif = utils.create_nova_notif(launched=str(launch_time),
                                     deleted=str(deleted_time))
     json_str = json.dumps(notif)
     event = 'compute.instance.exists'
     raw = utils.create_raw(self.mox, current_decimal, event=event,
                            json_str=json_str)
     usage = self.mox.CreateMockAnything()
     views.STACKDB.get_instance_usage(instance=INSTANCE_ID_1,
                                      launched_at=launch_decimal)\
                  .AndReturn(usage)
     exists_values = {
         'message_id': MESSAGE_ID_1,
         'instance': INSTANCE_ID_1,
         'launched_at': launch_decimal,
         'deleted_at': deleted_decimal,
         'instance_type_id': '1',
         'usage': usage,
         'raw': raw,
     }
     exists = self.mox.CreateMockAnything()
     views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists)
     views.STACKDB.save(exists)
     self.mox.ReplayAll()
     views._process_exists(raw)
     self.mox.VerifyAll()
Exemplo n.º 4
0
    def test_process_delete(self):
        delete_time = datetime.datetime.utcnow()
        launch_time = delete_time-datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        delete_decimal = utils.decimal_utc(delete_time)
        notif = utils.create_nova_notif(request_id=REQUEST_ID_1,
                                        launched=str(launch_time),
                                        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.launched_at = launch_decimal
        delete.deleted_at = delete_decimal
        views.STACKDB.get_or_create_instance_delete(instance=INSTANCE_ID_1,
                                                    deleted_at=delete_decimal)\
                     .AndReturn((delete, True))
        views.STACKDB.save(delete)
        self.mox.ReplayAll()

        views._process_delete(raw, notif[1])
        self.assertEqual(delete.instance, INSTANCE_ID_1)
        self.assertEqual(delete.launched_at, launch_decimal)
        self.assertEqual(delete.deleted_at, delete_decimal)
        self.mox.VerifyAll()
Exemplo n.º 5
0
    def test_process_delete_with_neither(self):
        delete_time = datetime.datetime.utcnow()
        launch_time = delete_time - datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        delete_decimal = utils.decimal_utc(delete_time)
        notification = self.mox.CreateMockAnything()
        notification.instance = INSTANCE_ID_1
        notification.deleted_at = ''
        notification.terminated_at = str(delete_time)
        notification.launched_at = str(launch_time)

        raw = self.mox.CreateMockAnything()
        delete = self.mox.CreateMockAnything()
        delete.instance = INSTANCE_ID_1
        delete.launched_at = launch_decimal
        delete.deleted_at = delete_decimal
        views.STACKDB.get_or_create_instance_delete(
            instance=INSTANCE_ID_1, deleted_at=delete_decimal,
            launched_at=launch_decimal)\
            .AndReturn((delete, True))
        views.STACKDB.save(delete)
        self.mox.ReplayAll()

        views._process_delete(raw, notification)

        self.assertEqual(delete.instance, INSTANCE_ID_1)
        self.assertEqual(delete.launched_at, launch_decimal)
        self.assertEqual(delete.deleted_at, delete_decimal)
        self.mox.VerifyAll()
Exemplo n.º 6
0
    def test_process_delete_with_neither(self):
        delete_time = datetime.datetime.utcnow()
        launch_time = delete_time-datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        delete_decimal = utils.decimal_utc(delete_time)
        notification = self.mox.CreateMockAnything()
        notification.instance = INSTANCE_ID_1
        notification.deleted_at = ''
        notification.terminated_at = str(delete_time)
        notification.launched_at = str(launch_time)

        raw = self.mox.CreateMockAnything()
        delete = self.mox.CreateMockAnything()
        delete.instance = INSTANCE_ID_1
        delete.launched_at = launch_decimal
        delete.deleted_at = delete_decimal
        views.STACKDB.get_or_create_instance_delete(
            instance=INSTANCE_ID_1, deleted_at=delete_decimal,
            launched_at=launch_decimal)\
            .AndReturn((delete, True))
        views.STACKDB.save(delete)
        self.mox.ReplayAll()

        views._process_delete(raw, notification)

        self.assertEqual(delete.instance, INSTANCE_ID_1)
        self.assertEqual(delete.launched_at, launch_decimal)
        self.assertEqual(delete.deleted_at, delete_decimal)
        self.mox.VerifyAll()
Exemplo n.º 7
0
    def test_process_delete_with_only_deleted_at(self, stackdb_mock):
        # 1. Creating test values
        delete_time = datetime.datetime.utcnow()
        launch_time = delete_time - datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        delete_decimal = utils.decimal_utc(delete_time)
        notification = MagicMock()
        notification.instance = INSTANCE_ID_1
        notification.deleted_at = str(delete_time)
        notification.terminated_at = ''
        notification.launched_at = str(launch_time)

        raw = MagicMock()
        delete = MagicMock()
        delete.instance = INSTANCE_ID_1
        delete.launched_at = launch_decimal
        # Since there is no terminated_at arg present, the deleted_at arg will be used as the deleted_at value.
        delete.deleted_at = delete_decimal
        # 2. Mocking methods
        stack_db_obj = MagicMock()
        stackdb_mock.get_or_create_instance_delete.return_value = (
            stack_db_obj, False)
        from stacktach import views
        views._process_delete(raw, notification)
        # 3. Assert statements
        stackdb_mock.get_or_create_instance_delete.assert_called_with(
            instance=delete.instance,
            deleted_at=delete.deleted_at,
            launched_at=delete.launched_at)
        stackdb_mock.save.assert_called_with(stack_db_obj)
Exemplo n.º 8
0
    def test_process_delete_with_only_deleted_at(self, stackdb_mock):
        # 1. Creating test values
        delete_time = datetime.datetime.utcnow()
        launch_time = delete_time-datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        delete_decimal = utils.decimal_utc(delete_time)
        notification = MagicMock()
        notification.instance = INSTANCE_ID_1
        notification.deleted_at = str(delete_time)
        notification.terminated_at = ''
        notification.launched_at = str(launch_time)

        raw = MagicMock()
        delete = MagicMock()
        delete.instance = INSTANCE_ID_1
        delete.launched_at = launch_decimal
        # Since there is no terminated_at arg present, the deleted_at arg will be used as the deleted_at value.
        delete.deleted_at = delete_decimal
        # 2. Mocking methods
        stack_db_obj = MagicMock()
        stackdb_mock.get_or_create_instance_delete.return_value = (stack_db_obj, False)
        from stacktach import views
        views._process_delete(raw, notification)
        # 3. Assert statements
        stackdb_mock.get_or_create_instance_delete.assert_called_with(instance=delete.instance,
                                                                      deleted_at=delete.deleted_at,
                                                                      launched_at=delete.launched_at)
        stackdb_mock.save.assert_called_with(stack_db_obj)
Exemplo n.º 9
0
    def test_process_delete(self, stackdb_mock):
        delete_time = datetime.datetime.utcnow()
        terminated_time = delete_time-datetime.timedelta(seconds=1)
        launch_time = delete_time-datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        terminated_decimal = utils.decimal_utc(terminated_time)
        notification = MagicMock()
        notification.instance = INSTANCE_ID_1
        notification.deleted_at = str(delete_time)
        notification.terminated_at = str(terminated_time)
        notification.launched_at = str(launch_time)
        raw = MagicMock()
        delete = MagicMock()
        delete.instance = INSTANCE_ID_1
        delete.launched_at = launch_decimal
        # Since there is a terminated_at arg present, it will be used as the deleted_at value.
        delete.deleted_at = terminated_decimal

        stack_db_obj = MagicMock()
        stackdb_mock.get_or_create_instance_delete.return_value = (stack_db_obj, False)
        from stacktach import views
        views._process_delete(raw, notification)

        stackdb_mock.get_or_create_instance_delete.assert_called_with(instance=delete.instance,
                                                                      deleted_at=delete.deleted_at,
                                                                      launched_at=delete.launched_at)
        stackdb_mock.save.assert_called_with(stack_db_obj)
Exemplo n.º 10
0
    def test_process_usage_for_updates_finish_resize_end_later_update(self):
        notification = self._create_mock_notification()
        raw = self.mox.CreateMockAnything()
        raw.event = 'compute.instance.finish_resize.end'

        usage = self.mox.CreateMockAnything()
        usage.launched_at = utils.decimal_utc(LATER_DUMMY_TIME)
        usage.instance_type_id = INSTANCE_TYPE_ID_2
        usage.instance_flavor_id = INSTANCE_FLAVOR_ID_2
        views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                   request_id=REQUEST_ID_1) \
            .AndReturn((usage, True))
        views.STACKDB.save(usage)
        self.mox.ReplayAll()

        views._process_usage_for_updates(raw, notification)

        self.assertEqual(usage.instance_type_id, INSTANCE_TYPE_ID_1)
        self.assertEqual(usage.instance_flavor_id, INSTANCE_FLAVOR_ID_1)
        self.assertEqual(usage.launched_at, utils.decimal_utc(LATER_DUMMY_TIME))
        self.assertEquals(usage.tenant, TENANT_ID_1)
        self.assertEquals(usage.os_architecture, OS_ARCH_1)
        self.assertEquals(usage.os_version, OS_VERSION_1)
        self.assertEquals(usage.os_distro, OS_DISTRO_1)
        self.assertEquals(usage.rax_options, RAX_OPTIONS_1)

        self.mox.VerifyAll()
Exemplo n.º 11
0
    def test_process_delete(self):
        delete_time = datetime.datetime.utcnow()
        launch_time = delete_time-datetime.timedelta(days=1)
        launch_decimal = utils.decimal_utc(launch_time)
        delete_decimal = utils.decimal_utc(delete_time)
        notif = utils.create_nova_notif(request_id=REQUEST_ID_1,
                                        launched=str(launch_time),
                                        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.launched_at = launch_decimal
        delete.deleted_at = delete_decimal
        views.STACKDB.create_instance_delete(instance=INSTANCE_ID_1,
                                             launched_at=launch_decimal,
                                             deleted_at=delete_decimal,
                                             raw=raw)\
                     .AndReturn(delete)
        views.STACKDB.save(delete)
        self.mox.ReplayAll()

        views._process_delete(raw, notif[1])
        self.assertEqual(delete.instance, INSTANCE_ID_1)
        self.assertEqual(delete.launched_at, launch_decimal)
        self.assertEqual(delete.deleted_at, delete_decimal)
        self.mox.VerifyAll()
Exemplo n.º 12
0
    def test_process_exists_with_deleted_at(self):
        notification = self.mox.CreateMockAnything()
        current_time = datetime.datetime.utcnow()
        launch_time = current_time - datetime.timedelta(hours=23)
        launch_decimal = utils.decimal_utc(launch_time)
        delete_time = datetime.datetime.utcnow()
        deleted_decimal = utils.decimal_utc(delete_time)
        audit_beginning = current_time - datetime.timedelta(hours=20)
        audit_beginning_decimal = utils.decimal_utc(audit_beginning)
        audit_ending_decimal = utils.decimal_utc(current_time)

        notification.launched_at = str(launch_time)
        notification.audit_period_beginning = str(audit_beginning)
        notification.audit_period_ending = str(current_time)
        notification.tenant = TENANT_ID_1
        notification.os_architecture = OS_ARCH_1
        notification.os_version = OS_VERSION_1
        notification.os_distro = OS_DISTRO_1
        notification.rax_options = RAX_OPTIONS_1
        notification.instance = INSTANCE_ID_1
        notification.instance_type_id = INSTANCE_TYPE_ID_1
        notification.message_id = MESSAGE_ID_1
        notification.deleted_at = str(delete_time)
        notification.bandwidth_public_out = BANDWIDTH_PUBLIC_OUTBOUND
        raw = self.mox.CreateMockAnything()
        usage = self.mox.CreateMockAnything()
        launched_range = (launch_decimal, launch_decimal+1)
        views.STACKDB.get_instance_usage(instance=INSTANCE_ID_1,
                                         launched_at__range=launched_range)\
                     .AndReturn(usage)
        delete = self.mox.CreateMockAnything()
        views.STACKDB.get_instance_delete(instance=INSTANCE_ID_1,
                                          launched_at__range=launched_range)\
             .AndReturn(delete)
        exists_values = {
            'message_id': MESSAGE_ID_1,
            'instance': INSTANCE_ID_1,
            'launched_at': launch_decimal,
            'deleted_at': deleted_decimal,
            'audit_period_beginning': audit_beginning_decimal,
            'audit_period_ending': audit_ending_decimal,
            'instance_type_id': INSTANCE_TYPE_ID_1,
            'usage': usage,
            'delete': delete,
            'raw': raw,
            'tenant': TENANT_ID_1,
            'rax_options': RAX_OPTIONS_1,
            'os_architecture': OS_ARCH_1,
            'os_version': OS_VERSION_1,
            'os_distro': OS_DISTRO_1,
            'bandwidth_public_out': BANDWIDTH_PUBLIC_OUTBOUND
        }
        exists = self.mox.CreateMockAnything()
        views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists)
        views.STACKDB.save(exists)
        self.mox.ReplayAll()
        views._process_exists(raw, notification)
        self.mox.VerifyAll()
Exemplo n.º 13
0
 def test_process_exists_with_deleted_at(self):
     current_time = datetime.datetime.utcnow()
     launch_time = current_time - datetime.timedelta(hours=23)
     launch_decimal = utils.decimal_utc(launch_time)
     deleted_time = current_time - datetime.timedelta(hours=12)
     deleted_decimal = utils.decimal_utc(deleted_time)
     current_decimal = utils.decimal_utc(current_time)
     audit_beginning = current_time - datetime.timedelta(hours=20)
     audit_beginning_decimal = utils.decimal_utc(audit_beginning)
     audit_ending_decimal = utils.decimal_utc(current_time)
     notif = utils.create_nova_notif(launched=str(launch_time),
                                     deleted=str(deleted_time),
                                     audit_period_beginning=str(audit_beginning),
                                     audit_period_ending=str(current_time),
                                     tenant_id=TENANT_ID_1,
                                     os_architecture=OS_ARCH_1,
                                     os_version=OS_VERSION_1,
                                     os_distro=OS_DISTRO_1,
                                     rax_options=RAX_OPTIONS_1)
     json_str = json.dumps(notif)
     event = 'compute.instance.exists'
     raw = utils.create_raw(self.mox, current_decimal, event=event,
                            json_str=json_str)
     usage = self.mox.CreateMockAnything()
     launched_range = (launch_decimal, launch_decimal+1)
     views.STACKDB.get_instance_usage(instance=INSTANCE_ID_1,
                                      launched_at__range=launched_range)\
                  .AndReturn(usage)
     delete = self.mox.CreateMockAnything()
     views.STACKDB.get_instance_delete(instance=INSTANCE_ID_1,
                                       launched_at__range=launched_range)\
          .AndReturn(delete)
     exists_values = {
         'message_id': MESSAGE_ID_1,
         'instance': INSTANCE_ID_1,
         'launched_at': launch_decimal,
         'deleted_at': deleted_decimal,
         'audit_period_beginning': audit_beginning_decimal,
         'audit_period_ending': audit_ending_decimal,
         'instance_type_id': '1',
         'usage': usage,
         'delete': delete,
         'raw': raw,
         'tenant': TENANT_ID_1,
         'rax_options': RAX_OPTIONS_1,
         'os_architecture': OS_ARCH_1,
         'os_version': OS_VERSION_1,
         'os_distro': OS_DISTRO_1
     }
     exists = self.mox.CreateMockAnything()
     views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists)
     views.STACKDB.save(exists)
     self.mox.ReplayAll()
     views._process_exists(raw, notif[1])
     self.mox.VerifyAll()
Exemplo n.º 14
0
    def test_process_usage_for_new_launch_resize_prep_start_when_no_launched_at_in_db(self):
        notification = self._create_mock_notification()
        raw = self.mox.CreateMockAnything()
        raw.event = 'compute.instance.resize.prep.start'

        usage = self.mox.CreateMockAnything()
        usage.launched_at = None
        views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                   request_id=REQUEST_ID_1) \
            .AndReturn((usage, True))
        views.STACKDB.save(usage)
        self.mox.ReplayAll()

        usage.launched_at = None

        views._process_usage_for_new_launch(raw, notification)

        self.assertEqual(usage.launched_at, utils.decimal_utc(DUMMY_TIME))
        self.assertEquals(usage.tenant, TENANT_ID_1)
        self.assertEquals(usage.os_architecture, OS_ARCH_1)
        self.assertEquals(usage.os_version, OS_VERSION_1)
        self.assertEquals(usage.os_distro, OS_DISTRO_1)
        self.assertEquals(usage.rax_options, RAX_OPTIONS_1)

        self.mox.VerifyAll()
Exemplo n.º 15
0
    def test_process_usage_for_new_launch_rescue_start_when_launched_at_in_db(self):
        notification = self.mox.CreateMockAnything()
        notification.launched_at = str(DUMMY_TIME)
        notification.tenant = TENANT_ID_1
        notification.rax_options = RAX_OPTIONS_1
        notification.os_architecture = OS_ARCH_1
        notification.os_version = OS_VERSION_1
        notification.os_distro = OS_DISTRO_1
        notification.instance = INSTANCE_ID_1
        notification.request_id = REQUEST_ID_1
        notification.instance_type_id = INSTANCE_TYPE_ID_1

        raw = self.mox.CreateMockAnything()
        raw.event = 'compute.instance.rescue.start'

        orig_launched_at = utils.decimal_utc(DUMMY_TIME - datetime.timedelta(days=1))
        usage = self.mox.CreateMockAnything()
        usage.launched_at = orig_launched_at
        views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                   request_id=REQUEST_ID_1) \
            .AndReturn((usage, True))
        views.STACKDB.save(usage)
        self.mox.ReplayAll()

        views._process_usage_for_new_launch(raw, notification)

        self.assertEqual(usage.launched_at, orig_launched_at)
        self.assertEqual(usage.tenant, TENANT_ID_1)
        self.assertEquals(usage.os_architecture, OS_ARCH_1)
        self.assertEquals(usage.os_version, OS_VERSION_1)
        self.assertEquals(usage.os_distro, OS_DISTRO_1)
        self.assertEquals(usage.rax_options, RAX_OPTIONS_1)

        self.mox.VerifyAll()
Exemplo n.º 16
0
    def test_process_usage_for_updates_revert_end(self):
        notification = self.mox.CreateMockAnything()
        notification.launched_at = str(DUMMY_TIME)
        notification.tenant = TENANT_ID_1
        notification.rax_options = RAX_OPTIONS_1
        notification.os_architecture = OS_ARCH_1
        notification.os_version = OS_VERSION_1
        notification.os_distro = OS_DISTRO_1
        notification.instance = INSTANCE_ID_1
        notification.request_id = REQUEST_ID_1
        notification.instance_type_id = INSTANCE_TYPE_ID_1
        notification.message = None

        raw = self.mox.CreateMockAnything()
        raw.event = 'compute.instance.resize.revert.end'

        usage = self.mox.CreateMockAnything()
        usage.launched_at = None
        views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                   request_id=REQUEST_ID_1) \
            .AndReturn((usage, True))
        views.STACKDB.save(usage)
        self.mox.ReplayAll()

        views._process_usage_for_updates(raw, notification)

        self.assertEqual(usage.instance_type_id, INSTANCE_TYPE_ID_1)
        self.assertEqual(usage.launched_at, utils.decimal_utc(DUMMY_TIME))
        self.assertEquals(usage.tenant, TENANT_ID_1)
        self.assertEquals(usage.os_architecture, OS_ARCH_1)
        self.assertEquals(usage.os_version, OS_VERSION_1)
        self.assertEquals(usage.os_distro, OS_DISTRO_1)
        self.assertEquals(usage.rax_options, RAX_OPTIONS_1)

        self.mox.VerifyAll()
Exemplo n.º 17
0
    def test_do_list_usage_launches_with_instance(self):
        fake_request = self.mox.CreateMockAnything()
        fake_request.GET = {'instance': INSTANCE_ID_1}
        results = self.mox.CreateMockAnything()
        models.InstanceUsage.objects.filter(instance=INSTANCE_ID_1)\
                                    .AndReturn(results)
        usage = self.mox.CreateMockAnything()
        usage.instance = INSTANCE_ID_1
        usage.launched_at = utils.decimal_utc()
        usage.instance_type_id = 1
        results.__iter__().AndReturn([usage].__iter__())
        self.mox.ReplayAll()

        resp = stacky_server.do_list_usage_launches(fake_request)
        self.assertEqual(resp.status_code, 200)
        resp_json = json.loads(resp.content)
        self.assertEqual(len(resp_json), 2)
        self.assertEqual(resp_json[0], ["UUID", "Launched At",
                                        "Instance Type Id"])
        self.assertEqual(resp_json[1][0], INSTANCE_ID_1)
        time_str = dt.dt_from_decimal(usage.launched_at)
        self.assertEqual(resp_json[1][1], str(time_str))
        self.assertEqual(resp_json[1][2], 1)

        self.mox.VerifyAll()
Exemplo n.º 18
0
 def test_process_raw_data_old_timestamp(self):
     deployment = self.mox.CreateMockAnything()
     when = '2013-1-25T13:38:23.123'
     dict = {
         '_context_timestamp': when,
         }
     args = ('monitor.info', dict)
     json_args = json.dumps(args)
     old_info_handler = views.HANDLERS['monitor.info']
     views.HANDLERS['monitor.info'] = lambda key, mess: {'host': 'api'}
     raw_values = {
         'deployment': deployment,
         'when': utils.decimal_utc(datetime.datetime.strptime(when, "%Y-%m-%dT%H:%M:%S.%f")),
         'host': 'api',
         'routing_key': 'monitor.info',
         'json': json_args
     }
     raw = self.mox.CreateMockAnything()
     views.STACKDB.create_rawdata(**raw_values).AndReturn(raw)
     views.STACKDB.save(raw)
     self.mox.StubOutWithMock(views, "aggregate_lifecycle")
     views.aggregate_lifecycle(raw)
     self.mox.StubOutWithMock(views, "aggregate_usage")
     views.aggregate_usage(raw, dict)
     self.mox.ReplayAll()
     views.process_raw_data(deployment, args, json_args)
     self.mox.VerifyAll()
     views.HANDLERS['monitor.info'] = old_info_handler
Exemplo n.º 19
0
    def test_process_usage_for_updates_revert_end(self):
        when_time = datetime.datetime.utcnow()
        when_decimal = utils.decimal_utc(when_time)
        notif = utils.create_nova_notif(request_id=REQUEST_ID_1,
                                        launched=str(when_time))
        json_str = json.dumps(notif)
        event = 'compute.instance.resize.revert.end'
        raw = utils.create_raw(self.mox, when_decimal, event=event,
                               json_str=json_str)
        usage = self.mox.CreateMockAnything()
        usage.instance = INSTANCE_ID_1
        usage.request_id = REQUEST_ID_1
        usage.instance_type_id = '1'
        views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                   request_id=REQUEST_ID_1)\
                     .AndReturn((usage, True))
        views.STACKDB.save(usage)
        self.mox.ReplayAll()

        views._process_usage_for_updates(raw, notif[1])
        self.assertEqual(usage.instance, INSTANCE_ID_1)
        self.assertEqual(usage.request_id, REQUEST_ID_1)
        self.assertEqual(usage.instance_type_id, '1')
        self.assertEqual(usage.launched_at, when_decimal)
        self.mox.VerifyAll()
Exemplo n.º 20
0
    def test_do_list_usage_exists_with_instance(self):
        fake_request = self.mox.CreateMockAnything()
        fake_request.GET = {'instance': INSTANCE_ID_1}
        results = self.mox.CreateMockAnything()
        models.InstanceExists.objects.filter(instance=INSTANCE_ID_1)\
                                     .AndReturn(results)
        usage = self.mox.CreateMockAnything()
        usage.instance = INSTANCE_ID_1
        usage.launched_at = utils.decimal_utc()
        usage.deleted_at = usage.launched_at + 10
        usage.instance_type_id = 1
        usage.message_id = 'someid'
        usage.status = 'pending'
        results.__iter__().AndReturn([usage].__iter__())
        self.mox.ReplayAll()

        resp = stacky_server.do_list_usage_exists(fake_request)
        self.assertEqual(resp.status_code, 200)
        resp_json = json.loads(resp.content)
        self.assertEqual(len(resp_json), 2)
        self.assertEqual(resp_json[0], [
            "UUID", "Launched At", "Deleted At", "Instance Type Id",
            "Message ID", "Status"
        ])
        self.assertEqual(resp_json[1][0], INSTANCE_ID_1)
        launch_time_str = dt.dt_from_decimal(usage.launched_at)
        self.assertEqual(resp_json[1][1], str(launch_time_str))
        delete_time_str = dt.dt_from_decimal(usage.deleted_at)
        self.assertEqual(resp_json[1][2], str(delete_time_str))
        self.mox.VerifyAll()
Exemplo n.º 21
0
    def test_process_usage_for_new_launch_rescue_start_when_launched_at_in_db(
            self):
        notification = self._create_mock_notification()
        raw = self.mox.CreateMockAnything()
        raw.event = 'compute.instance.rescue.start'

        orig_launched_at = utils.decimal_utc(DUMMY_TIME -
                                             datetime.timedelta(days=1))
        usage = self.mox.CreateMockAnything()
        usage.launched_at = orig_launched_at
        views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                   request_id=REQUEST_ID_1) \
            .AndReturn((usage, True))
        views.STACKDB.save(usage)
        self.mox.ReplayAll()

        views._process_usage_for_new_launch(raw, notification)

        self.assertEqual(usage.launched_at, orig_launched_at)
        self.assertEqual(usage.tenant, TENANT_ID_1)
        self.assertEquals(usage.os_architecture, OS_ARCH_1)
        self.assertEquals(usage.os_version, OS_VERSION_1)
        self.assertEquals(usage.os_distro, OS_DISTRO_1)
        self.assertEquals(usage.rax_options, RAX_OPTIONS_1)

        self.mox.VerifyAll()
Exemplo n.º 22
0
    def test_do_list_usage_exists_with_instance(self):
        fake_request = self.mox.CreateMockAnything()
        fake_request.GET = {"instance": INSTANCE_ID_1}
        results = self.mox.CreateMockAnything()
        models.InstanceExists.objects.filter(instance=INSTANCE_ID_1).AndReturn(results)
        usage = self.mox.CreateMockAnything()
        usage.instance = INSTANCE_ID_1
        usage.launched_at = utils.decimal_utc()
        usage.deleted_at = usage.launched_at + 10
        usage.instance_type_id = 1
        usage.message_id = "someid"
        usage.status = "pending"
        results.__iter__().AndReturn([usage].__iter__())
        self.mox.ReplayAll()

        resp = stacky_server.do_list_usage_exists(fake_request)
        self.assertEqual(resp.status_code, 200)
        resp_json = json.loads(resp.content)
        self.assertEqual(len(resp_json), 2)
        self.assertEqual(
            resp_json[0], ["UUID", "Launched At", "Deleted At", "Instance Type Id", "Message ID", "Status"]
        )
        self.assertEqual(resp_json[1][0], INSTANCE_ID_1)
        launch_time_str = dt.dt_from_decimal(usage.launched_at)
        self.assertEqual(resp_json[1][1], str(launch_time_str))
        delete_time_str = dt.dt_from_decimal(usage.deleted_at)
        self.assertEqual(resp_json[1][2], str(delete_time_str))
        self.mox.VerifyAll()
Exemplo n.º 23
0
    def test_process_raw_data_old_timestamp(self):
        deployment = self.mox.CreateMockAnything()
        when = '2013-1-25T13:38:23.123'
        dict = {
            '_context_timestamp': when,
            }
        args = ('monitor.info', dict)
        json_args = json.dumps(args[1])
        raw_values = {
            'deployment': deployment,
            'when': utils.decimal_utc(datetime.datetime.strptime(when, '%Y-%m-%dT%H:%M:%S.%f')),
            'host': 'api',
            'routing_key': 'monitor.info',
            'json': json_args
        }
        old_info_handler = views.NOTIFICATIONS['monitor.info']
        mock_notification = self.mox.CreateMockAnything()
        mock_notification.rawdata_kwargs(deployment, 'monitor.info', json_args).AndReturn(raw_values)
        views.NOTIFICATIONS['monitor.info'] = lambda message_body: mock_notification

        views.STACKDB.create_rawdata(**raw_values)
        self.mox.ReplayAll()
        views.process_raw_data(deployment, args, json_args)
        self.mox.VerifyAll()

        views.NOTIFICATIONS['monitor.info'] = old_info_handler
Exemplo n.º 24
0
 def test_process_exists_with_deleted_at(self):
     current_time = datetime.datetime.utcnow()
     launch_time = current_time - datetime.timedelta(hours=23)
     launch_decimal = utils.decimal_utc(launch_time)
     deleted_time = current_time - datetime.timedelta(hours=12)
     deleted_decimal = utils.decimal_utc(deleted_time)
     current_decimal = utils.decimal_utc(current_time)
     audit_beginning = current_time - datetime.timedelta(hours=20)
     audit_beginning_decimal = utils.decimal_utc(audit_beginning)
     audit_ending_decimal = utils.decimal_utc(current_time)
     notif = utils.create_nova_notif(launched=str(launch_time),
                                     deleted=str(deleted_time),
                                     audit_period_beginning=str(audit_beginning),
                                     audit_period_ending=str(current_time),
                                     tenant_id=TENANT_ID_1)
     json_str = json.dumps(notif)
     event = 'compute.instance.exists'
     raw = utils.create_raw(self.mox, current_decimal, event=event,
                            json_str=json_str)
     usage = self.mox.CreateMockAnything()
     launched_range = (launch_decimal, launch_decimal+1)
     views.STACKDB.get_instance_usage(instance=INSTANCE_ID_1,
                                      launched_at__range=launched_range)\
                  .AndReturn(usage)
     delete = self.mox.CreateMockAnything()
     views.STACKDB.get_instance_delete(instance=INSTANCE_ID_1,
                                       launched_at__range=launched_range)\
          .AndReturn(delete)
     exists_values = {
         'message_id': MESSAGE_ID_1,
         'instance': INSTANCE_ID_1,
         'launched_at': launch_decimal,
         'deleted_at': deleted_decimal,
         'audit_period_beginning': audit_beginning_decimal,
         'audit_period_ending': audit_ending_decimal,
         'instance_type_id': '1',
         'usage': usage,
         'delete': delete,
         'raw': raw,
         'tenant': TENANT_ID_1
     }
     exists = self.mox.CreateMockAnything()
     views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists)
     views.STACKDB.save(exists)
     self.mox.ReplayAll()
     views._process_exists(raw, notif[1])
     self.mox.VerifyAll()
Exemplo n.º 25
0
 def test_process_exists_with_deleted_at(self):
     current_time = datetime.datetime.utcnow()
     launch_time = current_time - datetime.timedelta(hours=23)
     launch_decimal = utils.decimal_utc(launch_time)
     delete_time = datetime.datetime.utcnow()
     deleted_decimal = utils.decimal_utc(delete_time)
     audit_beginning = current_time - datetime.timedelta(hours=20)
     audit_beginning_decimal = utils.decimal_utc(audit_beginning)
     audit_ending_decimal = utils.decimal_utc(current_time)
     notification = self._create_exists_notification(
         audit_beginning, current_time, launch_time, delete_time)
     raw = self.mox.CreateMockAnything()
     usage = self.mox.CreateMockAnything()
     launched_range = (launch_decimal, launch_decimal + 1)
     views.STACKDB.get_instance_usage(instance=INSTANCE_ID_1,
                                      launched_at__range=launched_range)\
                  .AndReturn(usage)
     delete = self.mox.CreateMockAnything()
     views.STACKDB.get_instance_delete(instance=INSTANCE_ID_1,
                                       launched_at__range=launched_range)\
          .AndReturn(delete)
     exists_values = {
         'message_id': MESSAGE_ID_1,
         'instance': INSTANCE_ID_1,
         'launched_at': launch_decimal,
         'deleted_at': deleted_decimal,
         'audit_period_beginning': audit_beginning_decimal,
         'audit_period_ending': audit_ending_decimal,
         'instance_type_id': INSTANCE_TYPE_ID_1,
         'instance_flavor_id': INSTANCE_FLAVOR_ID_1,
         'usage': usage,
         'delete': delete,
         'raw': raw,
         'tenant': TENANT_ID_1,
         'rax_options': RAX_OPTIONS_1,
         'os_architecture': OS_ARCH_1,
         'os_version': OS_VERSION_1,
         'os_distro': OS_DISTRO_1,
         'bandwidth_public_out': BANDWIDTH_PUBLIC_OUTBOUND
     }
     exists = self.mox.CreateMockAnything()
     views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists)
     views.STACKDB.save(exists)
     self.mox.ReplayAll()
     views._process_exists(raw, notification)
     self.mox.VerifyAll()
Exemplo n.º 26
0
 def test_start_kpi_tracking_not_using_host(self):
     lifecycle = self.mox.CreateMockAnything()
     tracker = self.mox.CreateMockAnything()
     when = utils.decimal_utc()
     raw = utils.create_raw(self.mox, when, 'compute.instance.update',
                            host='api.example.com', service='compute')
     self.mox.ReplayAll()
     views.start_kpi_tracking(lifecycle, raw)
     self.mox.VerifyAll()
Exemplo n.º 27
0
 def test_start_kpi_tracking_not_using_host(self):
     lifecycle = self.mox.CreateMockAnything()
     tracker = self.mox.CreateMockAnything()
     when = utils.decimal_utc()
     raw = utils.create_raw(self.mox, when, 'compute.instance.update',
                            host='api.example.com', service='compute')
     self.mox.ReplayAll()
     views.start_kpi_tracking(lifecycle, raw)
     self.mox.VerifyAll()
Exemplo n.º 28
0
 def test_process_usage_for_new_launch_resize_launched_at_in_db(self):
     now = datetime.datetime.utcnow()
     when = utils.decimal_utc(now)
     notif = utils.create_nova_notif(request_id=REQUEST_ID_1,
                                     launched=str(now))
     json_str = json.dumps(notif)
     event = 'compute.instance.resize.prep.start'
     raw = utils.create_raw(self.mox, when, event=event, json_str=json_str)
     usage = self.mox.CreateMockAnything()
     orig_launched_at = utils.decimal_utc(now - datetime.timedelta(days=1))
     usage.launched_at = orig_launched_at
     views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                request_id=REQUEST_ID_1) \
         .AndReturn((usage, True))
     views.STACKDB.save(usage)
     self.mox.ReplayAll()
     views._process_usage_for_new_launch(raw, notif[1])
     self.assertEqual(usage.launched_at, orig_launched_at)
     self.mox.VerifyAll()
Exemplo n.º 29
0
    def test_process_usage_for_updates_create_end(self):
        kwargs = {'launched': str(DUMMY_TIME), 'tenant_id': TENANT_ID_1}
        notification = utils.create_nova_notif(request_id=REQUEST_ID_1, **kwargs)
        event = 'compute.instance.create.end'
        raw, usage = self._setup_process_usage_mocks(event, notification)

        views._process_usage_for_updates(raw, notification[1])

        self.assertEqual(usage.launched_at, utils.decimal_utc(DUMMY_TIME))
        self.assertEqual(usage.tenant, TENANT_ID_1)

        self.mox.VerifyAll()
Exemplo n.º 30
0
 def test_update_kpi(self):
     lifecycle = self.mox.CreateMockAnything()
     end = utils.decimal_utc()
     raw = self.mox.CreateMockAnything()
     raw.request_id = REQUEST_ID_1
     raw.when=end
     timing = utils.create_timing(self.mox, 'compute.instance.create',
                                  lifecycle, end_when=end)
     start = utils.decimal_utc()
     tracker = utils.create_tracker(self.mox, REQUEST_ID_1, lifecycle,
                                    start)
     views.STACKDB.find_request_trackers(request_id=REQUEST_ID_1)\
                   .AndReturn([tracker])
     views.STACKDB.save(tracker)
     self.mox.ReplayAll()
     views.update_kpi(timing, raw)
     self.assertEqual(tracker.request_id, REQUEST_ID_1)
     self.assertEqual(tracker.lifecycle, lifecycle)
     self.assertEqual(tracker.last_timing, timing)
     self.assertEqual(tracker.start, start)
     self.assertEqual(tracker.duration, end-start)
     self.mox.VerifyAll()
Exemplo n.º 31
0
    def test_process_usage_for_new_launch_resize_revert_start_when_no_launched_at_in_db(self):
        kwargs = {'launched': str(DUMMY_TIME), 'tenant_id': TENANT_ID_1}
        notification = utils.create_nova_notif(request_id=REQUEST_ID_1, **kwargs)
        event = 'compute.instance.resize.revert.start'
        raw, usage = self._setup_process_usage_mocks(event, notification)
        usage.launched_at = None

        views._process_usage_for_new_launch(raw, notification[1])

        self.assertEquals(usage.tenant, TENANT_ID_1)
        self.assertEqual(usage.launched_at, utils.decimal_utc(DUMMY_TIME))

        self.mox.VerifyAll()
Exemplo n.º 32
0
 def _setup_process_usage_mocks(self, event, notification):
     when_time = DUMMY_TIME
     when_decimal = utils.decimal_utc(when_time)
     json_str = json.dumps(notification)
     raw = utils.create_raw(self.mox, when_decimal, event=event,
                            json_str=json_str)
     usage = self.mox.CreateMockAnything()
     views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                request_id=REQUEST_ID_1) \
         .AndReturn((usage, True))
     views.STACKDB.save(usage)
     self.mox.ReplayAll()
     return raw, usage
Exemplo n.º 33
0
    def test_get_filter_args(self):
        start_time = datetime.datetime.utcnow()
        start_decimal = utils.decimal_utc(start_time)
        end_time = start_time + datetime.timedelta(days=1)
        end_decimal = utils.decimal_utc(end_time)
        fake_request = self.mox.CreateMockAnything()
        fake_model = self.make_fake_model()
        fake_model._meta.get_field_by_name('launched_at')
        fake_model._meta.get_field_by_name('launched_at')
        fake_request.GET = {'instance': INSTANCE_ID_1,
                            'launched_at_min': str(start_time),
                            'launched_at_max': str(end_time)}
        self.mox.ReplayAll()

        filter_args = dbapi._get_filter_args(fake_model, fake_request)

        self.mox.VerifyAll()
        self.assertEquals(filter_args['instance'], INSTANCE_ID_1)
        self.assertEquals(filter_args.get('launched_at__gte'),
                          start_decimal)
        self.assertEquals(filter_args.get('launched_at__lte'),
                          end_decimal)
Exemplo n.º 34
0
    def test_get_filter_args(self):
        start_time = datetime.datetime.utcnow()
        start_decimal = utils.decimal_utc(start_time)
        end_time = start_time + datetime.timedelta(days=1)
        end_decimal = utils.decimal_utc(end_time)
        fake_request = self.mox.CreateMockAnything()
        fake_model = self.make_fake_model()
        fake_model._meta.get_field_by_name('launched_at')
        fake_model._meta.get_field_by_name('launched_at')
        fake_request.GET = {
            'instance': INSTANCE_ID_1,
            'launched_at_min': str(start_time),
            'launched_at_max': str(end_time)
        }
        self.mox.ReplayAll()

        filter_args = dbapi._get_filter_args(fake_model, fake_request)

        self.mox.VerifyAll()
        self.assertEquals(filter_args['instance'], INSTANCE_ID_1)
        self.assertEquals(filter_args.get('launched_at__gte'), start_decimal)
        self.assertEquals(filter_args.get('launched_at__lte'), end_decimal)
Exemplo n.º 35
0
 def test_process_exists(self):
     current_time = datetime.datetime.utcnow()
     launch_time = current_time - datetime.timedelta(hours=23)
     launch_decimal = utils.decimal_utc(launch_time)
     current_decimal = utils.decimal_utc(current_time)
     audit_beginning = current_time - datetime.timedelta(hours=20)
     audit_beginning_decimal = utils.decimal_utc(audit_beginning)
     audit_ending_decimal = utils.decimal_utc(current_time)
     notif = utils.create_nova_notif(launched=str(launch_time),
                                     audit_period_beginning=str(audit_beginning),
                                     audit_period_ending=str(current_time))
     json_str = json.dumps(notif)
     event = 'compute.instance.exists'
     raw = utils.create_raw(self.mox, current_decimal, event=event,
                            json_str=json_str)
     usage = self.mox.CreateMockAnything()
     launched_range = (launch_decimal, launch_decimal+1)
     views.STACKDB.get_instance_usage(instance=INSTANCE_ID_1,
                                      launched_at__range=launched_range)\
                  .AndReturn(usage)
     views.STACKDB.get_instance_delete(instance=INSTANCE_ID_1,
                                       launched_at__range=launched_range)\
          .AndReturn(None)
     exists_values = {
         'message_id': MESSAGE_ID_1,
         'instance': INSTANCE_ID_1,
         'launched_at': launch_decimal,
         'audit_period_beginning': audit_beginning_decimal,
         'audit_period_ending': audit_ending_decimal,
         'instance_type_id': '1',
         'usage': usage,
         'raw': raw,
     }
     exists = self.mox.CreateMockAnything()
     views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists)
     views.STACKDB.save(exists)
     self.mox.ReplayAll()
     views._process_exists(raw, notif[1])
     self.mox.VerifyAll()
Exemplo n.º 36
0
 def test_update_kpi(self):
     lifecycle = self.mox.CreateMockAnything()
     end = utils.decimal_utc()
     raw = self.mox.CreateMockAnything()
     raw.request_id = REQUEST_ID_1
     raw.when=end
     timing = utils.create_timing(self.mox, 'compute.instance.create',
                                  lifecycle, end_when=end)
     start = utils.decimal_utc()
     tracker = utils.create_tracker(self.mox, REQUEST_ID_1, lifecycle,
                                    start)
     views.STACKDB.find_request_trackers(request_id=REQUEST_ID_1)\
                   .AndReturn([tracker])
     views.STACKDB.save(tracker)
     self.mox.ReplayAll()
     views.update_kpi(timing, raw)
     self.assertEqual(tracker.request_id, REQUEST_ID_1)
     self.assertEqual(tracker.lifecycle, lifecycle)
     self.assertEqual(tracker.last_timing, timing)
     self.assertEqual(tracker.start, start)
     self.assertEqual(tracker.duration, end-start)
     self.mox.VerifyAll()
Exemplo n.º 37
0
    def test_process_usage_for_updates_create_end_error_message(self):
        kwargs = {'launched': str(DUMMY_TIME), 'tenant_id': TENANT_ID_1}
        notification = utils.create_nova_notif(request_id=REQUEST_ID_1, **kwargs)
        notification[1]['payload']['message'] = "Error"
        event = 'compute.instance.create.end'
        when_time = DUMMY_TIME
        when_decimal = utils.decimal_utc(when_time)
        json_str = json.dumps(notification)
        raw = utils.create_raw(self.mox, when_decimal, event=event,
                               json_str=json_str)
        self.mox.ReplayAll()

        views._process_usage_for_updates(raw, notification[1])

        self.mox.VerifyAll()
Exemplo n.º 38
0
 def test_process_usage_for_new_launch(self):
     when = utils.decimal_utc()
     notif = utils.create_nova_notif(request_id=REQUEST_ID_1)
     json_str = json.dumps(notif)
     event = 'compute.instance.create.start'
     raw = utils.create_raw(self.mox, when, event=event, json_str=json_str)
     usage = self.mox.CreateMockAnything()
     views.STACKDB.get_or_create_instance_usage(instance=INSTANCE_ID_1,
                                                request_id=REQUEST_ID_1)\
                  .AndReturn((usage, True))
     views.STACKDB.save(usage)
     self.mox.ReplayAll()
     views._process_usage_for_new_launch(raw, notif[1])
     self.assertEquals(usage.instance_type_id, '1')
     self.mox.VerifyAll()
Exemplo n.º 39
0
 def test_start_kpi_tracking(self):
     lifecycle = self.mox.CreateMockAnything()
     tracker = self.mox.CreateMockAnything()
     when = utils.decimal_utc()
     raw = utils.create_raw(self.mox, when, 'compute.instance.update',
                            host='nova.example.com', service='api')
     views.STACKDB.create_request_tracker(lifecycle=lifecycle,
                                          request_id=REQUEST_ID_1,
                                          start=when,
                                          last_timing=None,
                                          duration=str(0.0))\
                                          .AndReturn(tracker)
     views.STACKDB.save(tracker)
     self.mox.ReplayAll()
     views.start_kpi_tracking(lifecycle, raw)
     self.mox.VerifyAll()
Exemplo n.º 40
0
 def test_start_kpi_tracking(self):
     lifecycle = self.mox.CreateMockAnything()
     tracker = self.mox.CreateMockAnything()
     when = utils.decimal_utc()
     raw = utils.create_raw(self.mox, when, 'compute.instance.update',
                            host='nova.example.com', service='api')
     views.STACKDB.create_request_tracker(lifecycle=lifecycle,
                                          request_id=REQUEST_ID_1,
                                          start=when,
                                          last_timing=None,
                                          duration=str(0.0))\
                                          .AndReturn(tracker)
     views.STACKDB.save(tracker)
     self.mox.ReplayAll()
     views.start_kpi_tracking(lifecycle, raw)
     self.mox.VerifyAll()
Exemplo n.º 41
0
 def test_process_exists_no_launched_at(self):
     current_time = datetime.datetime.utcnow()
     current_decimal = utils.decimal_utc(current_time)
     audit_beginning = current_time - datetime.timedelta(hours=20)
     notif = utils.create_nova_notif(audit_period_beginning=str(audit_beginning),
                                     audit_period_ending=str(current_time),
                                     tenant_id=TENANT_ID_1)
     json_str = json.dumps(notif)
     event = 'compute.instance.exists'
     raw = utils.create_raw(self.mox, current_decimal, event=event,
                            json_str=json_str)
     raw.id = 1
     self.setup_mock_log()
     self.log.warn('Ignoring exists without launched_at. RawData(1)')
     self.mox.ReplayAll()
     views._process_exists(raw, notif[1])
     self.mox.VerifyAll()
Exemplo n.º 42
0
    def test_process_usage_for_new_launch_resize_revert_start_when_no_launched_at_in_db(self):
        kwargs = {'launched': str(DUMMY_TIME), 'tenant_id': TENANT_ID_1,'rax_options': RAX_OPTIONS_1,
                  'os_architecture': OS_ARCH_1, 'os_version': OS_VERSION_1, 'os_distro': OS_DISTRO_1 }
        notification = utils.create_nova_notif(request_id=REQUEST_ID_1, **kwargs)
        event = 'compute.instance.resize.revert.start'
        raw, usage = self._setup_process_usage_mocks(event, notification)
        usage.launched_at = None

        views._process_usage_for_new_launch(raw, notification[1])

        self.assertEquals(usage.tenant, TENANT_ID_1)
        self.assertEqual(usage.launched_at, utils.decimal_utc(DUMMY_TIME))
        self.assertEquals(usage.os_architecture, OS_ARCH_1)
        self.assertEquals(usage.os_version, OS_VERSION_1)
        self.assertEquals(usage.os_distro, OS_DISTRO_1)
        self.assertEquals(usage.rax_options, RAX_OPTIONS_1)

        self.mox.VerifyAll()
Exemplo n.º 43
0
 def _create_raw(self):
     raw = self.mox.CreateMockAnything()
     raw.when = utils.decimal_utc()
     raw.instance = INSTANCE_ID_1
     raw.id = 1
     raw.routing_key = 'monitor.info'
     raw.deployment = self.mox.CreateMockAnything()
     raw.deployment.id = 1
     raw.deployment.name = 'deployment'
     raw.event = 'test.start'
     raw.host = 'example.com'
     raw.state = 'active'
     raw.old_state = None
     raw.old_task = None
     raw.publisher = "api.example.com"
     raw.service = 'api'
     raw.host = 'example.com'
     raw.request_id = REQUEST_ID_1
     raw.json = '{"key": "value"}'
     return raw
Exemplo n.º 44
0
 def _create_raw(self):
     raw = self.mox.CreateMockAnything()
     raw.when = utils.decimal_utc()
     raw.instance = INSTANCE_ID_1
     raw.id = 1
     raw.routing_key = "monitor.info"
     raw.deployment = self.mox.CreateMockAnything()
     raw.deployment.id = 1
     raw.deployment.name = "deployment"
     raw.event = "test.start"
     raw.host = "example.com"
     raw.state = "active"
     raw.old_state = None
     raw.old_task = None
     raw.publisher = "api.example.com"
     raw.service = "api"
     raw.host = "example.com"
     raw.request_id = REQUEST_ID_1
     raw.json = '{"key": "value"}'
     return raw
Exemplo n.º 45
0
    def test_do_list_usage_deletes(self):
        fake_request = self.mox.CreateMockAnything()
        fake_request.GET = {}
        results = self.mox.CreateMockAnything()
        models.InstanceDeletes.objects.all().AndReturn(results)
        usage = self.mox.CreateMockAnything()
        usage.instance = INSTANCE_ID_1
        usage.launched_at = utils.decimal_utc()
        usage.deleted_at = usage.launched_at + 10
        results.__iter__().AndReturn([usage].__iter__())
        self.mox.ReplayAll()

        resp = stacky_server.do_list_usage_deletes(fake_request)
        self.assertEqual(resp.status_code, 200)
        resp_json = json.loads(resp.content)
        self.assertEqual(len(resp_json), 2)
        self.assertEqual(resp_json[0], ["UUID", "Launched At", "Deleted At"])
        self.assertEqual(resp_json[1][0], INSTANCE_ID_1)
        launch_time_str = dt.dt_from_decimal(usage.launched_at)
        self.assertEqual(resp_json[1][1], str(launch_time_str))
        delete_time_str = dt.dt_from_decimal(usage.deleted_at)
        self.assertEqual(resp_json[1][2], str(delete_time_str))
        self.mox.VerifyAll()
Exemplo n.º 46
0
 def test_process_raw_data_old_timestamp(self):
     deployment = self.mox.CreateMockAnything()
     when = '2013-1-25T13:38:23.123'
     dict = {
         '_context_timestamp': when,
         }
     args = ('monitor.info', dict)
     json_args = json.dumps(args)
     old_info_handler = views.HANDLERS['monitor.info']
     views.HANDLERS['monitor.info'] = lambda key, mess: {'host': 'api'}
     raw_values = {
         'deployment': deployment,
         'when': utils.decimal_utc(datetime.datetime.strptime(when, "%Y-%m-%dT%H:%M:%S.%f")),
         'host': 'api',
         'routing_key': 'monitor.info',
         'json': json_args
     }
     raw = self.mox.CreateMockAnything()
     views.STACKDB.create_rawdata(**raw_values).AndReturn(raw)
     views.STACKDB.save(raw)
     self.mox.ReplayAll()
     views.process_raw_data(deployment, args, json_args)
     self.mox.VerifyAll()
     views.HANDLERS['monitor.info'] = old_info_handler