本文整理汇总了Golang中github.com/vmware/govmomi/object.VirtualMachine.AddDevice方法的典型用法代码示例。如果您正苦于以下问题:Golang VirtualMachine.AddDevice方法的具体用法?Golang VirtualMachine.AddDevice怎么用?Golang VirtualMachine.AddDevice使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/vmware/govmomi/object.VirtualMachine
的用法示例。
在下文中一共展示了VirtualMachine.AddDevice方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: addVNIC
func addVNIC(ui packer.Ui, f *find.Finder, ctx context.Context, c *govmomi.Client, vm *object.VirtualMachine, network string, nwType string) error {
ui.Say("Adding NIC")
nets, err := f.NetworkList(ctx, network)
if err != nil {
return err
}
// TODO expose param for DVS
net := nets[1]
backing, err := net.EthernetCardBackingInfo(ctx)
if err != nil {
return err
}
device, err := object.EthernetCardTypes().CreateEthernetCard(nwType, backing)
if err != nil {
return err
}
err = vm.AddDevice(ctx, device)
if err != nil {
return err
}
ui.Say("Adding NIC Success")
return nil
} //
示例2: addHardDisk
// addHardDisk adds a new Hard Disk to the VirtualMachine.
func addHardDisk(vm *object.VirtualMachine, size, iops int64, diskType string, datastore *object.Datastore, diskPath string, controller_type string) error {
devices, err := vm.Device(context.TODO())
if err != nil {
return err
}
log.Printf("[DEBUG] vm devices: %#v\n", devices)
controller, err := devices.FindDiskController(controller_type)
if err != nil {
return err
}
log.Printf("[DEBUG] disk controller: %#v\n", controller)
// TODO Check if diskPath & datastore exist
// If diskPath is not specified, pass empty string to CreateDisk()
if diskPath == "" {
return fmt.Errorf("[ERROR] addHardDisk - No path proided")
} else {
// TODO Check if diskPath & datastore exist
diskPath = fmt.Sprintf("[%v] %v", datastore.Name(), diskPath)
}
log.Printf("[DEBUG] addHardDisk - diskPath: %v", diskPath)
disk := devices.CreateDisk(controller, datastore.Reference(), diskPath)
existing := devices.SelectByBackingInfo(disk.Backing)
log.Printf("[DEBUG] disk: %#v\n", disk)
if len(existing) == 0 {
disk.CapacityInKB = int64(size * 1024 * 1024)
if iops != 0 {
disk.StorageIOAllocation = &types.StorageIOAllocationInfo{
Limit: iops,
}
}
backing := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo)
if diskType == "eager_zeroed" {
// eager zeroed thick virtual disk
backing.ThinProvisioned = types.NewBool(false)
backing.EagerlyScrub = types.NewBool(true)
} else if diskType == "thin" {
// thin provisioned virtual disk
backing.ThinProvisioned = types.NewBool(true)
}
log.Printf("[DEBUG] addHardDisk: %#v\n", disk)
log.Printf("[DEBUG] addHardDisk capacity: %#v\n", disk.CapacityInKB)
return vm.AddDevice(context.TODO(), disk)
} else {
log.Printf("[DEBUG] addHardDisk: Disk already present.\n")
return nil
}
}
示例3: addDevices
func (cmd *create) addDevices(vm *object.VirtualMachine) error {
devices, err := vm.Device(context.TODO())
if err != nil {
return err
}
var add []types.BaseVirtualDevice
if cmd.disk != "" {
controller, err := devices.FindDiskController(cmd.controller)
if err != nil {
return err
}
disk := devices.CreateDisk(controller, cmd.Datastore.Path(cmd.disk))
if cmd.link {
disk = devices.ChildDisk(disk)
}
add = append(add, disk)
}
if cmd.iso != "" {
ide, err := devices.FindIDEController("")
if err != nil {
return err
}
cdrom, err := devices.CreateCdrom(ide)
if err != nil {
return err
}
add = append(add, devices.InsertIso(cdrom, cmd.Datastore.Path(cmd.iso)))
}
netdev, err := cmd.NetworkFlag.Device()
if err != nil {
return err
}
add = append(add, netdev)
return vm.AddDevice(context.TODO(), add...)
}
示例4: addHardDisk
// addHardDisk adds a new Hard Disk to the VirtualMachine.
func addHardDisk(vm *object.VirtualMachine, size, iops int64, diskType string) error {
devices, err := vm.Device(context.TODO())
if err != nil {
return err
}
log.Printf("[DEBUG] vm devices: %#v\n", devices)
controller, err := devices.FindDiskController("scsi")
if err != nil {
return err
}
log.Printf("[DEBUG] disk controller: %#v\n", controller)
disk := devices.CreateDisk(controller, "")
existing := devices.SelectByBackingInfo(disk.Backing)
log.Printf("[DEBUG] disk: %#v\n", disk)
if len(existing) == 0 {
disk.CapacityInKB = int64(size * 1024 * 1024)
if iops != 0 {
disk.StorageIOAllocation = &types.StorageIOAllocationInfo{
Limit: iops,
}
}
backing := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo)
// if diskType == "eager_zeroed" {
// // eager zeroed thick virtual disk
// backing.ThinProvisioned = types.NewBool(false)
// backing.EagerlyScrub = types.NewBool(true)
// } else if diskType == "thin" {
// // thin provisioned virtual disk
// backing.ThinProvisioned = types.NewBool(true)
// }
backing.ThinProvisioned = types.NewBool(true)
log.Printf("[DEBUG] addHardDisk: %#v\n", disk)
log.Printf("[DEBUG] addHardDisk: %#v\n", disk.CapacityInKB)
return vm.AddDevice(context.TODO(), disk)
} else {
log.Printf("[DEBUG] addHardDisk: Disk already present.\n")
return nil
}
}
示例5: addCdrom
// addCdrom adds a new virtual cdrom drive to the VirtualMachine and attaches an image (ISO) to it from a datastore path.
func addCdrom(vm *object.VirtualMachine, datastore, path string) error {
devices, err := vm.Device(context.TODO())
if err != nil {
return err
}
log.Printf("[DEBUG] vm devices: %#v", devices)
controller, err := devices.FindIDEController("")
if err != nil {
return err
}
log.Printf("[DEBUG] ide controller: %#v", controller)
c, err := devices.CreateCdrom(controller)
if err != nil {
return err
}
c = devices.InsertIso(c, fmt.Sprintf("[%s] %s", datastore, path))
log.Printf("[DEBUG] addCdrom: %#v", c)
return vm.AddDevice(context.TODO(), c)
}
示例6: AttachRDM
func (vmh *VMHost) AttachRDM(vm *object.VirtualMachine, deviceNAA string) (err error) {
vmScsiDiskDeviceInfo, err := vmh.getVmScsiDiskDeviceInfo(vm)
if err != nil {
return err
}
// var scsiCtlrUnitNumber int
//Build new Virtual Device to add to VM from list of avilable devices found from our query
for _, ScsiDisk := range vmScsiDiskDeviceInfo {
if !strings.Contains(ScsiDisk.Disk.CanonicalName, deviceNAA) {
continue
}
var rdmBacking types.VirtualDiskRawDiskMappingVer1BackingInfo
rdmBacking.FileName = ""
rdmBacking.DiskMode = "independent_persistent"
rdmBacking.CompatibilityMode = "physicalMode"
rdmBacking.DeviceName = ScsiDisk.Disk.DeviceName
for _, descriptor := range ScsiDisk.Disk.Descriptor {
if string([]rune(descriptor.Id)[:4]) == "vml." {
rdmBacking.LunUuid = descriptor.Id
break
}
}
var rdmDisk types.VirtualDisk
rdmDisk.Backing = &rdmBacking
rdmDisk.CapacityInKB = 1024
controller, err := vmh.getAvailableSCSIController()
if err != nil {
return err
}
if controller == nil {
controllers, err := vmh.getSCSIControllers()
if err != nil {
return err
}
if len(controllers) == 0 {
return errors.New("no SCSI controllers found")
}
if len(controllers) == 4 {
return errors.New("no more controllers can be added")
}
err = vmh.createController(&controllers[0])
if err != nil {
return err
}
controller, err = vmh.getAvailableSCSIController()
if err != nil {
return err
}
}
rdmDisk.ControllerKey = controller.VirtualController.Key
rdmDisk.UnitNumber = -1
err = vm.AddDevice(vmh.Ctx, &rdmDisk)
if err != nil {
return errors.New(fmt.Sprintf("Error adding device %+v \n Logged Item: %s", rdmDisk, err))
}
return nil
}
scsiLuns, err := vmh.GetSCSILuns()
if err != nil {
return goof.WithError("error getting existing LUNs", err)
}
for _, sl := range scsiLuns {
if strings.Contains(sl.CanonicalName, deviceNAA) {
return nil
}
}
return errors.New("no device detected on VM host to add")
}