本文整理汇总了Golang中github.com/scaleway/scaleway-cli/pkg/api.ScalewayServerPatchDefinition.StateDetail方法的典型用法代码示例。如果您正苦于以下问题:Golang ScalewayServerPatchDefinition.StateDetail方法的具体用法?Golang ScalewayServerPatchDefinition.StateDetail怎么用?Golang ScalewayServerPatchDefinition.StateDetail使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/scaleway/scaleway-cli/pkg/api.ScalewayServerPatchDefinition
的用法示例。
在下文中一共展示了ScalewayServerPatchDefinition.StateDetail方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: runPatch
func runPatch(cmd *Command, args []string) error {
if patchHelp {
return cmd.PrintUsage()
}
if len(args) != 2 {
return cmd.PrintShortUsage()
}
// Parsing FIELD=VALUE
updateParts := strings.SplitN(args[1], "=", 2)
if len(updateParts) != 2 {
return cmd.PrintShortUsage()
}
fieldName := updateParts[0]
newValue := updateParts[1]
changes := 0
ident := api.GetIdentifier(cmd.API, args[0])
switch ident.Type {
case api.IdentifierServer:
currentServer, err := cmd.API.GetServer(ident.Identifier)
if err != nil {
log.Fatalf("Cannot get server %s: %v", ident.Identifier, err)
}
var payload api.ScalewayServerPatchDefinition
switch fieldName {
case "state_detail":
log.Debugf("%s=%s => %s=%s", fieldName, currentServer.StateDetail, fieldName, newValue)
if currentServer.StateDetail != newValue {
changes++
payload.StateDetail = &newValue
}
case "name":
log.Warnf("To rename a server, Use 'scw rename'")
log.Debugf("%s=%s => %s=%s", fieldName, currentServer.StateDetail, fieldName, newValue)
if currentServer.Name != newValue {
changes++
payload.Name = &newValue
}
case "bootscript":
log.Debugf("%s=%s => %s=%s", fieldName, currentServer.Bootscript.Identifier, fieldName, newValue)
if currentServer.Bootscript.Identifier != newValue {
changes++
payload.Bootscript.Identifier = newValue
}
case "security_group":
log.Debugf("%s=%s => %s=%s", fieldName, currentServer.SecurityGroup.Identifier, fieldName, newValue)
if currentServer.SecurityGroup.Identifier != newValue {
changes++
payload.SecurityGroup.Identifier = newValue
}
case "tags":
newTags := strings.Split(newValue, " ")
log.Debugf("%s=%s => %s=%s", fieldName, currentServer.Tags, fieldName, newTags)
// fixme test equality with reflect.DeepEqual ?
changes++
payload.Tags = &newTags
default:
log.Fatalf("'_patch server %s=' not implemented", fieldName)
}
// FIXME: volumes, tags, dynamic_ip_required
if changes > 0 {
log.Debugf("updating server: %d change(s)", changes)
err = cmd.API.PatchServer(ident.Identifier, payload)
} else {
log.Debugf("no changes, not updating server")
}
if err != nil {
log.Fatalf("Cannot update server: %v", err)
}
default:
log.Fatalf("_patch not implemented for this kind of object")
}
fmt.Println(ident.Identifier)
return nil
}