drivers: Extract drivers/common package (#21266)

Move all files and packages which are not a driver to the drivers/common
package. This helps to understand the structure of the code.

While moving, move the iso_test.iso into testdata/test.iso to separate
code and test data.

While fixing the test iso path fix few bugs in the tests using wrong iso
path. The test failed because the iso path was wrong instead of issue
with source or destination path.

New directory structure:

    % tree -L1 pkg/drivers
    pkg/drivers
    ├── common
    ├── hyperkit
    ├── kic
    ├── krunkit
    ├── kvm
    ├── none
    ├── qemu
    ├── ssh
    └── vfkit
pull/21275/head
Nir Soffer 2025-08-09 08:50:57 +03:00 committed by GitHub
parent 78fc8d96d1
commit 5d4d03623b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 61 additions and 59 deletions

View File

@ -28,9 +28,9 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
"k8s.io/klog/v2"
"k8s.io/minikube/pkg/drivers/common/vmnet"
"k8s.io/minikube/pkg/drivers/kic"
"k8s.io/minikube/pkg/drivers/kic/oci"
"k8s.io/minikube/pkg/drivers/vmnet"
"k8s.io/minikube/pkg/minikube/bootstrapper/bsutil"
"k8s.io/minikube/pkg/minikube/bootstrapper/bsutil/kverify"
"k8s.io/minikube/pkg/minikube/cni"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package drivers
package common
import (
"bufio"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package drivers
package common
import (
"os"

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package drivers
package common
import (
"fmt"

View File

@ -14,12 +14,14 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package drivers
package common
import (
"testing"
)
const testISOPath = "testdata/test.iso"
func TestExtractFile(t *testing.T) {
testDir := t.TempDir()
@ -32,42 +34,42 @@ func TestExtractFile(t *testing.T) {
}{
{
name: "all is right",
isoPath: "iso_test.iso",
isoPath: testISOPath,
srcPath: "/test1.txt",
destPath: testDir + "/test1.txt",
expectedError: false,
},
{
name: "isoPath is error",
isoPath: "tests.iso",
isoPath: "testdata/missing.iso",
srcPath: "/test1.txt",
destPath: testDir + "/test1.txt",
expectedError: true,
},
{
name: "srcPath is empty",
isoPath: "iso_tests.iso",
isoPath: testISOPath,
srcPath: "",
destPath: testDir + "/test1.txt",
expectedError: true,
},
{
name: "srcPath is error",
isoPath: "iso_tests.iso",
isoPath: testISOPath,
srcPath: "/t1.txt",
destPath: testDir + "/test1.txt",
expectedError: true,
},
{
name: "destPath is empty",
isoPath: "iso_test.iso",
isoPath: testISOPath,
srcPath: "/test1.txt",
destPath: "",
expectedError: true,
},
{
name: "find files in a folder",
isoPath: "./iso_test.iso",
isoPath: testISOPath,
srcPath: "/test2/test2.txt",
destPath: testDir + "/test2.txt",
expectedError: false,

View File

@ -37,7 +37,7 @@ import (
ps "github.com/mitchellh/go-ps"
hyperkit "github.com/moby/hyperkit/go"
"github.com/pkg/errors"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/minikube/detect"
)
@ -53,7 +53,7 @@ const (
// Driver is the machine driver for Hyperkit
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
Boot2DockerURL string
DiskSize int
CPU int
@ -73,7 +73,7 @@ func NewDriver(_, _ string) *Driver {
BaseDriver: &drivers.BaseDriver{
SSHUser: "docker",
},
CommonDriver: &pkgdrivers.CommonDriver{},
CommonDriver: &common.CommonDriver{},
}
}
@ -103,7 +103,7 @@ func (d *Driver) Create() error {
}
// TODO: handle different disk types.
if err := pkgdrivers.MakeDiskImage(d.BaseDriver, d.Boot2DockerURL, d.DiskSize); err != nil {
if err := common.MakeDiskImage(d.BaseDriver, d.Boot2DockerURL, d.DiskSize); err != nil {
return errors.Wrap(err, "making disk image")
}
@ -196,7 +196,7 @@ func (d *Driver) Remove() error {
// Restart a host
func (d *Driver) Restart() error {
return pkgdrivers.Restart(d)
return common.Restart(d)
}
func (d *Driver) createHost() (*hyperkit.HyperKit, error) {
@ -225,14 +225,14 @@ func (d *Driver) createHost() (*hyperkit.HyperKit, error) {
h.Disks = []hyperkit.Disk{
&hyperkit.RawDisk{
Path: pkgdrivers.GetDiskPath(d.BaseDriver),
Path: common.GetDiskPath(d.BaseDriver),
Size: d.DiskSize,
Trim: true,
},
}
for i := 0; i < d.ExtraDisks; i++ {
h.Disks = append(h.Disks, &hyperkit.RawDisk{
Path: pkgdrivers.ExtraDiskPath(d.BaseDriver, i),
Path: common.ExtraDiskPath(d.BaseDriver, i),
Size: d.DiskSize,
Trim: true,
})
@ -287,7 +287,7 @@ func (d *Driver) setupIP(mac string) error {
return fmt.Errorf("hyperkit crashed! command line:\n hyperkit %s", d.Cmdline)
}
d.IPAddress, err = pkgdrivers.GetIPAddressByMACAddress(mac)
d.IPAddress, err = common.GetIPAddressByMACAddress(mac)
if err != nil {
return &tempError{err}
}
@ -430,7 +430,7 @@ func (d *Driver) extractKernel(isoPath string) error {
{"/boot/initrd", "initrd"},
} {
fullDestPath := d.ResolveStorePath(f.destPath)
if err := pkgdrivers.ExtractFile(isoPath, f.pathInIso, fullDestPath); err != nil {
if err := common.ExtractFile(isoPath, f.pathInIso, fullDestPath); err != nil {
return err
}
}

View File

@ -33,7 +33,7 @@ import (
"github.com/pkg/errors"
"k8s.io/klog/v2"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/drivers/kic/oci"
"k8s.io/minikube/pkg/minikube/assets"
"k8s.io/minikube/pkg/minikube/command"
@ -52,7 +52,7 @@ import (
// Driver represents a kic driver https://minikube.sigs.k8s.io/docs/reference/drivers/docker
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
URL string
exec command.Runner
NodeConfig Config

View File

@ -41,8 +41,8 @@ import (
"github.com/pkg/errors"
"k8s.io/klog/v2"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/vmnet"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/drivers/common/vmnet"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/minikube/firewall"
"k8s.io/minikube/pkg/minikube/out"
@ -65,7 +65,7 @@ const (
// Driver is the machine driver for krunkit.
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
Boot2DockerURL string
DiskSize int
CPU int
@ -86,7 +86,7 @@ func NewDriver(hostName, storePath string) drivers.Driver {
MachineName: hostName,
StorePath: storePath,
},
CommonDriver: &pkgdrivers.CommonDriver{},
CommonDriver: &common.CommonDriver{},
}
}
@ -179,8 +179,8 @@ func (d *Driver) Create() error {
if d.ExtraDisks > 0 {
log.Info("Creating extra disk images...")
for i := 0; i < d.ExtraDisks; i++ {
path := pkgdrivers.ExtraDiskPath(d.BaseDriver, i)
if err := pkgdrivers.CreateRawDisk(path, d.DiskSize); err != nil {
path := common.ExtraDiskPath(d.BaseDriver, i)
if err := common.CreateRawDisk(path, d.DiskSize); err != nil {
return err
}
}
@ -228,7 +228,7 @@ func (d *Driver) startKrunkit(socketPath string) error {
for i := 0; i < d.ExtraDisks; i++ {
args = append(args,
"--device", fmt.Sprintf("virtio-blk,path=%s", pkgdrivers.ExtraDiskPath(d.BaseDriver, i)))
"--device", fmt.Sprintf("virtio-blk,path=%s", common.ExtraDiskPath(d.BaseDriver, i)))
}
log.Debugf("executing: krunkit %s", strings.Join(args, " "))
@ -261,7 +261,7 @@ func (d *Driver) openLogfile() (*os.File, error) {
func (d *Driver) setupIP(mac string) error {
var err error
getIP := func() error {
d.IPAddress, err = pkgdrivers.GetIPAddressByMACAddress(mac)
d.IPAddress, err = common.GetIPAddressByMACAddress(mac)
if err != nil {
return errors.Wrap(err, "failed to get IP address")
}

View File

@ -29,7 +29,7 @@ import (
"github.com/docker/machine/libmachine/log"
"github.com/docker/machine/libmachine/state"
"github.com/pkg/errors"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/util/retry"
"libvirt.org/go/libvirt"
)
@ -37,7 +37,7 @@ import (
// Driver is the machine driver for KVM
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
// How much memory, in MB, to allocate to the VM
Memory int
@ -110,7 +110,7 @@ func NewDriver(hostName, storePath string) *Driver {
StorePath: storePath,
SSHUser: "docker",
},
CommonDriver: &pkgdrivers.CommonDriver{},
CommonDriver: &common.CommonDriver{},
PrivateNetwork: defaultPrivateNetworkName,
Network: defaultNetworkName,
ConnectionURI: qemusystem,
@ -283,7 +283,7 @@ func (d *Driver) Kill() error {
// Restart a host
func (d *Driver) Restart() error {
log.Info("restarting domain...")
return pkgdrivers.Restart(d)
return common.Restart(d)
}
// Start a host
@ -464,7 +464,7 @@ func (d *Driver) Create() error {
}
log.Infof("building disk image from %s", d.Boot2DockerURL)
if err := pkgdrivers.MakeDiskImage(d.BaseDriver, d.Boot2DockerURL, d.DiskSize); err != nil {
if err := common.MakeDiskImage(d.BaseDriver, d.Boot2DockerURL, d.DiskSize); err != nil {
return errors.Wrap(err, "creating disk")
}
@ -475,8 +475,8 @@ func (d *Driver) Create() error {
return errors.New("cannot create more than 20 extra disks")
}
for i := 0; i < d.ExtraDisks; i++ {
diskpath := pkgdrivers.ExtraDiskPath(d.BaseDriver, i)
if err := pkgdrivers.CreateRawDisk(diskpath, d.DiskSize); err != nil {
diskpath := common.ExtraDiskPath(d.BaseDriver, i)
if err := common.CreateRawDisk(diskpath, d.DiskSize); err != nil {
return errors.Wrap(err, "creating extra disks")
}
// Starting the logical names for the extra disks from hdd as the cdrom device is set to hdc.

View File

@ -25,7 +25,7 @@ import (
"github.com/pkg/errors"
knet "k8s.io/apimachinery/pkg/util/net"
"k8s.io/klog/v2"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/minikube/bootstrapper/bsutil/kverify"
"k8s.io/minikube/pkg/minikube/command"
"k8s.io/minikube/pkg/minikube/constants"
@ -46,7 +46,7 @@ var cleanupPaths = []string{
// https://minikube.sigs.k8s.io/docs/reference/drivers/none/
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
URL string
runtime cruntime.Manager
exec command.Runner

View File

@ -41,7 +41,7 @@ import (
"github.com/pkg/errors"
"k8s.io/klog/v2"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/minikube/detect"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/minikube/firewall"
@ -62,7 +62,7 @@ const (
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
EnginePort int
FirstQuery bool
@ -286,8 +286,8 @@ func (d *Driver) Create() error {
if d.ExtraDisks > 0 {
log.Info("Creating extra disk images...")
for i := 0; i < d.ExtraDisks; i++ {
path := pkgdrivers.ExtraDiskPath(d.BaseDriver, i)
if err := pkgdrivers.CreateRawDisk(path, d.DiskSize); err != nil {
path := common.ExtraDiskPath(d.BaseDriver, i)
if err := common.CreateRawDisk(path, d.DiskSize); err != nil {
return err
}
}
@ -474,7 +474,7 @@ func (d *Driver) Start() error {
// low-indexed devices (e.g., firmware, ISO CDROM, cloud config, and network device)
index := i + 10
startCmd = append(startCmd,
"-drive", fmt.Sprintf("file=%s,index=%d,media=disk,format=raw,if=virtio", pkgdrivers.ExtraDiskPath(d.BaseDriver, i), index),
"-drive", fmt.Sprintf("file=%s,index=%d,media=disk,format=raw,if=virtio", common.ExtraDiskPath(d.BaseDriver, i), index),
)
}
@ -510,7 +510,7 @@ func (d *Driver) Start() error {
case "socket_vmnet":
var err error
getIP := func() error {
d.IPAddress, err = pkgdrivers.GetIPAddressByMACAddress(d.MACAddress)
d.IPAddress, err = common.GetIPAddressByMACAddress(d.MACAddress)
if err != nil {
return errors.Wrap(err, "failed to get IP address")
}

View File

@ -35,7 +35,7 @@ import (
"github.com/docker/machine/libmachine/state"
"github.com/pkg/errors"
"k8s.io/klog/v2"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/minikube/command"
"k8s.io/minikube/pkg/minikube/cruntime"
"k8s.io/minikube/pkg/minikube/sysinit"
@ -45,7 +45,7 @@ import (
// https://minikube.sigs.k8s.io/docs/reference/drivers/ssh/
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
EnginePort int
SSHKey string
runtime cruntime.Manager

View File

@ -43,8 +43,8 @@ import (
"github.com/pkg/errors"
"k8s.io/klog/v2"
pkgdrivers "k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/drivers/vmnet"
"k8s.io/minikube/pkg/drivers/common"
"k8s.io/minikube/pkg/drivers/common/vmnet"
"k8s.io/minikube/pkg/minikube/detect"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/minikube/firewall"
@ -66,7 +66,7 @@ const (
// Driver is the machine driver for vfkit (Virtualization.framework)
type Driver struct {
*drivers.BaseDriver
*pkgdrivers.CommonDriver
*common.CommonDriver
Boot2DockerURL string
DiskSize int
CPU int
@ -84,7 +84,7 @@ func NewDriver(hostName, storePath string) drivers.Driver {
MachineName: hostName,
StorePath: storePath,
},
CommonDriver: &pkgdrivers.CommonDriver{},
CommonDriver: &common.CommonDriver{},
}
}
@ -210,8 +210,8 @@ func (d *Driver) Create() error {
if d.ExtraDisks > 0 {
log.Info("Creating extra disk images...")
for i := 0; i < d.ExtraDisks; i++ {
path := pkgdrivers.ExtraDiskPath(d.BaseDriver, i)
if err := pkgdrivers.CreateRawDisk(path, d.DiskSize); err != nil {
path := common.ExtraDiskPath(d.BaseDriver, i)
if err := common.CreateRawDisk(path, d.DiskSize); err != nil {
return err
}
}
@ -223,10 +223,10 @@ func (d *Driver) Create() error {
func (d *Driver) extractKernel() error {
log.Info("Extracting bzimage and initrd...")
if err := pkgdrivers.ExtractFile(d.isoPath(), "/boot/bzimage", d.kernelPath()); err != nil {
if err := common.ExtractFile(d.isoPath(), "/boot/bzimage", d.kernelPath()); err != nil {
return err
}
return pkgdrivers.ExtractFile(d.isoPath(), "/boot/initrd", d.initrdPath())
return common.ExtractFile(d.isoPath(), "/boot/initrd", d.initrdPath())
}
func (d *Driver) Start() error {
@ -301,7 +301,7 @@ func (d *Driver) startVfkit(socketPath string) error {
for i := 0; i < d.ExtraDisks; i++ {
startCmd = append(startCmd,
"--device", fmt.Sprintf("virtio-blk,path=%s", pkgdrivers.ExtraDiskPath(d.BaseDriver, i)))
"--device", fmt.Sprintf("virtio-blk,path=%s", common.ExtraDiskPath(d.BaseDriver, i)))
}
serialPath := d.ResolveStorePath(serialFileName)
@ -332,7 +332,7 @@ func (d *Driver) startVfkit(socketPath string) error {
func (d *Driver) setupIP(mac string) error {
var err error
getIP := func() error {
d.IPAddress, err = pkgdrivers.GetIPAddressByMACAddress(mac)
d.IPAddress, err = common.GetIPAddressByMACAddress(mac)
if err != nil {
return errors.Wrap(err, "failed to get IP address")
}

View File

@ -28,8 +28,8 @@ import (
"github.com/docker/machine/libmachine/drivers"
"github.com/google/uuid"
"k8s.io/minikube/pkg/drivers/common/vmnet"
"k8s.io/minikube/pkg/drivers/krunkit"
"k8s.io/minikube/pkg/drivers/vmnet"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/download"
"k8s.io/minikube/pkg/minikube/driver"

View File

@ -28,8 +28,8 @@ import (
"github.com/docker/machine/libmachine/drivers"
"github.com/google/uuid"
"k8s.io/minikube/pkg/drivers/common/vmnet"
"k8s.io/minikube/pkg/drivers/vfkit"
"k8s.io/minikube/pkg/drivers/vmnet"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/download"
"k8s.io/minikube/pkg/minikube/driver"