linsk/vm/filemanager.go

59 lines
1,012 B
Go
Raw Normal View History

2023-08-25 15:12:19 +01:00
package vm
import (
"bytes"
"github.com/pkg/errors"
)
type FileManager struct {
vi *Instance
}
func NewFileManager(vi *Instance) *FileManager {
return &FileManager{
vi: vi,
}
}
func (fm *FileManager) Init() error {
c, err := fm.vi.DialSSH()
if err != nil {
return errors.Wrap(err, "dial vm ssh")
}
_, err = runSSHCmd(c, "apk add util-linux lvm2")
if err != nil {
return errors.Wrap(err, "install utilities")
}
_, err = runSSHCmd(c, "vgchange -ay")
if err != nil {
return errors.Wrap(err, "run vgchange cmd")
}
return nil
}
func (fm *FileManager) Lsblk() ([]byte, error) {
c, err := fm.vi.DialSSH()
if err != nil {
return nil, errors.Wrap(err, "dial vm ssh")
}
sess, err := c.NewSession()
if err != nil {
return nil, errors.Wrap(err, "create new vm ssh session")
}
ret := new(bytes.Buffer)
sess.Stdout = ret
err = sess.Run("lsblk -o NAME,SIZE,FSTYPE,LABEL -e 7,11,2,253")
if err != nil {
return nil, errors.Wrap(err, "run lsblk")
}
return ret.Bytes(), nil
}