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  }