8000 vic/lib/spec/network.go at lookup · hmahmood/vic · GitHub
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
134 lines (106 loc) · 3.9 KB

network.go

File metadata and controls

134 lines (106 loc) · 3.9 KB
// Copyright 2016 VMware, Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package spec
import (
"fmt"
"context"
"github.com/vmware/govmomi/object"
"github.com/vmware/govmomi/vim25/types"
"github.com/vmware/vic/pkg/trace"
)
// NewVirtualVmxnet3 returns VirtualVmxnet3 spec.
func NewVirtualVmxnet3() *types.VirtualVmxnet3 {
defer trace.End(trace.Begin(""))
return &types.VirtualVmxnet3{
VirtualVmxnet: types.VirtualVmxnet{
VirtualEthernetCard: types.VirtualEthernetCard{
AddressType: string(types.VirtualEthernetCardMacTypeGenerated),
},
},
}
}
// NewVirtualPCNet32 returns VirtualPCNet32 spec.
func NewVirtualPCNet32() *types.VirtualPCNet32 {
defer trace.End(trace.Begin(""))
return &types.VirtualPCNet32{
VirtualEthernetCard: types.VirtualEthernetCard{
AddressType: string(types.VirtualEthernetCardMacTypeGenerated),
},
}
}
// NewVirtualE1000 returns VirtualE1000 spec.
func NewVirtualE1000() *types.VirtualE1000 {
defer trace.End(trace.Begin(""))
return &types.VirtualE1000{
VirtualEthernetCard: types.VirtualEthernetCard{
AddressType: string(types.VirtualEthernetCardMacTypeGenerated),
},
}
}
func (s *VirtualMachineConfigSpec) addVirtualNIC(device types.BaseVirtualDevice) *VirtualMachineConfigSpec {
device.GetVirtualDevice().Key = s.generateNextKey()
return s.AddVirtualDevice(device)
}
// AddVirtualVmxnet3 adds a VirtualVmxnet3 device.
func (s *VirtualMachineConfigSpec) AddVirtualVmxnet3(device *types.VirtualVmxnet3) *VirtualMachineConfigSpec {
defer trace.End(trace.Begin(s.ID()))
return s.addVirtualNIC(device)
}
// AddVirtualPCNet32 adds a VirtualPCNet32 device.
func (s *VirtualMachineConfigSpec) AddVirtualPCNet32(device *types.VirtualPCNet32) *VirtualMachineConfigSpec {
defer trace.End(trace.Begin(s.ID()))
return s.addVirtualNIC(device)
}
// AddVirtualE1000 adds a VirtualE1000 device.
func (s *VirtualMachineConfigSpec) AddVirtualE1000(device *types.VirtualE1000) *VirtualMachineConfigSpec {
defer trace.End(trace.Begin(s.ID()))
return s.addVirtualNIC(device)
}
// RemoveVirtualVmxnet3 adds a VirtualVmxnet3 device.
func (s *VirtualMachineConfigSpec) RemoveVirtualVmxnet3(device *types.VirtualVmxnet3) *VirtualMachineConfigSpec {
defer trace.End(trace.Begin(s.ID()))
return s.RemoveVirtualDevice(device)
}
// RemoveVirtualPCNet32 adds a VirtualPCNet32 device.
func (s *VirtualMachineConfigSpec) RemoveVirtualPCNet32(device *types.VirtualPCNet32) *VirtualMachineConfigSpec {
defer trace.End(trace.Begin(s.ID()))
return s.RemoveVirtualDevice(device)
}
// RemoveVirtualE1000 adds a VirtualE1000 device.
func (s *VirtualMachineConfigSpec) RemoveVirtualE1000(device *types.VirtualE1000) *VirtualMachineConfigSpec {
defer trace.End(trace.Begin(s.ID()))
return s.RemoveVirtualDevice(device)
}
func (s *VirtualMachineConfigSpec) FindNICs(ctx context.Context, network object.NetworkReference) ([]types.BaseVirtualDeviceConfigSpec, error) {
if network == nil {
return nil, fmt.Errorf("no network provided")
}
backing, err := network.EthernetCardBackingInfo(ctx)
if err != nil {
return nil, err
}
var dcs []types.BaseVirtualDeviceConfigSpec
for _, d := range s.DeviceChange {
dev := d.GetVirtualDeviceConfigSpec().Device
if _, ok := dev.(types.BaseVirtualEthernetCard); ok {
var dl object.VirtualDeviceList
dl = append(dl, dev)
dl = dl.SelectByBackingInfo(backing)
if len(dl) > 0 {
dcs = append(dcs, d)
}
}
}
return dcs, nil
}
0