Skip to content
Merged
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
3 changes: 3 additions & 0 deletions data/data/install.openshift.io_installconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ spec:
- ImageRegistry
- OperatorLifecycleManager
- CloudCredential
- Ingress
- CloudControllerManager
type: string
type: array
baselineCapabilitySet:
Expand All @@ -94,6 +96,7 @@ spec:
- v4.13
- v4.14
- v4.15
- v4.16
- vCurrent
type: string
type: object
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ require (
github.com/google/go-cmp v0.6.0
github.com/google/uuid v1.6.0
github.com/googleapis/gax-go/v2 v2.12.1
github.com/gophercloud/gophercloud v1.6.0
github.com/gophercloud/utils v0.0.0-20230523080330-de873b9cf00d
github.com/gophercloud/gophercloud v1.7.0
github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56
github.com/h2non/filetype v1.0.12
github.com/hashicorp/go-multierror v1.1.1
github.com/hashicorp/go-version v1.6.0
Expand All @@ -59,7 +59,7 @@ require (
github.com/microsoftgraph/msgraph-sdk-go v0.47.0
github.com/nutanix-cloud-native/prism-go-client v0.2.1-0.20220804130801-c8a253627c64
github.com/onsi/gomega v1.31.1
github.com/openshift/api v0.0.0-20240207185517-ae973131190e
github.com/openshift/api v0.0.0-20240301093301-ce10821dc999
github.com/openshift/assisted-image-service v0.0.0-20231130154654-56d03d1503e2
github.com/openshift/assisted-service/api v0.0.0
github.com/openshift/assisted-service/client v0.0.0
Expand Down Expand Up @@ -113,7 +113,7 @@ require (
sigs.k8s.io/cluster-api-provider-azure v1.13.0
sigs.k8s.io/cluster-api-provider-gcp v1.5.0
sigs.k8s.io/cluster-api-provider-ibmcloud v0.7.0
sigs.k8s.io/cluster-api-provider-openstack v0.8.0
sigs.k8s.io/cluster-api-provider-openstack v0.9.0
sigs.k8s.io/cluster-api-provider-vsphere v1.9.0
sigs.k8s.io/controller-runtime v0.16.5
sigs.k8s.io/controller-tools v0.12.0
Expand Down
16 changes: 8 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -545,10 +545,10 @@ github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2c
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
github.com/gophercloud/gophercloud v1.3.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gophercloud/gophercloud v1.6.0 h1:JwJN1bauRnWPba5ueWs9IluONHteXPWjjK+MvfM4krY=
github.com/gophercloud/gophercloud v1.6.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gophercloud/utils v0.0.0-20230523080330-de873b9cf00d h1:6Gvua77nKyAiZQpu0N3AsamGu1L6Mlnhp3tAtDcqwvc=
github.com/gophercloud/utils v0.0.0-20230523080330-de873b9cf00d/go.mod h1:VSalo4adEk+3sNkmVJLnhHoOyOYYS8sTWLG4mv5BKto=
github.com/gophercloud/gophercloud v1.7.0 h1:fyJGKh0LBvIZKLvBWvQdIgkaV5yTM3Jh9EYUh+UNCAs=
github.com/gophercloud/gophercloud v1.7.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 h1:sH7xkTfYzxIEgzq1tDHIMKRh1vThOEOGNsettdEeLbE=
github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56/go.mod h1:VSalo4adEk+3sNkmVJLnhHoOyOYYS8sTWLG4mv5BKto=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
Expand Down Expand Up @@ -774,8 +774,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8=
github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
github.com/openshift/api v0.0.0-20240207185517-ae973131190e h1:Iv005XrzYnrIl8ptQFI32t2IBgMOx1kkBrqWO3pCp+E=
github.com/openshift/api v0.0.0-20240207185517-ae973131190e/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4=
github.com/openshift/api v0.0.0-20240301093301-ce10821dc999 h1:+S998xHiJApsJZjRAO8wyedU9GfqFd8mtwWly6LqHDo=
github.com/openshift/api v0.0.0-20240301093301-ce10821dc999/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4=
github.com/openshift/assisted-image-service v0.0.0-20231130154654-56d03d1503e2 h1:ndmguZuF+ON5ytIaQ4KUAFIlhL3GoCCmDVQlDKNFGGk=
github.com/openshift/assisted-image-service v0.0.0-20231130154654-56d03d1503e2/go.mod h1:w4GeUpl8BnEzzzIqFAe06muoWJc54XQ4rDVdUKAJns8=
github.com/openshift/assisted-service/api v0.0.0-20230831114549-1922eda29cf8 h1:+fZLKbycDo4JeLwPGVSAgf2XPaJGLM341l9ZfrrlxG0=
Expand Down Expand Up @@ -1478,8 +1478,8 @@ sigs.k8s.io/cluster-api-provider-gcp v1.5.0 h1:vVInLvSlBJo83sdlMbk1aYKg8n6GI8Nrh
sigs.k8s.io/cluster-api-provider-gcp v1.5.0/go.mod h1:0voqKcKXrLKBh2SRkjhwGDoKrI+zScyjM2dkJW7G/No=
sigs.k8s.io/cluster-api-provider-ibmcloud v0.8.0-alpha.0.0.20240305062327-b986999c3b0e h1:k/3yzHVdlcT3DAgLuTqgqXDqh4ULdsvDkzuQ0jjRhZs=
sigs.k8s.io/cluster-api-provider-ibmcloud v0.8.0-alpha.0.0.20240305062327-b986999c3b0e/go.mod h1:oPFF8w4nX+taDptdC38lyHhonMy8OSeCZSkRQtscWJw=
sigs.k8s.io/cluster-api-provider-openstack v0.8.0 h1:8CLIu0mZ46tZfs2qbITVaQgWXJTlM8sJ6hjvJpS2mvc=
sigs.k8s.io/cluster-api-provider-openstack v0.8.0/go.mod h1:XLdWHa2JUHZ5HfxZDblV/KZxCN7gWnrl7Uga3ndfV+Q=
sigs.k8s.io/cluster-api-provider-openstack v0.9.0 h1:ScwZIfT1kI88+qMzeO7ppMP9DvEzrfLHuYPg2p1mcho=
sigs.k8s.io/cluster-api-provider-openstack v0.9.0/go.mod h1:ecR9lx4XbOr3Gg2CGNgM3wguuV6l31Nd5rUccE+xjKs=
sigs.k8s.io/cluster-api-provider-vsphere v1.9.0 h1:tMGgDmUr2Q4/INM0cn1jZyxPxYGe8wWrk9l+8hrwPSw=
sigs.k8s.io/cluster-api-provider-vsphere v1.9.0/go.mod h1:sovPL5JCGYBZdDiAKJNg2RTYp6SF+eLXhAqfUUf6mSY=
sigs.k8s.io/controller-runtime v0.16.1-0.20231024080022-f1c5dd3851ce h1:zQZV2UuXjQgWF4m/fZRgvA/5lm9jqWl7cfxoNMMl4yA=
Expand Down
12 changes: 12 additions & 0 deletions pkg/types/validation/installconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
azurevalidation "github.com/openshift/installer/pkg/types/azure/validation"
"github.com/openshift/installer/pkg/types/baremetal"
baremetalvalidation "github.com/openshift/installer/pkg/types/baremetal/validation"
"github.com/openshift/installer/pkg/types/external"
"github.com/openshift/installer/pkg/types/featuregates"
"github.com/openshift/installer/pkg/types/gcp"
gcpvalidation "github.com/openshift/installer/pkg/types/gcp/validation"
Expand Down Expand Up @@ -218,6 +219,17 @@ func ValidateInstallConfig(c *types.InstallConfig, usingAgentMethod bool) field.
"disabling CloudCredential capability available only for baremetal platforms"))
}
}

if !enabledCaps.Has(configv1.ClusterVersionCapabilityCloudControllerManager) {
if c.None == nil && c.BareMetal == nil && c.External == nil {
allErrs = append(allErrs, field.Invalid(field.NewPath("capabilities"), c.Capabilities,
"disabling CloudControllerManager is only supported on the Baremetal, None, or External platform with cloudControllerManager value none"))
}
if c.External != nil && c.External.CloudControllerManager == external.CloudControllerManagerTypeExternal {
allErrs = append(allErrs, field.Invalid(field.NewPath("capabilities"), c.Capabilities,
"disabling CloudControllerManager on External platform supported only with cloudControllerManager value none"))
}
}
}

allErrs = append(allErrs, ValidateFeatureSet(c)...)
Expand Down
91 changes: 86 additions & 5 deletions pkg/types/validation/installconfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/openshift/installer/pkg/types/aws"
"github.com/openshift/installer/pkg/types/azure"
"github.com/openshift/installer/pkg/types/baremetal"
"github.com/openshift/installer/pkg/types/external"
"github.com/openshift/installer/pkg/types/gcp"
"github.com/openshift/installer/pkg/types/ibmcloud"
"github.com/openshift/installer/pkg/types/libvirt"
Expand Down Expand Up @@ -1550,7 +1551,7 @@ func TestValidateInstallConfig(t *testing.T) {
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Capabilities = &types.Capabilities{BaselineCapabilitySet: "v4.11"}
c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential)
c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager)
return c
}(),
},
Expand Down Expand Up @@ -1597,7 +1598,7 @@ func TestValidateInstallConfig(t *testing.T) {
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Capabilities = &types.Capabilities{BaselineCapabilitySet: "v4.11"}
c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityOpenShiftSamples)
c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityOpenShiftSamples, configv1.ClusterVersionCapabilityCloudControllerManager)
return c
}(),
},
Expand Down Expand Up @@ -2253,7 +2254,7 @@ func TestValidateInstallConfig(t *testing.T) {
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
}
c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential)
c.Capabilities.AdditionalEnabledCapabilities = append(c.Capabilities.AdditionalEnabledCapabilities, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager)
return c
}(),
},
Expand All @@ -2263,7 +2264,7 @@ func TestValidateInstallConfig(t *testing.T) {
c := validInstallConfig()
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential},
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager},
}
return c
}(),
Expand All @@ -2274,7 +2275,7 @@ func TestValidateInstallConfig(t *testing.T) {
c := validInstallConfig()
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential},
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityMachineAPI, configv1.ClusterVersionCapabilityCloudCredential, configv1.ClusterVersionCapabilityCloudControllerManager},
}
return c
}(),
Expand Down Expand Up @@ -2338,6 +2339,86 @@ func TestValidateInstallConfig(t *testing.T) {
return c
}(),
},
{
name: "CloudController can't be disabled on cloud",
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
}
return c
}(),
expectedError: "disabling CloudControllerManager is only supported on the Baremetal, None, or External platform with cloudControllerManager value none",
},
{
name: "valid disabled CloudController configuration none platform",
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Platform.AWS = nil
c.Platform.None = &none.Platform{}
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
}
return c
}(),
},
{
name: "valid disabled CloudController configuration platform baremetal",
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Platform.AWS = nil
c.Platform.BareMetal = validBareMetalPlatform()
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityBaremetal, configv1.ClusterVersionCapabilityMachineAPI},
}
return c
}(),
},
{
name: "valid disabled CloudController configuration platform External",
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Platform.AWS = nil
c.Platform.External = &external.Platform{}
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityCloudCredential},
}
return c
}(),
},
{
name: "valid disabled CloudController configuration platform External 2",
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Platform.AWS = nil
c.Platform.External = &external.Platform{
CloudControllerManager: external.CloudControllerManagerTypeNone,
}
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityCloudCredential},
}
return c
}(),
},
{
name: "invalid disabled CloudController configuration platform External 2",
installConfig: func() *types.InstallConfig {
c := validInstallConfig()
c.Platform.AWS = nil
c.Platform.External = &external.Platform{
CloudControllerManager: external.CloudControllerManagerTypeExternal,
}
c.Capabilities = &types.Capabilities{
BaselineCapabilitySet: configv1.ClusterVersionCapabilitySetNone,
AdditionalEnabledCapabilities: []configv1.ClusterVersionCapability{configv1.ClusterVersionCapabilityCloudCredential},
}
return c
}(),
expectedError: "disabling CloudControllerManager on External platform supported only with cloudControllerManager value none",
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading