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  }