github.com/vmware/govmomi@v0.51.0/cli/cluster/draft/commit.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package draft 6 7 import ( 8 "context" 9 "flag" 10 11 "github.com/vmware/govmomi/cli" 12 "github.com/vmware/govmomi/cli/flags" 13 "github.com/vmware/govmomi/vapi/cis/tasks" 14 "github.com/vmware/govmomi/vapi/esx/settings/clusters" 15 ) 16 17 type commit struct { 18 *flags.ClientFlag 19 20 clusterId string 21 draftId string 22 } 23 24 func init() { 25 cli.Register("cluster.draft.commit", &commit{}) 26 } 27 28 func (cmd *commit) Register(ctx context.Context, f *flag.FlagSet) { 29 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 30 cmd.ClientFlag.Register(ctx, f) 31 32 f.StringVar(&cmd.clusterId, "cluster-id", "", "The identifier of the cluster.") 33 f.StringVar(&cmd.draftId, "draft-id", "", "The identifier of the software draft.") 34 } 35 36 func (cmd *commit) Process(ctx context.Context) error { 37 return cmd.ClientFlag.Process(ctx) 38 } 39 40 func (cmd *commit) Usage() string { 41 return "CLUSTER" 42 } 43 44 func (cmd *commit) Description() string { 45 return `Commits the provided software draft. 46 47 Execution will block the terminal for the duration of the task. 48 49 Examples: 50 govc cluster.draft.commit -cluster-id=domain-c21 -draft-id=13` 51 } 52 53 func (cmd *commit) Run(ctx context.Context, f *flag.FlagSet) error { 54 rc, err := cmd.RestClient() 55 56 if err != nil { 57 return err 58 } 59 60 dm := clusters.NewManager(rc) 61 62 if taskId, err := dm.CommitSoftwareDraft(cmd.clusterId, cmd.draftId, clusters.SettingsClustersSoftwareDraftsCommitSpec{}); err != nil { 63 return err 64 } else if _, err = tasks.NewManager(rc).WaitForCompletion(ctx, taskId); err != nil { 65 return err 66 } else { 67 return nil 68 } 69 }