github.com/vmware/govmomi@v0.51.0/simulator/portgroup.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 simulator 6 7 import ( 8 "github.com/vmware/govmomi/vim25/methods" 9 "github.com/vmware/govmomi/vim25/mo" 10 "github.com/vmware/govmomi/vim25/soap" 11 "github.com/vmware/govmomi/vim25/types" 12 ) 13 14 type DistributedVirtualPortgroup struct { 15 mo.DistributedVirtualPortgroup 16 } 17 18 func (p *DistributedVirtualPortgroup) event(ctx *Context) types.DVPortgroupEvent { 19 dvs := ctx.Map.Get(*p.Config.DistributedVirtualSwitch).(*DistributedVirtualSwitch) 20 21 return types.DVPortgroupEvent{ 22 Event: types.Event{ 23 Datacenter: datacenterEventArgument(ctx, p), 24 Net: &types.NetworkEventArgument{ 25 EntityEventArgument: types.EntityEventArgument{ 26 Name: p.Name, 27 }, 28 Network: p.Self, 29 }, 30 Dvs: dvs.eventArgument(), 31 }, 32 } 33 } 34 35 func (s *DistributedVirtualPortgroup) RenameTask(ctx *Context, req *types.Rename_Task) soap.HasFault { 36 canDup := s.DistributedVirtualPortgroup.Config.BackingType == string(types.DistributedVirtualPortgroupBackingTypeNsx) 37 38 return RenameTask(ctx, s, req, canDup) 39 } 40 41 func (s *DistributedVirtualPortgroup) ReconfigureDVPortgroupTask(ctx *Context, req *types.ReconfigureDVPortgroup_Task) soap.HasFault { 42 task := CreateTask(s, "reconfigureDvPortgroup", func(t *Task) (types.AnyType, types.BaseMethodFault) { 43 s.Config.DefaultPortConfig = req.Spec.DefaultPortConfig 44 s.Config.NumPorts = req.Spec.NumPorts 45 s.Config.AutoExpand = req.Spec.AutoExpand 46 s.Config.Type = req.Spec.Type 47 s.Config.Description = req.Spec.Description 48 s.Config.DynamicData = req.Spec.DynamicData 49 s.Config.Name = req.Spec.Name 50 s.Config.Policy = req.Spec.Policy 51 s.Config.PortNameFormat = req.Spec.PortNameFormat 52 s.Config.VmVnicNetworkResourcePoolKey = req.Spec.VmVnicNetworkResourcePoolKey 53 s.Config.LogicalSwitchUuid = req.Spec.LogicalSwitchUuid 54 s.Config.BackingType = req.Spec.BackingType 55 56 return nil, nil 57 }) 58 59 return &methods.ReconfigureDVPortgroup_TaskBody{ 60 Res: &types.ReconfigureDVPortgroup_TaskResponse{ 61 Returnval: task.Run(ctx), 62 }, 63 } 64 } 65 66 func (s *DistributedVirtualPortgroup) DestroyTask(ctx *Context, req *types.Destroy_Task) soap.HasFault { 67 task := CreateTask(s, "destroy", func(t *Task) (types.AnyType, types.BaseMethodFault) { 68 vswitch := ctx.Map.Get(*s.Config.DistributedVirtualSwitch).(*DistributedVirtualSwitch) 69 ctx.Map.RemoveReference(ctx, vswitch, &vswitch.Portgroup, s.Reference()) 70 ctx.Map.removeString(ctx, vswitch, &vswitch.Summary.PortgroupName, s.Name) 71 72 f := ctx.Map.getEntityParent(vswitch, "Folder").(*Folder) 73 folderRemoveChild(ctx, &f.Folder, s.Reference()) 74 ctx.postEvent(&types.DVPortgroupDestroyedEvent{DVPortgroupEvent: s.event(ctx)}) 75 76 return nil, nil 77 }) 78 79 return &methods.Destroy_TaskBody{ 80 Res: &types.Destroy_TaskResponse{ 81 Returnval: task.Run(ctx), 82 }, 83 } 84 85 }