Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ require (

replace (
github.com/InVisionApp/go-health => github.com/InVisionApp/go-health v1.1.7-0.20190926150048-b5cab38233bb
github.com/coreos/ign-converter => github.com/LorbusChris/ign-converter v0.0.0-20200701232648-56880ed0a25d
github.com/go-log/log => github.com/go-log/log v0.1.1-0.20181211034820-a514cf01a3eb
github.com/godbus/dbus => github.com/godbus/dbus v0.0.0-20190623212516-8a1682060722
github.com/opencontainers/runtime-spec => github.com/opencontainers/runtime-spec v0.1.2-0.20190408193819-a1b50f621a48
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ github.com/InVisionApp/go-health v1.1.7-0.20190926150048-b5cab38233bb h1:hWMXKLe
github.com/InVisionApp/go-health v1.1.7-0.20190926150048-b5cab38233bb/go.mod h1:l1F5lzgPxAQwAPIrj5HJT+pWj9gfX1uMFWM/Y2gCHcU=
github.com/InVisionApp/go-logger v1.0.1 h1:WFL19PViM1mHUmUWfsv5zMo379KSWj2MRmBlzMFDRiE=
github.com/InVisionApp/go-logger v1.0.1/go.mod h1:+cGTDSn+P8105aZkeOfIhdd7vFO5X1afUHcjvanY0L8=
github.com/LorbusChris/ign-converter v0.0.0-20200701232648-56880ed0a25d h1:mexPxjDu43XhrPAxXjvRm0Oe3WLkswINjXS7JPi5JMU=
github.com/LorbusChris/ign-converter v0.0.0-20200701232648-56880ed0a25d/go.mod h1:LNu0WTt8iVH/WJH15R/SjZw7AdyY2qAyf9ILZTCBvho=
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU=
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=
Expand Down Expand Up @@ -114,8 +116,6 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28=
github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
github.com/coreos/ign-converter v0.0.0-20200629171308-e40a44f244c5 h1:rBga8xIJ7MzGbTfruI8Kfxu1X3FlIquMRuW9yLsW5Mc=
github.com/coreos/ign-converter v0.0.0-20200629171308-e40a44f244c5/go.mod h1:LNu0WTt8iVH/WJH15R/SjZw7AdyY2qAyf9ILZTCBvho=
github.com/coreos/ignition v0.33.0 h1:rYJoGv5v/5rCJAzyMaE9gU8pn7w7pv0M4rDzHvDK6T4=
github.com/coreos/ignition v0.33.0/go.mod h1:WJQapxzEn9DE0ryxsGvm8QnBajm/XsS/PkrDqSpz+bA=
github.com/coreos/ignition v0.35.0 h1:UFodoYq1mOPrbEjtxIsZbThcDyQwAI1owczRDqWmKkQ=
Expand Down
24 changes: 15 additions & 9 deletions lib/resourceapply/machineconfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,24 @@ import (
"fmt"
"testing"

igntypes "github.com/coreos/ignition/config/v2_2/types"
igntypes "github.com/coreos/ignition/v2/config/v3_1/types"
"github.com/davecgh/go-spew/spew"
mcfgv1 "github.com/openshift/machine-config-operator/pkg/apis/machineconfiguration.openshift.io/v1"
"github.com/openshift/machine-config-operator/pkg/generated/clientset/versioned/fake"
"github.com/openshift/machine-config-operator/test/helpers"
"k8s.io/apimachinery/pkg/api/equality"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/diff"
clienttesting "k8s.io/client-go/testing"

mcfgv1 "github.com/openshift/machine-config-operator/pkg/apis/machineconfiguration.openshift.io/v1"
"github.com/openshift/machine-config-operator/pkg/generated/clientset/versioned/fake"
"github.com/openshift/machine-config-operator/test/helpers"
)

// Golang :cry:
func strToPtr(s string) *string {
return &s
}

func TestApplyMachineConfig(t *testing.T) {
tests := []struct {
existing []runtime.Object
Expand Down Expand Up @@ -180,7 +186,7 @@ func TestApplyMachineConfig(t *testing.T) {
Raw: helpers.MarshalOrDie(&igntypes.Config{
Passwd: igntypes.Passwd{
Users: []igntypes.PasswdUser{{
HomeDir: "/home/dummy",
HomeDir: strToPtr("/home/dummy"),
}},
},
}),
Expand All @@ -206,7 +212,7 @@ func TestApplyMachineConfig(t *testing.T) {
Raw: helpers.MarshalOrDie(&igntypes.Config{
Passwd: igntypes.Passwd{
Users: []igntypes.PasswdUser{{
HomeDir: "/home/dummy",
HomeDir: strToPtr("/home/dummy"),
}},
},
}),
Expand All @@ -227,7 +233,7 @@ func TestApplyMachineConfig(t *testing.T) {
Raw: helpers.MarshalOrDie(&igntypes.Config{
Passwd: igntypes.Passwd{
Users: []igntypes.PasswdUser{{
HomeDir: "/home/dummy-prev",
HomeDir: strToPtr("/home/dummy-prev"),
}},
},
}),
Expand All @@ -242,7 +248,7 @@ func TestApplyMachineConfig(t *testing.T) {
Raw: helpers.MarshalOrDie(&igntypes.Config{
Passwd: igntypes.Passwd{
Users: []igntypes.PasswdUser{{
HomeDir: "/home/dummy",
HomeDir: strToPtr("/home/dummy"),
}},
},
}),
Expand All @@ -268,7 +274,7 @@ func TestApplyMachineConfig(t *testing.T) {
Raw: helpers.MarshalOrDie(&igntypes.Config{
Passwd: igntypes.Passwd{
Users: []igntypes.PasswdUser{{
HomeDir: "/home/dummy",
HomeDir: strToPtr("/home/dummy"),
}},
},
}),
Expand Down
4 changes: 2 additions & 2 deletions pkg/controller/bootstrap/bootstrap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"strings"
"testing"

igntypes "github.com/coreos/ignition/config/v2_2/types"
igntypes "github.com/coreos/ignition/v2/config/v3_1/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/vincent-petithory/dataurl"
Expand Down Expand Up @@ -159,7 +159,7 @@ func TestBootstrapRun(t *testing.T) {
}
}
require.NotNil(t, registriesConfig)
dataURL, err := dataurl.DecodeString(registriesConfig.Contents.Source)
dataURL, err := dataurl.DecodeString(*registriesConfig.Contents.Source)
require.NoError(t, err)
// Only a minimal presence check; more comprehensive tests that the contents correspond to the ICSP semantics are
// maintained in pkg/controller/continer-runtime-config.
Expand Down
83 changes: 42 additions & 41 deletions pkg/controller/common/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
fcctbase "github.com/coreos/fcct/base/v0_1"
"github.com/coreos/ign-converter/translate/v23tov30"
"github.com/coreos/ign-converter/translate/v31tov22"
ign2error "github.com/coreos/ignition/config/shared/errors"
ign2 "github.com/coreos/ignition/config/v2_2"
ign2types "github.com/coreos/ignition/config/v2_2/types"
ign2_3 "github.com/coreos/ignition/config/v2_3"
Expand All @@ -33,6 +32,11 @@ import (
mcfgclientset "github.com/openshift/machine-config-operator/pkg/generated/clientset/versioned"
)

// StrToPtr is a helper function to return a pointer to a string
func StrToPtr(s string) *string {
return &s
}

// MergeMachineConfigs combines multiple machineconfig objects into one object.
// It sorts all the configs in increasing order of their name.
// It uses the Ignition config from first object as base and appends all the rest.
Expand All @@ -46,11 +50,11 @@ func MergeMachineConfigs(configs []*mcfgv1.MachineConfig, osImageURL string) (*m

var fips bool
var kernelType string
var outIgn ign2types.Config
var outIgn ign3types.Config
var err error

if configs[0].Spec.Config.Raw == nil {
outIgn = ign2types.Config{}
outIgn = ign3types.Config{}
} else {
outIgn, err = IgnParseWrapper(configs[0].Spec.Config.Raw)
if err != nil {
Expand All @@ -64,16 +68,16 @@ func MergeMachineConfigs(configs []*mcfgv1.MachineConfig, osImageURL string) (*m
fips = true
}

var appendIgn ign2types.Config
var appendIgn ign3types.Config
if configs[idx].Spec.Config.Raw == nil {
appendIgn = ign2types.Config{}
appendIgn = ign3types.Config{}
} else {
appendIgn, err = IgnParseWrapper(configs[idx].Spec.Config.Raw)
if err != nil {
return nil, err
}
}
outIgn = ign2.Append(outIgn, appendIgn)
outIgn = ign3.Merge(outIgn, appendIgn)
}
rawOutIgn, err := json.Marshal(outIgn)
if err != nil {
Expand Down Expand Up @@ -115,10 +119,10 @@ func MergeMachineConfigs(configs []*mcfgv1.MachineConfig, osImageURL string) (*m
}

// NewIgnConfig returns an empty ignition config with version set as latest version
func NewIgnConfig() ign2types.Config {
return ign2types.Config{
Ignition: ign2types.Ignition{
Version: ign2types.MaxVersion.String(),
func NewIgnConfig() ign3types.Config {
return ign3types.Config{
Ignition: ign3types.Ignition{
Version: ign3types.MaxVersion.String(),
},
}
}
Expand All @@ -130,16 +134,16 @@ func WriteTerminationError(err error) {
glog.Fatal(msg)
}

// ConvertRawExtIgnition2to3 converts a RawExtension containing Ignition spec v2.2 config
// into a RawExtension containing Ignition spec v3.1 config
func ConvertRawExtIgnition2to3(inRawExtIgnV2 *runtime.RawExtension) (runtime.RawExtension, error) {
ignCfg, rpt, err := ign2.Parse(inRawExtIgnV2.Raw)
// ConvertRawExtIgnition3to2 converts a RawExtension containing Ignition spec v3.1 config
// into a RawExtension containing Ignition spec v2.2 config
func ConvertRawExtIgnition3to2(inRawExtIgnV3 *runtime.RawExtension) (runtime.RawExtension, error) {
ignCfg, rpt, err := ign3.Parse(inRawExtIgnV3.Raw)
if err != nil || rpt.IsFatal() {
return runtime.RawExtension{}, errors.Errorf("parsing Ignition config spec v2.2 failed with error: %v\nReport: %v", err, rpt)
return runtime.RawExtension{}, errors.Errorf("parsing Ignition config spec v3.1 failed with error: %v\nReport: %v", err, rpt)
}
converted3, err := convertIgnition2to3(ignCfg)
converted3, err := convertIgnition3to2(ignCfg)
if err != nil {
return runtime.RawExtension{}, errors.Errorf("failed to convert config from spec v2.2 to v3.1: %v", err)
return runtime.RawExtension{}, errors.Errorf("failed to convert config from spec v3.1 to v2.2: %v", err)
}

outIgnV3, err := json.Marshal(converted3)
Expand Down Expand Up @@ -233,42 +237,39 @@ func ValidateMachineConfig(cfg mcfgv1.MachineConfigSpec) error {
// IgnParseWrapper parses rawIgn for v2.2, v3.1 and v3.0 Ignition configs and returns
// a spec v2.2 or an error
// This wrapper is necessary since each version uses a different parser.
func IgnParseWrapper(rawIgn []byte) (ign2types.Config, error) {
ignCfg, rpt, err := ign2.Parse(rawIgn)
func IgnParseWrapper(rawIgn []byte) (ign3types.Config, error) {
ignCfg, rpt, err := ign3.Parse(rawIgn)
if err == nil && !rpt.IsFatal() {
// this is an ign spec v2.2 config that was successfully parsed
// this is an ign spec v3.1 config that was successfully parsed
return ignCfg, nil
}
if err.Error() == ign2error.ErrUnknownVersion.Error() {
// check to see if this is ign config spec v3.1
ignCfgV3, rptV3, errV3 := ign3.Parse(rawIgn)
if errV3 == nil && !rptV3.IsFatal() {
convertedIgnV2, err := convertIgnition3to2(ignCfgV3)
if err != nil {
return ign2types.Config{}, errors.Errorf("failed to convert Ignition config spec v3 to v2: %v", err)
}
return convertedIgnV2, nil

} else if errV3.Error() == ign3error.ErrUnknownVersion.Error() {
// unlike spec v2.x parsers, v3.x parsers aren't chained by default,
// so try with spec v3.0 parser as well
ignCfgV3_0, rptV3_0, errV3_0 := ign3_0.Parse(rawIgn)
if errV3_0 == nil && !rptV3_0.IsFatal() {
convertedIgnV2, err := convertIgnition3to2(translate3.Translate(ignCfgV3_0))
// unlike spec v2.x parsers, v3.x parsers aren't chained by default,
if err.Error() == ign3error.ErrUnknownVersion.Error() {
// check if this is ign config spec v3.0
ignCfgV3_0, rptV3_0, errV3_0 := ign3_0.Parse(rawIgn)
if errV3_0 == nil && !rptV3_0.IsFatal() {
return translate3.Translate(ignCfgV3_0), nil
}
if errV3_0.Error() == ign3error.ErrUnknownVersion.Error() {
// check if this is ign config spec v2.2
ignCfgV2_2, rptV2_2, errV2_2 := ign2.Parse(rawIgn)
if errV2_2 == nil && !rptV2_2.IsFatal() {
// now convert to spec v3.1
convertedIgnV3, err := convertIgnition2to3(ignCfgV2_2)
if err != nil {
return ign2types.Config{}, errors.Errorf("failed to convert Ignition config spec v3 to v2: %v", err)
return ign3types.Config{}, errors.Errorf("failed to convert Ignition config spec v2.2 to v3.1: %v", err)
}

return convertedIgnV2, nil
return convertedIgnV3, nil
}

return ign2types.Config{}, errors.Errorf("parsing Ignition config spec v3.0 failed with error: %v\nReport: %v", errV3_0, rptV3_0)
return ign3types.Config{}, errors.Errorf("parsing Ignition config spec v2.2 failed with error: %v\nReport: %v", errV2_2, rptV2_2)
}

return ign2types.Config{}, errors.Errorf("parsing Ignition config spec v3.1 failed with error: %v\nReport: %v", errV3, rptV3)
return ign3types.Config{}, errors.Errorf("parsing Ignition config spec v3.0 failed with error: %v\nReport: %v", errV3_0, rptV3_0)
}

return ign2types.Config{}, errors.Errorf("parsing Ignition config spec v2 failed with error: %v\nReport: %v", err, rpt)
return ign3types.Config{}, errors.Errorf("parsing Ignition config spec v3.1 failed with error: %v\nReport: %v", err, rpt)
}

// TranspileCoreOSConfigToIgn transpiles Fedora CoreOS config to ignition
Expand Down
18 changes: 10 additions & 8 deletions pkg/controller/common/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,44 +90,46 @@ func TestConvertIgnition3to2(t *testing.T) {

func TestIgnParseWrapper(t *testing.T) {
// Make a new Ign3.1 config
testIgn3Config := ign3types.Config{}
testIgn3Config := NewIgnConfig()
tempUser := ign3types.PasswdUser{Name: "core", SSHAuthorizedKeys: []ign3types.SSHAuthorizedKey{"5678", "abc"}}
testIgn3Config.Passwd.Users = []ign3types.PasswdUser{tempUser}
testIgn3Config.Ignition.Version = "3.1.0"

// Make a Ign2 comp config
testIgn2Config := NewIgnConfig()
testIgn2Config := ign2types.Config{}
tempUser2 := ign2types.PasswdUser{Name: "core", SSHAuthorizedKeys: []ign2types.SSHAuthorizedKey{"5678", "abc"}}
testIgn2Config.Passwd.Users = []ign2types.PasswdUser{tempUser2}
testIgn2Config.Ignition.Version = "2.2.0"

// turn v2.2 config into a raw []byte
rawIgn := helpers.MarshalOrDie(testIgn2Config)
// check that it was parsed successfully
convertedIgn, err := IgnParseWrapper(rawIgn)
require.Nil(t, err)
assert.Equal(t, testIgn2Config, convertedIgn)
assert.Equal(t, testIgn3Config, convertedIgn)

// turn v3.1 config into a raw []byte
rawIgn = helpers.MarshalOrDie(testIgn3Config)
// check that it was parsed successfully
convertedIgn, err = IgnParseWrapper(rawIgn)
require.Nil(t, err)
assert.Equal(t, testIgn2Config, convertedIgn)
assert.Equal(t, testIgn3Config, convertedIgn)

// Make a valid Ign 3.0 cfg
testIgn3Config.Ignition.Version = "3.0.0"
testIgn3_0Config := testIgn3Config
testIgn3_0Config.Ignition.Version = "3.0.0"
// turn it into a raw []byte
rawIgn = helpers.MarshalOrDie(testIgn3Config)
rawIgn = helpers.MarshalOrDie(testIgn3_0Config)
// check that it was parsed successfully
convertedIgn, err = IgnParseWrapper(rawIgn)
require.Nil(t, err)
assert.Equal(t, testIgn2Config, convertedIgn)
assert.Equal(t, testIgn3Config, convertedIgn)

// Make a bad Ign3 cfg
testIgn3Config.Ignition.Version = "21.0.0"
rawIgn = helpers.MarshalOrDie(testIgn3Config)
// check that it failed since this is an invalid cfg
convertedIgn, err = IgnParseWrapper(rawIgn)
require.NotNil(t, err)
assert.Equal(t, ign2types.Config{}, convertedIgn)
assert.Equal(t, ign3types.Config{}, convertedIgn)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"time"

"github.com/clarketm/json"
igntypes "github.com/coreos/ignition/config/v2_2/types"
igntypes "github.com/coreos/ignition/v2/config/v3_1/types"
"github.com/golang/glog"
apicfgv1 "github.com/openshift/api/config/v1"
apioperatorsv1alpha1 "github.com/openshift/api/operator/v1alpha1"
Expand Down Expand Up @@ -597,7 +597,7 @@ func (ctrl *Controller) syncContainerRuntimeConfig(key string) error {
// mergeConfigChanges retrieves the original/default config data from the templates, decodes it and merges in the changes given by the Custom Resource.
// It then encodes the new data and returns it.
func (ctrl *Controller) mergeConfigChanges(origFile *igntypes.File, cfg *mcfgv1.ContainerRuntimeConfig, update updateConfigFunc) ([]byte, error) {
dataURL, err := dataurl.DecodeString(origFile.Contents.Source)
dataURL, err := dataurl.DecodeString(*origFile.Contents.Source)
if err != nil {
return nil, ctrl.syncStatusOnly(cfg, err, "could not decode original Container Runtime config: %v", err)
}
Expand Down Expand Up @@ -755,7 +755,7 @@ func registriesConfigIgnition(templateDir string, controllerConfig *mcfgv1.Contr
}

if insecureRegs != nil || blockedRegs != nil || len(icspRules) != 0 {
dataURL, err := dataurl.DecodeString(originalRegistriesIgn.Contents.Source)
dataURL, err := dataurl.DecodeString(*originalRegistriesIgn.Contents.Source)
if err != nil {
return nil, fmt.Errorf("could not decode original registries config: %v", err)
}
Expand All @@ -765,7 +765,7 @@ func registriesConfigIgnition(templateDir string, controllerConfig *mcfgv1.Contr
}
}
if blockedRegs != nil || allowedRegs != nil {
dataURL, err := dataurl.DecodeString(originalPolicyIgn.Contents.Source)
dataURL, err := dataurl.DecodeString(*originalPolicyIgn.Contents.Source)
if err != nil {
return nil, fmt.Errorf("could not decode original policy json: %v", err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"

igntypes "github.com/coreos/ignition/config/v2_2/types"
igntypes "github.com/coreos/ignition/v2/config/v3_1/types"
apicfgv1 "github.com/openshift/api/config/v1"
apioperatorsv1alpha1 "github.com/openshift/api/operator/v1alpha1"
fakeconfigv1client "github.com/openshift/client-go/config/clientset/versioned/fake"
Expand Down Expand Up @@ -371,7 +371,7 @@ func verifyRegistriesConfigAndPolicyJSONContents(t *testing.T, mc *mcfgv1.Machin
regfile = ignCfg.Storage.Files[1]
}
assert.Equal(t, registriesConfigPath, regfile.Node.Path)
registriesConf, err := dataurl.DecodeString(regfile.Contents.Source)
registriesConf, err := dataurl.DecodeString(*regfile.Contents.Source)
require.NoError(t, err)
assert.Equal(t, string(expectedRegistriesConf), string(registriesConf.Data))

Expand All @@ -386,7 +386,7 @@ func verifyRegistriesConfigAndPolicyJSONContents(t *testing.T, mc *mcfgv1.Machin
policyfile = ignCfg.Storage.Files[0]
}
assert.Equal(t, policyConfigPath, policyfile.Node.Path)
policyJSON, err := dataurl.DecodeString(policyfile.Contents.Source)
policyJSON, err := dataurl.DecodeString(*policyfile.Contents.Source)
require.NoError(t, err)
assert.Equal(t, string(expectedPolicyJSON), string(policyJSON.Data))
}
Expand Down
Loading