diff --git a/pkg/controller/render/render_controller.go b/pkg/controller/render/render_controller.go index ac3cb9ee23..400cf8a925 100644 --- a/pkg/controller/render/render_controller.go +++ b/pkg/controller/render/render_controller.go @@ -526,7 +526,7 @@ func (ctrl *Controller) syncGeneratedMachineConfig(pool *mcfgv1.MachineConfigPoo func generateRenderedMachineConfig(pool *mcfgv1.MachineConfigPool, configs []*mcfgv1.MachineConfig, cconfig *mcfgv1.ControllerConfig) (*mcfgv1.MachineConfig, error) { // Before merging all MCs for a specific pool, let's make sure each contains a valid Ignition Config for _, config := range configs { - rpt := validate.ValidateWithoutSource(reflect.ValueOf(config.Spec.Config.Ignition)) + rpt := validate.ValidateWithoutSource(reflect.ValueOf(config.Spec.Config)) if rpt.IsFatal() { return nil, fmt.Errorf("machine config: %v contains invalid ignition config: %v", config.ObjectMeta.Name, rpt) } diff --git a/pkg/controller/render/render_controller_test.go b/pkg/controller/render/render_controller_test.go index ddf981f1f9..8436db9693 100644 --- a/pkg/controller/render/render_controller_test.go +++ b/pkg/controller/render/render_controller_test.go @@ -59,7 +59,7 @@ func newMachineConfigPool(name string, selector *metav1.LabelSelector, currentMa ObjectMeta: metav1.ObjectMeta{Name: name, UID: types.UID(utilrand.String(5))}, Spec: mcfgv1.MachineConfigPoolSpec{ MachineConfigSelector: selector, - Configuration: mcfgv1.MachineConfigPoolStatusConfiguration{ObjectReference: corev1.ObjectReference{Name: currentMachineConfig}}, + Configuration: mcfgv1.MachineConfigPoolStatusConfiguration{ObjectReference: corev1.ObjectReference{Name: currentMachineConfig}}, }, Status: mcfgv1.MachineConfigPoolStatus{ Configuration: mcfgv1.MachineConfigPoolStatusConfiguration{ObjectReference: corev1.ObjectReference{Name: currentMachineConfig}}, @@ -296,11 +296,13 @@ func TestIgnValidationGenerateRenderedMachineConfig(t *testing.T) { mcp := newMachineConfigPool("test-cluster-master", metav1.AddLabelToSelector(&metav1.LabelSelector{}, "node-role", "master"), "") files := []ignv2_2types.File{{ Node: ignv2_2types.Node{ - Path: "/dummy/0", + Filesystem: "root", + Path: "/dummy/0", }, }, { Node: ignv2_2types.Node{ - Path: "/dummy/1", + Filesystem: "root", + Path: "/dummy/1", }, }} mcs := []*mcfgv1.MachineConfig{ @@ -326,11 +328,13 @@ func TestUpdatesGeneratedMachineConfig(t *testing.T) { mcp := newMachineConfigPool("test-cluster-master", metav1.AddLabelToSelector(&metav1.LabelSelector{}, "node-role", "master"), "") files := []ignv2_2types.File{{ Node: ignv2_2types.Node{ - Path: "/dummy/0", + Filesystem: "root", + Path: "/dummy/0", }, }, { Node: ignv2_2types.Node{ - Path: "/dummy/1", + Filesystem: "root", + Path: "/dummy/1", }, }} mcs := []*mcfgv1.MachineConfig{ @@ -390,11 +394,13 @@ func TestDoNothing(t *testing.T) { mcp := newMachineConfigPool("test-cluster-master", metav1.AddLabelToSelector(&metav1.LabelSelector{}, "node-role", "master"), "") files := []ignv2_2types.File{{ Node: ignv2_2types.Node{ - Path: "/dummy/0", + Filesystem: "root", + Path: "/dummy/0", }, }, { Node: ignv2_2types.Node{ - Path: "/dummy/1", + Filesystem: "root", + Path: "/dummy/1", }, }} mcs := []*mcfgv1.MachineConfig{ diff --git a/test/e2e/mcd_test.go b/test/e2e/mcd_test.go index ccf96bc5cb..0683853eff 100644 --- a/test/e2e/mcd_test.go +++ b/test/e2e/mcd_test.go @@ -1,19 +1,19 @@ package e2e_test import ( - "github.com/pkg/errors" "encoding/json" "fmt" + "github.com/pkg/errors" "os/exec" "strings" "testing" "time" ignv2_2types "github.com/coreos/ignition/config/v2_2/types" - "github.com/stretchr/testify/assert" mcv1 "github.com/openshift/machine-config-operator/pkg/apis/machineconfiguration.openshift.io/v1" "github.com/openshift/machine-config-operator/pkg/daemon/constants" "github.com/openshift/machine-config-operator/test/e2e/framework" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -334,8 +334,16 @@ func TestReconcileAfterBadMC(t *testing.T) { cs := framework.NewClientSet("") bumpPoolMaxUnavailableTo(t, cs, 3) - // create a bad MC w/o a filesystem field which is going to fail reconciling - mcadd := createMCToAddFile("add-a-file", "/etc/mytestconfs", "test", "") + // create a MC that contains a valid ignition config but is not reconcilable + mcadd := createMCToAddFile("add-a-file", "/etc/mytestconfs", "test", "root") + mcadd.Spec.Config.Networkd = ignv2_2types.Networkd{ + Units: []ignv2_2types.Networkdunit{ + ignv2_2types.Networkdunit{ + Name: "test.network", + Contents: "test contents", + }, + }, + } // grab the initial machineconfig used by the worker pool // this MC is gonna be the one which is going to be reapplied once the bad MC is deleted