github.com/vmware/govmomi@v0.51.0/cli/extension/register.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 extension 6 7 import ( 8 "context" 9 "encoding/json" 10 "flag" 11 "os" 12 "time" 13 14 "github.com/vmware/govmomi/cli" 15 "github.com/vmware/govmomi/cli/flags" 16 "github.com/vmware/govmomi/object" 17 "github.com/vmware/govmomi/vim25/types" 18 ) 19 20 type register struct { 21 *flags.ClientFlag 22 23 update bool 24 } 25 26 func init() { 27 cli.Register("extension.register", ®ister{}) 28 } 29 30 func (cmd *register) Register(ctx context.Context, f *flag.FlagSet) { 31 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 32 cmd.ClientFlag.Register(ctx, f) 33 34 f.BoolVar(&cmd.update, "update", false, "Update extension") 35 } 36 37 func (cmd *register) Process(ctx context.Context) error { 38 if err := cmd.ClientFlag.Process(ctx); err != nil { 39 return err 40 } 41 return nil 42 } 43 44 func (cmd *register) Run(ctx context.Context, f *flag.FlagSet) error { 45 c, err := cmd.Client() 46 if err != nil { 47 return err 48 } 49 50 m, err := object.GetExtensionManager(c) 51 if err != nil { 52 return err 53 } 54 55 var e types.Extension 56 e.Description = new(types.Description) 57 58 if err = json.NewDecoder(os.Stdin).Decode(&e); err != nil { 59 return err 60 } 61 62 e.LastHeartbeatTime = time.Now().UTC() 63 64 if cmd.update { 65 return m.Update(ctx, e) 66 } 67 68 return m.Register(ctx, e) 69 }