Skip to content

Commit

Permalink
cmd/vm-control: add -machineType option & change-vm-machine-type subc…
Browse files Browse the repository at this point in the history
…ommand.
  • Loading branch information
rgooch committed Oct 6, 2024
1 parent 9d36eb1 commit 18ed88a
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 13 deletions.
15 changes: 2 additions & 13 deletions cmd/vm-control/changeVmConsoleType.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ import (
"fmt"
"net"

"github.com/Cloud-Foundations/Dominator/lib/errors"
hyperclient "github.com/Cloud-Foundations/Dominator/hypervisor/client"
"github.com/Cloud-Foundations/Dominator/lib/log"
proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor"
)

func changeVmConsoleTypeSubcommand(args []string,
Expand All @@ -28,20 +27,10 @@ func changeVmConsoleType(vmHostname string,

func changeVmConsoleTypeOnHypervisor(hypervisor string, ipAddr net.IP,
logger log.DebugLogger) error {
request := proto.ChangeVmConsoleTypeRequest{
ConsoleType: consoleType,
IpAddress: ipAddr,
}
client, err := dialHypervisor(hypervisor)
if err != nil {
return err
}
defer client.Close()
var reply proto.ChangeVmOwnerUsersResponse
err = client.RequestReply("Hypervisor.ChangeVmConsoleType",
request, &reply)
if err != nil {
return err
}
return errors.New(reply.Error)
return hyperclient.ChangeVmConsoleType(client, ipAddr, consoleType)
}
36 changes: 36 additions & 0 deletions cmd/vm-control/changeVmMachineType.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package main

import (
"fmt"
"net"

hyperclient "github.com/Cloud-Foundations/Dominator/hypervisor/client"
"github.com/Cloud-Foundations/Dominator/lib/log"
)

func changeVmMachineTypeSubcommand(args []string,
logger log.DebugLogger) error {
if err := changeVmMachineType(args[0], logger); err != nil {
return fmt.Errorf("error changing VM machine type: %s", err)
}
return nil
}

func changeVmMachineType(vmHostname string,
logger log.DebugLogger) error {
if vmIP, hypervisor, err := lookupVmAndHypervisor(vmHostname); err != nil {
return err
} else {
return changeVmMachineTypeOnHypervisor(hypervisor, vmIP, logger)
}
}

func changeVmMachineTypeOnHypervisor(hypervisor string, ipAddr net.IP,
logger log.DebugLogger) error {
client, err := dialHypervisor(hypervisor)
if err != nil {
return err
}
defer client.Close()
return hyperclient.ChangeVmMachineType(client, ipAddr, machineType)
}
1 change: 1 addition & 0 deletions cmd/vm-control/createVm.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ func createVmInfoFromFlags() hyper_proto.VmInfo {
DisableVirtIO: *disableVirtIO,
ExtraKernelOptions: *extraKernelOptions,
Hostname: *vmHostname,
MachineType: machineType,
MemoryInMiB: uint64(memory >> 20),
MilliCPUs: *milliCPUs,
OwnerGroups: ownerGroups,
Expand Down
4 changes: 4 additions & 0 deletions cmd/vm-control/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ var (
"Command to destroy local VM when exporting. The VM name is given as the argument")
location = flag.String("location", "",
"Location to search for hypervisors")
machineType hyper_proto.MachineType
memory flagutil.Size
milliCPUs = flag.Uint("milliCPUs", 0, "milli CPUs (default 250)")
placement placementType
Expand Down Expand Up @@ -146,6 +147,8 @@ func init() {
"type of graphical console (default none)")
flag.Var(&hypervisorTagsToMatch, "hypervisorTagsToMatch",
"Tags to match when getting/listing or creating/copying/moving VMs")
flag.Var(&machineType, "machineType",
"Type of machine to emulate (default generic PC)")
flag.Var(&memory, "memory", "memory (default 1GiB)")
flag.Var(&minFreeBytes, "minFreeBytes",
"minimum number of free bytes in root volume")
Expand Down Expand Up @@ -192,6 +195,7 @@ var subcommands = []commands.Command{
{"change-vm-cpus", "IPaddr", 1, 1, changeVmCPUsSubcommand},
{"change-vm-destroy-protection", "IPaddr", 1, 1,
changeVmDestroyProtectionSubcommand},
{"change-vm-machine-type", "IPaddr", 1, 1, changeVmMachineTypeSubcommand},
{"change-vm-memory", "IPaddr", 1, 1, changeVmMemorySubcommand},
{"change-vm-owner-groups", "IPaddr", 1, 1, changeVmOwnerGroupsSubcommand},
{"change-vm-owner-users", "IPaddr", 1, 1, changeVmOwnerUsersSubcommand},
Expand Down

0 comments on commit 18ed88a

Please sign in to comment.