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'))
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)
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"))
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)
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)
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, {})
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)