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 }