diff --git a/builder/hcloud/builder.go b/builder/hcloud/builder.go index 495d61c1..ff37bf03 100644 --- a/builder/hcloud/builder.go +++ b/builder/hcloud/builder.go @@ -12,8 +12,8 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" "github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hetznercloud/hcloud-go/v2/hcloud" + "github.com/hetznercloud/hcloud-go/v2/hcloud" "github.com/hetznercloud/packer-plugin-hcloud/version" ) @@ -41,7 +41,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) opts := []hcloud.ClientOption{ hcloud.WithToken(b.config.HCloudToken), hcloud.WithEndpoint(b.config.Endpoint), - hcloud.WithPollInterval(b.config.PollInterval), + hcloud.WithBackoffFunc(hcloud.ConstantBackoff(b.config.PollInterval)), hcloud.WithApplication("hcloud-packer", version.PluginVersion.String()), } b.hcloudClient = hcloud.NewClient(opts...) diff --git a/builder/hcloud/config.go b/builder/hcloud/config.go index 8dc238b9..e195934e 100644 --- a/builder/hcloud/config.go +++ b/builder/hcloud/config.go @@ -18,8 +18,9 @@ import ( "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" "github.com/hashicorp/packer-plugin-sdk/uuid" - "github.com/hetznercloud/hcloud-go/v2/hcloud" "github.com/mitchellh/mapstructure" + + "github.com/hetznercloud/hcloud-go/v2/hcloud" ) type Config struct { diff --git a/builder/hcloud/step_create_server.go b/builder/hcloud/step_create_server.go index 509c9689..35602fa6 100644 --- a/builder/hcloud/step_create_server.go +++ b/builder/hcloud/step_create_server.go @@ -6,12 +6,13 @@ package hcloud import ( "context" "fmt" - "io/ioutil" + "os" "sort" "strings" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hetznercloud/hcloud-go/v2/hcloud" ) @@ -30,7 +31,7 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu userData := c.UserData if c.UserDataFile != "" { - contents, err := ioutil.ReadFile(c.UserDataFile) + contents, err := os.ReadFile(c.UserDataFile) if err != nil { state.Put("error", fmt.Errorf("Problem reading user data file: %s", err)) return multistep.ActionHalt @@ -85,7 +86,7 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu } if c.UpgradeServerType != "" { - serverCreateOpts.StartAfterCreate = hcloud.Bool(false) + serverCreateOpts.StartAfterCreate = hcloud.Ptr(false) } serverCreateResult, _, err := client.Server.Create(ctx, serverCreateOpts) @@ -199,7 +200,7 @@ func (s *stepCreateServer) Cleanup(state multistep.StateBag) { // Destroy the server we just created ui.Say("Destroying server...") - _, err := client.Server.Delete(context.TODO(), &hcloud.Server{ID: s.serverId}) + _, _, err := client.Server.DeleteWithResult(context.TODO(), &hcloud.Server{ID: s.serverId}) if err != nil { ui.Error(fmt.Sprintf( "Error destroying server. Please destroy it manually: %s", err)) diff --git a/builder/hcloud/step_create_server_test.go b/builder/hcloud/step_create_server_test.go index a124f39e..0df9b837 100644 --- a/builder/hcloud/step_create_server_test.go +++ b/builder/hcloud/step_create_server_test.go @@ -14,6 +14,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hetznercloud/hcloud-go/v2/hcloud" "github.com/hetznercloud/hcloud-go/v2/hcloud/schema" ) @@ -142,7 +143,6 @@ func setupStepCreateServer( checker Checker, ) (*multistep.BasicStateBag, func()) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - buf, err := io.ReadAll(r.Body) if err != nil { errors <- fmt.Errorf("fake server: reading request: %s", err) diff --git a/builder/hcloud/step_create_snapshot.go b/builder/hcloud/step_create_snapshot.go index 92f7c311..bbb6bf02 100644 --- a/builder/hcloud/step_create_snapshot.go +++ b/builder/hcloud/step_create_snapshot.go @@ -9,6 +9,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hetznercloud/hcloud-go/v2/hcloud" ) @@ -28,7 +29,7 @@ func (s *stepCreateSnapshot) Run(ctx context.Context, state multistep.StateBag) result, _, err := client.Server.CreateImage(ctx, &hcloud.Server{ID: serverID}, &hcloud.ServerCreateImageOpts{ Type: hcloud.ImageTypeSnapshot, Labels: c.SnapshotLabels, - Description: hcloud.String(c.SnapshotName), + Description: hcloud.Ptr(c.SnapshotName), }) if err != nil { err := fmt.Errorf("Error creating snapshot: %s", err) diff --git a/builder/hcloud/step_create_snapshot_test.go b/builder/hcloud/step_create_snapshot_test.go index ffc5c71e..6e17cc47 100644 --- a/builder/hcloud/step_create_snapshot_test.go +++ b/builder/hcloud/step_create_snapshot_test.go @@ -14,6 +14,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hetznercloud/hcloud-go/v2/hcloud" "github.com/hetznercloud/hcloud-go/v2/hcloud/schema" ) @@ -127,7 +128,8 @@ func setupStepCreateSnapshot( Status: "success", } - if r.Method == http.MethodPost && r.URL.Path == "/servers/42/actions/create_image" { + switch { + case r.Method == http.MethodPost && r.URL.Path == "/servers/42/actions/create_image": if failCause == FailCreateImage { w.WriteHeader(http.StatusBadRequest) return @@ -135,7 +137,7 @@ func setupStepCreateSnapshot( w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) response = schema.ServerActionCreateImageResponse{Action: action} - } else if r.Method == http.MethodGet && r.URL.Path == "/actions/13" { + case r.Method == http.MethodGet && r.URL.Path == "/actions/13": if failCause == FailWatchProgress { w.WriteHeader(http.StatusBadRequest) return @@ -143,13 +145,14 @@ func setupStepCreateSnapshot( w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) response = schema.ActionGetResponse{Action: action} - } else if r.Method == http.MethodDelete && r.URL.Path == "/images/33" { + case r.Method == http.MethodDelete && r.URL.Path == "/images/33": if failCause == FailDeleteImage { w.WriteHeader(http.StatusBadRequest) return } w.WriteHeader(http.StatusNoContent) return + default: } if response != nil { diff --git a/builder/hcloud/step_create_sshkey.go b/builder/hcloud/step_create_sshkey.go index 32a0dc13..21b54de5 100644 --- a/builder/hcloud/step_create_sshkey.go +++ b/builder/hcloud/step_create_sshkey.go @@ -11,6 +11,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/uuid" + "github.com/hetznercloud/hcloud-go/v2/hcloud" ) diff --git a/builder/hcloud/step_pre_validate.go b/builder/hcloud/step_pre_validate.go index 2574d653..3f5acb07 100644 --- a/builder/hcloud/step_pre_validate.go +++ b/builder/hcloud/step_pre_validate.go @@ -9,6 +9,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hetznercloud/hcloud-go/v2/hcloud" ) diff --git a/builder/hcloud/step_pre_validate_test.go b/builder/hcloud/step_pre_validate_test.go index cb969e89..b0627008 100644 --- a/builder/hcloud/step_pre_validate_test.go +++ b/builder/hcloud/step_pre_validate_test.go @@ -15,6 +15,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hetznercloud/hcloud-go/v2/hcloud" "github.com/hetznercloud/hcloud-go/v2/hcloud/schema" ) diff --git a/builder/hcloud/step_shutdown_server.go b/builder/hcloud/step_shutdown_server.go index 1bfd8796..c174b4ea 100644 --- a/builder/hcloud/step_shutdown_server.go +++ b/builder/hcloud/step_shutdown_server.go @@ -9,6 +9,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hetznercloud/hcloud-go/v2/hcloud" ) @@ -43,7 +44,6 @@ func (s *stepShutdownServer) Run(ctx context.Context, state multistep.StateBag) ui.Error(err.Error()) return multistep.ActionHalt } - } } } diff --git a/main.go b/main.go index 73876d63..1cc44184 100644 --- a/main.go +++ b/main.go @@ -7,10 +7,10 @@ import ( "fmt" "os" + "github.com/hashicorp/packer-plugin-sdk/plugin" + "github.com/hetznercloud/packer-plugin-hcloud/builder/hcloud" "github.com/hetznercloud/packer-plugin-hcloud/version" - - "github.com/hashicorp/packer-plugin-sdk/plugin" ) func main() {