diff --git a/nise/__init__.py b/nise/__init__.py index 5e6604d0..723f7215 100644 --- a/nise/__init__.py +++ b/nise/__init__.py @@ -1,4 +1,4 @@ -__version__ = "4.6.9" +__version__ = "4.7.0" VERSION = __version__.split(".") diff --git a/nise/generators/gcp/compute_engine_generator.py b/nise/generators/gcp/compute_engine_generator.py index 28202377..76164c81 100644 --- a/nise/generators/gcp/compute_engine_generator.py +++ b/nise/generators/gcp/compute_engine_generator.py @@ -58,6 +58,8 @@ class ComputeEngineGenerator(GCPGenerator): LABELS = (([{"key": "vm_key_proj2", "value": "vm_label_proj2"}]), ([])) + EFFECTIVE_PRICE = ("0.0114", "0.0417", "0.1922", "0.0452") + def __init__(self, start_date, end_date, currency, project, attributes=None): # noqa: C901 """Initialize the cloud storage generator.""" super().__init__(start_date, end_date, currency, project, attributes) @@ -123,6 +125,8 @@ def _update_data(self, row): # noqa: C901 row["currency"] = self._currency row["labels"] = self.determine_labels(self.LABELS) row["system_labels"] = self.determine_system_labels(sku[3]) + row["price.effective_price"] = choice(self.EFFECTIVE_PRICE) + if self.resource_level: resource = self._generate_resource( self._resource_name, self._resource_global_name, self.project.get("region") @@ -183,6 +187,9 @@ def _update_data(self, row): # noqa: C901 month = datetime.strptime(row.get("usage_start_time")[:7], "%Y-%m").month invoice["month"] = f"{year}{month:02d}" row["invoice"] = invoice + effective_price = choice(self.EFFECTIVE_PRICE) + row["price"] = {"effective_price": effective_price} + if self.resource_level: resource = self._generate_resource() row["resource"] = resource diff --git a/nise/generators/gcp/gcp_generator.py b/nise/generators/gcp/gcp_generator.py index bb89c2e0..40f9fd6a 100644 --- a/nise/generators/gcp/gcp_generator.py +++ b/nise/generators/gcp/gcp_generator.py @@ -56,6 +56,7 @@ "invoice.month", "cost_type", "partition_date", + "price.effective_price", ) GCP_RESOURCE_COLUMNS = ("resource.name", "resource.global_name") diff --git a/nise/upload.py b/nise/upload.py index c1f54f21..74a14943 100644 --- a/nise/upload.py +++ b/nise/upload.py @@ -269,6 +269,12 @@ def gcp_bucket_to_dataset(gcp_bucket_name, file_name, dataset_name, table_name, "mode": "NULLABLE", }, {"name": "cost_type", "type": "STRING", "mode": "NULLABLE"}, + { + "name": "price", + "type": "RECORD", + "fields": [{"name": "effective_price", "type": "STRING", "mode": "NULLABLE"}], + "mode": "NULLABLE", + }, { "name": "adjustment_info", "type": "RECORD", diff --git a/tests/test_gcp_generator.py b/tests/test_gcp_generator.py index 372c6a28..4cd492f0 100644 --- a/tests/test_gcp_generator.py +++ b/tests/test_gcp_generator.py @@ -66,6 +66,7 @@ def setUp(self): "resource.name": "resource-name", "resource.global_name": "global-name", "resource_level": True, + "price.effective_price": 0.04524, } self.now = datetime.now().replace(microsecond=0, second=0, minute=0) self.yesterday = self.now - timedelta(days=1) @@ -126,6 +127,7 @@ def test_compute_engine_init_with_usage_attributes(self): generated_data = generator.generate_data() list_data = list(generated_data) self.assertEqual(list_data[0]["cost"], self.usage_attributes["usage.amount"] * self.usage_attributes["price"]) + self.assertIn("price.effective_price", list_data[0]) def test_compute_engine_init_with_sku_attributes(self): """Test the init with sku attributes for Compute Engine."""