diff --git a/tools/asset-inventory/asset_inventory/api_schema.py b/tools/asset-inventory/asset_inventory/api_schema.py index 218c0cc87f..9aae9d1853 100644 --- a/tools/asset-inventory/asset_inventory/api_schema.py +++ b/tools/asset-inventory/asset_inventory/api_schema.py @@ -285,7 +285,7 @@ def _add_asset_export_fields(cls, }] if include_resource: resource_schema = list(schema) - last_modified, _ = bigquery_schema.get_field_by_name( + _, last_modified = bigquery_schema.get_field_by_name( resource_schema, 'lastModifiedTime') if not last_modified: diff --git a/tools/asset-inventory/tests/test_api_schema.py b/tools/asset-inventory/tests/test_api_schema.py index bbfc18a777..9e52cfe2a0 100644 --- a/tools/asset-inventory/tests/test_api_schema.py +++ b/tools/asset-inventory/tests/test_api_schema.py @@ -201,6 +201,36 @@ def test_for_for_asset_type(self): # name, asset_type, timestamp, resource, iam_policy self.assertEqual(len(schema), 5) + def test_resource_last_modified(self): + # Test that resource lastModifiedTime takes precedence. + APISchema._discovery_document_cache = { + 'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest': { + 'id': 'compute.v1', + 'schemas': { + 'Machine': { + 'properties': { + 'lastModifiedTime': { + 'type': 'string', + 'description': 'Track time of last change.' + }}}}}, + 'https://content.googleapis.com/discovery/v1/apis': { + 'items': [{ + 'name': 'compute', + 'version': 'v1', + 'discoveryRestUrl': 'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest'}]}} + schema = APISchema.bigquery_schema_for_resource( + 'google.compute.Machine', + 'Machine', + 'https://www.googleapis.com/discovery/v1/apis/compute/v1/rest', + True, True) + data_fields = self.get_schema_data_field(schema) + self.assertEqual( + [{'field_type': 'STRING', + 'name': 'lastModifiedTime', + 'description': 'Track time of last change.', + 'mode': 'NULLABLE'}], + data_fields) + def test_self_recursive_properties(self): discovery_doc = { 'id': 'recursive#api',