2022-12-22 13:07:21 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"log"
|
2022-12-23 12:45:12 +01:00
|
|
|
"os"
|
|
|
|
|
|
|
|
"github.com/jessevdk/go-flags"
|
2022-12-22 13:07:21 +01:00
|
|
|
|
|
|
|
"spamasaurus.com/m/pkg/hypervisor"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2022-12-23 12:45:12 +01:00
|
|
|
var opts struct {
|
|
|
|
FQDN string `short:"s" long:"server" description:"FQDN of the vCenter appliance" required:"true"`
|
|
|
|
Username string `short:"u" long:"username" description:"Username to authenticate with" required:"true"`
|
|
|
|
Password string `short:"p" long:"password" description:"Password to authenticate with" required:"true"`
|
|
|
|
|
|
|
|
Datacenter string `short:"d" long:"datacenter" description:"Name of datacenter" required:"true"`
|
|
|
|
VirtualMachine string `short:"v" long:"virtualmachine" description:"Name of virtual machine" required:"true"`
|
|
|
|
Network string `short:"n" long:"network" description:"Name of network portgroup" required:"true"`
|
|
|
|
}
|
2022-12-22 13:07:21 +01:00
|
|
|
|
2022-12-23 12:45:12 +01:00
|
|
|
_, err := flags.Parse(&opts)
|
|
|
|
if err != nil {
|
|
|
|
if e, ok := err.(*flags.Error); ok {
|
|
|
|
if e.Type == flags.ErrHelp {
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
2022-12-22 13:07:21 +01:00
|
|
|
|
|
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
|
|
defer cancel()
|
|
|
|
|
2022-12-23 12:45:12 +01:00
|
|
|
clt, err := hypervisor.NewClient(ctx, opts.FQDN, opts.Username, opts.Password, true)
|
2022-12-22 13:07:21 +01:00
|
|
|
if err != nil {
|
2022-12-23 12:45:12 +01:00
|
|
|
log.Fatalf("[ERROR] Login failed: %s", err)
|
2022-12-22 13:07:21 +01:00
|
|
|
}
|
|
|
|
|
2022-12-23 12:45:12 +01:00
|
|
|
fnd, err := hypervisor.DatacenterFinder(ctx, clt, opts.Datacenter)
|
2022-12-22 13:07:21 +01:00
|
|
|
if err != nil {
|
2022-12-23 12:45:12 +01:00
|
|
|
log.Fatalf("[ERROR] Unable to determine datacenter: %s", err)
|
2022-12-22 13:07:21 +01:00
|
|
|
}
|
|
|
|
|
2022-12-23 12:45:12 +01:00
|
|
|
if err := hypervisor.SetVirtualMachineProperties(ctx, fnd, opts.VirtualMachine, opts.Network); err != nil {
|
|
|
|
log.Fatalf("[ERROR] Could not apply vApp properties: %s", err)
|
2022-12-22 13:07:21 +01:00
|
|
|
}
|
|
|
|
}
|