diff --git a/internal/cmd/mongodbflex/instance/update/update.go b/internal/cmd/mongodbflex/instance/update/update.go index 8e6e86c02..12c3900ee 100644 --- a/internal/cmd/mongodbflex/instance/update/update.go +++ b/internal/cmd/mongodbflex/instance/update/update.go @@ -150,9 +150,21 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) { return nil, &cliErr.ProjectIdError{} } + instanceName := flags.FlagToStringPointer(cmd, instanceNameFlag) flavorId := flags.FlagToStringPointer(cmd, flavorIdFlag) cpu := flags.FlagToInt64Pointer(cmd, cpuFlag) ram := flags.FlagToInt64Pointer(cmd, ramFlag) + acl := flags.FlagToStringSlicePointer(cmd, aclFlag) + backupSchedule := flags.FlagToStringPointer(cmd, backupScheduleFlag) + storageClass := flags.FlagToStringPointer(cmd, storageClassFlag) + storageSize := flags.FlagToInt64Pointer(cmd, storageSizeFlag) + version := flags.FlagToStringPointer(cmd, versionFlag) + instanceType := flags.FlagToStringPointer(cmd, typeFlag) + + if instanceName == nil && flavorId == nil && cpu == nil && ram == nil && acl == nil && + backupSchedule == nil && storageClass == nil && storageSize == nil && version == nil && instanceType == nil { + return nil, &cliErr.EmptyUpdateError{} + } if flavorId != nil && (cpu != nil || ram != nil) { return nil, &cliErr.DatabaseInputFlavorError{ @@ -164,16 +176,16 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) { return &inputModel{ GlobalFlagModel: globalFlags, InstanceId: instanceId, - InstanceName: flags.FlagToStringPointer(cmd, instanceNameFlag), - ACL: flags.FlagToStringSlicePointer(cmd, aclFlag), - BackupSchedule: flags.FlagToStringPointer(cmd, backupScheduleFlag), + InstanceName: instanceName, + ACL: acl, + BackupSchedule: backupSchedule, FlavorId: flavorId, CPU: cpu, RAM: ram, - StorageClass: flags.FlagToStringPointer(cmd, storageClassFlag), - StorageSize: flags.FlagToInt64Pointer(cmd, storageSizeFlag), - Version: flags.FlagToStringPointer(cmd, versionFlag), - Type: flags.FlagToStringPointer(cmd, typeFlag), + StorageClass: storageClass, + StorageSize: storageSize, + Version: version, + Type: instanceType, }, nil } diff --git a/internal/cmd/mongodbflex/instance/update/update_test.go b/internal/cmd/mongodbflex/instance/update/update_test.go index 8b74cbeb9..3995d1acf 100644 --- a/internal/cmd/mongodbflex/instance/update/update_test.go +++ b/internal/cmd/mongodbflex/instance/update/update_test.go @@ -149,13 +149,6 @@ func TestParseInput(t *testing.T) { isValid bool expectedModel *inputModel }{ - { - description: "base", - argValues: fixtureArgValues(), - flagValues: fixtureRequiredFlagValues(), - isValid: true, - expectedModel: fixtureRequiredInputModel(), - }, { description: "no values", argValues: []string{}, @@ -174,6 +167,13 @@ func TestParseInput(t *testing.T) { flagValues: map[string]string{}, isValid: false, }, + { + description: "only instance and project ids", + argValues: fixtureArgValues(), + flagValues: fixtureRequiredFlagValues(), + + isValid: false, + }, { description: "all values with flavor id", argValues: fixtureArgValues(), diff --git a/internal/cmd/postgresflex/instance/update/update.go b/internal/cmd/postgresflex/instance/update/update.go index e32584a26..0a860ad71 100644 --- a/internal/cmd/postgresflex/instance/update/update.go +++ b/internal/cmd/postgresflex/instance/update/update.go @@ -150,9 +150,21 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) { return nil, &cliErr.ProjectIdError{} } + instanceName := flags.FlagToStringPointer(cmd, instanceNameFlag) flavorId := flags.FlagToStringPointer(cmd, flavorIdFlag) cpu := flags.FlagToInt64Pointer(cmd, cpuFlag) ram := flags.FlagToInt64Pointer(cmd, ramFlag) + acl := flags.FlagToStringSlicePointer(cmd, aclFlag) + backupSchedule := flags.FlagToStringPointer(cmd, backupScheduleFlag) + storageClass := flags.FlagToStringPointer(cmd, storageClassFlag) + storageSize := flags.FlagToInt64Pointer(cmd, storageSizeFlag) + version := flags.FlagToStringPointer(cmd, versionFlag) + instanceType := flags.FlagToStringPointer(cmd, typeFlag) + + if instanceName == nil && flavorId == nil && cpu == nil && ram == nil && acl == nil && + backupSchedule == nil && storageClass == nil && storageSize == nil && version == nil && instanceType == nil { + return nil, &cliErr.EmptyUpdateError{} + } if flavorId != nil && (cpu != nil || ram != nil) { return nil, &cliErr.DatabaseInputFlavorError{ @@ -164,16 +176,16 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) { return &inputModel{ GlobalFlagModel: globalFlags, InstanceId: instanceId, - InstanceName: flags.FlagToStringPointer(cmd, instanceNameFlag), - ACL: flags.FlagToStringSlicePointer(cmd, aclFlag), - BackupSchedule: flags.FlagToStringPointer(cmd, backupScheduleFlag), + InstanceName: instanceName, + ACL: acl, + BackupSchedule: backupSchedule, FlavorId: flavorId, CPU: cpu, RAM: ram, - StorageClass: flags.FlagToStringPointer(cmd, storageClassFlag), - StorageSize: flags.FlagToInt64Pointer(cmd, storageSizeFlag), - Version: flags.FlagToStringPointer(cmd, versionFlag), - Type: flags.FlagToStringPointer(cmd, typeFlag), + StorageClass: storageClass, + StorageSize: storageSize, + Version: version, + Type: instanceType, }, nil } diff --git a/internal/cmd/postgresflex/instance/update/update_test.go b/internal/cmd/postgresflex/instance/update/update_test.go index b57f79b68..7d83737c5 100644 --- a/internal/cmd/postgresflex/instance/update/update_test.go +++ b/internal/cmd/postgresflex/instance/update/update_test.go @@ -149,13 +149,6 @@ func TestParseInput(t *testing.T) { isValid bool expectedModel *inputModel }{ - { - description: "base", - argValues: fixtureArgValues(), - flagValues: fixtureRequiredFlagValues(), - isValid: true, - expectedModel: fixtureRequiredInputModel(), - }, { description: "no values", argValues: []string{}, @@ -174,6 +167,13 @@ func TestParseInput(t *testing.T) { flagValues: map[string]string{}, isValid: false, }, + { + description: "only instance and project ids", + argValues: fixtureArgValues(), + flagValues: fixtureRequiredFlagValues(), + + isValid: false, + }, { description: "all values with flavor id", argValues: fixtureArgValues(),