def test_provider_statistics_negative_case(self):
        """Test that the provider statistics method returns None for tenant misalignment."""
        # Create Provider
        provider_authentication = ProviderAuthentication.objects.create(provider_resource_name='cluster_id_1001')
        provider = Provider.objects.create(name='ocpprovidername',
                                           type='AWS',
                                           created_by=self.user,
                                           customer=self.customer,
                                           authentication=provider_authentication,)

        data_generator = OCPReportDataGenerator(self.tenant, provider)
        data_generator.add_data_to_tenant(**{'provider_uuid': provider.uuid})

        provider_uuid = provider.uuid
        manager = ProviderManager(provider_uuid)

        stats = manager.provider_statistics(self.tenant)

        self.assertIn(str(data_generator.dh.this_month_start.date()), stats.keys())
        self.assertIn(str(data_generator.dh.last_month_start.date()), stats.keys())

        for key, value in stats.items():
            key_date_obj = parser.parse(key)
            value_data = value.pop()

            self.assertIsNotNone(value_data.get('assembly_id'))
            self.assertIsNotNone(value_data.get('files_processed'))
            self.assertEqual(value_data.get('billing_period_start'), key_date_obj.date())
            self.assertGreater(parser.parse(value_data.get('last_process_start_date')), key_date_obj)
            self.assertGreater(parser.parse(value_data.get('last_process_complete_date')), key_date_obj)
            self.assertIsNone(value_data.get('summary_data_creation_datetime'))
            self.assertIsNone(value_data.get('summary_data_updated_datetime'))
            self.assertIsNone(value_data.get('derived_cost_datetime'))
예제 #2
0
    def test_provider_statistics(self):
        """Test that the provider statistics method returns report stats."""
        provider = Provider.objects.filter(data_updated_timestamp__isnull=False).first()

        self.assertIsNotNone(provider)

        provider_uuid = provider.uuid
        manager = ProviderManager(provider_uuid)
        stats = manager.provider_statistics(self.tenant)

        self.assertIn(str(self.dh.this_month_start.date()), stats.keys())
        self.assertIn(str(self.dh.last_month_start.date()), stats.keys())

        for key, value in stats.items():
            if key == "data_updated_date":
                value_data = value
                self.assertIsInstance(parser.parse(value_data), date)
                continue
            key_date_obj = parser.parse(key)
            value_data = value.pop()

            self.assertIsNotNone(value_data.get("assembly_id"))
            self.assertIsNotNone(value_data.get("files_processed"))
            self.assertEqual(value_data.get("billing_period_start"), key_date_obj.date())
            self.assertGreater(parser.parse(value_data.get("last_process_start_date")), key_date_obj)
            self.assertGreater(parser.parse(value_data.get("last_process_complete_date")), key_date_obj)
            self.assertGreater(parser.parse(value_data.get("last_manifest_complete_date")), key_date_obj)
예제 #3
0
    def test_provider_statistics_ocp_on_cloud(self):
        """Test that the provider statistics method returns report stats."""
        provider_uuid = ProviderInfrastructureMap.objects.first(
        ).infrastructure_provider_id
        provider = Provider.objects.filter(uuid=provider_uuid).first()

        self.assertIsNotNone(provider)

        provider_uuid = provider.uuid
        manager = ProviderManager(provider_uuid)
        stats = manager.provider_statistics(self.tenant)

        self.assertIn(str(self.dh.this_month_start.date()), stats.keys())
        self.assertIn(str(self.dh.last_month_start.date()), stats.keys())

        for key, value in stats.items():
            if key == "data_updated_date":
                value_data = value
                self.assertIsInstance(parser.parse(value_data), date)
                continue
            elif key == "ocp_on_cloud_data_updated_date":
                self.assertIsInstance(parser.parse(value_data), date)
                continue
            ocp_on_cloud = value.get("ocp_on_cloud")
            for record in ocp_on_cloud:
                self.assertIsNotNone(record.get("ocp_source_uuid"))
                self.assertIsNotNone(
                    record.get("ocp_on_cloud_updated_datetime"))
예제 #4
0
파일: view.py 프로젝트: project-koku/koku
 def stats(self, request, pk=None):
     """Get source stats."""
     source = self.get_object()
     stats = {}
     try:
         manager = ProviderManager(source.source_uuid)
     except ProviderManagerError:
         stats["provider_linked"] = False
     else:
         stats["provider_linked"] = True
         stats.update(manager.provider_statistics(request.tenant))
     return Response(stats)
예제 #5
0
파일: view.py 프로젝트: dccurtis/koku
 def stats(self, request, pk=None):
     """Get source stats."""
     account_id = request.user.customer.account_id
     schema_name = create_schema_name(account_id)
     source = self.get_object()
     stats = {}
     try:
         manager = ProviderManager(source.source_uuid)
     except ProviderManagerError:
         stats["provider_linked"] = False
     else:
         stats["provider_linked"] = True
         tenant = Tenant.objects.get(schema_name=schema_name)
         stats.update(manager.provider_statistics(tenant))
     return Response(stats)
예제 #6
0
    def test_provider_statistics_no_report_data(self):
        """Test that the provider statistics method returns no report stats with no report data."""
        # Create Provider
        credentials = {"cluster_id": "cluster_id_1001"}
        provider_authentication = ProviderAuthentication.objects.create(credentials=credentials)
        with patch("masu.celery.tasks.check_report_updates"):
            provider = Provider.objects.create(
                name="ocpprovidername",
                type=Provider.PROVIDER_OCP,
                created_by=self.user,
                customer=self.customer,
                authentication=provider_authentication,
            )

        provider_uuid = provider.uuid
        manager = ProviderManager(provider_uuid)

        stats = manager.provider_statistics(self.tenant)
        self.assertEqual(stats, {"data_updated_date": None})
    def test_provider_statistics_no_report_data(self):
        """Test that the provider statistics method returns no report stats with no report data."""
        # Create Provider
        provider_authentication = ProviderAuthentication.objects.create(provider_resource_name='cluster_id_1001')
        provider = Provider.objects.create(name='ocpprovidername',
                                           type='OCP',
                                           created_by=self.user,
                                           customer=self.customer,
                                           authentication=provider_authentication,)

        data_generator = OCPReportDataGenerator(self.tenant, provider)
        data_generator.remove_data_from_reporting_common()
        data_generator.remove_data_from_tenant()

        provider_uuid = provider.uuid
        manager = ProviderManager(provider_uuid)

        stats = manager.provider_statistics(self.tenant)
        self.assertEqual(stats, {})
예제 #8
0
    def test_provider_statistics(self):
        """Test that the provider statistics method returns report stats."""
        # Create Provider
        provider_authentication = ProviderAuthentication.objects.create(provider_resource_name="cluster_id_1001")
        provider = Provider.objects.create(
            name="ocpprovidername",
            type=Provider.PROVIDER_OCP,
            created_by=self.user,
            customer=self.customer,
            authentication=provider_authentication,
        )

        data_generator = OCPReportDataGenerator(self.tenant, provider)
        data_generator.add_data_to_tenant(**{"provider_uuid": provider.uuid})

        provider_uuid = provider.uuid
        manager = ProviderManager(provider_uuid)

        stats = manager.provider_statistics(self.tenant)

        self.assertIn(str(data_generator.dh.this_month_start.date()), stats.keys())
        self.assertIn(str(data_generator.dh.last_month_start.date()), stats.keys())

        for key, value in stats.items():
            key_date_obj = parser.parse(key)
            value_data = value.pop()

            self.assertIsNotNone(value_data.get("assembly_id"))
            self.assertIsNotNone(value_data.get("files_processed"))
            self.assertEqual(value_data.get("billing_period_start"), key_date_obj.date())
            self.assertGreater(parser.parse(value_data.get("last_process_start_date")), key_date_obj)
            self.assertGreater(parser.parse(value_data.get("last_process_complete_date")), key_date_obj)
            self.assertGreater(parser.parse(value_data.get("last_manifest_complete_date")), key_date_obj)
            self.assertGreater(parser.parse(value_data.get("summary_data_creation_datetime")), key_date_obj)
            self.assertGreater(parser.parse(value_data.get("summary_data_updated_datetime")), key_date_obj)
            self.assertGreater(parser.parse(value_data.get("derived_cost_datetime")), key_date_obj)