diff --git a/docs/jupiterone.md b/docs/jupiterone.md index a933cc0e..8b23791c 100644 --- a/docs/jupiterone.md +++ b/docs/jupiterone.md @@ -460,6 +460,7 @@ The following relationships are created: | `google_cloud_folder` | **HAS** | `google_cloud_folder` | | `google_cloud_function` | **USES** | `google_iam_service_account` | | `google_cloud_function` | **USES** | `google_cloud_source_repository` | +| `google_cloud_function` | **USES** | `google_storage_bucket` | | `google_cloud_organization` | **HAS** | `google_cloud_folder` | | `google_cloud_project` | **HAS** | `google_cloud_api_service` | | `google_cloud_project` | **HAS** | `google_billing_budget` | diff --git a/docs/spec/src/steps/services/functions/index.ts b/docs/spec/src/steps/services/functions/index.ts index 8dc3c160..cb38fe16 100644 --- a/docs/spec/src/steps/services/functions/index.ts +++ b/docs/spec/src/steps/services/functions/index.ts @@ -62,7 +62,7 @@ export const functionSteps: StepSpec[] = [ }, ], dependsOn: ['fetch-cloud-functions', 'fetch-cloud-storage-buckets'], - implemented: false, + implemented: true, }, { /** diff --git a/src/getStepStartStates.ts b/src/getStepStartStates.ts index 22580212..0ae30cbc 100644 --- a/src/getStepStartStates.ts +++ b/src/getStepStartStates.ts @@ -113,6 +113,7 @@ import { STEP_CLOUD_FUNCTIONS, STEP_CLOUD_FUNCTIONS_SERVICE_ACCOUNT_RELATIONSHIPS, STEP_CLOUD_FUNCTIONS_SOURCE_REPO_RELATIONSHIPS, + STEP_CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIPS, } from './steps/functions'; import { STEP_IAM_CUSTOM_ROLES, @@ -303,6 +304,7 @@ function getDefaultStepStartStates(params: { [STEP_CLOUD_FUNCTIONS]: { disabled: false }, [STEP_CLOUD_FUNCTIONS_SERVICE_ACCOUNT_RELATIONSHIPS]: { disabled: false }, [STEP_CLOUD_FUNCTIONS_SOURCE_REPO_RELATIONSHIPS]: { disabled: false }, + [STEP_CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIPS]: { disabled: false }, [STEP_CLOUD_STORAGE_BUCKETS]: { disabled: false }, [STEP_IAM_CUSTOM_ROLES]: { disabled: false }, [STEP_IAM_CUSTOM_ROLE_SERVICE_API_RELATIONSHIPS]: { disabled: false }, @@ -596,6 +598,9 @@ async function getStepStartStatesUsingServiceEnablements(params: { [STEP_CLOUD_FUNCTIONS_SOURCE_REPO_RELATIONSHIPS]: createStepStartState( ServiceUsageName.CLOUD_FUNCTIONS, ), + [STEP_CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIPS]: createStepStartState( + ServiceUsageName.CLOUD_FUNCTIONS, + ), [STEP_CLOUD_STORAGE_BUCKETS]: createStepStartState( ServiceUsageName.STORAGE, ServiceUsageName.STORAGE_COMPONENT, diff --git a/src/index.test.ts b/src/index.test.ts index 1c654ad6..c2b2e1b8 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -175,6 +175,7 @@ import { STEP_CLOUD_FUNCTIONS, STEP_CLOUD_FUNCTIONS_SERVICE_ACCOUNT_RELATIONSHIPS, STEP_CLOUD_FUNCTIONS_SOURCE_REPO_RELATIONSHIPS, + STEP_CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIPS, } from './steps/functions'; interface ValidateInvocationInvalidConfigTestParams { @@ -330,6 +331,9 @@ describe('#getStepStartStates success', () => { [STEP_CLOUD_FUNCTIONS_SOURCE_REPO_RELATIONSHIPS]: { disabled: false, }, + [STEP_CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIPS]: { + disabled: false, + }, [STEP_CLOUD_STORAGE_BUCKETS]: { disabled: false, }, diff --git a/src/steps/functions/__recordings__/build-cloud-function-source-repo-relationships_912814797/recording.har b/src/steps/functions/__recordings__/build-cloud-function-source-repo-relationships_912814797/recording.har index 31dd981e..78d89b73 100644 --- a/src/steps/functions/__recordings__/build-cloud-function-source-repo-relationships_912814797/recording.har +++ b/src/steps/functions/__recordings__/build-cloud-function-source-repo-relationships_912814797/recording.har @@ -62,11 +62,11 @@ "url": "https://www.googleapis.com/oauth2/v4/token" }, "response": { - "bodySize": 414, + "bodySize": 384, "content": { "encoding": "utf-8", "mimeType": "application/json; charset=UTF-8", - "size": 414, + "size": 384, "text": "{\"access_token\":\"[REDACTED]\",\"expires_in\":9999,\"token_type\":\"Bearer\"}" }, "cookies": [], @@ -81,7 +81,7 @@ }, { "name": "date", - "value": "Tue, 01 Nov 2022 15:52:58 GMT" + "value": "Tue, 08 Nov 2022 15:57:25 GMT" }, { "name": "server", @@ -118,8 +118,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2022-11-01T15:52:58.699Z", - "time": 145, + "startedDateTime": "2022-11-08T15:57:25.395Z", + "time": 119, "timings": { "blocked": -1, "connect": -1, @@ -127,7 +127,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 145 + "wait": 119 } }, { @@ -180,12 +180,12 @@ "url": "https://cloudfunctions.googleapis.com/v1/projects/j1-gc-integration-dev-v3/locations/-/functions" }, "response": { - "bodySize": 1145, + "bodySize": 1420, "content": { "encoding": "utf-8", "mimeType": "application/json; charset=UTF-8", - "size": 1145, - "text": "{\"functions\":[{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/gaston-delete\",\"sourceRepository\":{\"url\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/gaston/moveable-aliases/master/paths/\",\"deployedUrl\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/gaston/revisions//paths/\"},\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/gaston-delete\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"UNKNOWN\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-10-31T12:04:14.816Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/j1-gc-integration-dev-v3testfunction\",\"description\":\"Test function\",\"sourceArchiveUrl\":\"gs://j1-gc-integration-dev-v3cloudfunctions/http_trigger.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/j1-gc-integration-dev-v3testfunction\",\"securityLevel\":\"SECURE_OPTIONAL\"},\"status\":\"ACTIVE\",\"entryPoint\":\"handler\",\"timeout\":\"60s\",\"availableMemoryMb\":128,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2021-05-31T16:36:15.024Z\",\"versionId\":\"1\",\"environmentVariables\":{\"TEST_ENV_VAR\":\"test-env-var-val\"},\"runtime\":\"nodejs10\",\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"468a40b5-ba13-41aa-84d8-0ffb43a9c153\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/468a40b5-ba13-41aa-84d8-0ffb43a9c153\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/j1-gc-integration-dev-v3testfunctionwithsa\",\"description\":\"Test function with service account\",\"sourceArchiveUrl\":\"gs://j1-gc-integration-dev-v3cloudfunctions/http_trigger.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/j1-gc-integration-dev-v3testfunctionwithsa\",\"securityLevel\":\"SECURE_OPTIONAL\"},\"status\":\"ACTIVE\",\"entryPoint\":\"handler\",\"timeout\":\"60s\",\"availableMemoryMb\":128,\"serviceAccountEmail\":\"j1-gc-integration-dev-f-sa@j1-gc-integration-dev-v3.iam.gserviceaccount.com\",\"updateTime\":\"2021-05-31T16:36:14.851Z\",\"versionId\":\"1\",\"environmentVariables\":{\"TEST_ENV_VAR\":\"test-env-var-val\"},\"runtime\":\"nodejs10\",\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"f90313dc-1de2-4181-8709-9865b6507e04\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/f90313dc-1de2-4181-8709-9865b6507e04\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"}]}" + "size": 1420, + "text": "{\"functions\":[{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/function-1\",\"sourceRepository\":{\"url\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/nacho/moveable-aliases/master/paths/\",\"deployedUrl\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/nacho/revisions//paths/\"},\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/function-1\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"UNKNOWN\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-11-01T19:38:17.683Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/gaston-delete\",\"sourceRepository\":{\"url\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/gaston/moveable-aliases/master/paths/\",\"deployedUrl\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/gaston/revisions//paths/\"},\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/gaston-delete\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"UNKNOWN\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-10-31T12:04:14.816Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/gaston-delete-2\",\"sourceArchiveUrl\":\"gs://gaston-delete/carpeta sin título.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/gaston-delete-2\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"OFFLINE\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-11-04T13:15:28.330Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"e7790f72-962e-4bef-aac1-3f49efe41066\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/e7790f72-962e-4bef-aac1-3f49efe41066\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/j1-gc-integration-dev-v3testfunction\",\"description\":\"Test function\",\"sourceArchiveUrl\":\"gs://j1-gc-integration-dev-v3cloudfunctions/http_trigger.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/j1-gc-integration-dev-v3testfunction\",\"securityLevel\":\"SECURE_OPTIONAL\"},\"status\":\"ACTIVE\",\"entryPoint\":\"handler\",\"timeout\":\"60s\",\"availableMemoryMb\":128,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2021-05-31T16:36:15.024Z\",\"versionId\":\"1\",\"environmentVariables\":{\"TEST_ENV_VAR\":\"test-env-var-val\"},\"runtime\":\"nodejs10\",\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"468a40b5-ba13-41aa-84d8-0ffb43a9c153\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/468a40b5-ba13-41aa-84d8-0ffb43a9c153\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/j1-gc-integration-dev-v3testfunctionwithsa\",\"description\":\"Test function with service account\",\"sourceArchiveUrl\":\"gs://j1-gc-integration-dev-v3cloudfunctions/http_trigger.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/j1-gc-integration-dev-v3testfunctionwithsa\",\"securityLevel\":\"SECURE_OPTIONAL\"},\"status\":\"ACTIVE\",\"entryPoint\":\"handler\",\"timeout\":\"60s\",\"availableMemoryMb\":128,\"serviceAccountEmail\":\"j1-gc-integration-dev-f-sa@j1-gc-integration-dev-v3.iam.gserviceaccount.com\",\"updateTime\":\"2021-05-31T16:36:14.851Z\",\"versionId\":\"1\",\"environmentVariables\":{\"TEST_ENV_VAR\":\"test-env-var-val\"},\"runtime\":\"nodejs10\",\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"f90313dc-1de2-4181-8709-9865b6507e04\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/f90313dc-1de2-4181-8709-9865b6507e04\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/nacho\",\"sourceRepository\":{\"url\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/default/moveable-aliases/master/paths/\",\"deployedUrl\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/default/revisions//paths/\"},\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/nacho\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"UNKNOWN\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-11-01T19:37:28.455Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"}]}" }, "cookies": [], "headers": [ @@ -199,7 +199,7 @@ }, { "name": "date", - "value": "Tue, 01 Nov 2022 15:52:59 GMT" + "value": "Tue, 08 Nov 2022 15:57:26 GMT" }, { "name": "server", @@ -236,8 +236,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2022-11-01T15:52:58.847Z", - "time": 965, + "startedDateTime": "2022-11-08T15:57:25.520Z", + "time": 708, "timings": { "blocked": -1, "connect": -1, @@ -245,7 +245,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 965 + "wait": 708 } }, { @@ -303,11 +303,11 @@ "url": "https://www.googleapis.com/oauth2/v4/token" }, "response": { - "bodySize": 394, + "bodySize": 445, "content": { "encoding": "utf-8", "mimeType": "application/json; charset=UTF-8", - "size": 394, + "size": 445, "text": "{\"access_token\":\"[REDACTED]\",\"expires_in\":9999,\"token_type\":\"Bearer\"}" }, "cookies": [], @@ -322,7 +322,7 @@ }, { "name": "date", - "value": "Tue, 01 Nov 2022 15:53:00 GMT" + "value": "Tue, 08 Nov 2022 15:57:26 GMT" }, { "name": "server", @@ -359,8 +359,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2022-11-01T15:52:59.846Z", - "time": 120, + "startedDateTime": "2022-11-08T15:57:26.238Z", + "time": 116, "timings": { "blocked": -1, "connect": -1, @@ -368,7 +368,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 120 + "wait": 116 } }, { @@ -421,11 +421,11 @@ "url": "https://sourcerepo.googleapis.com/v1/projects/j1-gc-integration-dev-v3/repos" }, "response": { - "bodySize": 243, + "bodySize": 253, "content": { "encoding": "utf-8", "mimeType": "application/json; charset=UTF-8", - "size": 243, + "size": 253, "text": "{\"repos\":[{\"name\":\"projects/j1-gc-integration-dev-v3/repos/gaston\",\"url\":\"https://source.developers.google.com/p/j1-gc-integration-dev-v3/r/gaston\"},{\"name\":\"projects/j1-gc-integration-dev-v3/repos/nacho\",\"url\":\"https://source.developers.google.com/p/j1-gc-integration-dev-v3/r/nacho\"}]}" }, "cookies": [], @@ -440,7 +440,7 @@ }, { "name": "date", - "value": "Tue, 01 Nov 2022 15:53:01 GMT" + "value": "Tue, 08 Nov 2022 15:57:27 GMT" }, { "name": "server", @@ -477,8 +477,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2022-11-01T15:52:59.976Z", - "time": 1066, + "startedDateTime": "2022-11-08T15:57:26.361Z", + "time": 979, "timings": { "blocked": -1, "connect": -1, @@ -486,7 +486,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 1066 + "wait": 979 } } ], diff --git a/src/steps/functions/__recordings__/build-cloud-function-storage-bucket-relationships_1146849873/recording.har b/src/steps/functions/__recordings__/build-cloud-function-storage-bucket-relationships_1146849873/recording.har new file mode 100644 index 00000000..c9d3a93e --- /dev/null +++ b/src/steps/functions/__recordings__/build-cloud-function-storage-bucket-relationships_1146849873/recording.har @@ -0,0 +1,2677 @@ +{ + "log": { + "_recordingName": "build-cloud-function-storage-bucket-relationships", + "creator": { + "comment": "persister:JupiterOneIntegationFSPersister", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "acea721c8193b51ced888cae721cc423", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 709, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-length", + "value": "709" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip,deflate" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "www.googleapis.com" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "[REDACTED]" + }, + "queryString": [], + "url": "https://www.googleapis.com/oauth2/v4/token" + }, + "response": { + "bodySize": 452, + "content": { + "encoding": "utf-8", + "mimeType": "application/json; charset=UTF-8", + "size": 452, + "text": "{\"access_token\":\"[REDACTED]\",\"expires_in\":9999,\"token_type\":\"Bearer\"}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "vary", + "value": "Origin, X-Origin, Referer" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:27 GMT" + }, + { + "name": "server", + "value": "scaffolding on HTTPServer2" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "x-xss-protection", + "value": "0" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 506, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:27.358Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + }, + { + "_id": "bcff475f691147ea18d4b1c0f20e74e4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "cloudfunctions.googleapis.com" + } + ], + "headersSize": 1375, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://cloudfunctions.googleapis.com/v1/projects/j1-gc-integration-dev-v3/locations/-/functions" + }, + "response": { + "bodySize": 1437, + "content": { + "encoding": "utf-8", + "mimeType": "application/json; charset=UTF-8", + "size": 1437, + "text": "{\"functions\":[{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/function-1\",\"sourceRepository\":{\"url\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/nacho/moveable-aliases/master/paths/\",\"deployedUrl\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/nacho/revisions//paths/\"},\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/function-1\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"UNKNOWN\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-11-01T19:38:17.683Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/gaston-delete\",\"sourceRepository\":{\"url\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/gaston/moveable-aliases/master/paths/\",\"deployedUrl\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/gaston/revisions//paths/\"},\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/gaston-delete\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"UNKNOWN\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-10-31T12:04:14.816Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/gaston-delete-2\",\"sourceArchiveUrl\":\"gs://gaston-delete/carpeta sin título.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/gaston-delete-2\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"OFFLINE\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-11-04T13:15:28.330Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"e7790f72-962e-4bef-aac1-3f49efe41066\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/e7790f72-962e-4bef-aac1-3f49efe41066\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/j1-gc-integration-dev-v3testfunction\",\"description\":\"Test function\",\"sourceArchiveUrl\":\"gs://j1-gc-integration-dev-v3cloudfunctions/http_trigger.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/j1-gc-integration-dev-v3testfunction\",\"securityLevel\":\"SECURE_OPTIONAL\"},\"status\":\"ACTIVE\",\"entryPoint\":\"handler\",\"timeout\":\"60s\",\"availableMemoryMb\":128,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2021-05-31T16:36:15.024Z\",\"versionId\":\"1\",\"environmentVariables\":{\"TEST_ENV_VAR\":\"test-env-var-val\"},\"runtime\":\"nodejs10\",\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"468a40b5-ba13-41aa-84d8-0ffb43a9c153\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/468a40b5-ba13-41aa-84d8-0ffb43a9c153\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/j1-gc-integration-dev-v3testfunctionwithsa\",\"description\":\"Test function with service account\",\"sourceArchiveUrl\":\"gs://j1-gc-integration-dev-v3cloudfunctions/http_trigger.zip\",\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/j1-gc-integration-dev-v3testfunctionwithsa\",\"securityLevel\":\"SECURE_OPTIONAL\"},\"status\":\"ACTIVE\",\"entryPoint\":\"handler\",\"timeout\":\"60s\",\"availableMemoryMb\":128,\"serviceAccountEmail\":\"j1-gc-integration-dev-f-sa@j1-gc-integration-dev-v3.iam.gserviceaccount.com\",\"updateTime\":\"2021-05-31T16:36:14.851Z\",\"versionId\":\"1\",\"environmentVariables\":{\"TEST_ENV_VAR\":\"test-env-var-val\"},\"runtime\":\"nodejs10\",\"ingressSettings\":\"ALLOW_ALL\",\"buildId\":\"f90313dc-1de2-4181-8709-9865b6507e04\",\"buildName\":\"projects/167984947943/locations/us-central1/builds/f90313dc-1de2-4181-8709-9865b6507e04\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"},{\"name\":\"projects/j1-gc-integration-dev-v3/locations/us-central1/functions/nacho\",\"sourceRepository\":{\"url\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/default/moveable-aliases/master/paths/\",\"deployedUrl\":\"https://source.developers.google.com/projects/j1-gc-integration-dev-v3/repos/default/revisions//paths/\"},\"httpsTrigger\":{\"url\":\"https://us-central1-j1-gc-integration-dev-v3.cloudfunctions.net/nacho\",\"securityLevel\":\"SECURE_ALWAYS\"},\"status\":\"UNKNOWN\",\"entryPoint\":\"helloWorld\",\"timeout\":\"60s\",\"availableMemoryMb\":256,\"serviceAccountEmail\":\"j1-gc-integration-dev-v3@appspot.gserviceaccount.com\",\"updateTime\":\"2022-11-01T19:37:28.455Z\",\"versionId\":\"1\",\"labels\":{\"deployment-tool\":\"console-cloud\"},\"runtime\":\"nodejs16\",\"maxInstances\":3000,\"ingressSettings\":\"ALLOW_ALL\",\"dockerRegistry\":\"CONTAINER_REGISTRY\"}]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "vary", + "value": "Origin, X-Origin, Referer" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:28 GMT" + }, + { + "name": "server", + "value": "ESF" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "x-xss-protection", + "value": "0" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:27.477Z", + "time": 1016, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1016 + } + }, + { + "_id": "acea721c8193b51ced888cae721cc423", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 709, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-length", + "value": "709" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip,deflate" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "www.googleapis.com" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "[REDACTED]" + }, + "queryString": [], + "url": "https://www.googleapis.com/oauth2/v4/token" + }, + "response": { + "bodySize": 489, + "content": { + "encoding": "utf-8", + "mimeType": "application/json; charset=UTF-8", + "size": 489, + "text": "{\"access_token\":\"[REDACTED]\",\"expires_in\":9999,\"token_type\":\"Bearer\"}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "vary", + "value": "Origin, X-Origin, Referer" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:28 GMT" + }, + { + "name": "server", + "value": "scaffolding on HTTPServer2" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "x-xss-protection", + "value": "0" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 506, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:28.502Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "65eab8aa31b6c784d5db3b95c3652d13", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "orgpolicy.googleapis.com" + } + ], + "headersSize": 1402, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://orgpolicy.googleapis.com/v2/projects/j1-gc-integration-dev-v3/policies/storage.publicAccessPrevention:getEffectivePolicy" + }, + "response": { + "bodySize": 202, + "content": { + "encoding": "utf-8", + "mimeType": "application/json; charset=UTF-8", + "size": 202, + "text": "{\"name\":\"projects/167984947943/policies/storage.publicAccessPrevention\",\"spec\":{\"rules\":[{\"enforce\":true}]}}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "vary", + "value": "Origin, X-Origin, Referer" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:29 GMT" + }, + { + "name": "server", + "value": "ESF" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "x-xss-protection", + "value": "0" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:28.625Z", + "time": 1077, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1077 + } + }, + { + "_id": "acea721c8193b51ced888cae721cc423", + "_order": 2, + "cache": {}, + "request": { + "bodySize": 709, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-length", + "value": "709" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip,deflate" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "www.googleapis.com" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "[REDACTED]" + }, + "queryString": [], + "url": "https://www.googleapis.com/oauth2/v4/token" + }, + "response": { + "bodySize": 485, + "content": { + "encoding": "utf-8", + "mimeType": "application/json; charset=UTF-8", + "size": 485, + "text": "{\"access_token\":\"[REDACTED]\",\"expires_in\":9999,\"token_type\":\"Bearer\"}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "vary", + "value": "Origin, X-Origin, Referer" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:29 GMT" + }, + { + "name": "server", + "value": "scaffolding on HTTPServer2" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "x-xss-protection", + "value": "0" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 506, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:29.710Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + }, + { + "_id": "e131ee07f47aea1c0b6565a56aa0c9a6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1348, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "project", + "value": "j1-gc-integration-dev-v3" + } + ], + "url": "https://storage.googleapis.com/storage/v1/b?project=j1-gc-integration-dev-v3" + }, + "response": { + "bodySize": 14030, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 14030, + "text": "{\n \"kind\": \"storage#buckets\",\n \"items\": [\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/dataproc-staging-europe-north1-167984947943-oqqo30p7\",\n \"id\": \"dataproc-staging-europe-north1-167984947943-oqqo30p7\",\n \"name\": \"dataproc-staging-europe-north1-167984947943-oqqo30p7\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"2\",\n \"location\": \"EUROPE-NORTH1\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAI=\",\n \"timeCreated\": \"2021-07-20T12:47:31.280Z\",\n \"updated\": \"2022-09-08T07:30:23.430Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"region\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/dataproc-staging-us-central1-167984947943-okmnuod7\",\n \"id\": \"dataproc-staging-us-central1-167984947943-okmnuod7\",\n \"name\": \"dataproc-staging-us-central1-167984947943-okmnuod7\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"7\",\n \"location\": \"US-CENTRAL1\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAc=\",\n \"timeCreated\": \"2021-07-20T12:47:10.911Z\",\n \"updated\": \"2021-09-08T17:19:48.039Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"region\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/dataproc-temp-europe-north1-167984947943-0quq0oz0\",\n \"id\": \"dataproc-temp-europe-north1-167984947943-0quq0oz0\",\n \"name\": \"dataproc-temp-europe-north1-167984947943-0quq0oz0\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"EUROPE-NORTH1\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2021-07-20T12:47:31.407Z\",\n \"updated\": \"2021-07-20T12:47:31.407Z\",\n \"lifecycle\": {\n \"rule\": [\n {\n \"action\": {\n \"type\": \"Delete\"\n },\n \"condition\": {\n \"age\": 90\n }\n }\n ]\n },\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"region\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/dataproc-temp-us-central1-167984947943-c8nlqeyo\",\n \"id\": \"dataproc-temp-us-central1-167984947943-c8nlqeyo\",\n \"name\": \"dataproc-temp-us-central1-167984947943-c8nlqeyo\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US-CENTRAL1\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2021-07-20T12:47:10.793Z\",\n \"updated\": \"2021-07-20T12:47:10.793Z\",\n \"lifecycle\": {\n \"rule\": [\n {\n \"action\": {\n \"type\": \"Delete\"\n },\n \"condition\": {\n \"age\": 90\n }\n }\n ]\n },\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"region\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/example-backend-bucket-1\",\n \"id\": \"example-backend-bucket-1\",\n \"name\": \"example-backend-bucket-1\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"defaultEventBasedHold\": false,\n \"timeCreated\": \"2022-03-16T11:31:39.964Z\",\n \"updated\": \"2022-03-16T11:31:39.964Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": true,\n \"lockedTime\": \"2022-06-14T11:31:39.964Z\"\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": true,\n \"lockedTime\": \"2022-06-14T11:31:39.964Z\"\n },\n \"publicAccessPrevention\": \"enforced\"\n },\n \"locationType\": \"multi-region\",\n \"satisfiesPZS\": false,\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/gaston-delete\",\n \"id\": \"gaston-delete\",\n \"name\": \"gaston-delete\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2022-11-04T13:12:29.150Z\",\n \"updated\": \"2022-11-04T13:12:29.150Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": true,\n \"lockedTime\": \"2023-02-02T13:12:29.150Z\"\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": true,\n \"lockedTime\": \"2023-02-02T13:12:29.150Z\"\n },\n \"publicAccessPrevention\": \"enforced\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/gcf-sources-167984947943-us-central1\",\n \"id\": \"gcf-sources-167984947943-us-central1\",\n \"name\": \"gcf-sources-167984947943-us-central1\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US-CENTRAL1\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2021-05-31T16:26:23.272Z\",\n \"updated\": \"2021-05-31T16:26:23.272Z\",\n \"cors\": [\n {\n \"origin\": [\n \"https://*.cloud.google.com\",\n \"https://*.corp.google.com\",\n \"https://*.corp.google.com:*\"\n ],\n \"method\": [\n \"GET\"\n ]\n }\n ],\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": true,\n \"lockedTime\": \"2021-08-29T16:26:23.272Z\"\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": true,\n \"lockedTime\": \"2021-08-29T16:26:23.272Z\"\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"region\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3-sink-logging-bucket\",\n \"id\": \"j1-gc-integration-dev-v3-sink-logging-bucket\",\n \"name\": \"j1-gc-integration-dev-v3-sink-logging-bucket\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"2\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAI=\",\n \"timeCreated\": \"2021-05-31T16:25:51.614Z\",\n \"updated\": \"2022-09-30T00:53:34.941Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3-super-secret-stuff\",\n \"id\": \"j1-gc-integration-dev-v3-super-secret-stuff\",\n \"name\": \"j1-gc-integration-dev-v3-super-secret-stuff\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"12\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAw=\",\n \"defaultEventBasedHold\": false,\n \"timeCreated\": \"2021-09-13T22:56:02.534Z\",\n \"updated\": \"2021-10-27T18:29:52.571Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"multi-region\",\n \"satisfiesPZS\": false,\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3-test-tf-bucket\",\n \"id\": \"j1-gc-integration-dev-v3-test-tf-bucket\",\n \"name\": \"j1-gc-integration-dev-v3-test-tf-bucket\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"2\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAI=\",\n \"timeCreated\": \"2021-07-22T13:15:31.543Z\",\n \"updated\": \"2022-02-07T12:41:33.448Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"enforced\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3.appspot.com\",\n \"id\": \"j1-gc-integration-dev-v3.appspot.com\",\n \"name\": \"j1-gc-integration-dev-v3.appspot.com\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2022-03-16T10:53:36.805Z\",\n \"updated\": \"2022-03-16T10:53:36.805Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3_cloudbuild\",\n \"id\": \"j1-gc-integration-dev-v3_cloudbuild\",\n \"name\": \"j1-gc-integration-dev-v3_cloudbuild\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2022-08-17T20:44:36.493Z\",\n \"updated\": \"2022-08-17T20:44:36.493Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3cloudfunctions\",\n \"id\": \"j1-gc-integration-dev-v3cloudfunctions\",\n \"name\": \"j1-gc-integration-dev-v3cloudfunctions\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"5\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAU=\",\n \"timeCreated\": \"2021-05-31T16:25:44.251Z\",\n \"updated\": \"2021-09-13T17:25:24.390Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/nacho_b4dfb99a_e0dc_4668_8d93_a3b6a68842e4\",\n \"id\": \"nacho_b4dfb99a_e0dc_4668_8d93_a3b6a68842e4\",\n \"name\": \"nacho_b4dfb99a_e0dc_4668_8d93_a3b6a68842e4\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US-EAST1\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2022-09-08T07:23:00.011Z\",\n \"updated\": \"2022-09-08T07:23:00.011Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": true,\n \"lockedTime\": \"2022-12-07T07:23:00.011Z\"\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": true,\n \"lockedTime\": \"2022-12-07T07:23:00.011Z\"\n },\n \"publicAccessPrevention\": \"enforced\"\n },\n \"locationType\": \"region\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/staging.j1-gc-integration-dev-v3.appspot.com\",\n \"id\": \"staging.j1-gc-integration-dev-v3.appspot.com\",\n \"name\": \"staging.j1-gc-integration-dev-v3.appspot.com\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2022-03-16T10:53:36.905Z\",\n \"updated\": \"2022-03-16T10:53:36.905Z\",\n \"lifecycle\": {\n \"rule\": [\n {\n \"action\": {\n \"type\": \"Delete\"\n },\n \"condition\": {\n \"age\": 15\n }\n }\n ]\n },\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n },\n {\n \"kind\": \"storage#bucket\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/us.artifacts.j1-gc-integration-dev-v3.appspot.com\",\n \"id\": \"us.artifacts.j1-gc-integration-dev-v3.appspot.com\",\n \"name\": \"us.artifacts.j1-gc-integration-dev-v3.appspot.com\",\n \"projectNumber\": \"167984947943\",\n \"metageneration\": \"1\",\n \"location\": \"US\",\n \"storageClass\": \"STANDARD\",\n \"etag\": \"CAE=\",\n \"timeCreated\": \"2021-05-31T16:35:42.461Z\",\n \"updated\": \"2021-05-31T16:35:42.461Z\",\n \"iamConfiguration\": {\n \"bucketPolicyOnly\": {\n \"enabled\": false\n },\n \"uniformBucketLevelAccess\": {\n \"enabled\": false\n },\n \"publicAccessPrevention\": \"inherited\"\n },\n \"locationType\": \"multi-region\",\n \"rpo\": \"DEFAULT\"\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:31 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:31 GMT" + }, + { + "name": "content-length", + "value": "14030" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 571, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:29.837Z", + "time": 1499, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1499 + } + }, + { + "_id": "752af354bf22611a0b56f66a85fd7c09", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1372, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/dataproc-staging-europe-north1-167984947943-oqqo30p7/iam" + }, + "response": { + "bodySize": 659, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 659, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/dataproc-staging-europe-north1-167984947943-oqqo30p7\",\n \"version\": 1,\n \"etag\": \"CAI=\",\n \"bindings\": [\n {\n \"role\": \"roles/iam.securityAdmin\",\n \"members\": [\n \"serviceAccount:167984947943-compute@developer.gserviceaccount.com\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAI=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:32 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:32 GMT" + }, + { + "name": "content-length", + "value": "659" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:31.342Z", + "time": 1118, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1118 + } + }, + { + "_id": "e6207f653440e7c1aac11b385e419f4a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1370, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/dataproc-staging-us-central1-167984947943-okmnuod7/iam" + }, + "response": { + "bodySize": 620, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 620, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/dataproc-staging-us-central1-167984947943-okmnuod7\",\n \"version\": 1,\n \"etag\": \"CAc=\",\n \"bindings\": [\n {\n \"role\": \"roles/composer.environmentAndStorageObjectViewer\",\n \"members\": [\n \"user:michael.knoedel@jupiterone.com\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"allUsers\",\n \"user:michael.knoedel@jupiterone.com\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAc=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:32 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:32 GMT" + }, + { + "name": "content-length", + "value": "620" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:32.462Z", + "time": 409, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 409 + } + }, + { + "_id": "f1146ec93342aa07ef810b7f0f492852", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1369, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/dataproc-temp-europe-north1-167984947943-0quq0oz0/iam" + }, + "response": { + "bodySize": 499, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 499, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/dataproc-temp-europe-north1-167984947943-0quq0oz0\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:34 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:34 GMT" + }, + { + "name": "content-length", + "value": "499" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:32.873Z", + "time": 1128, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1128 + } + }, + { + "_id": "d32b5df4e7bf4dd8f9f2b3cc465fd7b7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1367, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/dataproc-temp-us-central1-167984947943-c8nlqeyo/iam" + }, + "response": { + "bodySize": 497, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 497, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/dataproc-temp-us-central1-167984947943-c8nlqeyo\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:34 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:34 GMT" + }, + { + "name": "content-length", + "value": "497" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:34.009Z", + "time": 397, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 397 + } + }, + { + "_id": "c382221051c53cd4e936bdaaea002f1e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1344, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/example-backend-bucket-1/iam" + }, + "response": { + "bodySize": 800, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 800, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/example-backend-bucket-1\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:34 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:34 GMT" + }, + { + "name": "content-length", + "value": "800" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:34.412Z", + "time": 408, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 408 + } + }, + { + "_id": "410808d7e83a84ddb3b216e4a05d0087", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1333, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/gaston-delete/iam" + }, + "response": { + "bodySize": 789, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 789, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/gaston-delete\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:35 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:35 GMT" + }, + { + "name": "content-length", + "value": "789" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:34.825Z", + "time": 396, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 396 + } + }, + { + "_id": "6527f0bc704c7473ac6eb93da2ee38b3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1356, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/gcf-sources-167984947943-us-central1/iam" + }, + "response": { + "bodySize": 812, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 812, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/gcf-sources-167984947943-us-central1\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:35 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:35 GMT" + }, + { + "name": "content-length", + "value": "812" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:35.226Z", + "time": 411, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 411 + } + }, + { + "_id": "e0f9ddbf50e9e5dbc87e9ec94af04262", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1364, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3-sink-logging-bucket/iam" + }, + "response": { + "bodySize": 494, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 494, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/j1-gc-integration-dev-v3-sink-logging-bucket\",\n \"version\": 1,\n \"etag\": \"CAI=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAI=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:36 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:36 GMT" + }, + { + "name": "content-length", + "value": "494" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:35.644Z", + "time": 361, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 361 + } + }, + { + "_id": "b424fd4818c26854f527b565fe455137", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1363, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3-super-secret-stuff/iam" + }, + "response": { + "bodySize": 669, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 669, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/j1-gc-integration-dev-v3-super-secret-stuff\",\n \"version\": 1,\n \"etag\": \"CAw=\",\n \"bindings\": [\n {\n \"role\": \"organizations/958457776463/roles/NothingToSeeHere\",\n \"members\": [\n \"allUsers\",\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAw=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:36 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:36 GMT" + }, + { + "name": "content-length", + "value": "669" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:36.012Z", + "time": 392, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 392 + } + }, + { + "_id": "8d85e19b8f96dbb23b04b36ce15313f2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1359, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3-test-tf-bucket/iam" + }, + "response": { + "bodySize": 489, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 489, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/j1-gc-integration-dev-v3-test-tf-bucket\",\n \"version\": 1,\n \"etag\": \"CAI=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAI=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:36 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:36 GMT" + }, + { + "name": "content-length", + "value": "489" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:36.410Z", + "time": 407, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 407 + } + }, + { + "_id": "72f9cf30f9a415f71c3559be26071222", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1356, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3.appspot.com/iam" + }, + "response": { + "bodySize": 486, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 486, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/j1-gc-integration-dev-v3.appspot.com\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:37 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:37 GMT" + }, + { + "name": "content-length", + "value": "486" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:36.823Z", + "time": 381, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 381 + } + }, + { + "_id": "df9e68b5975c37dcaf0428feaa0b1aa7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1355, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3_cloudbuild/iam" + }, + "response": { + "bodySize": 485, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 485, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/j1-gc-integration-dev-v3_cloudbuild\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:37 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:37 GMT" + }, + { + "name": "content-length", + "value": "485" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:37.210Z", + "time": 474, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 474 + } + }, + { + "_id": "dfe939f74ed54a9d42ab204fbeb724ed", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1358, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/j1-gc-integration-dev-v3cloudfunctions/iam" + }, + "response": { + "bodySize": 488, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 488, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/j1-gc-integration-dev-v3cloudfunctions\",\n \"version\": 1,\n \"etag\": \"CAU=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAU=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:38 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:38 GMT" + }, + { + "name": "content-length", + "value": "488" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:37.690Z", + "time": 404, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 404 + } + }, + { + "_id": "e96671a6e9fb70e7c736604b279e825d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1362, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/nacho_b4dfb99a_e0dc_4668_8d93_a3b6a68842e4/iam" + }, + "response": { + "bodySize": 818, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 818, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/nacho_b4dfb99a_e0dc_4668_8d93_a3b6a68842e4\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyObjectReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:38 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:38 GMT" + }, + { + "name": "content-length", + "value": "818" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:38.101Z", + "time": 295, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 295 + } + }, + { + "_id": "93cee02f5d8ad6ade0697de1880a136b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1364, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/staging.j1-gc-integration-dev-v3.appspot.com/iam" + }, + "response": { + "bodySize": 494, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 494, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/staging.j1-gc-integration-dev-v3.appspot.com\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:38 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:38 GMT" + }, + { + "name": "content-length", + "value": "494" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:38.402Z", + "time": 513, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 513 + } + }, + { + "_id": "e6a47336fda03771ef2a23c1c54f6521", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "x-goog-api-client", + "value": "gdcl/5.0.2 gl-node/16.13.2 auth/7.1.1" + }, + { + "_fromType": "array", + "name": "accept-encoding", + "value": "gzip" + }, + { + "_fromType": "array", + "name": "user-agent", + "value": "google-api-nodejs-client/5.0.2 (gzip)" + }, + { + "_fromType": "array", + "name": "authorization", + "value": "[REDACTED]" + }, + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "connection", + "value": "close" + }, + { + "name": "host", + "value": "storage.googleapis.com" + } + ], + "headersSize": 1369, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://storage.googleapis.com/storage/v1/b/us.artifacts.j1-gc-integration-dev-v3.appspot.com/iam" + }, + "response": { + "bodySize": 499, + "content": { + "mimeType": "application/json; charset=UTF-8", + "size": 499, + "text": "{\n \"kind\": \"storage#policy\",\n \"resourceId\": \"projects/_/buckets/us.artifacts.j1-gc-integration-dev-v3.appspot.com\",\n \"version\": 1,\n \"etag\": \"CAE=\",\n \"bindings\": [\n {\n \"role\": \"roles/storage.legacyBucketOwner\",\n \"members\": [\n \"projectEditor:j1-gc-integration-dev-v3\",\n \"projectOwner:j1-gc-integration-dev-v3\"\n ]\n },\n {\n \"role\": \"roles/storage.legacyBucketReader\",\n \"members\": [\n \"projectViewer:j1-gc-integration-dev-v3\"\n ]\n }\n ]\n}\n" + }, + "cookies": [], + "headers": [ + { + "name": "x-guploader-uploadid", + "value": "[REDACTED]" + }, + { + "name": "etag", + "value": "CAE=" + }, + { + "name": "content-type", + "value": "application/json; charset=UTF-8" + }, + { + "name": "date", + "value": "Tue, 08 Nov 2022 15:57:39 GMT" + }, + { + "name": "vary", + "value": "Origin, X-Origin" + }, + { + "name": "cache-control", + "value": "private, max-age=0, must-revalidate, no-transform" + }, + { + "name": "expires", + "value": "Tue, 08 Nov 2022 15:57:39 GMT" + }, + { + "name": "content-length", + "value": "499" + }, + { + "name": "server", + "value": "UploadServer" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2022-11-08T15:57:38.921Z", + "time": 401, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 401 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/steps/functions/constants.ts b/src/steps/functions/constants.ts index 67a7fcf7..53512c98 100644 --- a/src/steps/functions/constants.ts +++ b/src/steps/functions/constants.ts @@ -1,5 +1,7 @@ import { RelationshipClass } from '@jupiterone/integration-sdk-core'; +import { CloudSourceRepositoriesEntitiesSpec } from '../cloud-source-repositories/constants'; import { IAM_SERVICE_ACCOUNT_ENTITY_TYPE } from '../iam'; +import { CLOUD_STORAGE_BUCKET_ENTITY_TYPE } from '../storage/constants'; export const CLOUD_FUNCTION_ENTITY_CLASS = 'Function'; export const CLOUD_FUNCTION_ENTITY_TYPE = 'google_cloud_function'; @@ -9,6 +11,8 @@ export const STEP_CLOUD_FUNCTIONS_SERVICE_ACCOUNT_RELATIONSHIPS = 'build-cloud-function-service-account-relationships'; export const STEP_CLOUD_FUNCTIONS_SOURCE_REPO_RELATIONSHIPS = 'build-cloud-function-source-repo-relationships'; +export const STEP_CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIPS = + 'build-cloud-function-storage-bucket-relationships'; export const FunctionStepsSpec = { FETCH_CLOUD_FUNCTIONS: { @@ -23,6 +27,10 @@ export const FunctionStepsSpec = { id: 'build-cloud-function-source-repo-relationships', name: 'Build Cloud Function -> Source Repository Relationships', }, + CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIP: { + id: 'build-cloud-function-storage-bucket-relationships', + name: 'Build Cloud Function -> Storage Bucket Relationships', + }, }; export const FunctionEntitiesSpec = { @@ -37,13 +45,19 @@ export const FunctionsRelationshipsSpec = { GOOGLE_CLOUD_FUNCTION_USES_IAM_SERVICE_ACCOUNT: { _class: RelationshipClass.USES, _type: 'google_cloud_function_uses_iam_service_account', - sourceType: 'google_cloud_function', + sourceType: FunctionEntitiesSpec.CLOUD_FUNCTION._type, targetType: IAM_SERVICE_ACCOUNT_ENTITY_TYPE, }, GOOGLE_CLOUD_FUNCTION_USES_SOURCE_REPOSITORY: { _type: 'google_cloud_function_uses_source_repository', _class: RelationshipClass.USES, - sourceType: 'google_cloud_function', - targetType: 'google_cloud_source_repository', + sourceType: FunctionEntitiesSpec.CLOUD_FUNCTION._type, + targetType: CloudSourceRepositoriesEntitiesSpec.REPOSITORY._type, + }, + GOOGLE_CLOUD_FUNCTION_USES_STORAGE_BUCKET: { + _type: 'google_cloud_function_uses_storage_bucket', + _class: RelationshipClass.USES, + sourceType: FunctionEntitiesSpec.CLOUD_FUNCTION._type, + targetType: CLOUD_STORAGE_BUCKET_ENTITY_TYPE, }, }; diff --git a/src/steps/functions/index.test.ts b/src/steps/functions/index.test.ts index 8a4f6c51..94916619 100644 --- a/src/steps/functions/index.test.ts +++ b/src/steps/functions/index.test.ts @@ -25,6 +25,8 @@ describe('#fetchCloudFunctions', () => { await recording.stop(); }); + jest.setTimeout(45000); + test('should collect data', async () => { recording = setupGoogleCloudRecording({ directory: __dirname, @@ -83,4 +85,27 @@ describe('#fetchCloudFunctions', () => { expect(result).toMatchStepMetadata(stepTestConfig); }, ); + + test( + FunctionStepsSpec.CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIP.id, + async () => { + recording = setupGoogleCloudRecording({ + name: FunctionStepsSpec.CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIP.id, + directory: __dirname, + options: { + matchRequestsBy: getMatchRequestsBy(integrationConfig), + }, + }); + + const stepTestConfig: StepTestConfig = { + stepId: + FunctionStepsSpec.CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIP.id, + instanceConfig: integrationConfig, + invocationConfig: invocationConfig as any, + }; + + const result = await executeStepWithDependencies(stepTestConfig); + expect(result).toMatchStepMetadata(stepTestConfig); + }, + ); }); diff --git a/src/steps/functions/index.ts b/src/steps/functions/index.ts index 3bec6901..a0538605 100644 --- a/src/steps/functions/index.ts +++ b/src/steps/functions/index.ts @@ -15,6 +15,8 @@ import { } from './constants'; import { CloudSourceRepositoriesStepsSpec } from '../cloud-source-repositories/constants'; import { cloudfunctions_v1 } from 'googleapis'; +import { STEP_CLOUD_STORAGE_BUCKETS } from '../storage'; +import { getCloudStorageBucketKey } from '../storage/converters'; export * from './constants'; @@ -95,7 +97,9 @@ export async function buildCloudFunctionSourceRepoRelationships( if (sourceRepoEntity) { await jobState.addRelationship( createDirectRelationship({ - _class: RelationshipClass.USES, + _class: + FunctionsRelationshipsSpec + .GOOGLE_CLOUD_FUNCTION_USES_SOURCE_REPOSITORY._class, from: cloudFunctionEntity, to: sourceRepoEntity, }), @@ -105,6 +109,42 @@ export async function buildCloudFunctionSourceRepoRelationships( ); } +export async function buildCloudFunctionStorageBucketRelationships( + context: IntegrationStepContext, +): Promise { + const { jobState } = context; + + await jobState.iterateEntities( + { + _type: FunctionEntitiesSpec.CLOUD_FUNCTION._type, + }, + async (cloudFunctionEntity) => { + const cloudFunction = + getRawData(cloudFunctionEntity); + + const storageBucketKey = cloudFunction?.sourceArchiveUrl?.split('/')[2]; + + if (!storageBucketKey) return; + + const storageBucketEntity = await jobState.findEntity( + getCloudStorageBucketKey(storageBucketKey), + ); + + if (storageBucketEntity) { + await jobState.addRelationship( + createDirectRelationship({ + _class: + FunctionsRelationshipsSpec + .GOOGLE_CLOUD_FUNCTION_USES_STORAGE_BUCKET._class, + from: cloudFunctionEntity, + to: storageBucketEntity, + }), + ); + } + }, + ); +} + export const functionsSteps: IntegrationStep[] = [ { id: FunctionStepsSpec.FETCH_CLOUD_FUNCTIONS.id, @@ -140,4 +180,17 @@ export const functionsSteps: IntegrationStep[] = [ ], executionHandler: buildCloudFunctionSourceRepoRelationships, }, + { + id: FunctionStepsSpec.CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIP.id, + name: FunctionStepsSpec.CLOUD_FUNCTIONS_STORAGE_BUCKET_RELATIONSHIP.name, + dependsOn: [ + FunctionStepsSpec.FETCH_CLOUD_FUNCTIONS.id, + STEP_CLOUD_STORAGE_BUCKETS, + ], + entities: [], + relationships: [ + FunctionsRelationshipsSpec.GOOGLE_CLOUD_FUNCTION_USES_STORAGE_BUCKET, + ], + executionHandler: buildCloudFunctionStorageBucketRelationships, + }, ];