mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-01-08 17:04:26 +01:00
Merge pull request #4469 from egernst/config-validation-refactor
Refactor how hypervisor config validation is handled
This commit is contained in:
@@ -444,7 +444,7 @@ func getVhostUserDevName(dirname string, majorNum, minorNum uint32) (string, err
|
||||
|
||||
// DeviceState is a structure which represents host devices
|
||||
// plugged to a hypervisor, one Device can be shared among containers in POD
|
||||
// Refs: virtcontainers/device/drivers/generic.go:GenericDevice
|
||||
// Refs: pkg/device/drivers/generic.go:GenericDevice
|
||||
type DeviceState struct {
|
||||
// DriverOptions is specific options for each device driver
|
||||
// for example, for BlockDevice, we can set DriverOptions["block-driver"]="virtio-blk"
|
||||
@@ -459,7 +459,7 @@ type DeviceState struct {
|
||||
ID string
|
||||
|
||||
// Type is used to specify driver type
|
||||
// Refs: virtcontainers/device/config/config.go:DeviceType
|
||||
// Refs: pkg/device/config/config.go:DeviceType
|
||||
Type string
|
||||
|
||||
// Type of device: c, b, u or p
|
||||
|
||||
@@ -26,7 +26,7 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
pmemLog = logrus.WithField("source", "virtcontainers/device/config")
|
||||
pmemLog = logrus.WithField("source", "pkg/device/config")
|
||||
)
|
||||
|
||||
// SetLogger sets up a logger for this pkg
|
||||
|
||||
@@ -220,7 +220,7 @@ func (h hypervisor) initrd() (string, error) {
|
||||
p := h.Initrd
|
||||
|
||||
if p == "" {
|
||||
return "", errors.New("initrd is not set")
|
||||
return "", nil
|
||||
}
|
||||
|
||||
return ResolvePath(p)
|
||||
@@ -230,7 +230,7 @@ func (h hypervisor) image() (string, error) {
|
||||
p := h.Image
|
||||
|
||||
if p == "" {
|
||||
return "", errors.New("image is not set")
|
||||
return "", nil
|
||||
}
|
||||
|
||||
return ResolvePath(p)
|
||||
@@ -474,24 +474,6 @@ func (h hypervisor) vhostUserStorePath() string {
|
||||
return h.VhostUserStorePath
|
||||
}
|
||||
|
||||
func (h hypervisor) getInitrdAndImage() (initrd string, image string, err error) {
|
||||
initrd, errInitrd := h.initrd()
|
||||
|
||||
image, errImage := h.image()
|
||||
|
||||
if h.ConfidentialGuest && h.MachineType == vc.QemuCCWVirtio {
|
||||
if image != "" || initrd != "" {
|
||||
return "", "", errors.New("Neither the image nor initrd path may be set for Secure Execution")
|
||||
}
|
||||
} else if image != "" && initrd != "" {
|
||||
return "", "", errors.New("having both an image and an initrd defined in the configuration file is not supported")
|
||||
} else if errInitrd != nil && errImage != nil {
|
||||
return "", "", fmt.Errorf("Either initrd or image must be set to a valid path (initrd: %v) (image: %v)", errInitrd, errImage)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (h hypervisor) getDiskRateLimiterBwMaxRate() int64 {
|
||||
return h.DiskRateLimiterBwMaxRate
|
||||
}
|
||||
@@ -601,7 +583,12 @@ func newFirecrackerHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
|
||||
initrd, image, err := h.getInitrdAndImage()
|
||||
initrd, err := h.initrd()
|
||||
if err != nil {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
|
||||
image, err := h.image()
|
||||
if err != nil {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
@@ -663,7 +650,12 @@ func newQemuHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
|
||||
initrd, image, err := h.getInitrdAndImage()
|
||||
initrd, err := h.initrd()
|
||||
if err != nil {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
|
||||
image, err := h.image()
|
||||
if err != nil {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
@@ -857,7 +849,12 @@ func newClhHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
|
||||
initrd, image, err := h.getInitrdAndImage()
|
||||
initrd, err := h.initrd()
|
||||
if err != nil {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
|
||||
image, err := h.image()
|
||||
if err != nil {
|
||||
return vc.HypervisorConfig{}, err
|
||||
}
|
||||
|
||||
@@ -1017,7 +1017,7 @@ func TestHypervisorDefaultsKernel(t *testing.T) {
|
||||
assert.Equal(h.kernelParams(), kernelParams, "custom hypervisor kernel parameterms wrong")
|
||||
}
|
||||
|
||||
// The default initrd path is not returned by h.initrd()
|
||||
// The default initrd path is not returned by h.initrd(), it isn't an error if path isn't provided
|
||||
func TestHypervisorDefaultsInitrd(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
@@ -1041,18 +1041,18 @@ func TestHypervisorDefaultsInitrd(t *testing.T) {
|
||||
defaultInitrdPath = testInitrdPath
|
||||
h := hypervisor{}
|
||||
p, err := h.initrd()
|
||||
assert.Error(err)
|
||||
assert.NoError(err)
|
||||
assert.Equal(p, "", "default Image path wrong")
|
||||
|
||||
// test path resolution
|
||||
defaultInitrdPath = testInitrdLinkPath
|
||||
h = hypervisor{}
|
||||
p, err = h.initrd()
|
||||
assert.Error(err)
|
||||
assert.NoError(err)
|
||||
assert.Equal(p, "")
|
||||
}
|
||||
|
||||
// The default image path is not returned by h.image()
|
||||
// The default image path is not returned by h.image(), it isn't an error if path isn't provided
|
||||
func TestHypervisorDefaultsImage(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
@@ -1076,14 +1076,14 @@ func TestHypervisorDefaultsImage(t *testing.T) {
|
||||
defaultImagePath = testImagePath
|
||||
h := hypervisor{}
|
||||
p, err := h.image()
|
||||
assert.Error(err)
|
||||
assert.NoError(err)
|
||||
assert.Equal(p, "", "default Image path wrong")
|
||||
|
||||
// test path resolution
|
||||
defaultImagePath = testImageLinkPath
|
||||
h = hypervisor{}
|
||||
p, err = h.image()
|
||||
assert.Error(err)
|
||||
assert.NoError(err)
|
||||
assert.Equal(p, "")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user