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  }