From e485ccef717bb78e970465abeadd58e085f9e172 Mon Sep 17 00:00:00 2001 From: Ramana Reddy Date: Wed, 21 Aug 2024 20:46:57 +0530 Subject: [PATCH 1/3] fix panic with cloudflare provider --- pkg/providers/cloudflare/cloudflare.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/providers/cloudflare/cloudflare.go b/pkg/providers/cloudflare/cloudflare.go index 3bdf0cbb..3fe77c15 100644 --- a/pkg/providers/cloudflare/cloudflare.go +++ b/pkg/providers/cloudflare/cloudflare.go @@ -91,9 +91,13 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() + if p.services.Has("dns") { dnsProvider := &dnsProvider{id: p.id, client: p.client} - return dnsProvider.GetResource(ctx) + if resources, err := dnsProvider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } From c58b53128a6d6ad2ee8e49e0643360c5a35e6b88 Mon Sep 17 00:00:00 2001 From: Ramana Reddy Date: Wed, 21 Aug 2024 21:08:33 +0530 Subject: [PATCH 2/3] fix panics on service filter --- pkg/providers/alibaba/alibaba.go | 7 +++++-- pkg/providers/azure/azure.go | 2 +- pkg/providers/consul/consul.go | 6 +++++- pkg/providers/fastly/fastly.go | 8 ++++---- pkg/providers/heroku/heroku.go | 7 +++++-- pkg/providers/hetzner/hetzner.go | 7 +++++-- pkg/providers/linode/linode.go | 7 +++++-- pkg/providers/namecheap/namecheap.go | 7 +++++-- pkg/providers/nomad/nomad.go | 10 ++++++++-- pkg/providers/openstack/openstack.go | 7 +++++-- pkg/providers/scaleway/scaleway.go | 7 +++++-- pkg/providers/terraform/terraform.go | 7 +++++-- 12 files changed, 58 insertions(+), 24 deletions(-) diff --git a/pkg/providers/alibaba/alibaba.go b/pkg/providers/alibaba/alibaba.go index 651a556b..f104241d 100644 --- a/pkg/providers/alibaba/alibaba.go +++ b/pkg/providers/alibaba/alibaba.go @@ -93,9 +93,12 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.ecsClient != nil { ecsprovider := &instanceProvider{client: p.ecsClient, id: p.id} - return ecsprovider.GetResource(ctx) + if resources, err := ecsprovider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } diff --git a/pkg/providers/azure/azure.go b/pkg/providers/azure/azure.go index 03d6e87f..c3292d6d 100644 --- a/pkg/providers/azure/azure.go +++ b/pkg/providers/azure/azure.go @@ -111,7 +111,7 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { - resources := &schema.Resources{} + resources := schema.NewResources() if p.services.Has("vm") { vmp := &vmProvider{Authorizer: p.Authorizer, SubscriptionID: p.SubscriptionID, id: p.id} diff --git a/pkg/providers/consul/consul.go b/pkg/providers/consul/consul.go index dbc33c4e..d4665114 100644 --- a/pkg/providers/consul/consul.go +++ b/pkg/providers/consul/consul.go @@ -121,6 +121,10 @@ const ( // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalList := schema.NewResources() provider := &resourceProvider{client: p.client, id: p.id} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalList.Merge(resources) + } + return finalList, nil } diff --git a/pkg/providers/fastly/fastly.go b/pkg/providers/fastly/fastly.go index df95cb4d..1f328222 100644 --- a/pkg/providers/fastly/fastly.go +++ b/pkg/providers/fastly/fastly.go @@ -64,10 +64,10 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() serviceProvider := &serviceProvider{client: p.client, id: p.id} - services, err := serviceProvider.GetResource(ctx) - if err != nil { - return nil, err + if services, err := serviceProvider.GetResource(ctx); err == nil { + finalResources.Merge(services) } - return services, nil + return finalResources, nil } diff --git a/pkg/providers/heroku/heroku.go b/pkg/providers/heroku/heroku.go index 7b541fe1..ac2a59d7 100644 --- a/pkg/providers/heroku/heroku.go +++ b/pkg/providers/heroku/heroku.go @@ -71,9 +71,12 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.services.Has("app") { provider := &instanceProvider{client: p.client, id: p.id} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } diff --git a/pkg/providers/hetzner/hetzner.go b/pkg/providers/hetzner/hetzner.go index 038a7d6d..25ff5f06 100644 --- a/pkg/providers/hetzner/hetzner.go +++ b/pkg/providers/hetzner/hetzner.go @@ -69,9 +69,12 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.services.Has("instance") { provider := &instanceProvider{client: p.client, id: p.id} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } diff --git a/pkg/providers/linode/linode.go b/pkg/providers/linode/linode.go index 730a52cd..389fa11b 100644 --- a/pkg/providers/linode/linode.go +++ b/pkg/providers/linode/linode.go @@ -79,9 +79,12 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.services.Has("instance") { provider := &instanceProvider{client: p.client, id: p.id} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } diff --git a/pkg/providers/namecheap/namecheap.go b/pkg/providers/namecheap/namecheap.go index 3bdb3ae2..d1d86b84 100644 --- a/pkg/providers/namecheap/namecheap.go +++ b/pkg/providers/namecheap/namecheap.go @@ -90,9 +90,12 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.services.Has("domain") { provider := &domainProvider{client: p.client, id: p.id} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } diff --git a/pkg/providers/nomad/nomad.go b/pkg/providers/nomad/nomad.go index 7148ac5d..d936f1ae 100644 --- a/pkg/providers/nomad/nomad.go +++ b/pkg/providers/nomad/nomad.go @@ -108,6 +108,12 @@ const ( // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { - provider := &resourceProvider{client: p.client, id: p.id} - return provider.GetResource(ctx) + finalResources := schema.NewResources() + if p.services.Has("nomad") { + provider := &resourceProvider{client: p.client, id: p.id} + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } + } + return finalResources, nil } diff --git a/pkg/providers/openstack/openstack.go b/pkg/providers/openstack/openstack.go index 1c359b0e..f836d53f 100644 --- a/pkg/providers/openstack/openstack.go +++ b/pkg/providers/openstack/openstack.go @@ -119,9 +119,12 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.services.Has("instance") { provider := &instanceProvider{id: p.id, client: p.client} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } diff --git a/pkg/providers/scaleway/scaleway.go b/pkg/providers/scaleway/scaleway.go index 01f0d970..6277b525 100644 --- a/pkg/providers/scaleway/scaleway.go +++ b/pkg/providers/scaleway/scaleway.go @@ -76,9 +76,12 @@ const apiAccessToken = "scaleway_access_token" // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.services.Has("instance") { provider := &instanceProvider{instanceAPI: instance.NewAPI(p.client), id: p.id} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } diff --git a/pkg/providers/terraform/terraform.go b/pkg/providers/terraform/terraform.go index fa0a90b0..9adcb094 100644 --- a/pkg/providers/terraform/terraform.go +++ b/pkg/providers/terraform/terraform.go @@ -66,9 +66,12 @@ func (p *Provider) Services() []string { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { + finalResources := schema.NewResources() if p.services.Has("instance") { provider := &instanceProvider{path: p.path, id: p.id} - return provider.GetResource(ctx) + if resources, err := provider.GetResource(ctx); err == nil { + finalResources.Merge(resources) + } } - return nil, nil + return finalResources, nil } From 5de013714ae5d0f3972d69b00379dcf2b62f794b Mon Sep 17 00:00:00 2001 From: Ramana Reddy Date: Thu, 22 Aug 2024 17:51:53 +0530 Subject: [PATCH 3/3] make resources var consistent --- pkg/providers/aws/aws.go | 6 +++--- pkg/providers/consul/consul.go | 6 +++--- pkg/providers/digitalocean/digitalocean.go | 8 ++++---- pkg/providers/gcp/gcp.go | 16 ++++++++-------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pkg/providers/aws/aws.go b/pkg/providers/aws/aws.go index eb93981f..022e2464 100644 --- a/pkg/providers/aws/aws.go +++ b/pkg/providers/aws/aws.go @@ -196,7 +196,7 @@ func worker(ctx context.Context, fn getResourcesFunc, ch chan<- result) { } func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { - finalList := schema.NewResources() + finalResources := schema.NewResources() var workersWaitGroup sync.WaitGroup results := make(chan result) @@ -262,7 +262,7 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if result.err != nil { continue } - finalList.Merge(result.resources) + finalResources.Merge(result.resources) } - return finalList, nil + return finalResources, nil } diff --git a/pkg/providers/consul/consul.go b/pkg/providers/consul/consul.go index d4665114..bf48b33e 100644 --- a/pkg/providers/consul/consul.go +++ b/pkg/providers/consul/consul.go @@ -121,10 +121,10 @@ const ( // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { - finalList := schema.NewResources() + finalResources := schema.NewResources() provider := &resourceProvider{client: p.client, id: p.id} if resources, err := provider.GetResource(ctx); err == nil { - finalList.Merge(resources) + finalResources.Merge(resources) } - return finalList, nil + return finalResources, nil } diff --git a/pkg/providers/digitalocean/digitalocean.go b/pkg/providers/digitalocean/digitalocean.go index dedf3978..757742c4 100644 --- a/pkg/providers/digitalocean/digitalocean.go +++ b/pkg/providers/digitalocean/digitalocean.go @@ -66,7 +66,7 @@ const apiKey = "digitalocean_token" // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { - finalList := schema.NewResources() + finalResources := schema.NewResources() if p.services.Has("droplet") || p.services.Has("instance") { instanceprovider := &instanceProvider{client: p.client, id: p.id} @@ -74,7 +74,7 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { return nil, err } - finalList.Merge(instances) + finalResources.Merge(instances) } if p.services.Has("app") { @@ -83,8 +83,8 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { return nil, err } - finalList.Merge(apps) + finalResources.Merge(apps) } - return finalList, nil + return finalResources, nil } diff --git a/pkg/providers/gcp/gcp.go b/pkg/providers/gcp/gcp.go index 4325dd4f..2e74a414 100644 --- a/pkg/providers/gcp/gcp.go +++ b/pkg/providers/gcp/gcp.go @@ -145,7 +145,7 @@ func New(options schema.OptionBlock) (*Provider, error) { // Resources returns the provider for an resource deployment source. func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { - finalList := schema.NewResources() + finalResources := schema.NewResources() if p.dns != nil { cloudDNSProvider := &cloudDNSProvider{dns: p.dns, id: p.id, projects: p.projects} @@ -153,7 +153,7 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { return nil, err } - finalList.Merge(zones) + finalResources.Merge(zones) } if p.gke != nil { @@ -162,7 +162,7 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { gologger.Warning().Msgf("Could not get GKE resources: %s\n", err) } - finalList.Merge(gkeData) + finalResources.Merge(gkeData) } if p.compute != nil { @@ -171,7 +171,7 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { return nil, err } - finalList.Merge(vmData) + finalResources.Merge(vmData) } if p.storage != nil { @@ -180,7 +180,7 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { return nil, err } - finalList.Merge(storageData) + finalResources.Merge(storageData) } if p.functions != nil { @@ -189,7 +189,7 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { return nil, err } - finalList.Merge(functionsData) + finalResources.Merge(functionsData) } if p.run != nil { @@ -198,8 +198,8 @@ func (p *Provider) Resources(ctx context.Context) (*schema.Resources, error) { if err != nil { return nil, err } - finalList.Merge(cloudRunData) + finalResources.Merge(cloudRunData) } - return finalList, nil + return finalResources, nil }