diff --git a/README.md b/README.md index 0b8af99bf2..1312c4e639 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ A CLI tool that generates `tf`/`json` and `tfstate` files based on existing infr * [RabbitMQ](/docs/rabbitmq.md) * Network * [Cloudflare](/docs/cloudflare.md) + * [Myrasec](/docs/myrasec.md) * [PAN-OS](/docs/panos.md) * VCS * [Azure DevOps](/docs/azuredevops.md) @@ -54,6 +55,7 @@ A CLI tool that generates `tf`/`json` and `tfstate` files based on existing infr * [Mackerel](/docs/mackerel.md) * [PagerDuty](/docs/pagerduty.md) * [Opsgenie](/docs/opsgenie.md) + * [Honeycomb.io](/docs/honeycombio.md) * [SquadCast](/docs/squadcast.md) * Community * [Keycloak](/docs/keycloak.md) @@ -290,6 +292,7 @@ Links to download Terraform Providers: * Kubernetes provider >=1.9.0 - [here](https://releases.hashicorp.com/terraform-provider-kubernetes/) * RabbitMQ provider >=1.1.0 - [here](https://releases.hashicorp.com/terraform-provider-rabbitmq/) * Network + * Myrasec provider >1.44 - [here](https://github.com/Myra-Security-GmbH/terraform-provider-myrasec) * Cloudflare provider >1.16 - [here](https://releases.hashicorp.com/terraform-provider-cloudflare/) * Fastly provider >0.16.1 - [here](https://releases.hashicorp.com/terraform-provider-fastly/) * NS1 provider >1.8.3 - [here](https://releases.hashicorp.com/terraform-provider-ns1/) @@ -302,6 +305,7 @@ Links to download Terraform Providers: * Mackerel provider > 0.0.6 - [here](https://github.com/mackerelio-labs/terraform-provider-mackerel) * Pagerduty >=1.9 - [here](https://releases.hashicorp.com/terraform-provider-pagerduty/) * Opsgenie >= 0.6.0 [here](https://releases.hashicorp.com/terraform-provider-opsgenie/) + * Honeycomb.io >= 0.10.0 - [here](https://github.com/honeycombio/terraform-provider-honeycombio/releases) * SquadCast provider >= 1.0.4 - [here](https://github.com/SquadcastHub/terraform-provider-squadcast) * Community * Keycloak provider >=1.19.0 - [here](https://github.com/mrparkers/terraform-provider-keycloak/) diff --git a/cmd/provider_cmd_honeycombio.go b/cmd/provider_cmd_honeycombio.go new file mode 100644 index 0000000000..c44fee6fd6 --- /dev/null +++ b/cmd/provider_cmd_honeycombio.go @@ -0,0 +1,47 @@ +// Copyright 2022 The Terraformer Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package cmd + +import ( + honeycombio_terraforming "github.com/GoogleCloudPlatform/terraformer/providers/honeycombio" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" + "github.com/spf13/cobra" +) + +func newCmdHoneycombioImporter(options ImportOptions) *cobra.Command { + cmd := &cobra.Command{ + Use: "honeycombio", + Short: "Import current state to Terraform configuration from Honeycomb.io", + Long: "Import current state to Terraform configuration from Honeycomb.io", + RunE: func(cmd *cobra.Command, args []string) error { + provider := newHoneycombProvider() + err := Import(provider, options, options.Projects) + if err != nil { + return err + } + return nil + }, + } + + cmd.AddCommand(listCmd(newHoneycombProvider())) + baseProviderFlags(cmd.PersistentFlags(), &options, "derived_column,board", "board=id1,id2") + cmd.PersistentFlags().StringSliceVarP(&options.Projects, "datasets", "", []string{}, "hello-service,goodbye-service") + + return cmd +} + +func newHoneycombProvider() terraformutils.ProviderGenerator { + return &honeycombio_terraforming.HoneycombProvider{} +} diff --git a/cmd/provider_cmd_myrasec.go b/cmd/provider_cmd_myrasec.go new file mode 100644 index 0000000000..e4b427ac5e --- /dev/null +++ b/cmd/provider_cmd_myrasec.go @@ -0,0 +1,37 @@ +package cmd + +import ( + myrasec_terraforming "github.com/GoogleCloudPlatform/terraformer/providers/myrasec" + "github.com/GoogleCloudPlatform/terraformer/terraformutils" + "github.com/spf13/cobra" +) + +// +// newCmdMyrasecImporter +// +func newCmdMyrasecImporter(options ImportOptions) *cobra.Command { + cmd := &cobra.Command{ + Use: "myrasec", + Short: "Import current state to Terraform configuration from Myra Security", + Long: "Import current state to Terraform configuration from Myra Security", + RunE: func(cmd *cobra.Command, args []string) error { + provider := newMyrasecProvider() + err := Import(provider, options, []string{}) + if err != nil { + return err + } + return nil + }, + } + + cmd.AddCommand(listCmd(newMyrasecProvider())) + baseProviderFlags(cmd.PersistentFlags(), &options, "domain", "") + return cmd +} + +// +// newMyrasecProvider +// +func newMyrasecProvider() terraformutils.ProviderGenerator { + return &myrasec_terraforming.MyrasecProvider{} +} diff --git a/cmd/root.go b/cmd/root.go index 62563f9c57..5c080075d9 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -59,6 +59,7 @@ func providerImporterSubcommands() []func(options ImportOptions) *cobra.Command newCmdOctopusDeployImporter, newCmdRabbitMQImporter, // Network + newCmdMyrasecImporter, newCmdCloudflareImporter, newCmdFastlyImporter, newCmdNs1Importer, @@ -75,6 +76,7 @@ func providerImporterSubcommands() []func(options ImportOptions) *cobra.Command newCmdGrafanaImporter, newCmdPagerDutyImporter, newCmdOpsgenieImporter, + newCmdHoneycombioImporter, newCmdSquadcastImporter, // Community newCmdKeycloakImporter, @@ -114,6 +116,7 @@ func providerGenerators() map[string]func() terraformutils.ProviderGenerator { newOctopusDeployProvider, newRabbitMQProvider, // Network + newMyrasecProvider, newCloudflareProvider, // VCS newAzureDevOpsProvider, @@ -124,6 +127,7 @@ func providerGenerators() map[string]func() terraformutils.ProviderGenerator { newDataDogProvider, newNewRelicProvider, newPagerDutyProvider, + newHoneycombProvider, // Community newKeycloakProvider, newLogzioProvider, diff --git a/docs/honeycombio.md b/docs/honeycombio.md new file mode 100644 index 0000000000..a31259c6c4 --- /dev/null +++ b/docs/honeycombio.md @@ -0,0 +1,24 @@ +### Use with Honeycomb.io + +Example: + +``` +export HONEYCOMB_API_KEY=MYAPIKEY +./terraformer import honeycombio --resources=board,trigger +``` + +List of supported Honeycomb resources: + +* `board` + * `honeycombio_board` + * `honeycombio_query` + * `honeycombio_query_annotation` +* `derived_column` + * `honeycombio_derived_column` +* `trigger` + * `honeycombio_trigger` + * `honeycombio_query` +* `slo` + * `honeycombio_slo` + * `honeycombio_burn_alert` + * `honeycombio_derived_column` diff --git a/docs/myrasec.md b/docs/myrasec.md new file mode 100644 index 0000000000..5b3a511cea --- /dev/null +++ b/docs/myrasec.md @@ -0,0 +1,31 @@ +### Use with Myra Security + +Example using a Myra Security API Key and corresponding Token: + +``` +export MYRASEC_API_SECRET=[MYRASEC_API_SECRET] +export MYRASEC_API_TOKEN=[MYRASEC_API_TOKEN] +./terraformer import myrasec --resources=domain +``` + +List of supported Myra Security services: +* `domain` + * `myrasec_domain` +* `dns` + * `myrasec_dns_record` +* `redirect` + * `myrasec_redirect` +* `cache_setting` + * `myrasec_cache_setting` +* `ratelimit` + * `myrasec_ratelimit` +* `ip_filter` + * `myrasec_ip_filter` +* `settings` + * `myrasec_settings` +* `waf_rule` + * `myrasec_waf_rule` +* `maintenance` + * `myrasec_maintenance` +* `error_page` + * `myrasec_error_page` \ No newline at end of file diff --git a/go.mod b/go.mod index 41e9c27109..7a7ed20c9c 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Azure/go-autorest/autorest v0.11.27 github.com/DataDog/datadog-api-client-go v1.14.0 - github.com/IBM-Cloud/bluemix-go v0.0.0-20210203095940-db28d5e07b55 + github.com/IBM-Cloud/bluemix-go v0.0.0-20220624043500-d538cb4fd9be github.com/IBM/go-sdk-core/v3 v3.3.1 github.com/IBM/go-sdk-core/v4 v4.9.0 github.com/IBM/ibm-cos-sdk-go v1.5.0 @@ -27,7 +27,7 @@ require ( github.com/aliyun/alibaba-cloud-sdk-go v1.61.1247 github.com/aliyun/aliyun-tablestore-go-sdk v4.1.2+incompatible github.com/apache/openwhisk-client-go v0.0.0-20210106144548-17d556327cd3 - github.com/aws/aws-sdk-go-v2 v1.16.11 + github.com/aws/aws-sdk-go-v2 v1.16.14 github.com/aws/aws-sdk-go-v2/config v1.1.4 github.com/aws/aws-sdk-go-v2/credentials v1.12.14 github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.2.0 @@ -51,13 +51,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/codepipeline v1.13.3 github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.2.1 github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.2.1 - github.com/aws/aws-sdk-go-v2/service/configservice v1.3.0 + github.com/aws/aws-sdk-go-v2/service/configservice v1.25.4 github.com/aws/aws-sdk-go-v2/service/datapipeline v1.13.6 github.com/aws/aws-sdk-go-v2/service/devicefarm v1.13.3 github.com/aws/aws-sdk-go-v2/service/docdb v1.18.1 github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.1 github.com/aws/aws-sdk-go-v2/service/ec2 v1.3.0 - github.com/aws/aws-sdk-go-v2/service/ecr v1.17.6 + github.com/aws/aws-sdk-go-v2/service/ecr v1.17.16 github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.8 github.com/aws/aws-sdk-go-v2/service/ecs v1.2.1 github.com/aws/aws-sdk-go-v2/service/efs v1.2.1 @@ -109,7 +109,7 @@ require ( github.com/denisenkom/go-mssqldb v0.10.0 // indirect github.com/denverdino/aliyungo v0.0.0-20200327235253-d59c209c7e93 github.com/dgrijalva/jwt-go v3.2.0+incompatible - github.com/digitalocean/godo v1.57.0 + github.com/digitalocean/godo v1.83.0 github.com/docker/go-connections v0.4.0 // indirect github.com/duosecurity/duo_api_golang v0.0.0-20201112143038-0e07e9f869e3 // indirect github.com/elazarl/go-bindata-assetfs v1.0.1 // indirect @@ -117,19 +117,20 @@ require ( github.com/fatih/structs v1.1.0 // indirect github.com/gocql/gocql v0.0.0-20210707082121-9a3953d1826d // indirect github.com/google/go-github/v35 v35.1.0 - github.com/gophercloud/gophercloud v0.24.0 + github.com/gophercloud/gophercloud v1.0.0 github.com/grafana/grafana-api-golang-client v0.0.0-20210218192924-9ccd2365d2a6 github.com/hashicorp/go-azure-helpers v0.36.0 github.com/hashicorp/go-cleanhttp v0.5.2 - github.com/hashicorp/go-hclog v0.16.2 + github.com/hashicorp/go-hclog v1.2.1 github.com/hashicorp/go-memdb v1.3.2 // indirect - github.com/hashicorp/go-plugin v1.4.1 + github.com/hashicorp/go-plugin v1.4.4 github.com/hashicorp/hcl v1.0.0 github.com/hashicorp/terraform v0.12.31 github.com/hashicorp/vault v0.10.4 github.com/heimweh/go-pagerduty v0.0.0-20210930203304-530eff2acdc6 github.com/heroku/heroku-go/v5 v5.4.1 github.com/hokaccha/go-prettyjson v0.0.0-20210113012101-fb4e108d2519 // indirect + github.com/honeycombio/terraform-provider-honeycombio v0.10.0 github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334 github.com/jefferai/jsonx v1.0.1 // indirect github.com/jmespath/go-jmespath v0.4.0 @@ -156,13 +157,13 @@ require ( github.com/xanzy/go-gitlab v0.50.2 github.com/yandex-cloud/go-genproto v0.0.0-20220314102905-1acaee8ca7eb github.com/yandex-cloud/go-sdk v0.0.0-20220314105123-d0c2a928feb6 - github.com/zclconf/go-cty v1.8.4 + github.com/zclconf/go-cty v1.10.0 github.com/zorkian/go-datadog-api v2.30.0+incompatible - golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 + golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 golang.org/x/text v0.3.7 gonum.org/v1/gonum v0.7.0 google.golang.org/api v0.70.0 - google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106 + google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect k8s.io/apimachinery v0.24.2 k8s.io/client-go v0.24.2 @@ -202,23 +203,22 @@ require ( github.com/Masterminds/goutils v1.1.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect - github.com/agext/levenshtein v1.2.2 // indirect + github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-cidr v1.1.0 // indirect - github.com/apparentlymart/go-textseg/v12 v12.0.0 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/appscode/go-querystring v0.0.0-20170504095604-0126cfb3f1dc // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef // indirect github.com/aws/aws-sdk-go v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.12 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.12 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.15 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.0.3 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.12 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.1 // indirect github.com/aws/aws-sdk-go-v2/service/redshift v1.10.0 github.com/aws/aws-sdk-go-v2/service/sso v1.11.17 // indirect - github.com/aws/smithy-go v1.12.1 // indirect + github.com/aws/smithy-go v1.13.2 // indirect github.com/beevik/etree v1.1.0 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.0 // indirect @@ -230,7 +230,7 @@ require ( github.com/dghubble/sling v1.1.0 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect github.com/docker/go-units v0.4.0 // indirect - github.com/fatih/color v1.7.0 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-logr/logr v1.2.0 // indirect @@ -259,12 +259,12 @@ require ( github.com/hashicorp/go-rootcerts v1.0.0 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-sockaddr v1.0.0 // indirect - github.com/hashicorp/go-uuid v1.0.2 // indirect - github.com/hashicorp/go-version v1.3.0 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect - github.com/hashicorp/hcl/v2 v2.8.2 // indirect + github.com/hashicorp/hcl/v2 v2.13.0 // indirect github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 // indirect - github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect + github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 // indirect github.com/huandu/xstrings v1.3.2 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect @@ -280,15 +280,15 @@ require ( github.com/mitchellh/cli v1.1.2 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 - github.com/mitchellh/go-testing-interface v1.0.4 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v1.0.0 // indirect github.com/mitchellh/hashstructure v1.0.0 // indirect - github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mozillazg/go-httpheader v0.2.1 // indirect - github.com/oklog/run v1.0.0 // indirect + github.com/oklog/run v1.1.0 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/patrickmn/go-cache v0.0.0-20180815053127-5633e0862627 // indirect @@ -302,11 +302,11 @@ require ( github.com/sirupsen/logrus v1.8.1 // indirect github.com/sourcegraph/jsonrpc2 v0.0.0-20210201082850-366fbb520750 // indirect github.com/spf13/afero v1.2.2 // indirect - github.com/stretchr/testify v1.7.1 // indirect + github.com/stretchr/testify v1.8.0 // indirect github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect github.com/ulikunitz/xz v0.5.8 // indirect github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect - github.com/vmihailenco/tagparser v0.1.1 // indirect + github.com/vmihailenco/tagparser v0.1.2 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.0.2 // indirect github.com/xdg-go/stringprep v1.0.2 // indirect @@ -315,16 +315,16 @@ require ( go.opencensus.io v0.23.0 // indirect golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/net v0.0.0-20220225172249-27dd8689420f // indirect + golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86 // indirect + golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect - golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect + golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect golang.org/x/tools v0.1.8 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/grpc v1.45.0 // indirect - google.golang.org/protobuf v1.27.1 // indirect + google.golang.org/grpc v1.48.0 // indirect + google.golang.org/protobuf v1.28.1 // indirect gopkg.in/auth0.v5 v5.21.1 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/go-playground/assert.v1 v1.2.1 // indirect @@ -333,7 +333,7 @@ require ( gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.24.2 // indirect k8s.io/klog/v2 v2.60.1 // indirect k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect @@ -348,15 +348,21 @@ require ( cloud.google.com/go/cloudtasks v1.3.0 cloud.google.com/go/iam v0.3.0 cloud.google.com/go/monitoring v1.4.0 + github.com/DataDog/datadog-api-client-go/v2 v2.1.0 + github.com/manicminer/hamilton v0.44.0 + github.com/Myra-Security-GmbH/myrasec-go/v2 v2.19.0 github.com/manicminer/hamilton v0.44.0 ) require ( cloud.google.com/go/compute v1.3.0 // indirect + github.com/DataDog/zstd v1.5.0 // indirect + github.com/Myra-Security-GmbH/signature v1.0.0 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/clbanning/mxj v1.8.4 // indirect github.com/emicklei/go-restful v2.9.5+incompatible // indirect + github.com/fatih/color v1.7.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.19.5 // indirect github.com/go-openapi/swag v0.19.14 // indirect diff --git a/go.sum b/go.sum index 35be1b3b54..693725c2bf 100644 --- a/go.sum +++ b/go.sum @@ -121,10 +121,14 @@ github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= -github.com/DataDog/datadog-api-client-go v1.14.0 h1:7ZITahghFVmC32GZ7DFcoEPdajvkS7cPWYQ29WJR6ko= -github.com/DataDog/datadog-api-client-go v1.14.0/go.mod h1:15sqwH81WH6nCgW+rWyHw6PdaBA3udYAOq0p5lntKcY= +github.com/DataDog/datadog-api-client-go/v2 v2.1.0 h1:umvWLP/h7+pY5XFgPNzht1LwpSbsWzCZ8T3d69L+M98= +github.com/DataDog/datadog-api-client-go/v2 v2.1.0/go.mod h1:98b/MtTwSAr/yhTfhCR1oxAqQ/4tMkdrgKH7fYiDA0g= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/IBM-Cloud/bluemix-go v0.0.0-20210203095940-db28d5e07b55 h1:sUpBb2/GC8L6UOKDnbEZLRTxQB2RQgMv1mxbnOHOQW4= github.com/IBM-Cloud/bluemix-go v0.0.0-20210203095940-db28d5e07b55/go.mod h1:kqTYO0mts71aa8PVwviaKlCKYud/NbEkFIqU8aHH3/g= +github.com/IBM-Cloud/bluemix-go v0.0.0-20220624043500-d538cb4fd9be h1:PTW3J9z39tJYnmtdAxi8WvTWQXfkOflTJw6noyjnno4= +github.com/IBM-Cloud/bluemix-go v0.0.0-20220624043500-d538cb4fd9be/go.mod h1:tfNN3lCKuA2+SQvndt0+5CjPr2qn/wdNLjrue1GrOhY= github.com/IBM-Cloud/container-services-go-sdk v0.0.0-20210705152127-41ca00fc9a62 h1:MOkcr6qQGk4tY542ZJ1DggVh2WUP72EEyLB79llFVH8= github.com/IBM-Cloud/container-services-go-sdk v0.0.0-20210705152127-41ca00fc9a62/go.mod h1:xUQL9SGAjoZFd4GNjrjjtEpjpkgU7RFXRyHesbKTjiY= github.com/IBM/go-sdk-core v1.1.0 h1:pV73lZqr9r1xKb3h08c1uNG3AphwoV5KzUzhS+pfEqY= @@ -158,6 +162,10 @@ github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZC github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Myra-Security-GmbH/myrasec-go/v2 v2.19.0 h1:0XpSWt52IgMm55dI5gNmsVNz4cAW1QXn7kRIkTFF2Uc= +github.com/Myra-Security-GmbH/myrasec-go/v2 v2.19.0/go.mod h1:xclgEp2eEWeNxM3M3qde7noCqabK0hkMuLBLZ+TX6ig= +github.com/Myra-Security-GmbH/signature v1.0.0 h1:u46nIxnffLLb8pCe6ic2w7OmSSEJk4warn3W4Vp2GjQ= +github.com/Myra-Security-GmbH/signature v1.0.0/go.mod h1:zgyy5MGBCezqxVOjrG3THQJqsIfJ04LWtQv3Q4Ug2+Y= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= @@ -181,8 +189,9 @@ github.com/SermoDigital/jose v0.9.1/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= @@ -208,8 +217,6 @@ github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:o github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0 h1:bNEQyAGak9tojivJNkoqWErVCQbjdL7GzRt3F8NvfJ0= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-versions v0.0.2-0.20180815153302-64b99f7cb171/go.mod h1:JXY95WvQrPJQtudvNARshgWajS7jNNlM90altXIPNyI= @@ -250,8 +257,9 @@ github.com/aws/aws-sdk-go-v2 v1.16.6/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4 github.com/aws/aws-sdk-go-v2 v1.16.7/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= github.com/aws/aws-sdk-go-v2 v1.16.9/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= -github.com/aws/aws-sdk-go-v2 v1.16.11 h1:xM1ZPSvty3xVmdxiGr7ay/wlqv+MWhH0rMlyLdbC0YQ= github.com/aws/aws-sdk-go-v2 v1.16.11/go.mod h1:WTACcleLz6VZTp7fak4EO5b9Q4foxbn+8PIz3PmyKlo= +github.com/aws/aws-sdk-go-v2 v1.16.14 h1:db6GvO4Z2UqHt5gvT0lr6J5x5P+oQ7bdRzczVaRekMU= +github.com/aws/aws-sdk-go-v2 v1.16.14/go.mod h1:s/G+UV29dECbF5rf+RNj1xhlmvoNurGSr+McVSRj59w= github.com/aws/aws-sdk-go-v2/config v1.1.4 h1:2hjdDldmJJjb+rFieQySfOFt4WwxKZJVTEB6RBI74T4= github.com/aws/aws-sdk-go-v2/config v1.1.4/go.mod h1:op05ummoVoAqctpA80jVt/+hvEtLfuKmDyx0bIuvfbE= github.com/aws/aws-sdk-go-v2/credentials v1.1.4/go.mod h1:UQwsT2w2XelrWoVV2v/zL2uce1RxmVCiHaZsoKLamZg= @@ -271,8 +279,9 @@ github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.13/go.mod h1:wLLesU+LdM github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.14/go.mod h1:kdjrMwHwrC3+FsKhNcCMJ7tUVj/8uSD5CZXeQ4wV6fM= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.16/go.mod h1:GV1J/d4oB2fKCEoWRlYBOI6qzfpH8IXQN1d/caQGaMo= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18 h1:OmiwoVyLKEqqD5GvB683dbSqxiOfvx4U2lDZhG2Esc4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18/go.mod h1:348MLhzV1GSlZSMusdwQpXKbhD7X2gbI/TxwAPKkYZQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.21 h1:gRIXnmAVNyoRQywdNtpAkgY+f30QNzgF53Q5OobNZZs= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.21/go.mod h1:XsmHMV9c512xgsW01q7H0ut+UQQQpWX8QsFbdLHDwaU= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.1.0/go.mod h1:KdVvdk4gb7iatuHZgIkIqvJlWHBtjCJLUtD/uO/FkWw= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.2.0/go.mod h1:BsCSJHx5DnDXIrOcqB8KN1/B+hXLG/bi4Y6Vjcx/x9E= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.0/go.mod h1:viTrxhAuejD+LszDahzAE2x40YjYWhMqzHxv2ZiWaME= @@ -284,8 +293,9 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.7/go.mod h1:93Uot80ddyVz github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.8/go.mod h1:ZIV8GYoC6WLBW5KGs+o4rsc65/ozd+eQ0L31XF5VDwk= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.10/go.mod h1:pucnblrb8XuRc/ZEi2S+jdQa3JVAfnwhytGgawh5pR4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.12 h1:5mvQDtNWtI6H56+E4LUnLWEmATMB7oEh+Z9RurtIuC0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.12/go.mod h1:ckaCVTEdGAxO6KwTGzgskxR1xM+iJW4lxMyDFVda2Fc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.15 h1:noAhOo2mMDyYhTx99aYPvQw16T3fQ/DiKAv9fzpIKH8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.15/go.mod h1:kjJ4CyD9M3Wq88GYg3IPfj67Rs0Uvz8aXK7MJ8BvE4I= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2 h1:d95cddM3yTm4qffj3P6EnP+TzX1SSkWaQypXSgT/hpA= github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2/go.mod h1:BQV0agm+JEhqR+2RT5e1XTFIDcAAV0eW6z2trp+iduw= github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.2.0 h1:G7NSCbvUWDp4B0ny7tjHfuZvadphb7M66/1cYN9AnAg= @@ -330,8 +340,8 @@ github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.2.1 h1:SxtoHbLsxtdUMeKD3 github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.2.1/go.mod h1:uSWFf65jWgwb/QH4TlkQX4t6CL4jNEtJPFtGfC7fPb4= github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.2.1 h1:fEO/gs2CUMpBAoOTuLRnaMGhKCgntz6ZYvmXDDY/nOc= github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.2.1/go.mod h1:cv/vtBmaOXXxLctr2OdeDWGJAJiNJ3Ilh3VKi4NAiAA= -github.com/aws/aws-sdk-go-v2/service/configservice v1.3.0 h1:F1VtAhAtPq6TxgRlBlpG4dF2BG+udfvFEiuOMSBG6Jo= -github.com/aws/aws-sdk-go-v2/service/configservice v1.3.0/go.mod h1:iUPe1LAYqj8xaouHcns/bNEIcryZ7uuXVbcgj0SyT/k= +github.com/aws/aws-sdk-go-v2/service/configservice v1.25.4 h1:EeRNvcrw1QO9oxFF01I/rqGkHqSYrNuhf7Y4JpIH5zQ= +github.com/aws/aws-sdk-go-v2/service/configservice v1.25.4/go.mod h1:lDzS7RGxOtmYBjUi7xL5RYYfCzCCqAS4UasHIO84soY= github.com/aws/aws-sdk-go-v2/service/datapipeline v1.13.6 h1:FEA1TnXPbOURvvu5fWogiEywNvGqloaFDwGbSEV+ngc= github.com/aws/aws-sdk-go-v2/service/datapipeline v1.13.6/go.mod h1:ObjPVzsxPyoy3uwHM//3KJKFb4i7tWnQy1LFclew0KQ= github.com/aws/aws-sdk-go-v2/service/devicefarm v1.13.3 h1:fYkhLvCtT+Xn3ZWVaoE1v1lehBYsEi4ZmKp75rtELV0= @@ -342,8 +352,8 @@ github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.1 h1:NnYXRukLvkiTnNyZHCCQcZao github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.1/go.mod h1:WqAbIrpO0PSa3AIDxMG12aPPN4D1u99rOFdEfSM/KgY= github.com/aws/aws-sdk-go-v2/service/ec2 v1.3.0 h1:y82WbYudKuiWx0KuKQheqTQ4RIF8ZHoHvS/rD8HCYCc= github.com/aws/aws-sdk-go-v2/service/ec2 v1.3.0/go.mod h1:KW2/Fgs+L1m1X53O9hTFpJqPtLyYGbf9j1Ay5xPSy74= -github.com/aws/aws-sdk-go-v2/service/ecr v1.17.6 h1:R9FxvsuknGAoKDJ1YRKwbgkTbedZZ++R7BwscG/6vRk= -github.com/aws/aws-sdk-go-v2/service/ecr v1.17.6/go.mod h1:+eCLloB5OdOr47npoEKlHGphSa72k44lXebO8I9LpKk= +github.com/aws/aws-sdk-go-v2/service/ecr v1.17.16 h1:Fl+PSDkwzeNnI42wHAfRvreL6r7I2yAVYSCpXan9go4= +github.com/aws/aws-sdk-go-v2/service/ecr v1.17.16/go.mod h1:PKNfdxgouO2lS7Hl3p3LlEOsGS9ZHMu+P6E2ZfrdVxM= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.8 h1:uByYzUJNBrI4LN0H+HMA7yrDWQxe2f9cF7ZkiXltXRo= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.8/go.mod h1:nPSH6Ebmb3OkKl7+CLSjx+SMBaoFKbOe9mZhTAd352k= github.com/aws/aws-sdk-go-v2/service/ecs v1.2.1 h1:T8CKZFKySyOivXUc/80qlvNqvX9MQvvRCxFQCL6xxQU= @@ -455,8 +465,9 @@ github.com/aws/smithy-go v1.11.1/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnw github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= github.com/aws/smithy-go v1.11.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.12.1 h1:yQRC55aXN/y1W10HgwHle01DRuV9Dpf31iGkotjt3Ag= github.com/aws/smithy-go v1.12.1/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/smithy-go v1.13.2 h1:TBLKyeJfXTrTXRHmsv4qWt9IQGYyWThLYaJWSahTOGE= +github.com/aws/smithy-go v1.13.2/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0 h1:0NmehRCgyk5rljDQLKUO+cRJCnduDyn11+zGZIc9Z48= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0/go.mod h1:6L7zgvqo0idzI7IO8de6ZC051AfXb5ipkIJ7bIA2tGA= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= @@ -508,6 +519,7 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= @@ -547,8 +559,8 @@ github.com/dghubble/sling v1.1.0/go.mod h1:ZcPRuLm0qrcULW2gOrjXrAWgf76sahqSyxXyV github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/digitalocean/godo v1.57.0 h1:uCpe0sRIZ/sJWxWDsJyBPBjUfSvxop+WHkHiSf+tjjM= -github.com/digitalocean/godo v1.57.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= +github.com/digitalocean/godo v1.83.0 h1:K9CveJyECNLwrQnGZG+ovgapr7l5OuvQ6xZSKKW9Nz0= +github.com/digitalocean/godo v1.83.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= @@ -581,11 +593,11 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fastly/go-fastly/v6 v6.3.2 h1:MQawBCmIy/m9rs3aI0V+0N8P8UODJs1EfJPHJVBwEqI= github.com/fastly/go-fastly/v6 v6.3.2/go.mod h1:NrIbx45etTFv35rgfRe+eQY+8kA47arWABIkOaQ+roY= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -786,6 +798,7 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -801,8 +814,8 @@ github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pf github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= -github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= -github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= +github.com/gophercloud/gophercloud v1.0.0 h1:9nTGx0jizmHxDobe4mck89FyQHVyA3CaXLIUSGJjP9k= +github.com/gophercloud/gophercloud v1.0.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -845,9 +858,8 @@ github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXj github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= +github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.0 h1:8exGP7ego3OmkfksihtSouGMZ+hQrhxx+FVELeXpVPE= @@ -861,8 +873,8 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= -github.com/hashicorp/go-plugin v1.4.1 h1:6UltRQlLN9iZO513VveELp5xyaFxVD2+1OVylE+2E+w= -github.com/hashicorp/go-plugin v1.4.1/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= +github.com/hashicorp/go-plugin v1.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ= +github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= @@ -884,12 +896,14 @@ github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdv github.com/hashicorp/go-tfe v0.8.1/go.mod h1:XAV72S4O1iP8BDaqiaPLmL2B4EE6almocnOn8E8stHc= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -900,8 +914,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8= -github.com/hashicorp/hcl/v2 v2.8.2 h1:wmFle3D1vu0okesm8BTLVDyJ6/OL9DCLUwn0b2OptiY= -github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= +github.com/hashicorp/hcl/v2 v2.13.0 h1:0Apadu1w6M11dyGFxWnmhhcMjkbAiKCv7G1r/2QgCNc= +github.com/hashicorp/hcl/v2 v2.13.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI= github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -923,14 +937,17 @@ github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod github.com/hashicorp/vault v0.10.4 h1:4x0lHxui/ZRp/B3E0Auv1QNBJpzETqHR2kQD3mHSBJU= github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 h1:xixZ2bWeofWV68J+x6AzmKuVM/JWCQwkWm6GW/MUR6I= +github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/heimweh/go-pagerduty v0.0.0-20210930203304-530eff2acdc6 h1:/D0VtHEOCdotE1vSB9XznceAjIGkUieZ4BF6VKUIqNU= github.com/heimweh/go-pagerduty v0.0.0-20210930203304-530eff2acdc6/go.mod h1:JtJGtgN0y9KOCaqFMZFaBCWskpO/KK3Ro9TwjP9ss6w= github.com/heroku/heroku-go/v5 v5.4.1 h1:J1nNnR3/571b2iUDHl+y1B3VkhKm6YOXIq9GGzQUv5s= github.com/heroku/heroku-go/v5 v5.4.1/go.mod h1:Uo3XhGPwaTpniR4X1e50BDjg4SzdFk2Bd2mgYZVkfHo= github.com/hokaccha/go-prettyjson v0.0.0-20210113012101-fb4e108d2519 h1:nqAlWFEdqI0ClbTDrhDvE/8LeQ4pftrqKUX9w5k0j3s= github.com/hokaccha/go-prettyjson v0.0.0-20210113012101-fb4e108d2519/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI= +github.com/honeycombio/terraform-provider-honeycombio v0.10.0 h1:860Lh9qPUr31seT2vwOFEkQZfoweoBZcPRt95NXU5GI= +github.com/honeycombio/terraform-provider-honeycombio v0.10.0/go.mod h1:aXUdWxBmngRwaY3qzC++u0UQfpTRODSUnigplxb5Xfs= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= @@ -955,8 +972,8 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/jonboulle/clockwork v0.2.1 h1:S/EaQvW6FpWMYAvYvY+OBDvpaM+izu0oiwo5y0MH7U0= @@ -1045,7 +1062,7 @@ github.com/mattermost/xml-roundtrip-validator v0.0.0-20201213122252-bcd7e1b9601e github.com/mattermost/xml-roundtrip-validator v0.0.0-20201213122252-bcd7e1b9601e/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d h1:oNAwILwmgWKFpuU+dXvI6dl9jG2mAWAZLX3r9s0PPiw= @@ -1053,8 +1070,7 @@ github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HN github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -1078,11 +1094,12 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.4 h1:ZU1VNC02qyufSZsjjs7+khruk2fKvbQ3TwRV/IBCeFA= -github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= @@ -1091,8 +1108,9 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/panicwrap v1.0.0/go.mod h1:pKvZHwWrZowLUzftuFq7coarnxbBXU4aQh3N0BJOeeA= github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= @@ -1131,8 +1149,9 @@ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/okta/okta-sdk-golang/v2 v2.12.2-0.20220602195034-d7ea6917663f h1:6zPIZb9jjYbKfCdkpjERA6tpQKIiX+4+d4WJ8kEJJ8g= @@ -1151,6 +1170,7 @@ github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvw github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -1159,6 +1179,7 @@ github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7 github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= @@ -1264,16 +1285,19 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -1305,8 +1329,9 @@ github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6Ac github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc= +github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/vultr/govultr v1.1.1 h1:ntltxMYyJstjKz1v2CLNxFZiqjlt/8HqD1GZeJ/fAMc= github.com/vultr/govultr v1.1.1/go.mod h1:QXCNTRg0nwu95ayiMC3feYvrAFTLnj94s2FiibIpoC4= github.com/xanzy/go-gitlab v0.50.2 h1:Qm/um2Jryuqusc6VmN7iZYVTQVzNynzSiuMJDnCU1wE= @@ -1340,8 +1365,8 @@ github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLE github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.8.4 h1:pwhhz5P+Fjxse7S7UriBrMu6AUJSZM5pKqGem1PjGAs= -github.com/zclconf/go-cty v1.8.4/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= +github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= github.com/zclconf/go-cty-yaml v1.0.2 h1:dNyg4QLTrv2IfJpm7Wtxi55ed5gLGOlPrZ6kMd51hY0= github.com/zclconf/go-cty-yaml v1.0.2/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= @@ -1493,8 +1518,8 @@ golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1511,8 +1536,9 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1555,7 +1581,6 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1608,8 +1633,8 @@ golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86 h1:A9i04dxx7Cribqbs8jf3FQLogkL/CV2YN7hj9KWJCkc= -golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1627,8 +1652,9 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1826,8 +1852,8 @@ google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106 h1:ErU+UA6wxadoU8nWrsy5MZUVBs75K17zUCsUCIfrXCE= -google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3 h1:q1kiSVscqoDeqTF27eQ2NnLLDmqF0I373qQNXYMy0fo= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1859,8 +1885,9 @@ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9K google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1874,8 +1901,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/auth0.v5 v5.21.1 h1:aIqHBmnqaDv4eK2WSpTRsv2dEpT1jdHJPl+iwyDJNoo= gopkg.in/auth0.v5 v5.21.1/go.mod h1:k1eJq1+II4rwUlecBabE7u4igEuzKUCEZAMa11PUfQk= @@ -1922,8 +1950,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/providers/aws/route_table.go b/providers/aws/route_table.go index 83eb73a1cf..a954886894 100644 --- a/providers/aws/route_table.go +++ b/providers/aws/route_table.go @@ -63,20 +63,34 @@ func (g *RouteTableGenerator) createRouteTablesResources(svc *ec2.Client) []terr rtbAllowEmptyValues, map[string]interface{}{}, )) - } else { + } else if v := assoc.SubnetId; v != nil { // subnet-specific route table association resources = append(resources, terraformutils.NewResource( StringValue(assoc.RouteTableAssociationId), - StringValue(assoc.SubnetId), + StringValue(v), "aws_route_table_association", "aws", map[string]string{ - "subnet_id": StringValue(assoc.SubnetId), + "subnet_id": StringValue(v), "route_table_id": StringValue(table.RouteTableId), }, rtbAllowEmptyValues, map[string]interface{}{}, )) + } else if v := assoc.GatewayId; v != nil { + resources = append(resources, terraformutils.NewResource( + StringValue(assoc.RouteTableAssociationId), + StringValue(v), + "aws_route_table_association", + "aws", + map[string]string{ + "gateway_id": StringValue(v), + "route_table_id": StringValue(table.RouteTableId), + }, + rtbAllowEmptyValues, + map[string]interface{}{}, + )) + } } } diff --git a/providers/datadog/dashboard.go b/providers/datadog/dashboard.go index 1bbdfed6c1..3fc2e1bff2 100644 --- a/providers/datadog/dashboard.go +++ b/providers/datadog/dashboard.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,14 +58,15 @@ func (g *DashboardGenerator) createResource(dashboardID string) terraformutils.R // from each dashboard create 1 TerraformResource. // Need Dashboard ID as ID for terraform resource func (g *DashboardGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewDashboardsApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { if filter.FieldPath == "id" && filter.IsApplicable("dashboard") { for _, value := range filter.AcceptableValues { - dashboard, _, err := datadogClientV1.DashboardsApi.GetDashboard(authV1, value) + dashboard, _, err := api.GetDashboard(auth, value) if err != nil { return err } @@ -79,7 +81,7 @@ func (g *DashboardGenerator) InitResources() error { return nil } - summary, _, err := datadogClientV1.DashboardsApi.ListDashboards(authV1) + summary, _, err := api.ListDashboards(auth) if err != nil { return err } diff --git a/providers/datadog/dashboard_json.go b/providers/datadog/dashboard_json.go index e90fd51fbf..214324f8b1 100644 --- a/providers/datadog/dashboard_json.go +++ b/providers/datadog/dashboard_json.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,14 +58,15 @@ func (g *DashboardJSONGenerator) createResource(dashboardID string) terraformuti // from each dashboard_json create 1 TerraformResource. // Need Dashboard ID as ID for terraform resource func (g *DashboardJSONGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewDashboardsApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { if filter.FieldPath == "id" && filter.IsApplicable("dashboard_json") { for _, value := range filter.AcceptableValues { - dashboard, _, err := datadogClientV1.DashboardsApi.GetDashboard(authV1, value) + dashboard, _, err := api.GetDashboard(auth, value) if err != nil { return err } @@ -79,7 +81,7 @@ func (g *DashboardJSONGenerator) InitResources() error { return nil } - summary, _, err := datadogClientV1.DashboardsApi.ListDashboards(authV1) + summary, _, err := api.ListDashboards(auth) if err != nil { return err } diff --git a/providers/datadog/dashboard_list.go b/providers/datadog/dashboard_list.go index 1cf06f03c1..93d48525d3 100644 --- a/providers/datadog/dashboard_list.go +++ b/providers/datadog/dashboard_list.go @@ -19,7 +19,8 @@ import ( "fmt" "strconv" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -58,10 +59,11 @@ func (g *DashboardListGenerator) createResource(dashboardListID string) terrafor // from each dashboard_list create 1 TerraformResource. // Need DashboardList ID as ID for terraform resource func (g *DashboardListGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewDashboardListsApi(datadogClient) - dlResponse, _, err := datadogClientV1.DashboardListsApi.ListDashboardLists(authV1) + dlResponse, _, err := api.ListDashboardLists(auth) if err != nil { return err } diff --git a/providers/datadog/datadog_provider.go b/providers/datadog/datadog_provider.go index 79a556f11e..8f3cb6bec8 100644 --- a/providers/datadog/datadog_provider.go +++ b/providers/datadog/datadog_provider.go @@ -22,22 +22,20 @@ import ( "os" "strconv" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" - datadogV2 "github.com/DataDog/datadog-api-client-go/api/v2/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/GoogleCloudPlatform/terraformer/terraformutils" "github.com/zclconf/go-cty/cty" ) type DatadogProvider struct { //nolint terraformutils.Provider - apiKey string - appKey string - apiURL string - validate bool - authV1 context.Context - authV2 context.Context - datadogClientV1 *datadogV1.APIClient - datadogClientV2 *datadogV2.APIClient + apiKey string + appKey string + apiURL string + validate bool + auth context.Context + datadogClient *datadog.APIClient } // Init check env params and initialize API Client @@ -86,41 +84,10 @@ func (p *DatadogProvider) Init(args []string) error { } // Initialize the Datadog V1 API client - authV1 := context.WithValue( - context.Background(), - datadogV1.ContextAPIKeys, - map[string]datadogV1.APIKey{ - "apiKeyAuth": { - Key: p.apiKey, - }, - "appKeyAuth": { - Key: p.appKey, - }, - }, - ) - if p.apiURL != "" { - parsedAPIURL, parseErr := url.Parse(p.apiURL) - if parseErr != nil { - return fmt.Errorf(`invalid API Url : %v`, parseErr) - } - if parsedAPIURL.Host == "" || parsedAPIURL.Scheme == "" { - return fmt.Errorf(`missing protocol or host : %v`, p.apiURL) - } - // If api url is passed, set and use the api name and protocol on ServerIndex{1} - authV1 = context.WithValue(authV1, datadogV1.ContextServerIndex, 1) - authV1 = context.WithValue(authV1, datadogV1.ContextServerVariables, map[string]string{ - "name": parsedAPIURL.Host, - "protocol": parsedAPIURL.Scheme, - }) - } - configV1 := datadogV1.NewConfiguration() - datadogClientV1 := datadogV1.NewAPIClient(configV1) - - // Initialize the Datadog V2 API client - authV2 := context.WithValue( + auth := context.WithValue( context.Background(), - datadogV2.ContextAPIKeys, - map[string]datadogV2.APIKey{ + datadog.ContextAPIKeys, + map[string]datadog.APIKey{ "apiKeyAuth": { Key: p.apiKey, }, @@ -138,19 +105,17 @@ func (p *DatadogProvider) Init(args []string) error { return fmt.Errorf(`missing protocol or host : %v`, p.apiURL) } // If api url is passed, set and use the api name and protocol on ServerIndex{1} - authV2 = context.WithValue(authV2, datadogV2.ContextServerIndex, 1) - authV2 = context.WithValue(authV2, datadogV2.ContextServerVariables, map[string]string{ + auth = context.WithValue(auth, datadog.ContextServerIndex, 1) + auth = context.WithValue(auth, datadog.ContextServerVariables, map[string]string{ "name": parsedAPIURL.Host, "protocol": parsedAPIURL.Scheme, }) } - configV2 := datadogV2.NewConfiguration() - datadogClientV2 := datadogV2.NewAPIClient(configV2) + configV1 := datadog.NewConfiguration() + datadogClient := datadog.NewAPIClient(configV1) - p.authV1 = authV1 - p.authV2 = authV2 - p.datadogClientV1 = datadogClientV1 - p.datadogClientV2 = datadogClientV2 + p.auth = auth + p.datadogClient = datadogClient return nil } @@ -181,14 +146,12 @@ func (p *DatadogProvider) InitService(serviceName string, verbose bool) error { p.Service.SetVerbose(verbose) p.Service.SetProviderName(p.GetName()) p.Service.SetArgs(map[string]interface{}{ - "api-key": p.apiKey, - "app-key": p.appKey, - "api-url": p.apiURL, - "validate": p.validate, - "authV1": p.authV1, - "authV2": p.authV2, - "datadogClientV1": p.datadogClientV1, - "datadogClientV2": p.datadogClientV2, + "api-key": p.apiKey, + "app-key": p.appKey, + "api-url": p.apiURL, + "validate": p.validate, + "auth": p.auth, + "datadogClient": p.datadogClient, }) return nil } diff --git a/providers/datadog/downtime.go b/providers/datadog/downtime.go index 492194a5c4..289daa853f 100644 --- a/providers/datadog/downtime.go +++ b/providers/datadog/downtime.go @@ -19,7 +19,8 @@ import ( "fmt" "strconv" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -58,8 +59,9 @@ func (g *DowntimeGenerator) createResource(downtimeID string) terraformutils.Res // from each downtime create 1 TerraformResource. // Need Downtime ID as ID for terraform resource func (g *DowntimeGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewDowntimesApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { @@ -70,7 +72,7 @@ func (g *DowntimeGenerator) InitResources() error { return err } - monitor, _, err := datadogClientV1.DowntimesApi.GetDowntime(authV1, i) + monitor, _, err := api.GetDowntime(auth, i) if err != nil { return err } @@ -85,7 +87,7 @@ func (g *DowntimeGenerator) InitResources() error { return nil } - downtimes, _, err := datadogClientV1.DowntimesApi.ListDowntimes(authV1) + downtimes, _, err := api.ListDowntimes(auth) if err != nil { return err } diff --git a/providers/datadog/integration_aws.go b/providers/datadog/integration_aws.go index ae4473fbaf..007a2d6a93 100644 --- a/providers/datadog/integration_aws.go +++ b/providers/datadog/integration_aws.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,10 +58,11 @@ func (g *IntegrationAWSGenerator) createResource(resourceID string) terraformuti // from each monitor create 1 TerraformResource. // Need IntegrationAWS ID formatted as ':' as ID for terraform resource func (g *IntegrationAWSGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewAWSIntegrationApi(datadogClient) - integrations, _, err := datadogClientV1.AWSIntegrationApi.ListAWSAccounts(authV1) + integrations, _, err := api.ListAWSAccounts(auth) if err != nil { return err } diff --git a/providers/datadog/integration_aws_lambda_arn.go b/providers/datadog/integration_aws_lambda_arn.go index a61163e65a..301b6da211 100644 --- a/providers/datadog/integration_aws_lambda_arn.go +++ b/providers/datadog/integration_aws_lambda_arn.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -61,10 +62,11 @@ func (g *IntegrationAWSLambdaARNGenerator) createResource(resourceID string) ter // from each monitor create 1 TerraformResource. // Need IntegrationAWSLambdaARN ID formatted as ':' as ID for terraform resource func (g *IntegrationAWSLambdaARNGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewAWSLogsIntegrationApi(datadogClient) - logCollections, _, err := datadogClientV1.AWSLogsIntegrationApi.ListAWSLogsIntegrations(authV1) + logCollections, _, err := api.ListAWSLogsIntegrations(auth) if err != nil { return err } diff --git a/providers/datadog/integration_aws_log_collection.go b/providers/datadog/integration_aws_log_collection.go index 83db0ef0ce..6c9fef6aed 100644 --- a/providers/datadog/integration_aws_log_collection.go +++ b/providers/datadog/integration_aws_log_collection.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -56,10 +57,11 @@ func (g *IntegrationAWSLogCollectionGenerator) createResource(resourceID string) // from each monitor create 1 TerraformResource. // Need IntegrationAWSLogCollection ID formatted as ':' as ID for terraform resource func (g *IntegrationAWSLogCollectionGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewAWSLogsIntegrationApi(datadogClient) - logCollections, _, err := datadogClientV1.AWSLogsIntegrationApi.ListAWSLogsIntegrations(authV1) + logCollections, _, err := api.ListAWSLogsIntegrations(auth) if err != nil { return err } diff --git a/providers/datadog/integration_azure.go b/providers/datadog/integration_azure.go index e4c576381f..89c2bced35 100644 --- a/providers/datadog/integration_azure.go +++ b/providers/datadog/integration_azure.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,10 +58,11 @@ func (g *IntegrationAzureGenerator) createResource(resourceID string) terraformu // from each monitor create 1 TerraformResource. // Need IntegrationAzure ID formatted as ':' as ID for terraform resource func (g *IntegrationAzureGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewAzureIntegrationApi(datadogClient) - integrations, _, err := datadogClientV1.AzureIntegrationApi.ListAzureIntegration(authV1) + integrations, _, err := api.ListAzureIntegration(auth) if err != nil { return err } diff --git a/providers/datadog/integration_gcp.go b/providers/datadog/integration_gcp.go index 412fdd5ea8..ed1cbca0aa 100644 --- a/providers/datadog/integration_gcp.go +++ b/providers/datadog/integration_gcp.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,10 +58,11 @@ func (g *IntegrationGCPGenerator) createResource(resourceID string) terraformuti // from each monitor create 1 TerraformResource. // Need IntegrationGCP ID formatted as ':' as ID for terraform resource func (g *IntegrationGCPGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewGCPIntegrationApi(datadogClient) - integrations, _, err := datadogClientV1.GCPIntegrationApi.ListGCPIntegration(authV1) + integrations, _, err := api.ListGCPIntegration(auth) if err != nil { return err } diff --git a/providers/datadog/integration_slack_channel.go b/providers/datadog/integration_slack_channel.go index e122ef8293..b67ac2c60d 100644 --- a/providers/datadog/integration_slack_channel.go +++ b/providers/datadog/integration_slack_channel.go @@ -19,7 +19,8 @@ import ( "fmt" "log" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,14 +58,15 @@ func (g *IntegrationSlackChannelGenerator) createResource(id string) terraformut // InitResources Generate TerraformResources from Datadog API, // from each slack channel create 1 TerraformResource. func (g *IntegrationSlackChannelGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewSlackIntegrationApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { if filter.FieldPath == "account_name" && filter.IsApplicable("integration_slack_channel") { for _, value := range filter.AcceptableValues { - slackChannels, _, err := datadogClientV1.SlackIntegrationApi.GetSlackIntegrationChannels(authV1, value) + slackChannels, _, err := api.GetSlackIntegrationChannels(auth, value) if err != nil { return err } diff --git a/providers/datadog/logs_archive.go b/providers/datadog/logs_archive.go index 05a48e08a4..b3add7701f 100644 --- a/providers/datadog/logs_archive.go +++ b/providers/datadog/logs_archive.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV2 "github.com/DataDog/datadog-api-client-go/api/v2/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,14 +58,15 @@ func (g *LogsArchiveGenerator) createResource(logsArchiveID string) terraformuti // from each archive create 1 TerraformResource. // Need LogsArchive ID as ID for terraform resource func (g *LogsArchiveGenerator) InitResources() error { - datadogClientV2 := g.Args["datadogClientV2"].(*datadogV2.APIClient) - authV2 := g.Args["authV2"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV2.NewLogsArchivesApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { if filter.FieldPath == "id" && filter.IsApplicable("logs_archive") { for _, value := range filter.AcceptableValues { - resp, _, err := datadogClientV2.LogsArchivesApi.GetLogsArchive(authV2, value) + resp, _, err := api.GetLogsArchive(auth, value) if err != nil { return err } @@ -79,7 +81,7 @@ func (g *LogsArchiveGenerator) InitResources() error { return nil } - logsArchiveListResp, _, err := datadogClientV2.LogsArchivesApi.ListLogsArchives(authV2) + logsArchiveListResp, _, err := api.ListLogsArchives(auth) logsArchiveList := logsArchiveListResp.GetData() if err != nil { return err diff --git a/providers/datadog/logs_custom_pipeline.go b/providers/datadog/logs_custom_pipeline.go index 1ba0aa9615..0d8769211f 100644 --- a/providers/datadog/logs_custom_pipeline.go +++ b/providers/datadog/logs_custom_pipeline.go @@ -20,7 +20,8 @@ import ( "fmt" "strings" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -62,14 +63,15 @@ func (g *LogsCustomPipelineGenerator) createResource(logsCustomPipelineID string // from each custom pipeline create 1 TerraformResource. // Need LogsPipeline ID as ID for terraform resource func (g *LogsCustomPipelineGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewLogsPipelinesApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { if filter.FieldPath == "id" && filter.IsApplicable("logs_custom_pipeline") { for _, value := range filter.AcceptableValues { - logsCustomPipeline, _, err := datadogClientV1.LogsPipelinesApi.GetLogsPipeline(authV1, value) + logsCustomPipeline, _, err := api.GetLogsPipeline(auth, value) if err != nil { return err } @@ -84,7 +86,7 @@ func (g *LogsCustomPipelineGenerator) InitResources() error { return nil } - logsCustomPipelines, _, err := datadogClientV1.LogsPipelinesApi.ListLogsPipelines(authV1) + logsCustomPipelines, _, err := api.ListLogsPipelines(auth) if err != nil { return err } diff --git a/providers/datadog/logs_index.go b/providers/datadog/logs_index.go index 73adeeb381..8415b3b8b7 100644 --- a/providers/datadog/logs_index.go +++ b/providers/datadog/logs_index.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,14 +58,15 @@ func (g *LogsIndexGenerator) createResource(logsIndexName string) terraformutils // from each index create 1 TerraformResource. // Need LogsIndex Name as ID for terraform resource func (g *LogsIndexGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewLogsIndexesApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { if filter.FieldPath == "id" && filter.IsApplicable("logs_index") { for _, value := range filter.AcceptableValues { - logsIndex, _, err := datadogClientV1.LogsIndexesApi.GetLogsIndex(authV1, value) + logsIndex, _, err := api.GetLogsIndex(auth, value) if err != nil { return err } @@ -79,7 +81,7 @@ func (g *LogsIndexGenerator) InitResources() error { return nil } - logsIndexList, _, err := datadogClientV1.LogsIndexesApi.ListLogIndexes(authV1) + logsIndexList, _, err := api.ListLogIndexes(auth) logsIndex := logsIndexList.GetIndexes() if err != nil { return err diff --git a/providers/datadog/logs_integration_pipeline.go b/providers/datadog/logs_integration_pipeline.go index 6e8d57acb2..370b0483e2 100644 --- a/providers/datadog/logs_integration_pipeline.go +++ b/providers/datadog/logs_integration_pipeline.go @@ -17,7 +17,9 @@ package datadog import ( "context" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" + "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -59,10 +61,11 @@ func (g *LogsIntegrationPipelineGenerator) createResource(logsIntegrationPipelin // from each integration pipeline create 1 TerraformResource. // Need LogsPipeline ID as ID for terraform resource func (g *LogsIntegrationPipelineGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewLogsPipelinesApi(datadogClient) - logsIntegrationPipelines, _, err := datadogClientV1.LogsPipelinesApi.ListLogsPipelines(authV1) + logsIntegrationPipelines, _, err := api.ListLogsPipelines(auth) if err != nil { return err } diff --git a/providers/datadog/monitor.go b/providers/datadog/monitor.go index 2e9ccd1cad..89f1cdc9c8 100644 --- a/providers/datadog/monitor.go +++ b/providers/datadog/monitor.go @@ -20,7 +20,8 @@ import ( "strconv" "strings" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -62,8 +63,9 @@ func (g *MonitorGenerator) createResource(monitorID string) terraformutils.Resou // from each monitor create 1 TerraformResource. // Need Monitor ID as ID for terraform resource func (g *MonitorGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewMonitorsApi(datadogClient) optionalParams := datadogV1.NewListMonitorsOptionalParameters() resources := []terraformutils.Resource{} @@ -75,7 +77,7 @@ func (g *MonitorGenerator) InitResources() error { return err } - monitor, _, err := datadogClientV1.MonitorsApi.GetMonitor(authV1, i) + monitor, _, err := api.GetMonitor(auth, i) if err != nil { return err } @@ -97,7 +99,7 @@ func (g *MonitorGenerator) InitResources() error { pageSize := int32(1000) pageNumber := int64(0) for { - resp, _, err := datadogClientV1.MonitorsApi.ListMonitors(authV1, *optionalParams. + resp, _, err := api.ListMonitors(auth, *optionalParams. WithPageSize(pageSize). WithPage(pageNumber)) if err != nil { diff --git a/providers/datadog/role.go b/providers/datadog/role.go index 2008b6fffc..f03cea651f 100644 --- a/providers/datadog/role.go +++ b/providers/datadog/role.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV2 "github.com/DataDog/datadog-api-client-go/api/v2/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -59,8 +60,9 @@ func (g *RoleGenerator) createResource(roleID string) terraformutils.Resource { // from each role create 1 TerraformResource. // Need Role ID as ID for terraform resource func (g *RoleGenerator) InitResources() error { - datadogClientV2 := g.Args["datadogClientV2"].(*datadogV2.APIClient) - authV2 := g.Args["authV2"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV2.NewRolesApi(datadogClient) pageSize := int64(100) pageNumber := int64(0) @@ -68,7 +70,7 @@ func (g *RoleGenerator) InitResources() error { var roles []datadogV2.Role for remaining > int64(0) { - resp, _, err := datadogClientV2.RolesApi.ListRoles(authV2, *datadogV2.NewListRolesOptionalParameters(). + resp, _, err := api.ListRoles(auth, *datadogV2.NewListRolesOptionalParameters(). WithPageSize(pageSize). WithPageNumber(pageNumber)) if err != nil { diff --git a/providers/datadog/security_monitoring_default_rule.go b/providers/datadog/security_monitoring_default_rule.go index 67a30a93a9..a8159ec7f3 100644 --- a/providers/datadog/security_monitoring_default_rule.go +++ b/providers/datadog/security_monitoring_default_rule.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV2 "github.com/DataDog/datadog-api-client-go/api/v2/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -61,15 +62,16 @@ func (g *SecurityMonitoringDefaultRuleGenerator) createResource(ruleID string) t func (g *SecurityMonitoringDefaultRuleGenerator) InitResources() error { var securityMonitoringRuleResponses []datadogV2.SecurityMonitoringRuleResponse - datadogClientV2 := g.Args["datadogClientV2"].(*datadogV2.APIClient) - authV2 := g.Args["authV2"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV2.NewSecurityMonitoringApi(datadogClient) pageSize := int64(1000) pageNumber := int64(0) remaining := int64(1) for remaining > int64(0) { - resp, _, err := datadogClientV2.SecurityMonitoringApi.ListSecurityMonitoringRules(authV2, + resp, _, err := api.ListSecurityMonitoringRules(auth, *datadogV2.NewListSecurityMonitoringRulesOptionalParameters(). WithPageSize(pageSize). WithPageNumber(pageNumber)) diff --git a/providers/datadog/security_monitoring_rule.go b/providers/datadog/security_monitoring_rule.go index fe0e6744b8..db4828cef5 100644 --- a/providers/datadog/security_monitoring_rule.go +++ b/providers/datadog/security_monitoring_rule.go @@ -19,7 +19,8 @@ import ( "fmt" "strconv" - datadogV2 "github.com/DataDog/datadog-api-client-go/api/v2/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -66,15 +67,16 @@ func (g *SecurityMonitoringRuleGenerator) createResource(ruleID string, ruleEnab func (g *SecurityMonitoringRuleGenerator) InitResources() error { var securityMonitoringRuleResponses []datadogV2.SecurityMonitoringRuleResponse - datadogClientV2 := g.Args["datadogClientV2"].(*datadogV2.APIClient) - authV2 := g.Args["authV2"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV2.NewSecurityMonitoringApi(datadogClient) pageSize := int64(1000) pageNumber := int64(0) remaining := int64(1) for remaining > int64(0) { - resp, _, err := datadogClientV2.SecurityMonitoringApi.ListSecurityMonitoringRules(authV2, + resp, _, err := api.ListSecurityMonitoringRules(auth, *datadogV2.NewListSecurityMonitoringRulesOptionalParameters(). WithPageNumber(pageNumber). WithPageSize(pageSize)) diff --git a/providers/datadog/service_level_objective.go b/providers/datadog/service_level_objective.go index 7ed4c503cd..b36dd9512d 100644 --- a/providers/datadog/service_level_objective.go +++ b/providers/datadog/service_level_objective.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,11 +58,12 @@ func (g *ServiceLevelObjectiveGenerator) createResource(sloID string) terraformu // from each service_level_objective create 1 TerraformResource. // Need ServiceLevelObjective ID as ID for terraform resource func (g *ServiceLevelObjectiveGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewServiceLevelObjectivesApi(datadogClient) var slos []datadogV1.ServiceLevelObjective - resp, _, err := datadogClientV1.ServiceLevelObjectivesApi.ListSLOs(authV1) + resp, _, err := api.ListSLOs(auth) if err != nil { return err } diff --git a/providers/datadog/synthetics_global_variable.go b/providers/datadog/synthetics_global_variable.go index 4fcccb4ad4..e070bcbfd7 100644 --- a/providers/datadog/synthetics_global_variable.go +++ b/providers/datadog/synthetics_global_variable.go @@ -19,7 +19,8 @@ import ( "fmt" "log" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -58,14 +59,15 @@ func (g *SyntheticsGlobalVariableGenerator) createResource(globalVariableID stri // from each SyntheticsGlobalVariable create 1 TerraformResource. // Need SyntheticsGlobalVariable ID as ID for terraform resource func (g *SyntheticsGlobalVariableGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewSyntheticsApi(datadogClient) var globalVariableIDs []datadogV1.SyntheticsGlobalVariable for _, filter := range g.Filter { if filter.FieldPath == "id" && filter.IsApplicable("synthetics_global_variable") { for _, v := range filter.AcceptableValues { - resp, _, err := datadogClientV1.SyntheticsApi.GetGlobalVariable(authV1, v) + resp, _, err := api.GetGlobalVariable(auth, v) if err != nil { log.Printf("error retrieving synthetics gloval variable with id:%s - %s", v, err) continue diff --git a/providers/datadog/synthetics_private_location.go b/providers/datadog/synthetics_private_location.go index a46b4eebdf..9d28fe1bac 100644 --- a/providers/datadog/synthetics_private_location.go +++ b/providers/datadog/synthetics_private_location.go @@ -19,7 +19,8 @@ import ( "fmt" "regexp" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -60,10 +61,11 @@ func (g *SyntheticsPrivateLocationGenerator) createResource(plID string) terrafo // from each SyntheticsPrivateLocation create 1 TerraformResource. // Need SyntheticsPrivateLocation ID as ID for terraform resource func (g *SyntheticsPrivateLocationGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewSyntheticsApi(datadogClient) - data, _, err := datadogClientV1.SyntheticsApi.ListLocations(authV1) + data, _, err := api.ListLocations(auth) if err != nil { return err } diff --git a/providers/datadog/synthetics_test_.go b/providers/datadog/synthetics_test_.go index a8659006cf..f68b838efd 100644 --- a/providers/datadog/synthetics_test_.go +++ b/providers/datadog/synthetics_test_.go @@ -18,7 +18,8 @@ import ( "context" "fmt" - datadogV1 "github.com/DataDog/datadog-api-client-go/api/v1/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1" "github.com/GoogleCloudPlatform/terraformer/terraformutils" ) @@ -57,14 +58,15 @@ func (g *SyntheticsTestGenerator) createResource(syntheticsID string) terraformu // from each synthetics create 1 TerraformResource. // Need Synthetics ID as ID for terraform resource func (g *SyntheticsTestGenerator) InitResources() error { - datadogClientV1 := g.Args["datadogClientV1"].(*datadogV1.APIClient) - authV1 := g.Args["authV1"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV1.NewSyntheticsApi(datadogClient) resources := []terraformutils.Resource{} for _, filter := range g.Filter { if filter.FieldPath == "id" && filter.IsApplicable("synthetics_test") { for _, value := range filter.AcceptableValues { - syntheticsTest, _, err := datadogClientV1.SyntheticsApi.GetTest(authV1, value) + syntheticsTest, _, err := api.GetTest(auth, value) if err != nil { return err } @@ -79,7 +81,7 @@ func (g *SyntheticsTestGenerator) InitResources() error { return nil } - syntheticsTests, _, err := datadogClientV1.SyntheticsApi.ListTests(authV1) + syntheticsTests, _, err := api.ListTests(auth) if err != nil { return err } diff --git a/providers/datadog/user.go b/providers/datadog/user.go index 5aaebaba92..c84714f7a5 100644 --- a/providers/datadog/user.go +++ b/providers/datadog/user.go @@ -21,7 +21,8 @@ import ( "github.com/GoogleCloudPlatform/terraformer/terraformutils" - datadogV2 "github.com/DataDog/datadog-api-client-go/api/v2/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadog" + "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2" ) var ( @@ -67,8 +68,9 @@ func (g *UserGenerator) createResource(userID string) terraformutils.Resource { // Need User ID as ID for terraform resource func (g *UserGenerator) InitResources() error { var users []datadogV2.User - datadogClientV2 := g.Args["datadogClientV2"].(*datadogV2.APIClient) - authV2 := g.Args["authV2"].(context.Context) + datadogClient := g.Args["datadogClient"].(*datadog.APIClient) + auth := g.Args["auth"].(context.Context) + api := datadogV2.NewUsersApi(datadogClient) pageSize := int64(1000) pageNumber := int64(0) @@ -83,7 +85,7 @@ func (g *UserGenerator) InitResources() error { } for remaining > int64(0) { - resp, _, err := datadogClientV2.UsersApi.ListUsers(authV2, *optionalParams. + resp, _, err := api.ListUsers(auth, *optionalParams. WithPageSize(pageSize). WithPageNumber(pageNumber)) if err != nil { diff --git a/providers/honeycombio/board.go b/providers/honeycombio/board.go new file mode 100644 index 0000000000..ce02619230 --- /dev/null +++ b/providers/honeycombio/board.go @@ -0,0 +1,46 @@ +package honeycombio + +import ( + "context" + "fmt" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" +) + +type BoardGenerator struct { + HoneycombService +} + +func (g *BoardGenerator) InitResources() error { + client, err := g.newClient() + if err != nil { + return fmt.Errorf("unable to list Honeycomb boards: %v", err) + } + + boards, err := client.Boards.List(context.TODO()) + if err != nil { + return err + } + + for _, board := range boards { + onlyValidDatasets := true + for _, query := range board.Queries { + _, present := g.datasetMap[query.Dataset] + if !present { + onlyValidDatasets = false + } + } + + if onlyValidDatasets { + g.Resources = append(g.Resources, terraformutils.NewSimpleResource( + board.ID, + board.ID, + "honeycombio_board", + "honeycombio", + []string{}, + )) + } + } + + return nil +} diff --git a/providers/honeycombio/burn_alert.go b/providers/honeycombio/burn_alert.go new file mode 100644 index 0000000000..68fb06cf05 --- /dev/null +++ b/providers/honeycombio/burn_alert.go @@ -0,0 +1,48 @@ +package honeycombio + +import ( + "context" + "fmt" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" +) + +type BurnAlertGenerator struct { + HoneycombService +} + +func (g *BurnAlertGenerator) InitResources() error { + client, err := g.newClient() + if err != nil { + return fmt.Errorf("unable to initialize Honeycomb client: %v", err) + } + + ctx := context.TODO() + + for _, dataset := range g.datasets { + slos, err := client.SLOs.List(ctx, dataset.Slug) + if err != nil { + return fmt.Errorf("unable to list Honeycomb SLOs for dataset %s: %v", dataset.Slug, err) + } + + for _, slo := range slos { + bas, _ := client.BurnAlerts.ListForSLO(ctx, dataset.Slug, slo.ID) + for _, ba := range bas { + g.Resources = append(g.Resources, terraformutils.NewResource( + ba.ID, + ba.ID, + "honeycombio_burn_alert", + "honeycombio", + map[string]string{ + "dataset": dataset.Name, + "slo_id": slo.ID, + }, + []string{"recipient"}, + map[string]interface{}{}, + )) + } + } + } + + return nil +} diff --git a/providers/honeycombio/column.go b/providers/honeycombio/column.go new file mode 100644 index 0000000000..f36cdb11fd --- /dev/null +++ b/providers/honeycombio/column.go @@ -0,0 +1,45 @@ +package honeycombio + +import ( + "context" + "fmt" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" +) + +type ColumnGenerator struct { + HoneycombService +} + +func (g *ColumnGenerator) InitResources() error { + client, err := g.newClient() + if err != nil { + return fmt.Errorf("unable to initialize Honeycomb client: %v", err) + } + + ctx := context.TODO() + + for _, dataset := range g.datasets { + columns, err := client.Columns.List(ctx, dataset.Slug) + if err != nil { + return fmt.Errorf("unable to list Honeycomb columns for dataset %s: %v", dataset.Slug, err) + } + + for _, column := range columns { + g.Resources = append(g.Resources, terraformutils.NewResource( + column.ID, + fmt.Sprintf("%s_%s", dataset.Name, column.KeyName), + "honeycombio_column", + "honeycombio", + map[string]string{ + "dataset": dataset.Name, + "key_name": column.KeyName, + }, + []string{"hidden", "type"}, + map[string]interface{}{}, + )) + } + } + + return nil +} diff --git a/providers/honeycombio/dataset.go b/providers/honeycombio/dataset.go new file mode 100644 index 0000000000..3e74f4852a --- /dev/null +++ b/providers/honeycombio/dataset.go @@ -0,0 +1,32 @@ +package honeycombio + +import ( + "fmt" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" +) + +type DatasetGenerator struct { + HoneycombService +} + +func (g *DatasetGenerator) InitResources() error { + _, err := g.newClient() + if err != nil { + return fmt.Errorf("unable to initialize Honeycomb client: %v", err) + } + + for _, dataset := range g.datasets { + g.Resources = append(g.Resources, terraformutils.NewResource( + dataset.Slug, + dataset.Slug, + "honeycombio_dataset", + "honeycombio", + map[string]string{}, + []string{}, + map[string]interface{}{}, + )) + } + + return nil +} diff --git a/providers/honeycombio/derived_column.go b/providers/honeycombio/derived_column.go new file mode 100644 index 0000000000..fb6f026806 --- /dev/null +++ b/providers/honeycombio/derived_column.go @@ -0,0 +1,47 @@ +package honeycombio + +import ( + "context" + "fmt" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" +) + +type DerivedColumnGenerator struct { + HoneycombService +} + +func (g *DerivedColumnGenerator) InitResources() error { + client, err := g.newClient() + if err != nil { + return fmt.Errorf("unable to initialize Honeycomb client: %v", err) + } + + ctx := context.TODO() + + for _, dataset := range g.datasets { + columns, err := client.DerivedColumns.List(ctx, dataset.Slug) + if err != nil { + return fmt.Errorf("unable to list Honeycomb derived columns for dataset %s: %v", dataset.Slug, err) + } + + for _, column := range columns { + g.Resources = append(g.Resources, terraformutils.NewResource( + column.ID, + fmt.Sprintf("%s_%s", dataset.Name, column.Alias), + "honeycombio_derived_column", + "honeycombio", + map[string]string{ + "dataset": dataset.Name, + "alias": column.Alias, + // TODO: is there a nicer way to format the expression? + "expression": column.Expression, + }, + []string{}, + map[string]interface{}{}, + )) + } + } + + return nil +} diff --git a/providers/honeycombio/honeycomb_provider.go b/providers/honeycombio/honeycomb_provider.go new file mode 100644 index 0000000000..6606fc0fdd --- /dev/null +++ b/providers/honeycombio/honeycomb_provider.go @@ -0,0 +1,135 @@ +// Copyright 2022 The Terraformer Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package honeycombio + +import ( + "errors" + "os" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" + "github.com/zclconf/go-cty/cty" +) + +const honeycombDefaultURL = "https://api.honeycomb.io" +const honeycombTerraformerProviderVersion = "0.0.1" + +type HoneycombProvider struct { //nolint + terraformutils.Provider + apiKey string + apiURL string + datasets []string +} + +func (p HoneycombProvider) GetProviderData(arg ...string) map[string]interface{} { + return map[string]interface{}{ + "provider": map[string]interface{}{ + "honeycomb": map[string]interface{}{ + "api_url": p.apiURL, + }, + }, + } +} + +func (p *HoneycombProvider) GetName() string { + return "honeycombio" +} + +// This mapping will stop working if queries/query annotations are generated as +// sub-resources of boards or triggers +func (p HoneycombProvider) GetResourceConnections() map[string]map[string][]string { + return map[string]map[string][]string{ + "board": { + "dataset": {"query.dataset", "name"}, + "query": {"query.query_id", "id"}, + "query_annotation": {"query.query_annotation_id", "id"}, + }, + "column": { + "dataset": {"dataset", "name"}, + }, + "derived_column": { + "dataset": {"dataset", "name"}, + }, + "query": { + "dataset": {"dataset", "name"}, + }, + "query_annotation": { + "query": {"query_id", "id"}, + "dataset": {"dataset", "name"}, + }, + "slo": { + "dataset": {"dataset", "name"}, + }, + "burn_alert": { + "slo": {"slo_id", "id"}, + "dataset": {"dataset", "name"}, + }, + "trigger": { + "query": {"query_id", "id"}, + "dataset": {"dataset", "name"}, + }, + } +} +func (p *HoneycombProvider) Init(args []string) error { + p.apiKey = os.Getenv("HONEYCOMB_API_KEY") + if p.apiKey == "" { + return errors.New("the Honeycomb API key must be set via `HONEYCOMB_API_KEY` env var") + } + p.apiURL = os.Getenv("HONEYCOMB_API_URL") + if p.apiURL == "" { + p.apiURL = honeycombDefaultURL + } + // datasets are the only argument + p.datasets = args + + return nil +} + +func (p *HoneycombProvider) GetConfig() cty.Value { + return cty.ObjectVal(map[string]cty.Value{ + "api_key": cty.StringVal(p.apiKey), + "api_url": cty.StringVal(p.apiURL), + }) +} + +func (p *HoneycombProvider) InitService(serviceName string, verbose bool) error { + var isSupported bool + if _, isSupported = p.GetSupportedService()[serviceName]; !isSupported { + return errors.New("honeycombio: " + serviceName + " is not a supported resource type") + } + p.Service = p.GetSupportedService()[serviceName] + p.Service.SetName(serviceName) + p.Service.SetVerbose(verbose) + p.Service.SetProviderName(p.GetName()) + p.Service.SetArgs(map[string]interface{}{ + "api_key": p.apiKey, + "api_url": p.apiURL, + "datasets": p.datasets, + }) + return nil +} + +func (p *HoneycombProvider) GetSupportedService() map[string]terraformutils.ServiceGenerator { + return map[string]terraformutils.ServiceGenerator{ + "board": &BoardGenerator{}, + "derived_column": &DerivedColumnGenerator{}, + "trigger": &TriggerGenerator{}, + "dataset": &DatasetGenerator{}, + "column": &ColumnGenerator{}, + "query": &QueryGenerator{}, + "query_annotation": &QueryAnnotationGenerator{}, + "slo": &SLOGenerator{}, + "burn_alert": &BurnAlertGenerator{}, + } +} diff --git a/providers/honeycombio/honeycomb_service.go b/providers/honeycombio/honeycomb_service.go new file mode 100644 index 0000000000..0174f17d52 --- /dev/null +++ b/providers/honeycombio/honeycomb_service.go @@ -0,0 +1,72 @@ +// Copyright 2022 The Terraformer Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package honeycombio + +import ( + "context" + "fmt" + "os" + "strconv" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" + hnyclient "github.com/honeycombio/terraform-provider-honeycombio/client" +) + +type HoneycombService struct { //nolint + terraformutils.Service + datasets []hnyclient.Dataset + datasetMap map[string]bool +} + +func (s *HoneycombService) newClient() (*hnyclient.Client, error) { + enableDebug, _ := strconv.ParseBool(os.Getenv("HONEYCOMBIO_DEBUG")) + + client, err := hnyclient.NewClient(&hnyclient.Config{ + APIKey: s.GetArgs()["api_key"].(string), + APIUrl: s.GetArgs()["api_url"].(string), + UserAgent: fmt.Sprintf("terraformer-honeycombio/%s", honeycombTerraformerProviderVersion), + Debug: enableDebug, + }) + if err != nil { + return client, err + } + + ctx := context.TODO() + datasets := s.GetArgs()["datasets"].([]string) + datasetMap := make(map[string]bool) + if len(datasets) == 0 { + // assume all datasets + s.datasets, err = client.Datasets.List(ctx) + if err != nil { + return client, fmt.Errorf("unable to list Honeycomb datasets: %v", err) + } + for _, ds := range s.datasets { + datasetMap[ds.Name] = true + } + } else { + // verify the provided datasets exist + for _, d := range datasets { + ds, err := client.Datasets.Get(ctx, d) + if err != nil { + return client, fmt.Errorf("unable to get Honeycomb dataset '%s': %v", d, err) + } + s.datasets = append(s.datasets, *ds) + datasetMap[ds.Name] = true + } + } + s.datasetMap = datasetMap + + return client, nil +} diff --git a/providers/honeycombio/query.go b/providers/honeycombio/query.go new file mode 100644 index 0000000000..f7e1947d63 --- /dev/null +++ b/providers/honeycombio/query.go @@ -0,0 +1,86 @@ +package honeycombio + +import ( + "context" + "fmt" + + "github.com/GoogleCloudPlatform/terraformer/terraformutils" +) + +type QueryGenerator struct { + HoneycombService +} + +func (g *QueryGenerator) InitResources() error { + client, err := g.newClient() + if err != nil { + return fmt.Errorf("unable to initialize Honeycomb client: %v", err) + } + + ctx := context.TODO() + + for _, dataset := range g.datasets { + triggers, err := client.Triggers.List(ctx, dataset.Slug) + if err != nil { + return fmt.Errorf("unable to list Honeycomb triggers for dataset %s: %v", dataset.Slug, err) + } + + for _, trigger := range triggers { + g.Resources = append(g.Resources, terraformutils.NewResource( + trigger.QueryID, + trigger.QueryID, + "honeycombio_query", + "honeycombio", + map[string]string{ + "dataset": dataset.Name, + }, + []string{}, + map[string]interface{}{}, + )) + } + } + + boards, err := client.Boards.List(context.TODO()) + if err != nil { + return err + } + + for _, board := range boards { + for _, query := range board.Queries { + _, datasetSelected := g.datasetMap[query.Dataset] + if datasetSelected { + g.Resources = append(g.Resources, terraformutils.NewResource( + query.QueryID, + query.QueryID, + "honeycombio_query", + "honeycombio", + map[string]string{ + "dataset": query.Dataset, + }, + []string{"caption", "query_annotation_id"}, + map[string]interface{}{}, + )) + } + } + } + + return nil +} + +// PostGenerateHook to format any generated query resource's QuerySpec JSON as a heredoc +// func (g *QueryGenerator) PostConvertHook() error { +// for i, resource := range g.Resources { +// if resource.InstanceInfo.Type != "honeycombio_query" { +// continue +// } +// if _, exist := resource.Item["query_json"]; exist { +// queryJSON := resource.Item["query_json"].(string) +// unquotedStr, _ := strconv.Unquote(queryJSON) +// fmt.Println(queryJSON) +// g.Resources[i].Item["query_json"] = `<