diff --git a/pkg/api/platformapi/instanceconfigapi/get.go b/pkg/api/platformapi/instanceconfigapi/get.go index 22f3514f..eed516d9 100644 --- a/pkg/api/platformapi/instanceconfigapi/get.go +++ b/pkg/api/platformapi/instanceconfigapi/get.go @@ -32,8 +32,11 @@ import ( // GetParams is used to obtain an instance configuration from an ID. type GetParams struct { *api.API - ID string - Region string + ID string + Region string + ShowDeleted bool + ShowMaxZones bool + ConfigVersion *int64 } // Validate ensures that the parameters are correct. @@ -60,10 +63,20 @@ func Get(params GetParams) (*models.InstanceConfiguration, error) { return nil, err } + requestParams := platform_configuration_instances.NewGetInstanceConfigurationParams(). + WithContext(api.WithRegion(context.Background(), params.Region)). + WithID(params.ID). + WithConfigVersion(params.ConfigVersion) + + if params.ShowDeleted { + requestParams = requestParams.WithShowDeleted(ec.Bool(true)) + } + if params.ShowMaxZones { + requestParams = requestParams.WithShowMaxZones(ec.Bool(true)) + } + res, err := params.API.V1API.PlatformConfigurationInstances.GetInstanceConfiguration( - platform_configuration_instances.NewGetInstanceConfigurationParams(). - WithContext(api.WithRegion(context.Background(), params.Region)). - WithID(params.ID), + requestParams, params.AuthWriter, ) diff --git a/pkg/api/platformapi/instanceconfigapi/get_test.go b/pkg/api/platformapi/instanceconfigapi/get_test.go index a1d8244e..b2c46f05 100644 --- a/pkg/api/platformapi/instanceconfigapi/get_test.go +++ b/pkg/api/platformapi/instanceconfigapi/get_test.go @@ -20,6 +20,7 @@ package instanceconfigapi import ( "errors" "net/http" + "net/url" "testing" "github.com/stretchr/testify/assert" @@ -45,8 +46,11 @@ func TestGet(t *testing.T) { { name: "Get succeeds", args: args{params: GetParams{ - Region: "us-east-1", - ID: "data.highstorage", + Region: "us-east-1", + ID: "data.highstorage", + ShowDeleted: true, + ShowMaxZones: true, + ConfigVersion: ec.Int64(3), API: api.NewMock(mock.Response{ Response: http.Response{ Body: mock.NewStringBody(getInstanceConfigsSuccess), @@ -57,6 +61,11 @@ func TestGet(t *testing.T) { Method: "GET", Host: api.DefaultMockHost, Path: "/api/v1/regions/us-east-1/platform/configuration/instances/data.highstorage", + Query: url.Values{ + "show_deleted": []string{"true"}, + "show_max_zones": []string{"true"}, + "config_version": []string{"3"}, + }, }, }), }}, diff --git a/pkg/api/platformapi/instanceconfigapi/list.go b/pkg/api/platformapi/instanceconfigapi/list.go index 49df326a..deb3377f 100644 --- a/pkg/api/platformapi/instanceconfigapi/list.go +++ b/pkg/api/platformapi/instanceconfigapi/list.go @@ -31,7 +31,10 @@ import ( // ListParams is used to list all of the available instance configurations. type ListParams struct { *api.API - Region string + Region string + ShowDeleted bool + ShowMaxZones bool + IncludeVersions bool } // Validate ensures that the parameters are correct. @@ -54,9 +57,21 @@ func List(params ListParams) ([]*models.InstanceConfiguration, error) { return nil, err } + requestParams := platform_configuration_instances.NewGetInstanceConfigurationsParams(). + WithContext(api.WithRegion(context.Background(), params.Region)) + + if params.ShowDeleted { + requestParams = requestParams.WithShowDeleted(ec.Bool(true)) + } + if params.ShowMaxZones { + requestParams = requestParams.WithShowMaxZones(ec.Bool(true)) + } + if params.IncludeVersions { + requestParams = requestParams.WithIncludeVersions(ec.Bool(true)) + } + res, err := params.API.V1API.PlatformConfigurationInstances.GetInstanceConfigurations( - platform_configuration_instances.NewGetInstanceConfigurationsParams(). - WithContext(api.WithRegion(context.Background(), params.Region)), + requestParams, params.AuthWriter, ) diff --git a/pkg/api/platformapi/instanceconfigapi/list_test.go b/pkg/api/platformapi/instanceconfigapi/list_test.go index b3bab5e3..46c15fc7 100644 --- a/pkg/api/platformapi/instanceconfigapi/list_test.go +++ b/pkg/api/platformapi/instanceconfigapi/list_test.go @@ -20,6 +20,7 @@ package instanceconfigapi import ( "errors" "net/http" + "net/url" "testing" "github.com/stretchr/testify/assert" @@ -46,7 +47,10 @@ func TestList(t *testing.T) { name: "List succeeds", args: args{ params: ListParams{ - Region: "us-east-1", + Region: "us-east-1", + ShowDeleted: true, + ShowMaxZones: true, + IncludeVersions: true, API: api.NewMock(mock.Response{ Response: http.Response{ Body: mock.NewStringBody(listInstanceConfigsSuccess), @@ -57,6 +61,11 @@ func TestList(t *testing.T) { Method: "GET", Host: api.DefaultMockHost, Path: "/api/v1/regions/us-east-1/platform/configuration/instances", + Query: url.Values{ + "show_deleted": []string{"true"}, + "show_max_zones": []string{"true"}, + "include_versions": []string{"true"}, + }, }, }), },