From 9ff85d3438587a8675f79517fe52d887e273b8b4 Mon Sep 17 00:00:00 2001 From: Dan Anglin Date: Wed, 22 Feb 2023 22:29:57 +0000 Subject: [PATCH] feat: add the volume to the Pulumi stack --- config | 2 +- config.go | 1 - main.go | 29 ++++++++++++++++++++++++++--- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/config b/config index bbb8123..1804b71 160000 --- a/config +++ b/config @@ -1 +1 @@ -Subproject commit bbb8123ffb9781d818da1bff92d92dd8a0bbe009 +Subproject commit 1804b71954a073f75daa95b20e5b35e50b4dd60a diff --git a/config.go b/config.go index 4899abd..3250ec1 100644 --- a/config.go +++ b/config.go @@ -12,7 +12,6 @@ type platform struct { Instance instanceConfig `json:"instance"` Region string `json:"region"` Tags []string `json:"tags"` - TempIP string `json:"tempIP"` Volumes []volumeConfig `json:"volumes"` } diff --git a/main.go b/main.go index 5c2784e..5bc0599 100644 --- a/main.go +++ b/main.go @@ -32,7 +32,7 @@ func infra(ctx *pulumi.Context) error { return fmt.Errorf("unable to manage the domain; %w", err) } - if err := records(ctx, p); err != nil { + if err := records(ctx, p, instance.Instances[0].Ipv4s[0]); err != nil { return fmt.Errorf("unable to manage the domain records; %w", err) } @@ -40,6 +40,10 @@ func infra(ctx *pulumi.Context) error { return fmt.Errorf("unable to manage the firewall; %w", err) } + if err := volumes(ctx, p, instance.Instances[0].Id); err != nil { + return fmt.Errorf("unable to manage the volumes; %w", err) + } + return nil } @@ -79,7 +83,7 @@ func domain(ctx *pulumi.Context, cfg *platform) error { return nil } -func records(ctx *pulumi.Context, cfg *platform) error { +func records(ctx *pulumi.Context, cfg *platform, instanceIPv4 string) error { domainName := cfg.Domain.Name domainArgs := linode.LookupDomainArgs{ @@ -101,7 +105,7 @@ func records(ctx *pulumi.Context, cfg *platform) error { DomainId: pulumi.Int(domainID), Name: pulumi.String(r.Name), RecordType: pulumi.String(r.Type), - Target: pulumi.String(cfg.TempIP), + Target: pulumi.String(instanceIPv4), TtlSec: pulumi.Int(r.TtlSec), } @@ -148,3 +152,22 @@ func firewall(ctx *pulumi.Context, cfg *platform, instanceID int) error { return nil } + +func volumes(ctx *pulumi.Context, cfg *platform, instanceID int) error { + for _, v := range cfg.Volumes { + args := linode.VolumeArgs{ + Label: pulumi.String(v.Label), + LinodeId: pulumi.Int(instanceID), + Region: pulumi.String(cfg.Region), + Size: pulumi.Int(v.Size), + Tags: pulumi.ToStringArray(cfg.Tags), + } + + _, err := linode.NewVolume(ctx, v.Label, &args, pulumi.Protect(true)) + if err != nil { + return fmt.Errorf("unable to update volume; %w", err) + } + } + + return nil +}