Skip to content

Commit f040713

Browse files
committed
'scw _patch', added debug + don't patch if object is identical
1 parent 8cfea9f commit f040713

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

commands/x_patch.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,42 @@ func runPatch(cmd *types.Command, args []string) {
4848
fieldName := updateParts[0]
4949
newValue := updateParts[1]
5050

51+
changes := 0
52+
5153
ident := api.GetIdentifier(cmd.API, args[0])
5254
switch ident.Type {
5355
case api.IdentifierServer:
56+
currentServer, err := cmd.API.GetServer(ident.Identifier)
57+
if err != nil {
58+
log.Fatalf("Cannot get server %s: %v", ident.Identifier, err)
59+
}
60+
5461
var payload api.ScalewayServerPatchDefinition
5562

5663
switch fieldName {
5764
case "state_detail":
58-
payload.StateDetail = &newValue
65+
log.Debugf("%s=%s => %s=%s", fieldName, currentServer.StateDetail, fieldName, newValue)
66+
if currentServer.StateDetail != newValue {
67+
changes++
68+
payload.StateDetail = &newValue
69+
}
5970
case "name":
60-
payload.Name = &newValue
61-
log.Warnf("Use 'scw rename instead'")
71+
log.Warnf("To rename a server, Use 'scw rename'")
72+
log.Debugf("%s=%s => %s=%s", fieldName, currentServer.StateDetail, fieldName, newValue)
73+
if currentServer.Name != newValue {
74+
changes++
75+
payload.Name = &newValue
76+
}
6277
default:
6378
log.Fatalf("'_patch server %s=' not implemented", fieldName)
6479
}
6580

66-
err := cmd.API.PatchServer(ident.Identifier, payload)
81+
if changes > 0 {
82+
log.Debugf("updating server: %d change(s)", changes)
83+
err = cmd.API.PatchServer(ident.Identifier, payload)
84+
} else {
85+
log.Debugf("no changes, not updating server")
86+
}
6787
if err != nil {
6888
log.Fatalf("Cannot rename server: %v", err)
6989
}

0 commit comments

Comments
 (0)