github.com/vmware/govmomi@v0.51.0/guest/process_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 10 "github.com/vmware/govmomi/vim25" 11 "github.com/vmware/govmomi/vim25/methods" 12 "github.com/vmware/govmomi/vim25/types" 13 ) 14 15 type ProcessManager struct { 16 types.ManagedObjectReference 17 18 vm types.ManagedObjectReference 19 20 c *vim25.Client 21 } 22 23 func (m ProcessManager) Client() *vim25.Client { 24 return m.c 25 } 26 27 func (m ProcessManager) Reference() types.ManagedObjectReference { 28 return m.ManagedObjectReference 29 } 30 31 func (m ProcessManager) ListProcesses(ctx context.Context, auth types.BaseGuestAuthentication, pids []int64) ([]types.GuestProcessInfo, error) { 32 req := types.ListProcessesInGuest{ 33 This: m.Reference(), 34 Vm: m.vm, 35 Auth: auth, 36 Pids: pids, 37 } 38 39 res, err := methods.ListProcessesInGuest(ctx, m.c, &req) 40 if err != nil { 41 return nil, err 42 } 43 44 return res.Returnval, err 45 } 46 47 func (m ProcessManager) ReadEnvironmentVariable(ctx context.Context, auth types.BaseGuestAuthentication, names []string) ([]string, error) { 48 req := types.ReadEnvironmentVariableInGuest{ 49 This: m.Reference(), 50 Vm: m.vm, 51 Auth: auth, 52 Names: names, 53 } 54 55 res, err := methods.ReadEnvironmentVariableInGuest(ctx, m.c, &req) 56 if err != nil { 57 return nil, err 58 } 59 60 return res.Returnval, err 61 } 62 63 func (m ProcessManager) StartProgram(ctx context.Context, auth types.BaseGuestAuthentication, spec types.BaseGuestProgramSpec) (int64, error) { 64 req := types.StartProgramInGuest{ 65 This: m.Reference(), 66 Vm: m.vm, 67 Auth: auth, 68 Spec: spec, 69 } 70 71 res, err := methods.StartProgramInGuest(ctx, m.c, &req) 72 if err != nil { 73 return 0, err 74 } 75 76 return res.Returnval, err 77 } 78 79 func (m ProcessManager) TerminateProcess(ctx context.Context, auth types.BaseGuestAuthentication, pid int64) error { 80 req := types.TerminateProcessInGuest{ 81 This: m.Reference(), 82 Vm: m.vm, 83 Auth: auth, 84 Pid: pid, 85 } 86 87 _, err := methods.TerminateProcessInGuest(ctx, m.c, &req) 88 return err 89 }