Skip to content

Commit 45cab3d

Browse files
authored
Merge pull request #74 from cloudgraphdev/feature/CG-1203
feat: Add service transitGatewayRouteTable
2 parents cd0e9d0 + f88c3cc commit 45cab3d

24 files changed

Lines changed: 487 additions & 94 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, vpcEndpoint |
149+
| routeTable | subnet, vpc, vpcEndpoint |
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, vpcEndpoint, 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, vpcEndpoint, vpcPeeringConnection |
165166
| vpcEndpoint | networkInterface, routeTable, securityGroup, subnet, vpc |
166167
| vpcPeeringConnection | vpc |

src/enums/schemasMap.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ export default {
101101
[services.systemsManagerDocument]: 'awsSystemsManagerDocument',
102102
[services.transitGateway]: 'awsTransitGateway',
103103
[services.transitGatewayAttachment]: 'awsTransitGatewayAttachment',
104+
[services.transitGatewayRouteTable]: 'awsTransitGatewayRouteTable',
104105
[services.vpnConnection]: 'awsVpnConnection',
105106
[services.organization]: 'awsOrganization',
106107
[services.wafV2WebAcl]: 'awsWafV2WebAcl',

src/enums/serviceAliases.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ 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.vpcEndpoint]: 'vpcEndpoints',
7476
[services.vpnConnection]: 'vpnConnections',
7577
[services.vpcPeeringConnection]: 'vpcPeeringConnections',

src/enums/serviceMap.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ import RdsClusterSnapshot from '../services/rdsClusterSnapshot'
9999
import VpcEndpoint from '../services/vpcEndpoint'
100100
import APIGatewayDomainName from '../services/apiGatewayDomainName'
101101
import APIGatewayHttpApi from '../services/apiGatewayHttpApi'
102+
import TransitGatewayRouteTable from '../services/transitGatewayRouteTable'
102103
import VpcPeeringConnection from '../services/vpcPeeringConnection'
103104

104105
/**
@@ -199,6 +200,7 @@ export default {
199200
[services.ecsTaskSet]: EcsTaskSet,
200201
[services.transitGateway]: TransitGateway,
201202
[services.transitGatewayAttachment]: TransitGatewayAttachment,
203+
[services.transitGatewayRouteTable]: TransitGatewayRouteTable,
202204
[services.customerGateway]: CustomerGateway,
203205
[services.vpnGateway]: VpnGateway,
204206
[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
vpcEndpoint: 'vpcEndpoint',
9798
vpcPeeringConnection: 'vpcPeeringConnection',

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
vpcEndpoints: [awsVpcEndpoint]
9899
vpcPeeringConnections: [awsVpcPeeringConnection]

src/services/routeTable/schema.graphql

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +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] @hasInverse(field: routeTable)
1210
vpcEndpoints: [awsVpcEndpoint] @hasInverse(field: routeTables)
1311
}
1412

src/services/tag/connections.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ import { RawAwsVpcEndpoint } from '../vpcEndpoint/data'
6969
import { RawAwsApiGatewayHttpApi } from '../apiGatewayHttpApi/data'
7070
import { RawAwsApiGatewayDomainName } from '../apiGatewayDomainName/data'
7171
import { RawAwsAnalyzerSummary } from '../iamAccessAnalyzer/data'
72+
import { RawAwsTransitGatewayRouteTable } from '../transitGatewayRouteTable/data'
7273
import { RawAwsVpcPeeringConnection } from '../vpcPeeringConnection/data'
7374

7475
const findServiceInstancesWithTag = (tag: any, service: any): any => {
@@ -1834,6 +1835,32 @@ export default ({
18341835
}
18351836
}
18361837
}
1838+
1839+
/**
1840+
* Find related Transit Gateway Route tables
1841+
*/
1842+
const transitGatewayRouteTables: {
1843+
name: string
1844+
data: { [property: string]: RawAwsTransitGatewayRouteTable[] }
1845+
} = data.find(({ name }) => name === services.transitGatewayRouteTable)
1846+
if (transitGatewayRouteTables?.data?.[region]) {
1847+
const dataAtRegion = findServiceInstancesWithTag(
1848+
tag,
1849+
transitGatewayRouteTables.data[region]
1850+
)
1851+
if (!isEmpty(dataAtRegion)) {
1852+
for (const instance of dataAtRegion) {
1853+
const { TransitGatewayRouteTableId: id }: RawAwsTransitGatewayRouteTable = instance
1854+
1855+
connections.push({
1856+
id,
1857+
resourceType: services.transitGatewayRouteTable,
1858+
relation: 'child',
1859+
field: 'transitGatewayRouteTables',
1860+
})
1861+
}
1862+
}
1863+
}
18371864
}
18381865

18391866
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)