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 }