github.com/vmware/govmomi@v0.51.0/object/distributed_virtual_switch.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  	"fmt"
    10  
    11  	"github.com/vmware/govmomi/vim25"
    12  	"github.com/vmware/govmomi/vim25/methods"
    13  	"github.com/vmware/govmomi/vim25/types"
    14  )
    15  
    16  type DistributedVirtualSwitch struct {
    17  	Common
    18  }
    19  
    20  func NewDistributedVirtualSwitch(c *vim25.Client, ref types.ManagedObjectReference) *DistributedVirtualSwitch {
    21  	return &DistributedVirtualSwitch{
    22  		Common: NewCommon(c, ref),
    23  	}
    24  }
    25  
    26  func (s DistributedVirtualSwitch) GetInventoryPath() string {
    27  	return s.InventoryPath
    28  }
    29  
    30  func (s DistributedVirtualSwitch) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) {
    31  	ref := s.Reference()
    32  	name := s.InventoryPath
    33  	if name == "" {
    34  		name = ref.String()
    35  	}
    36  	return nil, fmt.Errorf("type %s (%s) cannot be used for EthernetCardBackingInfo", ref.Type, name)
    37  }
    38  
    39  func (s DistributedVirtualSwitch) Reconfigure(ctx context.Context, spec types.BaseDVSConfigSpec) (*Task, error) {
    40  	req := types.ReconfigureDvs_Task{
    41  		This: s.Reference(),
    42  		Spec: spec,
    43  	}
    44  
    45  	res, err := methods.ReconfigureDvs_Task(ctx, s.Client(), &req)
    46  	if err != nil {
    47  		return nil, err
    48  	}
    49  
    50  	return NewTask(s.Client(), res.Returnval), nil
    51  }
    52  
    53  func (s DistributedVirtualSwitch) AddPortgroup(ctx context.Context, spec []types.DVPortgroupConfigSpec) (*Task, error) {
    54  	req := types.AddDVPortgroup_Task{
    55  		This: s.Reference(),
    56  		Spec: spec,
    57  	}
    58  
    59  	res, err := methods.AddDVPortgroup_Task(ctx, s.Client(), &req)
    60  	if err != nil {
    61  		return nil, err
    62  	}
    63  
    64  	return NewTask(s.Client(), res.Returnval), nil
    65  }
    66  
    67  func (s DistributedVirtualSwitch) FetchDVPorts(ctx context.Context, criteria *types.DistributedVirtualSwitchPortCriteria) ([]types.DistributedVirtualPort, error) {
    68  	req := &types.FetchDVPorts{
    69  		This:     s.Reference(),
    70  		Criteria: criteria,
    71  	}
    72  
    73  	res, err := methods.FetchDVPorts(ctx, s.Client(), req)
    74  	if err != nil {
    75  		return nil, err
    76  	}
    77  	return res.Returnval, nil
    78  }
    79  
    80  func (s DistributedVirtualSwitch) ReconfigureDVPort(ctx context.Context, spec []types.DVPortConfigSpec) (*Task, error) {
    81  	req := types.ReconfigureDVPort_Task{
    82  		This: s.Reference(),
    83  		Port: spec,
    84  	}
    85  
    86  	res, err := methods.ReconfigureDVPort_Task(ctx, s.Client(), &req)
    87  	if err != nil {
    88  		return nil, err
    89  	}
    90  
    91  	return NewTask(s.Client(), res.Returnval), nil
    92  }
    93  
    94  func (s DistributedVirtualSwitch) ReconfigureLACP(ctx context.Context, spec []types.VMwareDvsLacpGroupSpec) (*Task, error) {
    95  	req := types.UpdateDVSLacpGroupConfig_Task{
    96  		This:          s.Reference(),
    97  		LacpGroupSpec: spec,
    98  	}
    99  
   100  	res, err := methods.UpdateDVSLacpGroupConfig_Task(ctx, s.Client(), &req)
   101  	if err != nil {
   102  		return nil, err
   103  	}
   104  
   105  	return NewTask(s.Client(), res.Returnval), nil
   106  }