github.com/vmware/govmomi@v0.51.0/cli/cluster/draft/create.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 "io" 11 12 "github.com/vmware/govmomi/cli" 13 "github.com/vmware/govmomi/cli/flags" 14 "github.com/vmware/govmomi/vapi/esx/settings/clusters" 15 ) 16 17 type createResult string 18 19 func (r createResult) Write(w io.Writer) error { 20 return nil 21 } 22 23 type create struct { 24 *flags.ClientFlag 25 *flags.OutputFlag 26 27 clusterId string 28 } 29 30 func init() { 31 cli.Register("cluster.draft.create", &create{}) 32 } 33 34 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 35 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 36 cmd.ClientFlag.Register(ctx, f) 37 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 38 39 f.StringVar(&cmd.clusterId, "cluster-id", "", "The identifier of the cluster.") 40 } 41 42 func (cmd *create) Process(ctx context.Context) error { 43 return cmd.ClientFlag.Process(ctx) 44 } 45 46 func (cmd *create) Usage() string { 47 return "CLUSTER" 48 } 49 50 func (cmd *create) Description() string { 51 return `Creates a new software draft. 52 53 There can be only one active draft at a time on every cluster. 54 55 Examples: 56 govc cluster.draft.create -cluster-id=domain-c21` 57 } 58 59 func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { 60 rc, err := cmd.RestClient() 61 62 if err != nil { 63 return err 64 } 65 66 dm := clusters.NewManager(rc) 67 68 if !cmd.All() { 69 cmd.JSON = true 70 } 71 72 if draftId, err := dm.CreateSoftwareDraft(cmd.clusterId); err != nil { 73 return err 74 } else if err := cmd.WriteResult(createResult(draftId)); err != nil { 75 return err 76 } else { 77 return nil 78 } 79 }