From 228ade58e5de02d793713d953864265d4573d552 Mon Sep 17 00:00:00 2001 From: titanventura Date: Mon, 14 Aug 2023 20:03:14 +0530 Subject: [PATCH 1/3] fix(814) Add instance disks resource to linode --- providers/linode/compute/instances.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/providers/linode/compute/instances.go b/providers/linode/compute/instances.go index fe8798bf4..ff65c7582 100644 --- a/providers/linode/compute/instances.go +++ b/providers/linode/compute/instances.go @@ -18,7 +18,7 @@ type LinodeInstance struct { Instance *linodego.Instance } -func Linodes(ctx context.Context, client providers.ProviderClient, linodeInstances []LinodeInstance) ([]Resource, error) { +func LinodesAndDisks(ctx context.Context, client providers.ProviderClient, linodeInstances []LinodeInstance) ([]Resource, error) { resources := make([]Resource, 0) for _, linodeInstance := range linodeInstances { @@ -53,12 +53,32 @@ func Linodes(ctx context.Context, client providers.ProviderClient, linodeInstanc Tags: tags, Link: fmt.Sprintf("https://cloud.linode.com/linodes/%d", instance.ID), }) + + instanceDisks, err := client.LinodeClient.ListInstanceDisks(ctx, instance.ID, &linodego.ListOptions{}) + if err != nil { + return resources, err + } + + for _, disk := range instanceDisks { + resources = append(resources, models.Resource{ + Provider: "Linode", + Account: client.Name, + Service: "Instance Disk", + Region: instance.Region, + ResourceId: fmt.Sprintf("%d", disk.ID), + Cost: 0, + Name: disk.Label, + FetchedAt: time.Now(), + CreatedAt: *disk.Created, + Link: fmt.Sprintf("https://cloud.linode.com/linodes/%d/storage", instance.ID), + }) + } } log.WithFields(log.Fields{ "provider": "Linode", "account": client.Name, - "service": "Linode", + "service": "Linode and Instance Disk", "resources": len(resources), }).Info("Fetched resources") return resources, nil From 57bbd94ae975fcb18daf822e8f1687eaace3eac8 Mon Sep 17 00:00:00 2001 From: titanventura Date: Thu, 24 Aug 2023 20:56:04 +0530 Subject: [PATCH 2/3] Refactored Linodes and Instance disks Signed-off-by: titanventura --- providers/linode/compute/instances.go | 8 ++++---- providers/linode/linode.go | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/providers/linode/compute/instances.go b/providers/linode/compute/instances.go index ff65c7582..a04102cd9 100644 --- a/providers/linode/compute/instances.go +++ b/providers/linode/compute/instances.go @@ -18,7 +18,7 @@ type LinodeInstance struct { Instance *linodego.Instance } -func LinodesAndDisks(ctx context.Context, client providers.ProviderClient, linodeInstances []LinodeInstance) ([]Resource, error) { +func LinodeInstancesAndInstanceDisks(ctx context.Context, client providers.ProviderClient, linodeInstances []LinodeInstance) ([]Resource, error) { resources := make([]Resource, 0) for _, linodeInstance := range linodeInstances { @@ -43,7 +43,7 @@ func LinodesAndDisks(ctx context.Context, client providers.ProviderClient, linod resources = append(resources, models.Resource{ Provider: "Linode", Account: client.Name, - Service: "Linode", + Service: "Linode Instance", Region: instance.Region, ResourceId: fmt.Sprintf("%d", instance.ID), Cost: 0, @@ -63,7 +63,7 @@ func LinodesAndDisks(ctx context.Context, client providers.ProviderClient, linod resources = append(resources, models.Resource{ Provider: "Linode", Account: client.Name, - Service: "Instance Disk", + Service: "Linode Instance Disk", Region: instance.Region, ResourceId: fmt.Sprintf("%d", disk.ID), Cost: 0, @@ -78,7 +78,7 @@ func LinodesAndDisks(ctx context.Context, client providers.ProviderClient, linod log.WithFields(log.Fields{ "provider": "Linode", "account": client.Name, - "service": "Linode and Instance Disk", + "service": "Linode Instance and Instance Disk", "resources": len(resources), }).Info("Fetched resources") return resources, nil diff --git a/providers/linode/linode.go b/providers/linode/linode.go index 2677d88c7..f921a889e 100644 --- a/providers/linode/linode.go +++ b/providers/linode/linode.go @@ -10,15 +10,15 @@ import ( "github.com/tailwarden/komiser/providers" "github.com/tailwarden/komiser/providers/linode/compute" - "github.com/tailwarden/komiser/providers/linode/sql" "github.com/tailwarden/komiser/providers/linode/postgres" + "github.com/tailwarden/komiser/providers/linode/sql" "github.com/tailwarden/komiser/providers/linode/storage" "github.com/uptrace/bun" ) func listOfSupportedServices() []providers.FetchDataFunction { return []providers.FetchDataFunction{ - // compute.Linodes, + // compute.LinodeInstancesAndInstanceDisks, compute.LKEClusters, storage.Volumes, storage.Databases, From 1b993dec7eba89580f7947825ee4f7e1058b1e07 Mon Sep 17 00:00:00 2001 From: titanventura Date: Sat, 9 Sep 2023 22:47:52 +0530 Subject: [PATCH 3/3] enabled linode instance and instance disks fetcher Signed-off-by: titanventura --- providers/linode/compute/instances.go | 17 ++++++++++------- providers/linode/linode.go | 4 ++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/providers/linode/compute/instances.go b/providers/linode/compute/instances.go index a04102cd9..ff29c8c8b 100644 --- a/providers/linode/compute/instances.go +++ b/providers/linode/compute/instances.go @@ -14,15 +14,18 @@ import ( "github.com/tailwarden/komiser/providers" ) -type LinodeInstance struct { - Instance *linodego.Instance -} +func LinodeInstancesAndInstanceDisks(ctx context.Context, client providers.ProviderClient) ([]Resource, error) { + linodeInstances, err := client.LinodeClient.ListInstances(ctx, &linodego.ListOptions{ + PageOptions: &linodego.PageOptions{}, + PageSize: 0, + Filter: "", + }) + if err != nil { + return nil, err + } -func LinodeInstancesAndInstanceDisks(ctx context.Context, client providers.ProviderClient, linodeInstances []LinodeInstance) ([]Resource, error) { resources := make([]Resource, 0) - - for _, linodeInstance := range linodeInstances { - instance := linodeInstance.Instance + for _, instance := range linodeInstances { tags := make([]Tag, 0) for _, tag := range instance.Tags { diff --git a/providers/linode/linode.go b/providers/linode/linode.go index f921a889e..502251096 100644 --- a/providers/linode/linode.go +++ b/providers/linode/linode.go @@ -5,11 +5,11 @@ import ( "log" "github.com/sirupsen/logrus" - "github.com/tailwarden/komiser/providers/linode/networking" "github.com/tailwarden/komiser/utils" "github.com/tailwarden/komiser/providers" "github.com/tailwarden/komiser/providers/linode/compute" + "github.com/tailwarden/komiser/providers/linode/networking" "github.com/tailwarden/komiser/providers/linode/postgres" "github.com/tailwarden/komiser/providers/linode/sql" "github.com/tailwarden/komiser/providers/linode/storage" @@ -18,7 +18,7 @@ import ( func listOfSupportedServices() []providers.FetchDataFunction { return []providers.FetchDataFunction{ - // compute.LinodeInstancesAndInstanceDisks, + compute.LinodeInstancesAndInstanceDisks, compute.LKEClusters, storage.Volumes, storage.Databases,