func()

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
}