in providers/datadog/monitor.go [65:120]
func (g *MonitorGenerator) InitResources() error {
datadogClient := g.Args["datadogClient"].(*datadog.APIClient)
auth := g.Args["auth"].(context.Context)
api := datadogV1.NewMonitorsApi(datadogClient)
optionalParams := datadogV1.NewListMonitorsOptionalParameters()
resources := []terraformutils.Resource{}
for _, filter := range g.Filter {
if filter.FieldPath == "id" && filter.IsApplicable("monitor") {
for _, value := range filter.AcceptableValues {
i, err := strconv.ParseInt(value, 10, 64)
if err != nil {
return err
}
monitor, _, err := api.GetMonitor(auth, i)
if err != nil {
return err
}
resources = append(resources, g.createResource(strconv.FormatInt(monitor.GetId(), 10)))
}
}
if filter.FieldPath == "tags" && filter.IsApplicable("monitor") {
optionalParams.WithMonitorTags(strings.Join(filter.AcceptableValues, ","))
}
}
if len(resources) > 0 {
g.Resources = resources
return nil
}
var monitors []datadogV1.Monitor
pageSize := int32(1000)
pageNumber := int64(0)
for {
resp, _, err := api.ListMonitors(auth, *optionalParams.
WithPageSize(pageSize).
WithPage(pageNumber))
if err != nil {
return err
}
if len(resp) == 0 || int32(len(resp)) < pageSize {
monitors = append(monitors, resp...)
break
}
monitors = append(monitors, resp...)
pageNumber++
}
g.Resources = g.createResources(monitors)
return nil
}