Skip to content

Commit 3b8b0a0

Browse files
authored
Disallow empty updates for MongoDB Flex and Postgres Flex instances (#140)
1 parent e3ecaea commit 3b8b0a0

File tree

4 files changed

+52
-28
lines changed

4 files changed

+52
-28
lines changed

internal/cmd/mongodbflex/instance/update/update.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,21 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) {
150150
return nil, &cliErr.ProjectIdError{}
151151
}
152152

153+
instanceName := flags.FlagToStringPointer(cmd, instanceNameFlag)
153154
flavorId := flags.FlagToStringPointer(cmd, flavorIdFlag)
154155
cpu := flags.FlagToInt64Pointer(cmd, cpuFlag)
155156
ram := flags.FlagToInt64Pointer(cmd, ramFlag)
157+
acl := flags.FlagToStringSlicePointer(cmd, aclFlag)
158+
backupSchedule := flags.FlagToStringPointer(cmd, backupScheduleFlag)
159+
storageClass := flags.FlagToStringPointer(cmd, storageClassFlag)
160+
storageSize := flags.FlagToInt64Pointer(cmd, storageSizeFlag)
161+
version := flags.FlagToStringPointer(cmd, versionFlag)
162+
instanceType := flags.FlagToStringPointer(cmd, typeFlag)
163+
164+
if instanceName == nil && flavorId == nil && cpu == nil && ram == nil && acl == nil &&
165+
backupSchedule == nil && storageClass == nil && storageSize == nil && version == nil && instanceType == nil {
166+
return nil, &cliErr.EmptyUpdateError{}
167+
}
156168

157169
if flavorId != nil && (cpu != nil || ram != nil) {
158170
return nil, &cliErr.DatabaseInputFlavorError{
@@ -164,16 +176,16 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) {
164176
return &inputModel{
165177
GlobalFlagModel: globalFlags,
166178
InstanceId: instanceId,
167-
InstanceName: flags.FlagToStringPointer(cmd, instanceNameFlag),
168-
ACL: flags.FlagToStringSlicePointer(cmd, aclFlag),
169-
BackupSchedule: flags.FlagToStringPointer(cmd, backupScheduleFlag),
179+
InstanceName: instanceName,
180+
ACL: acl,
181+
BackupSchedule: backupSchedule,
170182
FlavorId: flavorId,
171183
CPU: cpu,
172184
RAM: ram,
173-
StorageClass: flags.FlagToStringPointer(cmd, storageClassFlag),
174-
StorageSize: flags.FlagToInt64Pointer(cmd, storageSizeFlag),
175-
Version: flags.FlagToStringPointer(cmd, versionFlag),
176-
Type: flags.FlagToStringPointer(cmd, typeFlag),
185+
StorageClass: storageClass,
186+
StorageSize: storageSize,
187+
Version: version,
188+
Type: instanceType,
177189
}, nil
178190
}
179191

internal/cmd/mongodbflex/instance/update/update_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,6 @@ func TestParseInput(t *testing.T) {
149149
isValid bool
150150
expectedModel *inputModel
151151
}{
152-
{
153-
description: "base",
154-
argValues: fixtureArgValues(),
155-
flagValues: fixtureRequiredFlagValues(),
156-
isValid: true,
157-
expectedModel: fixtureRequiredInputModel(),
158-
},
159152
{
160153
description: "no values",
161154
argValues: []string{},
@@ -174,6 +167,13 @@ func TestParseInput(t *testing.T) {
174167
flagValues: map[string]string{},
175168
isValid: false,
176169
},
170+
{
171+
description: "only instance and project ids",
172+
argValues: fixtureArgValues(),
173+
flagValues: fixtureRequiredFlagValues(),
174+
175+
isValid: false,
176+
},
177177
{
178178
description: "all values with flavor id",
179179
argValues: fixtureArgValues(),

internal/cmd/postgresflex/instance/update/update.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,21 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) {
150150
return nil, &cliErr.ProjectIdError{}
151151
}
152152

153+
instanceName := flags.FlagToStringPointer(cmd, instanceNameFlag)
153154
flavorId := flags.FlagToStringPointer(cmd, flavorIdFlag)
154155
cpu := flags.FlagToInt64Pointer(cmd, cpuFlag)
155156
ram := flags.FlagToInt64Pointer(cmd, ramFlag)
157+
acl := flags.FlagToStringSlicePointer(cmd, aclFlag)
158+
backupSchedule := flags.FlagToStringPointer(cmd, backupScheduleFlag)
159+
storageClass := flags.FlagToStringPointer(cmd, storageClassFlag)
160+
storageSize := flags.FlagToInt64Pointer(cmd, storageSizeFlag)
161+
version := flags.FlagToStringPointer(cmd, versionFlag)
162+
instanceType := flags.FlagToStringPointer(cmd, typeFlag)
163+
164+
if instanceName == nil && flavorId == nil && cpu == nil && ram == nil && acl == nil &&
165+
backupSchedule == nil && storageClass == nil && storageSize == nil && version == nil && instanceType == nil {
166+
return nil, &cliErr.EmptyUpdateError{}
167+
}
156168

157169
if flavorId != nil && (cpu != nil || ram != nil) {
158170
return nil, &cliErr.DatabaseInputFlavorError{
@@ -164,16 +176,16 @@ func parseInput(cmd *cobra.Command, inputArgs []string) (*inputModel, error) {
164176
return &inputModel{
165177
GlobalFlagModel: globalFlags,
166178
InstanceId: instanceId,
167-
InstanceName: flags.FlagToStringPointer(cmd, instanceNameFlag),
168-
ACL: flags.FlagToStringSlicePointer(cmd, aclFlag),
169-
BackupSchedule: flags.FlagToStringPointer(cmd, backupScheduleFlag),
179+
InstanceName: instanceName,
180+
ACL: acl,
181+
BackupSchedule: backupSchedule,
170182
FlavorId: flavorId,
171183
CPU: cpu,
172184
RAM: ram,
173-
StorageClass: flags.FlagToStringPointer(cmd, storageClassFlag),
174-
StorageSize: flags.FlagToInt64Pointer(cmd, storageSizeFlag),
175-
Version: flags.FlagToStringPointer(cmd, versionFlag),
176-
Type: flags.FlagToStringPointer(cmd, typeFlag),
185+
StorageClass: storageClass,
186+
StorageSize: storageSize,
187+
Version: version,
188+
Type: instanceType,
177189
}, nil
178190
}
179191

internal/cmd/postgresflex/instance/update/update_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,6 @@ func TestParseInput(t *testing.T) {
149149
isValid bool
150150
expectedModel *inputModel
151151
}{
152-
{
153-
description: "base",
154-
argValues: fixtureArgValues(),
155-
flagValues: fixtureRequiredFlagValues(),
156-
isValid: true,
157-
expectedModel: fixtureRequiredInputModel(),
158-
},
159152
{
160153
description: "no values",
161154
argValues: []string{},
@@ -174,6 +167,13 @@ func TestParseInput(t *testing.T) {
174167
flagValues: map[string]string{},
175168
isValid: false,
176169
},
170+
{
171+
description: "only instance and project ids",
172+
argValues: fixtureArgValues(),
173+
flagValues: fixtureRequiredFlagValues(),
174+
175+
isValid: false,
176+
},
177177
{
178178
description: "all values with flavor id",
179179
argValues: fixtureArgValues(),

0 commit comments

Comments
 (0)