in providers/ibm/ibm_tg.go [77:142]
func (g *TGGenerator) InitResources() error {
apiKey := os.Getenv("IC_API_KEY")
if apiKey == "" {
return fmt.Errorf("no API key set")
}
tgURL := "https://transit.cloud.ibm.com/v1"
transitgatewayOptions := &tg.TransitGatewayApisV1Options{
URL: envFallBack([]string{"IBMCLOUD_TG_API_ENDPOINT"}, tgURL),
Authenticator: &core.IamAuthenticator{
ApiKey: apiKey,
},
Version: CreateVersionDate(),
}
tgclient, err := tg.NewTransitGatewayApisV1(transitgatewayOptions)
if err != nil {
return err
}
start := ""
allrecs := []tg.TransitGateway{}
for {
listTransitGatewaysOptions := &tg.ListTransitGatewaysOptions{}
if start != "" {
listTransitGatewaysOptions.Start = &start
}
gateways, resp, err := tgclient.ListTransitGateways(listTransitGatewaysOptions)
if err != nil {
return fmt.Errorf("Error Listing Transit Gateways %s\n%s", err, resp)
}
start = GetNext(gateways.Next)
allrecs = append(allrecs, gateways.TransitGateways...)
if start == "" {
break
}
}
for _, gateway := range allrecs {
g.Resources = append(g.Resources, g.createTransitGatewayResources(*gateway.ID, *gateway.Name))
resourceName := g.Resources[len(g.Resources)-1:][0].ResourceName
var dependsOn []string
dependsOn = append(dependsOn,
"ibm_tg_gateway."+resourceName)
listTransitGatewayConnectionsOptions := &tg.ListTransitGatewayConnectionsOptions{
TransitGatewayID: gateway.ID,
}
connections, response, err := tgclient.ListTransitGatewayConnections(listTransitGatewayConnectionsOptions)
if err != nil {
return fmt.Errorf("Error Listing Transit Gateway connections %s\n%s", err, response)
}
for _, connection := range connections.Connections {
g.Resources = append(g.Resources, g.createTransitGatewayConnectionResources(*gateway.ID, *connection.ID, *connection.Name, dependsOn))
}
// Trying to get Transit Gateway reports
listTransitGatewayRouteReportOptions := &tg.ListTransitGatewayRouteReportsOptions{
TransitGatewayID: gateway.ID,
}
routeReports, response, err := tgclient.ListTransitGatewayRouteReports(listTransitGatewayRouteReportOptions)
if err != nil {
return fmt.Errorf("Error Listing Transit Gateway route reports %s\n%s", err, response)
}
for _, routeReport := range routeReports.RouteReports {
g.Resources = append(g.Resources, g.loadTransitGatewayRouterResource(*gateway.ID, *routeReport.ID, dependsOn))
}
}
return nil
}