Skip to content

Commit 519d968

Browse files
committed
feat: Add service transitGatewayRouteTable
1 parent a118711 commit 519d968

23 files changed

Lines changed: 351 additions & 89 deletions

File tree

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ CloudGraph AWS Provider will ask you what regions you would like to crawl and wi
146146
| redshiftCluster | kms, vpc |
147147
| route53Record | alb, apiGatewayRestApi, elb, route53HostedZone |
148148
| route53HostedZone | rdsCluster, route53Record, vpc |
149-
| routeTable | subnet, transitGateway, transitGatewayAttachment,vpc |
149+
| routeTable | subnet, vpc |
150150
| sageMakerExperiment | |
151151
| sageMakerNotebookInstance | iamRole, kms, networkInterface, subnet, securityGroup |
152152
| sageMakerProject | |
@@ -159,8 +159,9 @@ CloudGraph AWS Provider will ask you what regions you would like to crawl and wi
159159
| subnet | alb, asg, codebuild, dmsReplicationInstance, ec2, ecsService, efsMountTarget, elastiCacheCluster, elasticSearchDomain, elb, lambda, managedAirflow, natGateway, networkInterface, rdsCluster, sageMakerNotebookInstance, routeTable, vpc, eksCluster, emrCluster, flowLog |
160160
| systemsManagerInstance | ec2, iamRole |
161161
| systemsManagerDocument | |
162-
| transitGateway | routeTable, transitGatewayAttachment, vpnConnection |
163-
| transitGatewayAttachment | routeTable, transitGateway, vpc, vpnConnection |
162+
| transitGateway | transitGatewayAttachment, transitGatewayRouteTable, vpnConnection |
163+
| transitGatewayAttachment | transitGateway, transitGatewayRouteTable, vpc, vpnConnection |
164+
| transitGatewayRouteTable | transitGateway, transitGatewayAttachment |
164165
| vpc | alb, codebuild, dmsReplicationInstance, ec2, eip, elb, ecsService, efsMountTarget, eksCluster igw, elastiCacheCluster, elasticSearchDomain, lambda, nacl, natGateway, networkInterface, rdsClusterSnapshot, rdsDbInstance, redshiftCluster, route53HostedZone, routeTable, subnet, flowLog, vpnGateway, transitGatewayAttachment |
165166
| vpnConnection | customerGateway, transitGateway, transitGatewayAttachment, vpnGateway |
166167
| vpnGateway | vpc, vpnConnection |

src/enums/schemasMap.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ export default {
9999
[services.systemsManagerDocument]: 'awsSystemsManagerDocument',
100100
[services.transitGateway]: 'awsTransitGateway',
101101
[services.transitGatewayAttachment]: 'awsTransitGatewayAttachment',
102+
[services.transitGatewayRouteTable]: 'awsTransitGatewayRouteTable',
102103
[services.vpnConnection]: 'awsVpnConnection',
103104
[services.organization]: 'awsOrganization',
104105
[services.wafV2WebAcl]: 'awsWafV2WebAcl',

src/enums/serviceAliases.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ export default {
6969
[services.subnet]: 'subnets',
7070
[services.systemsManagerDocument]: 'systemsManagerDocuments',
7171
[services.systemsManagerInstance]: 'systemsManagerInstances',
72+
[services.transitGateway]: 'transitGateways',
7273
[services.transitGatewayAttachment]: 'transitGatewayAttachments',
74+
[services.transitGatewayRouteTable]: 'transitGatewayRouteTables',
7375
[services.vpnConnection]: 'vpnConnections',
7476
}

src/enums/serviceMap.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ import SystemsManagerDocument from '../services/systemsManagerDocument'
9898
import RdsClusterSnapshot from '../services/rdsClusterSnapshot'
9999
import APIGatewayDomainName from '../services/apiGatewayDomainName'
100100
import APIGatewayHttpApi from '../services/apiGatewayHttpApi'
101+
import TransitGatewayRouteTable from '../services/transitGatewayRouteTable'
101102

102103
/**
103104
* serviceMap is an object that contains all currently supported services for AWS
@@ -195,6 +196,7 @@ export default {
195196
[services.ecsTaskSet]: EcsTaskSet,
196197
[services.transitGateway]: TransitGateway,
197198
[services.transitGatewayAttachment]: TransitGatewayAttachment,
199+
[services.transitGatewayRouteTable]: TransitGatewayRouteTable,
198200
[services.customerGateway]: CustomerGateway,
199201
[services.vpnGateway]: VpnGateway,
200202
[services.vpnConnection]: VpnConnection,

src/enums/services.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ export default {
9292
systemsManagerDocument: 'systemsManagerDocument',
9393
transitGateway: 'transitGateway',
9494
transitGatewayAttachment: 'transitGatewayAttachment',
95+
transitGatewayRouteTable: 'transitGatewayRouteTable',
9596
vpc: 'vpc',
9697
vpnConnection: 'vpnConnection',
9798
vpnGateway: 'vpnGateway',

src/properties/logger.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,10 @@ export default {
479479
* Transit Gateway Attachment
480480
*/
481481
fetchedTransitGatewayAttachments: (num: number): string => `Found ${num} Transit Gateway Attachments`,
482+
/**
483+
* Transit Gateway Route Tables
484+
*/
485+
fetchedTransitGatewayRouteTables: (num: number): string => `Found ${num} Transit Gateway Route Tables`,
482486
/**
483487
* VPN Gateway
484488
*/

src/services/account/schema.graphql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@ type awsAccount implements awsOptionalService @key(fields: "id") {
9191
sns: [awsSns]
9292
sqs: [awsSqs]
9393
subnets: [awsSubnet]
94-
transitGateway: [awsTransitGateway]
94+
transitGateways: [awsTransitGateway]
9595
transitGatewayAttachments: [awsTransitGatewayAttachment]
96+
transitGatewayRouteTables: [awsTransitGatewayRouteTable]
9697
vpc: [awsVpc]
9798
vpnConnections: [awsVpnConnection]
9899
vpnGateway: [awsVpnGateway]

src/services/routeTable/schema.graphql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ type awsRouteTable implements awsBaseService @key(fields: "arn") {
77
tags: [awsRawTag]
88
subnet: [awsSubnet] @hasInverse(field: routeTable) #change to plural
99
vpc: [awsVpc] @hasInverse(field: routeTables)
10-
transitGateway: [awsTransitGateway] @hasInverse(field: routeTable)
11-
transitGatewayAttachment: [awsTransitGatewayAttachment]
12-
@hasInverse(field: routeTable)
1310
}
1411

1512
type awsRoute

src/services/tag/connections.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ import { RawAwsInstanceProfile } from '../iamInstanceProfile/data'
6868
import { RawAwsApiGatewayHttpApi } from '../apiGatewayHttpApi/data'
6969
import { RawAwsApiGatewayDomainName } from '../apiGatewayDomainName/data'
7070
import { RawAwsAnalyzerSummary } from '../iamAccessAnalyzer/data'
71+
import { RawAwsTransitGatewayRouteTable } from '../transitGatewayRouteTable/data'
7172

7273
const findServiceInstancesWithTag = (tag: any, service: any): any => {
7374
const { id } = tag
@@ -1780,6 +1781,32 @@ export default ({
17801781
}
17811782
}
17821783
}
1784+
1785+
/**
1786+
* Find related Transit Gateway Route tables
1787+
*/
1788+
const transitGatewayRouteTables: {
1789+
name: string
1790+
data: { [property: string]: RawAwsTransitGatewayRouteTable[] }
1791+
} = data.find(({ name }) => name === services.transitGatewayRouteTable)
1792+
if (transitGatewayRouteTables?.data?.[region]) {
1793+
const dataAtRegion = findServiceInstancesWithTag(
1794+
tag,
1795+
transitGatewayRouteTables.data[region]
1796+
)
1797+
if (!isEmpty(dataAtRegion)) {
1798+
for (const instance of dataAtRegion) {
1799+
const { TransitGatewayRouteTableId: id }: RawAwsTransitGatewayRouteTable = instance
1800+
1801+
connections.push({
1802+
id,
1803+
resourceType: services.transitGatewayRouteTable,
1804+
relation: 'child',
1805+
field: 'transitGatewayRouteTables',
1806+
})
1807+
}
1808+
}
1809+
}
17831810
}
17841811

17851812
const tagResult = {

src/services/tag/schema.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ type awsTag @key(fields: "id") {
6464
customerGateway: [awsCustomerGateway]
6565
transitGateway: [awsTransitGateway]
6666
transitGatewayAttachment: [awsTransitGatewayAttachment]
67+
transitGatewayRouteTables: [awsTransitGatewayRouteTable]
6768
vpnGateway: [awsVpnGateway]
6869
clientVpnEndpoint: [awsClientVpnEndpoint]
6970
vpnConnection: [awsVpnConnection]

0 commit comments

Comments
 (0)