providers/opsgenie/service.go (52 lines of code) (raw):

package opsgenie import ( "context" "fmt" "time" "github.com/opsgenie/opsgenie-go-sdk-v2/service" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) type ServiceGenerator struct { OpsgenieService } func (g *ServiceGenerator) InitResources() error { client, err := g.ServiceClient() if err != nil { return err } limit := 50 offset := 0 var services []service.Service for { result, err := func(limit, offset int) (*service.ListResult, error) { ctx, cancelFunc := context.WithTimeout(context.Background(), 2*time.Second) defer cancelFunc() return client.List(ctx, &service.ListRequest{Limit: limit, Offset: offset}) }(limit, offset) if err != nil { return err } if len(result.Services) == 0 { break } services = append(services, result.Services...) offset += limit } g.Resources = g.createResources(services) return nil } func (g *ServiceGenerator) createResources(services []service.Service) []terraformutils.Resource { var resources []terraformutils.Resource for _, s := range services { resources = append(resources, terraformutils.NewResource( s.Id, fmt.Sprintf("%s-%s", s.Id, s.Name), "opsgenie_service", g.ProviderName, map[string]string{}, []string{}, map[string]interface{}{}, )) } return resources }