Skip to content

Commit 879975d

Browse files
feat(apiGateway) merge main
2 parents 7909ead + 402ddf7 commit 879975d

25 files changed

Lines changed: 1929 additions & 43 deletions

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
# [0.29.0](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/compare/0.28.2...0.29.0) (2022-02-11)
2+
3+
4+
### Features
5+
6+
* **cdn:** add cdn backend bucket ([c9fd809](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/commit/c9fd809412dfe60894f9bbab3d4089e635ad81fa))
7+
* **cdn:** add cdn url map ([5ad5f14](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/commit/5ad5f14b1a41bd28fddb532412bf3b33f8509627))
8+
* **cdn:** fix Duration type value ([37ce7aa](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/commit/37ce7aa8e4e9cfa71fb80e19964db35e08e14ed4))
9+
* **cdn:** merge main ([8744d71](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/commit/8744d71b76edc55aa8f30051b2407ab21f92117c))
10+
* **cdn:** small fix ([02c4f45](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/commit/02c4f451a5fccd172f827569b13268174116fb0a))
11+
* **cdn:** update README ([9332c02](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/commit/9332c0269a30f00adcaccb2b47475e378394f439))
12+
113
## [0.28.2](https://gitlab.com/auto-cloud/cloudgraph/provider/cloudgraph-provider-gcp/compare/0.28.1...0.28.2) (2022-02-07)
214

315

README.md

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -62,48 +62,51 @@ CloudGraph GCP Provider will ask you what regions you would like to crawl and wi
6262

6363
# Supported Services
6464

65-
| Service | Relations |
66-
| ------------------------------------- | -------------------------------------------------------------------------------- |
67-
| alertPolicy | project |
65+
| Service | Relations |
66+
| ------------------------------------- | --------------------------------------------------------------------------------------------------- |
67+
| alertPolicy | project |
6868
| apiGatewayGateways | project, apiGatewayApis, apiGatewayApiConfigs |
6969
| apiGatewayApis | project, apiGatewayGateways |
7070
| apiGatewayApiConfigs | project, apiGatewayGateways |
71-
| apiKeys | project |
72-
| assets | project |
73-
| bigQueryDataset | project |
74-
| bigQueryConnection | project |
75-
| bigQueryDataTransfer | bigQueryDataTransferRun, project |
76-
| bigQueryDataTransferRun | project |
77-
| bigQueryReservation | project |
78-
| bigQueryReservationCapacityCommitment | project |
79-
| cloudFunction | project, vpc |
80-
| cloudRouter | project |
81-
| computeProject | project |
82-
| dataprocClusters | project, dataprocJobs, dataprocWorkflowTemplate |
83-
| dataprocAutoscalingPolicies | project |
84-
| dataprocJobs | project, dataprocClusters |
85-
| dataprocWorkflowTemplate | project, dataprocClusters |
86-
| kmsCryptoKeys | iamPolicy, kmsKeyRing, project |
87-
| dnsManagedZone | project |
88-
| dnsPolicy | project, network |
89-
| firewall | network, project |
90-
| folder | iamPolicy, organization, project |
91-
| kmsKeyRing | kmsCryptoKeys, project |
92-
| iamPolicy | folder, kmsCryptoKeys, project |
93-
| logBucket | logView, project |
94-
| logMetric | project |
95-
| logSink | project |
96-
| logView | logBucket, project |
97-
| network | cloudRouter, dnsPolicy, firewall, project, sqlInstances, subnet, vmInstance, vpc |
98-
| organization | folder, project |
99-
| project | ALL SERVICES |
100-
| secretManager | project |
101-
| serviceAccount | project |
102-
| sqlInstances | project, network |
103-
| sslPolicies | project |
104-
| storageBucket | project |
105-
| subnet | project, network, vmInstance, vpc |
106-
| targetSslProxies | project |
107-
| targetHttpsProxies | project |
108-
| vmInstance | project, network, subnet |
109-
| vpcConnectors | cloudFunction, project, network, subnet |
71+
| apiKeys | project |
72+
| assets | project |
73+
| bigQueryDataset | project |
74+
| bigQueryConnection | project |
75+
| bigQueryDataTransfer | bigQueryDataTransferRun, project |
76+
| bigQueryDataTransferRun | project |
77+
| bigQueryReservation | project |
78+
| bigQueryReservationCapacityCommitment | project |
79+
| cdnBackendBucket | project, cdnUrlMap |
80+
| cdnBackendService | project, cdnUrlMap, network |
81+
| cdnUrlMap | project, cdnBackendBucket, cdnBackendService |
82+
| cloudFunction | project, vpc |
83+
| cloudRouter | project |
84+
| computeProject | project |
85+
| dataprocClusters | project, dataprocJobs, dataprocWorkflowTemplate |
86+
| dataprocAutoscalingPolicies | project |
87+
| dataprocJobs | project, dataprocClusters |
88+
| dataprocWorkflowTemplate | project, dataprocClusters |
89+
| kmsCryptoKeys | iamPolicy, kmsKeyRing, project |
90+
| dnsManagedZone | project |
91+
| dnsPolicy | project, network |
92+
| firewall | network, project |
93+
| folder | iamPolicy, organization, project |
94+
| kmsKeyRing | kmsCryptoKeys, project |
95+
| iamPolicy | folder, kmsCryptoKeys, project |
96+
| logBucket | logView, project |
97+
| logMetric | project |
98+
| logSink | project |
99+
| logView | logBucket, project |
100+
| network | cloudRouter, dnsPolicy, firewall, project, sqlInstances, subnet, vmInstance, vpc, cdnBackendService |
101+
| organization | folder, project |
102+
| project | ALL SERVICES |
103+
| secretManager | project |
104+
| serviceAccount | project |
105+
| sqlInstances | project, network |
106+
| sslPolicies | project |
107+
| storageBucket | project |
108+
| subnet | project, network, vmInstance, vpc |
109+
| targetSslProxies | project |
110+
| targetHttpsProxies | project |
111+
| vmInstance | project, network, subnet |
112+
| vpcConnectors | cloudFunction, project, network, subnet |

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudgraph/cg-provider-gcp",
3-
"version": "0.28.2",
3+
"version": "0.29.0",
44
"description": "CloudGraph provider plugin for GCP used to fetch GCP cloud data.",
55
"publishConfig": {
66
"registry": "https://registry.npmjs.org/",

src/enums/schemasMap.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ export default {
1414
[services.bigQueryDataTransferRun]: 'gcpBigQueryDataTransferRun',
1515
[services.kmsKeyRing]: 'gcpKmsKeyRing',
1616
[services.kmsCryptoKeys]: 'gcpKmsCryptoKey',
17+
[services.cdnBackendBucket]: 'gcpCdnBackendBucket',
1718
[services.cloudRouter]: 'gcpCloudRouter',
19+
[services.cdnBackendService]: 'gcpCdnBackendService',
20+
[services.cdnUrlMap]: 'gcpCdnUrlMap',
1821
[services.dnsManagedZone]: 'gcpDnsManagedZone',
1922
[services.dnsPolicy]: 'gcpDnsPolicy',
2023
[services.vpcConnector]: 'gcpVpcConnector',

src/enums/serviceMap.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import GcpBigQueryDataTransferRun from '../services/bigQueryDataTransferRun'
99
import GcpKmsKeyRing from '../services/kms'
1010
import GcpKmsCryptoKey from '../services/kmsCryptoKey'
1111
import GcpCloudRouter from '../services/cloudRouter'
12+
import GcpCdnBackendBucket from '../services/cdnBackendBucket'
13+
import GcpCdnBackendService from '../services/cdnBackendService'
14+
import GcpCdnUrlMap from '../services/cdnUrlMap'
1215
import GcpDnsManagedZone from '../services/dnsManagedZone'
1316
import GcpVpc from '../services/vpc'
1417
import GcpIam from '../services/iam'
@@ -60,6 +63,9 @@ export default {
6063
[services.kmsKeyRing]: GcpKmsKeyRing,
6164
[services.kmsCryptoKeys]: GcpKmsCryptoKey,
6265
[services.cloudRouter]: GcpCloudRouter,
66+
[services.cdnBackendBucket]: GcpCdnBackendBucket,
67+
[services.cdnBackendService]: GcpCdnBackendService,
68+
[services.cdnUrlMap]: GcpCdnUrlMap,
6369
[services.dnsManagedZone]: GcpDnsManagedZone,
6470
[services.dnsPolicy]: GcpDnsPolicy,
6571
[services.vpcConnector]: GcpVpc,

src/enums/services.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ export default {
2424
// bms: 'bms',
2525
// compute: 'compute',
2626
// container: 'container',
27+
cdnBackendBucket: 'cdnBackendBucket',
28+
cdnBackendService: 'cdnBackendService',
29+
cdnUrlMap: 'cdnUrlMap',
2730
cloudFunction: 'cloudFunction',
2831
computeProject: 'computeProject',
2932
// run: 'run',
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import groupBy from 'lodash/groupBy'
2+
import CloudGraph from '@cloudgraph/sdk'
3+
import { BackendBucketsClient } from '@google-cloud/compute'
4+
import { google } from '@google-cloud/compute/build/protos/protos'
5+
import gcpLoggerText from '../../properties/logger'
6+
import { GcpServiceInput } from '../../types'
7+
import { generateGcpErrorLog, initTestEndpoint } from '../../utils'
8+
import { GLOBAL_REGION } from '../../config/constants'
9+
10+
const lt = { ...gcpLoggerText }
11+
const { logger } = CloudGraph
12+
const serviceName = 'CDN Backend Bucket'
13+
const apiEndpoint = initTestEndpoint(serviceName)
14+
15+
export interface RawGcpCdnBackendBucket extends Omit<google.cloud.compute.v1.IBackendBucket, 'id'> {
16+
id: string
17+
projectId: string
18+
region: string
19+
}
20+
21+
export default async ({
22+
config,
23+
}: GcpServiceInput): Promise<{
24+
[region: string]: RawGcpCdnBackendBucket[]
25+
}> => {
26+
const backendBuckets: RawGcpCdnBackendBucket[] = []
27+
const { projectId } = config
28+
29+
const computeClient = new BackendBucketsClient({ ...config, apiEndpoint })
30+
31+
try {
32+
const backendBucketIter = computeClient.listAsync({project: projectId})
33+
for await (const backendBucket of backendBucketIter) {
34+
backendBuckets.push({
35+
...backendBucket,
36+
id: backendBucket.id.toString(),
37+
projectId,
38+
region: GLOBAL_REGION,
39+
})
40+
}
41+
} catch (error) {
42+
generateGcpErrorLog(serviceName, 'cdnBackendBucket:listAsync', error)
43+
}
44+
45+
logger.debug(lt.foundResources(serviceName, backendBuckets.length))
46+
47+
return groupBy(backendBuckets, 'region')
48+
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import { google } from '@google-cloud/compute/build/protos/protos'
2+
3+
import cuid from 'cuid'
4+
import { RawGcpCdnBackendBucket } from './data'
5+
import { enumKeyToString } from '../../utils/format'
6+
import {
7+
GcpCdnBackendBucket,
8+
GcpCdnBackendBucketCdnPolicy,
9+
GcpCdnBackendBucketCdnPolicyNegativeCachingPolicy,
10+
} from '../../types/generated'
11+
12+
const formatCdnPolicyNegativeCachingPolicy = ({
13+
code,
14+
ttl,
15+
}: google.cloud.compute.v1.IBackendBucketCdnPolicyNegativeCachingPolicy): GcpCdnBackendBucketCdnPolicyNegativeCachingPolicy => {
16+
return {
17+
id: cuid(),
18+
code,
19+
ttl,
20+
}
21+
}
22+
23+
const formatCdnPolicy = ({
24+
bypassCacheOnRequestHeaders,
25+
cacheMode,
26+
clientTtl,
27+
defaultTtl,
28+
maxTtl,
29+
negativeCaching,
30+
negativeCachingPolicy,
31+
requestCoalescing,
32+
serveWhileStale,
33+
signedUrlCacheMaxAgeSec,
34+
signedUrlKeyNames,
35+
}: google.cloud.compute.v1.IBackendBucketCdnPolicy): GcpCdnBackendBucketCdnPolicy => {
36+
return {
37+
bypassCacheOnRequestHeaderNames: bypassCacheOnRequestHeaders?.map(
38+
header => header?.headerName || ''
39+
) || [],
40+
cacheMode: enumKeyToString(google.cloud.compute.v1.BackendBucketCdnPolicy.CacheMode, cacheMode),
41+
clientTtl,
42+
defaultTtl,
43+
maxTtl,
44+
negativeCaching,
45+
negativeCachingPolicy: negativeCachingPolicy?.map(policy => formatCdnPolicyNegativeCachingPolicy(policy)) || [],
46+
requestCoalescing,
47+
serveWhileStale,
48+
signedUrlCacheMaxAgeSec: signedUrlCacheMaxAgeSec?.toString() || '',
49+
signedUrlKeyNames,
50+
}
51+
}
52+
53+
export default ({
54+
service,
55+
account,
56+
region,
57+
}: {
58+
service: RawGcpCdnBackendBucket
59+
account: string
60+
region: string
61+
}): GcpCdnBackendBucket => {
62+
const {
63+
bucketName,
64+
cdnPolicy = {},
65+
creationTimestamp,
66+
customResponseHeaders,
67+
description,
68+
enableCdn,
69+
id,
70+
kind,
71+
name,
72+
selfLink,
73+
} = service
74+
75+
return {
76+
id,
77+
projectId: account,
78+
region,
79+
name,
80+
bucketName,
81+
cdnPolicy: formatCdnPolicy(cdnPolicy),
82+
creationTimestamp,
83+
customResponseHeaders,
84+
description,
85+
enableCdn,
86+
kind,
87+
selfLink,
88+
}
89+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Service } from '@cloudgraph/sdk'
2+
import BaseService from '../base'
3+
import format from './format'
4+
import getData from './data'
5+
import mutation from './mutation'
6+
7+
export default class GcpCdnBackendBucket extends BaseService implements Service {
8+
format = format.bind(this)
9+
10+
getData = getData.bind(this)
11+
12+
mutation = mutation;
13+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default `mutation($input: [AddgcpCdnBackendBucketInput!]!) {
2+
addgcpCdnBackendBucket(input: $input, upsert: true) {
3+
numUids
4+
}
5+
}`;

0 commit comments

Comments
 (0)