github.com/vmware/govmomi@v0.51.0/object/extension_manager.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 object 6 7 import ( 8 "context" 9 10 "github.com/vmware/govmomi/vim25" 11 "github.com/vmware/govmomi/vim25/methods" 12 "github.com/vmware/govmomi/vim25/mo" 13 "github.com/vmware/govmomi/vim25/types" 14 ) 15 16 type ExtensionManager struct { 17 Common 18 } 19 20 // GetExtensionManager wraps NewExtensionManager, returning ErrNotSupported 21 // when the client is not connected to a vCenter instance. 22 func GetExtensionManager(c *vim25.Client) (*ExtensionManager, error) { 23 if c.ServiceContent.ExtensionManager == nil { 24 return nil, ErrNotSupported 25 } 26 return NewExtensionManager(c), nil 27 } 28 29 func NewExtensionManager(c *vim25.Client) *ExtensionManager { 30 o := ExtensionManager{ 31 Common: NewCommon(c, *c.ServiceContent.ExtensionManager), 32 } 33 34 return &o 35 } 36 37 func (m ExtensionManager) List(ctx context.Context) ([]types.Extension, error) { 38 var em mo.ExtensionManager 39 40 err := m.Properties(ctx, m.Reference(), []string{"extensionList"}, &em) 41 if err != nil { 42 return nil, err 43 } 44 45 return em.ExtensionList, nil 46 } 47 48 func (m ExtensionManager) Find(ctx context.Context, key string) (*types.Extension, error) { 49 req := types.FindExtension{ 50 This: m.Reference(), 51 ExtensionKey: key, 52 } 53 54 res, err := methods.FindExtension(ctx, m.c, &req) 55 if err != nil { 56 return nil, err 57 } 58 59 return res.Returnval, nil 60 } 61 62 func (m ExtensionManager) Register(ctx context.Context, extension types.Extension) error { 63 req := types.RegisterExtension{ 64 This: m.Reference(), 65 Extension: extension, 66 } 67 68 _, err := methods.RegisterExtension(ctx, m.c, &req) 69 return err 70 } 71 72 func (m ExtensionManager) SetCertificate(ctx context.Context, key string, certificatePem string) error { 73 req := types.SetExtensionCertificate{ 74 This: m.Reference(), 75 ExtensionKey: key, 76 CertificatePem: certificatePem, 77 } 78 79 _, err := methods.SetExtensionCertificate(ctx, m.c, &req) 80 return err 81 } 82 83 func (m ExtensionManager) Unregister(ctx context.Context, key string) error { 84 req := types.UnregisterExtension{ 85 This: m.Reference(), 86 ExtensionKey: key, 87 } 88 89 _, err := methods.UnregisterExtension(ctx, m.c, &req) 90 return err 91 } 92 93 func (m ExtensionManager) Update(ctx context.Context, extension types.Extension) error { 94 req := types.UpdateExtension{ 95 This: m.Reference(), 96 Extension: extension, 97 } 98 99 _, err := methods.UpdateExtension(ctx, m.c, &req) 100 return err 101 }