mirror of
https://github.com/linka-cloud/d2vm.git
synced 2024-11-26 09:36:25 +00:00
d2vm/run: hetzner: convert image to raw if needed
Signed-off-by: Adphi <philippe.adrien.nousse@gmail.com>
This commit is contained in:
parent
5049361f2f
commit
3f7b5e2805
@ -22,6 +22,7 @@ import (
|
||||
"net"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
@ -31,6 +32,8 @@ import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/svenwiltink/sparsecat"
|
||||
|
||||
exec2 "go.linka.cloud/d2vm/pkg/exec"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -80,7 +83,21 @@ func runHetzner(ctx context.Context, imgPath string, stdin io.Reader, stderr io.
|
||||
return err
|
||||
}
|
||||
if i.Format != "raw" {
|
||||
return fmt.Errorf("image format must be raw")
|
||||
logrus.Warnf("image format is %s, expected raw", i.Format)
|
||||
rawPath := filepath.Join(os.TempDir(), "d2vm", "run", filepath.Base(imgPath)+".raw")
|
||||
if err := os.MkdirAll(filepath.Dir(rawPath), 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
defer os.RemoveAll(rawPath)
|
||||
logrus.Infof("converting image to raw: %s", rawPath)
|
||||
if err := exec2.Run(ctx, "qemu-img", "convert", "-O", "raw", imgPath, rawPath); err != nil {
|
||||
return err
|
||||
}
|
||||
imgPath = rawPath
|
||||
i, err = ImgInfo(ctx, imgPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
src, err := os.Open(imgPath)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user