github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/vm-control/addVmVolumes.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 addVmVolumesSubcommand(args []string, logger log.DebugLogger) error {
    12  	if err := addVmVolumes(args[0], logger); err != nil {
    13  		return fmt.Errorf("Error adding VM volumes: %s", err)
    14  	}
    15  	return nil
    16  }
    17  
    18  func addVmVolumes(vmHostname string, logger log.DebugLogger) error {
    19  	if vmIP, hypervisor, err := lookupVmAndHypervisor(vmHostname); err != nil {
    20  		return err
    21  	} else {
    22  		return addVmVolumesOnHypervisor(hypervisor, vmIP, logger)
    23  	}
    24  }
    25  
    26  func addVmVolumesOnHypervisor(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  	sizes := make([]uint64, 0, len(secondaryVolumeSizes))
    34  	for _, size := range secondaryVolumeSizes {
    35  		sizes = append(sizes, uint64(size))
    36  	}
    37  	return hyperclient.AddVmVolumes(client, ipAddr, sizes)
    38  }