| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- // Copyright 2019 Yunion
- //
- // 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 esxi
- import (
- "reflect"
- "strings"
- "github.com/vmware/govmomi/vim25/types"
- )
- type SVirtualDevice struct {
- vm *SVirtualMachine
- dev types.BaseVirtualDevice
- index int
- }
- func NewVirtualDevice(vm *SVirtualMachine, dev types.BaseVirtualDevice, index int) SVirtualDevice {
- return SVirtualDevice{
- vm: vm,
- dev: dev,
- index: index,
- }
- }
- func (dev *SVirtualDevice) getKey() int32 {
- return dev.dev.GetVirtualDevice().Key
- }
- func (dev *SVirtualDevice) getControllerKey() int32 {
- return dev.dev.GetVirtualDevice().ControllerKey
- }
- func (dev *SVirtualDevice) GetIndex() int {
- return dev.index
- }
- func (dev *SVirtualDevice) getLabel() string {
- return dev.dev.GetVirtualDevice().DeviceInfo.GetDescription().Label
- }
- func (dev *SVirtualDevice) GetDriver() string {
- return getDevName(dev.dev)
- }
- func getDevName(device types.BaseVirtualDevice) string {
- val := reflect.Indirect(reflect.ValueOf(device))
- driver := strings.ToLower(val.Type().Name())
- if strings.Contains(driver, "virtualmachine") {
- return strings.Replace(driver, "virtualmachine", "", -1)
- } else if strings.Contains(driver, "virtual") {
- return strings.Replace(driver, "virtual", "", -1)
- } else {
- return driver
- }
- }
- type SVirtualVGA struct {
- SVirtualDevice
- }
- func NewVirtualVGA(vm *SVirtualMachine, dev types.BaseVirtualDevice, index int) SVirtualVGA {
- return SVirtualVGA{
- NewVirtualDevice(vm, dev, index),
- }
- }
- func (vga *SVirtualVGA) getVirtualMachineVideoCard() *types.VirtualMachineVideoCard {
- return vga.dev.(*types.VirtualMachineVideoCard)
- }
- func (vga *SVirtualVGA) GetEnable3D() bool {
- p3d := vga.getVirtualMachineVideoCard().Enable3DSupport
- return p3d != nil && *p3d
- }
- func (vga *SVirtualVGA) GetRamSizeMB() int {
- return int(vga.getVirtualMachineVideoCard().VideoRamSizeInKB / 1024)
- }
- func (vga *SVirtualVGA) String() string {
- return vga.getVirtualMachineVideoCard().DeviceInfo.GetDescription().Summary
- }
- type SVirtualCdrom struct {
- SVirtualDevice
- }
- func NewVirtualCdrom(vm *SVirtualMachine, dev types.BaseVirtualDevice, index int) SVirtualCdrom {
- return SVirtualCdrom{
- NewVirtualDevice(vm, dev, index),
- }
- }
- func (cdrom *SVirtualCdrom) getVirtualCdrom() *types.VirtualCdrom {
- return cdrom.dev.(*types.VirtualCdrom)
- }
|