Skip to content

Commit d52e703

Browse files
m-pizarrotyler-dunkel
authored andcommitted
feat(service): GCP add new connections sslPolicy <-> targetSslProxy AND...
1 parent 8429c44 commit d52e703

11 files changed

Lines changed: 125 additions & 11 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ CloudGraph GCP Provider will ask you what regions you would like to crawl and wi
105105
| secretManager | project |
106106
| serviceAccounts | project |
107107
| sqlInstances | project, network |
108-
| sslPolicies | project |
108+
| sslPolicies | project, targetHttpsProxies, targetSslProxies |
109109
| storageBucket | project |
110110
| subnet | project, network, vmInstance, vpcConnectors, aiPlatformNotebooks |
111-
| targetSslProxies | project |
112-
| targetHttpsProxies | project |
111+
| targetSslProxies | project, sslPolicies |
112+
| targetHttpsProxies | project, sslPolicies |
113113
| vmInstance | project, network, subnet |
114114
| vpcConnectors | cloudFunction, project, network, subnet |

src/services/sslPolicy/schema.graphql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ type gcpSslPolicy implements gcpBaseResource @key(fields: "id") {
1010
selfLink: String @search(by: [hash, regexp])
1111
warnings: [gcpComputeWarnings]
1212
project: [gcpProject] @hasInverse(field: sslPolicies)
13+
targetSslProxies: [gcpTargetSslProxy] @hasInverse(field: sslPolicy)
14+
targetHttpsProxies: [gcpTargetHttpsProxy] @hasInverse(field: sslPolicy)
1315
}
1416

1517
type gcpComputeWarnings
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { ServiceConnection } from '@cloudgraph/sdk'
2+
import { isEmpty } from 'lodash'
3+
import { RawGcpTargetHttpsProxy } from './data'
4+
import { RawGcpSslPolicy } from '../sslPolicy/data'
5+
import { GLOBAL_REGION } from '../../config/constants'
6+
import services from '../../enums/services'
7+
8+
export default ({
9+
service,
10+
data,
11+
region,
12+
}: {
13+
account: string
14+
service: RawGcpTargetHttpsProxy
15+
data: { name: string; data: { [property: string]: any[] } }[]
16+
region: string
17+
}): {
18+
[property: string]: ServiceConnection[]
19+
} => {
20+
const { id, sslPolicy } = service
21+
const connections: ServiceConnection[] = []
22+
23+
/**
24+
* Find related ssl policies
25+
*/
26+
const sslPolicies: {
27+
name: string
28+
data: { [property: string]: any[] }
29+
} = data.find(({ name }) => name === services.sslPolicies)
30+
31+
const regions = [region, GLOBAL_REGION]
32+
for (const reg of regions) {
33+
if (sslPolicies?.data?.[reg]) {
34+
const policy = sslPolicies.data[reg].find(
35+
({ selfLink }: RawGcpSslPolicy) => selfLink === sslPolicy
36+
)
37+
38+
if (!isEmpty(policy)) {
39+
connections.push({
40+
id: policy.id,
41+
resourceType: services.sslPolicies,
42+
relation: 'child',
43+
field: 'sslPolicy',
44+
})
45+
}
46+
}
47+
}
48+
49+
const result = {
50+
[id]: connections,
51+
}
52+
53+
return result
54+
}

src/services/targetHttpsProxy/format.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export default ({
2323
selfLink,
2424
serverTlsPolicy,
2525
sslCertificates,
26-
sslPolicy,
2726
urlMap,
2827
} = service
2928

@@ -42,7 +41,6 @@ export default ({
4241
selfLink,
4342
serverTlsPolicy,
4443
sslCertificates,
45-
sslPolicy,
4644
urlMap,
4745
}
4846
}

src/services/targetHttpsProxy/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@ import { Service } from '@cloudgraph/sdk'
22
import BaseService from '../base'
33
import format from './format'
44
import getData from './data'
5+
import getConnections from './connections'
56
import mutation from './mutation'
67

78
export default class GcpTargetHttpsProxies extends BaseService implements Service {
89
format = format.bind(this)
910

1011
getData = getData.bind(this)
1112

13+
getConnections = getConnections.bind(this)
14+
1215
mutation = mutation;
1316
}

src/services/targetHttpsProxy/schema.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ type gcpTargetHttpsProxy implements gcpBaseResource @key(fields: "id") {
99
selfLink: String @search(by: [hash, regexp])
1010
serverTlsPolicy: String @search(by: [hash, regexp])
1111
sslCertificates: [String] @search(by: [hash])
12-
sslPolicy: String @search(by: [hash, regexp])
1312
urlMap: String @search(by: [hash, regexp])
1413
project: [gcpProject] @hasInverse(field: targetHttpsProxies)
14+
sslPolicy: [gcpSslPolicy] @hasInverse(field: targetHttpsProxies)
1515
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { ServiceConnection } from '@cloudgraph/sdk'
2+
import { isEmpty } from 'lodash'
3+
import { RawGcpTargetSslProxy } from './data'
4+
import { RawGcpSslPolicy } from '../sslPolicy/data'
5+
import { GLOBAL_REGION } from '../../config/constants'
6+
import services from '../../enums/services'
7+
8+
export default ({
9+
service,
10+
data,
11+
region,
12+
}: {
13+
account: string
14+
service: RawGcpTargetSslProxy
15+
data: { name: string; data: { [property: string]: any[] } }[]
16+
region: string
17+
}): {
18+
[property: string]: ServiceConnection[]
19+
} => {
20+
const { id, sslPolicy } = service
21+
const connections: ServiceConnection[] = []
22+
23+
/**
24+
* Find related ssl policies
25+
*/
26+
const sslPolicies: {
27+
name: string
28+
data: { [property: string]: any[] }
29+
} = data.find(({ name }) => name === services.sslPolicies)
30+
31+
const regions = [region, GLOBAL_REGION]
32+
for (const reg of regions) {
33+
if (sslPolicies?.data?.[reg]) {
34+
const policy = sslPolicies.data[reg].find(
35+
({ selfLink }: RawGcpSslPolicy) => selfLink === sslPolicy
36+
)
37+
38+
if (!isEmpty(policy)) {
39+
connections.push({
40+
id: policy.id,
41+
resourceType: services.sslPolicies,
42+
relation: 'child',
43+
field: 'sslPolicy',
44+
})
45+
}
46+
}
47+
}
48+
49+
const result = {
50+
[id]: connections,
51+
}
52+
53+
return result
54+
}

src/services/targetSslProxy/format.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ export default ({
1919
proxyHeader,
2020
selfLink,
2121
sslCertificates,
22-
sslPolicy,
2322
} = service
2423

2524
return {
@@ -34,6 +33,5 @@ export default ({
3433
selfLink,
3534
service: service?.service,
3635
sslCertificates,
37-
sslPolicy,
3836
}
3937
}

src/services/targetSslProxy/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@ import { Service } from '@cloudgraph/sdk'
22
import BaseService from '../base'
33
import format from './format'
44
import getData from './data'
5+
import getConnections from './connections'
56
import mutation from './mutation'
67

78
export default class GcpTargetSslProxies extends BaseService implements Service {
89
format = format.bind(this)
910

1011
getData = getData.bind(this)
1112

13+
getConnections = getConnections.bind(this)
14+
1215
mutation = mutation;
1316
}

src/services/targetSslProxy/schema.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ type gcpTargetSslProxy implements gcpBaseResource @key(fields: "id") {
66
selfLink: String @search(by: [hash, regexp])
77
service: String @search(by: [hash, regexp])
88
sslCertificates: [String] @search(by: [hash])
9-
sslPolicy: String @search(by: [hash, regexp])
109
project: [gcpProject] @hasInverse(field: targetSslProxies)
10+
sslPolicy: [gcpSslPolicy] @hasInverse(field: targetSslProxies)
1111
}

0 commit comments

Comments
 (0)