mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-21 10:09:07 +00:00
Added capability to wait for the OpenVM tools to report the IP of new VM
Signed-off-by: Dan Finneran <daniel.finneran@gmail.com>
This commit is contained in:
parent
b460a718cc
commit
7cc2bc43e4
@ -32,6 +32,7 @@ type vmConfig struct {
|
|||||||
vCpus *int
|
vCpus *int
|
||||||
mem *int64
|
mem *int64
|
||||||
poweron *bool
|
poweron *bool
|
||||||
|
guestIP *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func runVcenter(args []string) {
|
func runVcenter(args []string) {
|
||||||
@ -54,6 +55,7 @@ func runVcenter(args []string) {
|
|||||||
newVM.mem = flags.Int64("mem", 1024, "Size in MB of memory to allocate to the VM")
|
newVM.mem = flags.Int64("mem", 1024, "Size in MB of memory to allocate to the VM")
|
||||||
newVM.vCpus = flags.Int("cpus", 1, "Amount of vCPUs to allocate to the VM")
|
newVM.vCpus = flags.Int("cpus", 1, "Amount of vCPUs to allocate to the VM")
|
||||||
newVM.poweron = flags.Bool("powerOn", false, "Power On the new VM once it has been created")
|
newVM.poweron = flags.Bool("powerOn", false, "Power On the new VM once it has been created")
|
||||||
|
newVM.guestIP = flags.Bool("waitForIP", false, "LinuxKit will wait for the VM to power on and return the guest IP, requires open-vm-tools and the -powerOn flag to be set")
|
||||||
|
|
||||||
flags.Usage = func() {
|
flags.Usage = func() {
|
||||||
fmt.Printf("USAGE: %s run vcenter [options] path\n\n", invoked)
|
fmt.Printf("USAGE: %s run vcenter [options] path\n\n", invoked)
|
||||||
@ -74,6 +76,9 @@ func runVcenter(args []string) {
|
|||||||
}
|
}
|
||||||
*newVM.path = remArgs[0]
|
*newVM.path = remArgs[0]
|
||||||
|
|
||||||
|
if (*newVM.guestIP == true) && *newVM.poweron != true {
|
||||||
|
log.Fatalln("The waitForIP flag can not be used without the powerOn flag")
|
||||||
|
}
|
||||||
// Ensure an iso has been passed to the vCenter run Command
|
// Ensure an iso has been passed to the vCenter run Command
|
||||||
if strings.HasSuffix(*newVM.path, ".iso") {
|
if strings.HasSuffix(*newVM.path, ".iso") {
|
||||||
// Allow alternative names for new virtual machines being created in vCenter
|
// Allow alternative names for new virtual machines being created in vCenter
|
||||||
@ -141,6 +146,23 @@ func runVcenter(args []string) {
|
|||||||
log.Infoln("Powering on LinuxKit VM")
|
log.Infoln("Powering on LinuxKit VM")
|
||||||
powerOnVM(ctx, vm)
|
powerOnVM(ctx, vm)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if *newVM.guestIP {
|
||||||
|
log.Infof("Waiting for OpenVM Tools to come online")
|
||||||
|
guestIP, err := getVMToolsIP(ctx, vm)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("%v", err)
|
||||||
|
}
|
||||||
|
log.Infof("Guest IP Address: %s", guestIP)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getVMToolsIP(ctx context.Context, vm *object.VirtualMachine) (string, error) {
|
||||||
|
guestIP, err := vm.WaitForIP(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return guestIP, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func vCenterConnect(ctx context.Context, newVM vmConfig) (*govmomi.Client, *object.Datastore, *object.DatacenterFolders, *object.HostSystem, object.NetworkReference, *object.ResourcePool) {
|
func vCenterConnect(ctx context.Context, newVM vmConfig) (*govmomi.Client, *object.Datastore, *object.DatacenterFolders, *object.HostSystem, object.NetworkReference, *object.ResourcePool) {
|
||||||
|
Loading…
Reference in New Issue
Block a user