@@ -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