github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/vm-control/changeVmVolumeSize.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  
     7  	hyperclient "github.com/Cloud-Foundations/Dominator/hypervisor/client"
     8  	"github.com/Cloud-Foundations/Dominator/lib/log"
     9  )
    10  
    11  func changeVmVolumeSizeSubcommand(args []string, logger log.DebugLogger) error {
    12  	if err := changeVmVolumeSize(args[0], logger); err != nil {
    13  		return fmt.Errorf("error changing VM volume size: %s", err)
    14  	}
    15  	return nil
    16  }
    17  
    18  func changeVmVolumeSize(vmHostname string, logger log.DebugLogger) error {
    19  	if vmIP, hypervisor, err := lookupVmAndHypervisor(vmHostname); err != nil {
    20  		return err
    21  	} else {
    22  		return changeVmVolumeSizeOnHypervisor(hypervisor, vmIP, logger)
    23  	}
    24  }
    25  
    26  func changeVmVolumeSizeOnHypervisor(hypervisor string, ipAddr net.IP,
    27  	logger log.DebugLogger) error {
    28  	client, err := dialHypervisor(hypervisor)
    29  	if err != nil {
    30  		return err
    31  	}
    32  	defer client.Close()
    33  	return hyperclient.ChangeVmVolumeSize(client, ipAddr, *volumeIndex,
    34  		uint64(volumeSize))
    35  }