Skip to content

Commit 5688cb4

Browse files
authored
Merge pull request #3513 from liangyuanpeng/func_imgutil
chore: move CreateDataDisk and ResizeDataDisk to util
2 parents f76665a + 23d14cd commit 5688cb4

File tree

3 files changed

+35
-29
lines changed

3 files changed

+35
-29
lines changed

cmd/limactl/disk.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
"github.com/docker/go-units"
1717
"github.com/lima-vm/go-qcow2reader"
1818
"github.com/lima-vm/lima/pkg/nativeimgutil"
19-
"github.com/lima-vm/lima/pkg/qemu"
19+
"github.com/lima-vm/lima/pkg/qemu/imgutil"
2020
"github.com/lima-vm/lima/pkg/store"
2121
"github.com/lima-vm/lima/pkg/store/filenames"
2222
"github.com/sirupsen/logrus"
@@ -114,7 +114,7 @@ func diskCreateAction(cmd *cobra.Command, args []string) error {
114114
if format == "raw" {
115115
err = nativeimgutil.CreateRawDataDisk(diskDir, int(diskSize))
116116
} else {
117-
err = qemu.CreateDataDisk(diskDir, format, int(diskSize))
117+
err = imgutil.CreateDataDisk(diskDir, format, int(diskSize))
118118
}
119119
if err != nil {
120120
rerr := os.RemoveAll(diskDir)
@@ -410,7 +410,7 @@ func diskResizeAction(cmd *cobra.Command, args []string) error {
410410
if disk.Format == "raw" {
411411
err = nativeimgutil.ResizeRawDataDisk(disk.Dir, int(diskSize))
412412
} else {
413-
err = qemu.ResizeDataDisk(disk.Dir, disk.Format, int(diskSize))
413+
err = imgutil.ResizeDataDisk(disk.Dir, disk.Format, int(diskSize))
414414
}
415415
if err != nil {
416416
return fmt.Errorf("failed to resize disk %q: %w", diskName, err)

pkg/qemu/imgutil/imgutil.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@ package imgutil
66
import (
77
"bytes"
88
"encoding/json"
9+
"errors"
910
"fmt"
11+
"io/fs"
12+
"os"
1013
"os/exec"
14+
"path/filepath"
15+
"strconv"
1116

17+
"github.com/lima-vm/lima/pkg/store/filenames"
1218
"github.com/sirupsen/logrus"
1319
)
1420

@@ -22,6 +28,32 @@ type InfoFormatSpecific struct {
2228
Data json.RawMessage `json:"data,omitempty"` // since QEMU 1.7
2329
}
2430

31+
func CreateDataDisk(dir, format string, size int) error {
32+
dataDisk := filepath.Join(dir, filenames.DataDisk)
33+
if _, err := os.Stat(dataDisk); err == nil || !errors.Is(err, fs.ErrNotExist) {
34+
// datadisk already exists
35+
return err
36+
}
37+
38+
args := []string{"create", "-f", format, dataDisk, strconv.Itoa(size)}
39+
cmd := exec.Command("qemu-img", args...)
40+
if out, err := cmd.CombinedOutput(); err != nil {
41+
return fmt.Errorf("failed to run %v: %q: %w", cmd.Args, string(out), err)
42+
}
43+
return nil
44+
}
45+
46+
func ResizeDataDisk(dir, format string, size int) error {
47+
dataDisk := filepath.Join(dir, filenames.DataDisk)
48+
49+
args := []string{"resize", "-f", format, dataDisk, strconv.Itoa(size)}
50+
cmd := exec.Command("qemu-img", args...)
51+
if out, err := cmd.CombinedOutput(); err != nil {
52+
return fmt.Errorf("failed to run %v: %q: %w", cmd.Args, string(out), err)
53+
}
54+
return nil
55+
}
56+
2557
func (sp *InfoFormatSpecific) Qcow2() *InfoFormatSpecificDataQcow2 {
2658
if sp.Type != "qcow2" {
2759
return nil

pkg/qemu/qemu.go

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -127,32 +127,6 @@ func EnsureDisk(ctx context.Context, cfg Config) error {
127127
return nil
128128
}
129129

130-
func CreateDataDisk(dir, format string, size int) error {
131-
dataDisk := filepath.Join(dir, filenames.DataDisk)
132-
if _, err := os.Stat(dataDisk); err == nil || !errors.Is(err, fs.ErrNotExist) {
133-
// datadisk already exists
134-
return err
135-
}
136-
137-
args := []string{"create", "-f", format, dataDisk, strconv.Itoa(size)}
138-
cmd := exec.Command("qemu-img", args...)
139-
if out, err := cmd.CombinedOutput(); err != nil {
140-
return fmt.Errorf("failed to run %v: %q: %w", cmd.Args, string(out), err)
141-
}
142-
return nil
143-
}
144-
145-
func ResizeDataDisk(dir, format string, size int) error {
146-
dataDisk := filepath.Join(dir, filenames.DataDisk)
147-
148-
args := []string{"resize", "-f", format, dataDisk, strconv.Itoa(size)}
149-
cmd := exec.Command("qemu-img", args...)
150-
if out, err := cmd.CombinedOutput(); err != nil {
151-
return fmt.Errorf("failed to run %v: %q: %w", cmd.Args, string(out), err)
152-
}
153-
return nil
154-
}
155-
156130
func newQmpClient(cfg Config) (*qmp.SocketMonitor, error) {
157131
qmpSock := filepath.Join(cfg.InstanceDir, filenames.QMPSock)
158132
qmpClient, err := qmp.NewSocketMonitor("unix", qmpSock, 5*time.Second)

0 commit comments

Comments
 (0)