github.com/vmware/govmomi@v0.51.0/guest/operations_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 guest
     6  
     7  import (
     8  	"context"
     9  	"sync"
    10  
    11  	"github.com/vmware/govmomi/property"
    12  	"github.com/vmware/govmomi/vim25"
    13  	"github.com/vmware/govmomi/vim25/mo"
    14  	"github.com/vmware/govmomi/vim25/types"
    15  )
    16  
    17  type OperationsManager struct {
    18  	c  *vim25.Client
    19  	vm types.ManagedObjectReference
    20  }
    21  
    22  func NewOperationsManager(c *vim25.Client, vm types.ManagedObjectReference) *OperationsManager {
    23  	return &OperationsManager{c, vm}
    24  }
    25  
    26  func (m OperationsManager) retrieveOne(ctx context.Context, p string, dst *mo.GuestOperationsManager) error {
    27  	pc := property.DefaultCollector(m.c)
    28  	return pc.RetrieveOne(ctx, *m.c.ServiceContent.GuestOperationsManager, []string{p}, dst)
    29  }
    30  
    31  func (m OperationsManager) AuthManager(ctx context.Context) (*AuthManager, error) {
    32  	var g mo.GuestOperationsManager
    33  
    34  	err := m.retrieveOne(ctx, "authManager", &g)
    35  	if err != nil {
    36  		return nil, err
    37  	}
    38  
    39  	return &AuthManager{*g.AuthManager, m.vm, m.c}, nil
    40  }
    41  
    42  func (m OperationsManager) FileManager(ctx context.Context) (*FileManager, error) {
    43  	var g mo.GuestOperationsManager
    44  
    45  	err := m.retrieveOne(ctx, "fileManager", &g)
    46  	if err != nil {
    47  		return nil, err
    48  	}
    49  
    50  	return &FileManager{
    51  		ManagedObjectReference: *g.FileManager,
    52  		vm:                     m.vm,
    53  		c:                      m.c,
    54  		mu:                     new(sync.Mutex),
    55  		hosts:                  make(map[string]string),
    56  	}, nil
    57  }
    58  
    59  func (m OperationsManager) ProcessManager(ctx context.Context) (*ProcessManager, error) {
    60  	var g mo.GuestOperationsManager
    61  
    62  	err := m.retrieveOne(ctx, "processManager", &g)
    63  	if err != nil {
    64  		return nil, err
    65  	}
    66  
    67  	return &ProcessManager{*g.ProcessManager, m.vm, m.c}, nil
    68  }