Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions instance_disks.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,14 @@ type InstanceDiskCreateOptions struct {
Label string `json:"label"`
Size int `json:"size"`

// Image is optional, but requires RootPass if provided
Image string `json:"image,omitempty"`
RootPass string `json:"root_pass,omitempty"`
// Image is optional, but requires at least one of RootPass, AuthorizedUsers, or AuthorizedKeys if provided
Image string `json:"image,omitempty"`

RootPass string `json:"root_pass,omitempty"`
AuthorizedKeys []string `json:"authorized_keys,omitempty"`
AuthorizedUsers []string `json:"authorized_users,omitempty"`

Filesystem string `json:"filesystem,omitempty"`
AuthorizedKeys []string `json:"authorized_keys,omitempty"`
AuthorizedUsers []string `json:"authorized_users,omitempty"`
StackscriptID int `json:"stackscript_id,omitempty"`
StackscriptData map[string]string `json:"stackscript_data,omitempty"`
}
Expand Down
38 changes: 24 additions & 14 deletions instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,16 +184,21 @@ type InstancePasswordResetOptions struct {

// InstanceCreateOptions require only Region and Type
type InstanceCreateOptions struct {
Region string `json:"region"`
Type string `json:"type"`
Label string `json:"label,omitempty"`
RootPass string `json:"root_pass,omitempty"`
AuthorizedKeys []string `json:"authorized_keys,omitempty"`
AuthorizedUsers []string `json:"authorized_users,omitempty"`
StackScriptID int `json:"stackscript_id,omitempty"`
StackScriptData map[string]string `json:"stackscript_data,omitempty"`
BackupID int `json:"backup_id,omitempty"`
Image string `json:"image,omitempty"`
Region string `json:"region"`
Type string `json:"type"`
Label string `json:"label,omitempty"`

StackScriptID int `json:"stackscript_id,omitempty"`
StackScriptData map[string]string `json:"stackscript_data,omitempty"`
BackupID int `json:"backup_id,omitempty"`

// Image is optional, but requires at least one of RootPass, AuthorizedUsers, or AuthorizedKeys if provided
Image string `json:"image,omitempty"`

RootPass string `json:"root_pass,omitempty"`
AuthorizedKeys []string `json:"authorized_keys,omitempty"`
AuthorizedUsers []string `json:"authorized_users,omitempty"`

BackupsEnabled bool `json:"backups_enabled,omitempty"`
PrivateIP bool `json:"private_ip,omitempty"`
NetworkHelper *bool `json:"network_helper,omitempty"`
Expand Down Expand Up @@ -226,6 +231,8 @@ type InstanceCreateOptions struct {
IPv4 []string `json:"ipv4,omitempty"`

MaintenancePolicy *string `json:"maintenance_policy,omitempty"`
Kernel *string `json:"kernel,omitempty"`
BootSize *int `json:"boot_size,omitempty"`
}

// InstanceCreatePlacementGroupOptions represents the placement group
Expand Down Expand Up @@ -513,10 +520,13 @@ func (c *Client) RebootInstance(ctx context.Context, linodeID int, configID int)

// InstanceRebuildOptions is a struct representing the options to send to the rebuild linode endpoint
type InstanceRebuildOptions struct {
Image string `json:"image,omitempty"`
RootPass string `json:"root_pass,omitempty"`
AuthorizedKeys []string `json:"authorized_keys,omitempty"`
AuthorizedUsers []string `json:"authorized_users,omitempty"`
// Image is optional, but requires at least one of RootPass, AuthorizedUsers, or AuthorizedKeys if provided
Image string `json:"image,omitempty"`

RootPass string `json:"root_pass,omitempty"`
AuthorizedKeys []string `json:"authorized_keys,omitempty"`
AuthorizedUsers []string `json:"authorized_users,omitempty"`

StackScriptID int `json:"stackscript_id,omitempty"`
StackScriptData map[string]string `json:"stackscript_data,omitempty"`
Booted *bool `json:"booted,omitempty"`
Expand Down
8 changes: 7 additions & 1 deletion test/unit/instance_disks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"testing"

"github.com/jarcoal/httpmock"
"github.com/linode/linodego"
"github.com/stretchr/testify/assert"
)
Expand Down Expand Up @@ -85,9 +86,14 @@ func TestInstanceDisk_Create(t *testing.T) {
Label: "New Disk",
Size: 20480,
Filesystem: "ext4",
RootPass: "@S3cur3p@ssw0rd",
}

base.MockPost("linode/instances/123/disks", fixtureData)
httpmock.RegisterRegexpResponder(
"POST",
mockRequestURL(t, "/linode/instances/123/disks"),
mockRequestBodyValidate(t, createOptions, fixtureData),
)

disk, err := base.Client.CreateInstanceDisk(context.Background(), 123, createOptions)
assert.NoError(t, err)
Expand Down
17 changes: 14 additions & 3 deletions test/unit/instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,15 @@ func TestInstance_Create(t *testing.T) {
Image: "linode/ubuntu22.04",
RootPass: "securepassword",
MaintenancePolicy: linodego.Pointer("linode/migrate"),
Kernel: linodego.Pointer("linode/6.15.7-x86_64-linode169"),
BootSize: linodego.Pointer(9000),
Comment thread
ezilber-akamai marked this conversation as resolved.
}

base.MockPost("linode/instances", fixtureData)
httpmock.RegisterRegexpResponder(
"POST",
mockRequestURL(t, "/linode/instances"),
mockRequestBodyValidate(t, createOptions, fixtureData),
)

instance, err := base.Client.CreateInstance(context.Background(), createOptions)
assert.NoError(t, err)
Expand Down Expand Up @@ -303,10 +309,15 @@ func TestInstance_Rebuild(t *testing.T) {
defer base.TearDown(t)

rebuildOptions := linodego.InstanceRebuildOptions{
Image: "linode/ubuntu22.04",
RootPass: "@S3cur3p@ssw0rd",
Image: "linode/ubuntu22.04",
}
Comment thread
ezilber-akamai marked this conversation as resolved.

base.MockPost("linode/instances/123/rebuild", fixtureData)
httpmock.RegisterRegexpResponder(
"POST",
mockRequestURL(t, "/linode/instances/123/rebuild"),
mockRequestBodyValidate(t, rebuildOptions, fixtureData),
)

instance, err := base.Client.RebuildInstance(context.Background(), 123, rebuildOptions)
assert.NoError(t, err)
Expand Down
Loading