diff --git a/data/data/install.openshift.io_installconfigs.yaml b/data/data/install.openshift.io_installconfigs.yaml index b15350cd13e..81abb69914c 100644 --- a/data/data/install.openshift.io_installconfigs.yaml +++ b/data/data/install.openshift.io_installconfigs.yaml @@ -5001,6 +5001,25 @@ spec: - cidr type: object type: array + networkObservability: + description: |- + NetworkObservability is an optional field that configures network observability installation + during cluster deployment (day-0). + When omitted, network observability will be installed unless this is a SNO cluster. + properties: + installationPolicy: + description: |- + InstallationPolicy controls whether network observability is installed during cluster deployment. + Valid values are "", "InstallAndEnable" and "DoNotInstall". + When set to "", network observability will be installed unless this is a SNO cluster. + When set to "InstallAndEnable", network observability will be installed and enabled. + When set to "DoNotInstall", network observability will not be installed. + enum: + - "" + - InstallAndEnable + - DoNotInstall + type: string + type: object networkType: default: OVNKubernetes description: |- diff --git a/go.mod b/go.mod index 4c5121b52de..8d63cf3c51e 100644 --- a/go.mod +++ b/go.mod @@ -383,3 +383,5 @@ replace ( github.com/nutanix-cloud-native/cluster-api-provider-nutanix => github.com/nutanix-cloud-native/cluster-api-provider-nutanix v1.7.2-0.20251007022949-442bc2ebe286 sigs.k8s.io/cluster-api-provider-azure => github.com/mboersma/cluster-api-provider-azure v0.3.1-0.20251030205607-3161b9cc8d3e ) + +replace github.com/openshift/api v0.0.0-20260318185450-1f2fa3f09f4e => github.com/OlivierCazade/api v0.0.0-20260325001208-9b6df7f19a28 diff --git a/go.sum b/go.sum index da204a88827..5ec35900c7d 100644 --- a/go.sum +++ b/go.sum @@ -163,6 +163,8 @@ github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSC github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= +github.com/OlivierCazade/api v0.0.0-20260325001208-9b6df7f19a28 h1:G2zLQb0xZ4ZgrnHQvYi5B/hUXxfFXdikdYPPjw/nB/0= +github.com/OlivierCazade/api v0.0.0-20260325001208-9b6df7f19a28/go.mod h1:pyVjK0nZ4sRs4fuQVQ4rubsJdahI1PB94LnQ8sGdvxo= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/PaesslerAG/gval v1.0.0 h1:GEKnRwkWDdf9dOmKcNrar9EA1bz1z9DqPIO1+iLzhd8= @@ -888,8 +890,6 @@ github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJw github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/openshift/api v0.0.0-20260318185450-1f2fa3f09f4e h1:n2fW82JRX5B/+eCULWIe06MAhJVaE8fUsvy0A0Gn9n4= -github.com/openshift/api v0.0.0-20260318185450-1f2fa3f09f4e/go.mod h1:pyVjK0nZ4sRs4fuQVQ4rubsJdahI1PB94LnQ8sGdvxo= github.com/openshift/assisted-image-service v0.0.0-20250917153356-4ca9ff81f712 h1:UJVh+I/AWZcOJASGdiLcTXkWB1OYNhS/383DHMcRvCQ= github.com/openshift/assisted-image-service v0.0.0-20250917153356-4ca9ff81f712/go.mod h1:WGdSeSnK0voEWWwA4ar5eApNjGBLmGTpFurEKw/FXJc= github.com/openshift/assisted-service/api v0.0.0-20250922204150-a52b83145bea h1:YhJ9iHKKT5ooAdVr8qq3BdudhTxP/WF0XYDT5gzi1ak= diff --git a/pkg/asset/agent/installconfig_test.go b/pkg/asset/agent/installconfig_test.go index d02e720c270..40a77b858c1 100644 --- a/pkg/asset/agent/installconfig_test.go +++ b/pkg/asset/agent/installconfig_test.go @@ -21,6 +21,13 @@ import ( "github.com/openshift/installer/pkg/types/vsphere" ) +var ( + defaultNetworkObservabilityInstallAndEnable = types.NetworkObservabilityInstallAndEnable + defaultNetworkObservability = &types.NetworkObservability{ + InstallationPolicy: &defaultNetworkObservabilityInstallAndEnable, + } +) + func TestInstallConfigLoad(t *testing.T) { cases := []struct { name string @@ -469,6 +476,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1058,6 +1066,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1145,6 +1154,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1212,6 +1222,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1279,6 +1290,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1346,6 +1358,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1451,6 +1464,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1596,6 +1610,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -1809,6 +1824,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -2056,6 +2072,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -2159,6 +2176,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"c3VwZXItc2VjcmV0Cg==\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", diff --git a/pkg/asset/installconfig/installconfig_test.go b/pkg/asset/installconfig/installconfig_test.go index 692973d1fd8..535b6ff2947 100644 --- a/pkg/asset/installconfig/installconfig_test.go +++ b/pkg/asset/installconfig/installconfig_test.go @@ -18,6 +18,13 @@ import ( "github.com/openshift/installer/pkg/types/none" ) +var ( + defaultNetworkObservabilityInstallAndEnable = types.NetworkObservabilityInstallAndEnable + defaultNetworkObservability = &types.NetworkObservability{ + InstallationPolicy: &defaultNetworkObservabilityInstallAndEnable, + } +) + func TestInstallConfigGenerate_FillsInDefaults(t *testing.T) { sshPublicKey := &sshPublicKey{} baseDomain := &baseDomain{"test-domain", types.ExternalPublishingStrategy} @@ -59,6 +66,7 @@ func TestInstallConfigGenerate_FillsInDefaults(t *testing.T) { HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -126,6 +134,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"authorization value\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -226,6 +235,7 @@ wrong_key: wrong_value HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", @@ -281,6 +291,7 @@ pullSecret: "{\"auths\":{\"example.com\":{\"auth\":\"authorization value\"}}}" HostPrefix: 23, }, }, + NetworkObservability: defaultNetworkObservability, }, ControlPlane: &types.MachinePool{ Name: "master", diff --git a/pkg/asset/manifests/network.go b/pkg/asset/manifests/network.go index b79e7bb4896..8d6c0b232dd 100644 --- a/pkg/asset/manifests/network.go +++ b/pkg/asset/manifests/network.go @@ -70,6 +70,23 @@ func (no *Networking) Generate(_ context.Context, dependencies asset.Parents) er serviceNet = append(serviceNet, sn.String()) } + networkSpec := configv1.NetworkSpec{ + ClusterNetwork: clusterNet, + ServiceNetwork: serviceNet, + NetworkType: netConfig.NetworkType, + // Block all Service.ExternalIPs by default + ExternalIP: &configv1.ExternalIPConfig{ + Policy: &configv1.ExternalIPPolicy{}, + }, + } + + // Set networkObservability from the install config + if netConfig.NetworkObservability != nil && netConfig.NetworkObservability.InstallationPolicy != nil { + networkSpec.NetworkObservability = configv1.NetworkObservabilitySpec{ + InstallationPolicy: (*configv1.NetworkObservabilityInstallationPolicy)(netConfig.NetworkObservability.InstallationPolicy), + } + } + no.Config = &configv1.Network{ TypeMeta: metav1.TypeMeta{ APIVersion: configv1.SchemeGroupVersion.String(), @@ -79,15 +96,7 @@ func (no *Networking) Generate(_ context.Context, dependencies asset.Parents) er Name: "cluster", // not namespaced }, - Spec: configv1.NetworkSpec{ - ClusterNetwork: clusterNet, - ServiceNetwork: serviceNet, - NetworkType: netConfig.NetworkType, - // Block all Service.ExternalIPs by default - ExternalIP: &configv1.ExternalIPConfig{ - Policy: &configv1.ExternalIPPolicy{}, - }, - }, + Spec: networkSpec, } configData, err := yaml.Marshal(no.Config) diff --git a/pkg/types/defaults/installconfig.go b/pkg/types/defaults/installconfig.go index 30684dde13c..41708bb5a5f 100644 --- a/pkg/types/defaults/installconfig.go +++ b/pkg/types/defaults/installconfig.go @@ -58,6 +58,12 @@ func SetInstallConfigDefaults(c *types.InstallConfig) { }, } } + if c.Networking.NetworkObservability == nil { + installationPolicy := types.NetworkObservabilityInstallAndEnable + c.Networking.NetworkObservability = &types.NetworkObservability{ + InstallationPolicy: &installationPolicy, + } + } if c.Publish == "" { c.Publish = types.ExternalPublishingStrategy diff --git a/pkg/types/defaults/installconfig_test.go b/pkg/types/defaults/installconfig_test.go index eaa8fe9a153..2a515eb06e6 100644 --- a/pkg/types/defaults/installconfig_test.go +++ b/pkg/types/defaults/installconfig_test.go @@ -20,6 +20,7 @@ import ( ) func defaultInstallConfig() *types.InstallConfig { + installationPolicy := types.NetworkObservabilityInstallAndEnable return &types.InstallConfig{ AdditionalTrustBundlePolicy: defaultAdditionalTrustBundlePolicy(), Networking: &types.Networking{ @@ -34,6 +35,9 @@ func defaultInstallConfig() *types.InstallConfig { HostPrefix: int32(defaultHostPrefix), }, }, + NetworkObservability: &types.NetworkObservability{ + InstallationPolicy: &installationPolicy, + }, }, ControlPlane: defaultMachinePool("master"), Compute: []types.MachinePool{*defaultMachinePool("worker")}, @@ -285,6 +289,39 @@ func TestSetInstallConfigDefaults(t *testing.T) { return c }(), }, + { + name: "NetworkObservability nil", + config: &types.InstallConfig{ + Networking: &types.Networking{ + NetworkObservability: nil, + }, + }, + expected: func() *types.InstallConfig { + c := defaultInstallConfig() + return c + }(), + }, + { + name: "NetworkObservability DoNotInstall", + config: &types.InstallConfig{ + Networking: &types.Networking{ + NetworkObservability: &types.NetworkObservability{ + InstallationPolicy: func() *types.NetworkObservabilityInstallationPolicy { + p := types.NetworkObservabilityDoNotInstall + return &p + }(), + }, + }, + }, + expected: func() *types.InstallConfig { + c := defaultInstallConfig() + doNotInstall := types.NetworkObservabilityDoNotInstall + c.Networking.NetworkObservability = &types.NetworkObservability{ + InstallationPolicy: &doNotInstall, + } + return c + }(), + }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { diff --git a/pkg/types/installconfig.go b/pkg/types/installconfig.go index 3fca40e8853..5567fcbca93 100644 --- a/pkg/types/installconfig.go +++ b/pkg/types/installconfig.go @@ -426,6 +426,13 @@ type Networking struct { // pod network when NetworkType is set to OVNKubernetes. OVNKubernetesConfig *OVNKubernetesConfig `json:"ovnKubernetesConfig,omitempty"` + // NetworkObservability is an optional field that configures network observability installation + // during cluster deployment (day-0). + // When omitted, network observability will be installed unless this is a SNO cluster. + // + // +optional + NetworkObservability *NetworkObservability `json:"networkObservability,omitempty"` + // Deprecated types, scheduled to be removed // Deprecated way to configure an IP address pool for machines. @@ -681,3 +688,30 @@ var OSImageStreamValues = []OSImageStream{ OSImageStreamRHCOS9, OSImageStreamRHCOS10, } + +// NetworkObservabilityInstallationPolicy is an enumeration of the available network observability installation policies +// Valid values are "", "InstallAndEnable", "DoNotInstall". +// +kubebuilder:validation:Enum="";InstallAndEnable;DoNotInstall +type NetworkObservabilityInstallationPolicy string + +const ( + // NetworkObservabilityNoOpinion means that the user has no opinion and the platform is left + // to choose reasonable defaults. The current default is to install and enable network observability. + // This is subject to change over time. + NetworkObservabilityNoOpinion NetworkObservabilityInstallationPolicy = "" + // NetworkObservabilityInstallAndEnable means that network observability should be installed and enabled during cluster deployment + NetworkObservabilityInstallAndEnable NetworkObservabilityInstallationPolicy = "InstallAndEnable" + // NetworkObservabilityDoNotInstall means that network observability should not be installed + NetworkObservabilityDoNotInstall NetworkObservabilityInstallationPolicy = "DoNotInstall" +) + +// NetworkObservability defines the configuration for network observability installation +type NetworkObservability struct { + // InstallationPolicy controls whether network observability is installed during cluster deployment. + // Valid values are "", "InstallAndEnable" and "DoNotInstall". + // When set to "", network observability will be installed unless this is a SNO cluster. + // When set to "InstallAndEnable", network observability will be installed and enabled. + // When set to "DoNotInstall", network observability will not be installed. + // +optional + InstallationPolicy *NetworkObservabilityInstallationPolicy `json:"installationPolicy,omitempty"` +} diff --git a/pkg/types/zz_generated.deepcopy.go b/pkg/types/zz_generated.deepcopy.go index b32e9eded99..bc50050b15e 100644 --- a/pkg/types/zz_generated.deepcopy.go +++ b/pkg/types/zz_generated.deepcopy.go @@ -626,6 +626,27 @@ func (in MirrorConfig) DeepCopy() MirrorConfig { return *out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkObservability) DeepCopyInto(out *NetworkObservability) { + *out = *in + if in.InstallationPolicy != nil { + in, out := &in.InstallationPolicy, &out.InstallationPolicy + *out = new(NetworkObservabilityInstallationPolicy) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkObservability. +func (in *NetworkObservability) DeepCopy() *NetworkObservability { + if in == nil { + return nil + } + out := new(NetworkObservability) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in @@ -655,6 +676,11 @@ func (in *Networking) DeepCopyInto(out *Networking) { *out = new(OVNKubernetesConfig) (*in).DeepCopyInto(*out) } + if in.NetworkObservability != nil { + in, out := &in.NetworkObservability, &out.NetworkObservability + *out = new(NetworkObservability) + (*in).DeepCopyInto(*out) + } if in.DeprecatedMachineCIDR != nil { in, out := &in.DeprecatedMachineCIDR, &out.DeprecatedMachineCIDR *out = (*in).DeepCopy() diff --git a/vendor/github.com/openshift/api/config/v1/types_network.go b/vendor/github.com/openshift/api/config/v1/types_network.go index fb8ed2fff74..8697dfee4f4 100644 --- a/vendor/github.com/openshift/api/config/v1/types_network.go +++ b/vendor/github.com/openshift/api/config/v1/types_network.go @@ -86,6 +86,13 @@ type NetworkSpec struct { // // +optional NetworkDiagnostics NetworkDiagnostics `json:"networkDiagnostics"` + + // networkObservability is an optional field that configures network observability installation + // during cluster deployment (day-0). + // When omitted, network observability will be installed unless this is a SNO cluster. + // +openshift:enable:FeatureGate=NetworkObservabilityInstall + // +optional + NetworkObservability NetworkObservabilitySpec `json:"networkObservability,omitempty,omitzero"` } // NetworkStatus is the current network configuration. @@ -304,3 +311,31 @@ type NetworkDiagnosticsTargetPlacement struct { // +listType=atomic Tolerations []corev1.Toleration `json:"tolerations"` } + +// NetworkObservabilityInstallationPolicy is an enumeration of the available network observability installation policies +// Valid values are "", "InstallAndEnable", "DoNotInstall". +// +kubebuilder:validation:Enum="";InstallAndEnable;DoNotInstall +type NetworkObservabilityInstallationPolicy string + +const ( + // NetworkObservabilityNoOpinion means that the user has no opinion and the platform is left + // to choose reasonable defaults. The current default is to install and enable network observability. + // This is subject to change over time. + NetworkObservabilityNoOpinion NetworkObservabilityInstallationPolicy = "" + // NetworkObservabilityInstallAndEnable means that network observability should be installed and enabled during cluster deployment + NetworkObservabilityInstallAndEnable NetworkObservabilityInstallationPolicy = "InstallAndEnable" + // NetworkObservabilityDoNotInstall means that network observability should not be installed + NetworkObservabilityDoNotInstall NetworkObservabilityInstallationPolicy = "DoNotInstall" +) + +// NetworkObservabilitySpec defines the configuration for network observability installation +// +kubebuilder:validation:MinProperties=1 +type NetworkObservabilitySpec struct { + // installationPolicy controls whether network observability is installed during cluster deployment. + // Valid values are "", "InstallAndEnable" and "DoNotInstall". + // When set to "", network observability will be installed unless this is a SNO cluster. + // When set to "InstallAndEnable", network observability will be installed and enabled. + // When set to "DoNotInstall", network observability will not be installed. + // +optional + InstallationPolicy *NetworkObservabilityInstallationPolicy `json:"installationPolicy,omitempty"` +} diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.deepcopy.go b/vendor/github.com/openshift/api/config/v1/zz_generated.deepcopy.go index 30b85b78e96..388c714c67b 100644 --- a/vendor/github.com/openshift/api/config/v1/zz_generated.deepcopy.go +++ b/vendor/github.com/openshift/api/config/v1/zz_generated.deepcopy.go @@ -4283,6 +4283,27 @@ func (in *NetworkMigration) DeepCopy() *NetworkMigration { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkObservabilitySpec) DeepCopyInto(out *NetworkObservabilitySpec) { + *out = *in + if in.InstallationPolicy != nil { + in, out := &in.InstallationPolicy, &out.InstallationPolicy + *out = new(NetworkObservabilityInstallationPolicy) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkObservabilitySpec. +func (in *NetworkObservabilitySpec) DeepCopy() *NetworkObservabilitySpec { + if in == nil { + return nil + } + out := new(NetworkObservabilitySpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *NetworkSpec) DeepCopyInto(out *NetworkSpec) { *out = *in @@ -4302,6 +4323,7 @@ func (in *NetworkSpec) DeepCopyInto(out *NetworkSpec) { (*in).DeepCopyInto(*out) } in.NetworkDiagnostics.DeepCopyInto(&out.NetworkDiagnostics) + in.NetworkObservability.DeepCopyInto(&out.NetworkObservability) return } diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.featuregated-crd-manifests.yaml b/vendor/github.com/openshift/api/config/v1/zz_generated.featuregated-crd-manifests.yaml index 4b768c3898d..c9b0975f2a8 100644 --- a/vendor/github.com/openshift/api/config/v1/zz_generated.featuregated-crd-manifests.yaml +++ b/vendor/github.com/openshift/api/config/v1/zz_generated.featuregated-crd-manifests.yaml @@ -445,7 +445,8 @@ networks.config.openshift.io: CRDName: networks.config.openshift.io Capability: "" Category: "" - FeatureGates: [] + FeatureGates: + - NetworkObservabilityInstall FilenameOperatorName: config-operator FilenameOperatorOrdering: "01" FilenameRunLevel: "0000_10" diff --git a/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go b/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go index a30061c252c..66705af5f23 100644 --- a/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go +++ b/vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go @@ -2459,6 +2459,15 @@ func (NetworkMigration) SwaggerDoc() map[string]string { return map_NetworkMigration } +var map_NetworkObservabilitySpec = map[string]string{ + "": "NetworkObservabilitySpec defines the configuration for network observability installation", + "installationPolicy": "installationPolicy controls whether network observability is installed during cluster deployment. Valid values are \"\", \"InstallAndEnable\" and \"DoNotInstall\". When set to \"\", network observability will be installed unless this is a SNO cluster. When set to \"InstallAndEnable\", network observability will be installed and enabled. When set to \"DoNotInstall\", network observability will not be installed.", +} + +func (NetworkObservabilitySpec) SwaggerDoc() map[string]string { + return map_NetworkObservabilitySpec +} + var map_NetworkSpec = map[string]string{ "": "NetworkSpec is the desired network configuration. As a general rule, this SHOULD NOT be read directly. Instead, you should consume the NetworkStatus, as it indicates the currently deployed configuration. Currently, most spec fields are immutable after installation. Please view the individual ones for further details on each.", "clusterNetwork": "IP address pool to use for pod IPs. This field is immutable after installation.", @@ -2467,6 +2476,7 @@ var map_NetworkSpec = map[string]string{ "externalIP": "externalIP defines configuration for controllers that affect Service.ExternalIP. If nil, then ExternalIP is not allowed to be set.", "serviceNodePortRange": "The port range allowed for Services of type NodePort. If not specified, the default of 30000-32767 will be used. Such Services without a NodePort specified will have one automatically allocated from this range. This parameter can be updated after the cluster is installed.", "networkDiagnostics": "networkDiagnostics defines network diagnostics configuration.\n\nTakes precedence over spec.disableNetworkDiagnostics in network.operator.openshift.io. If networkDiagnostics is not specified or is empty, and the spec.disableNetworkDiagnostics flag in network.operator.openshift.io is set to true, the network diagnostics feature will be disabled.", + "networkObservability": "networkObservability is an optional field that configures network observability installation during cluster deployment (day-0). When omitted, network observability will be installed unless this is a SNO cluster.", } func (NetworkSpec) SwaggerDoc() map[string]string { diff --git a/vendor/github.com/openshift/api/features/features.go b/vendor/github.com/openshift/api/features/features.go index 0fcf9b395a2..b3fcdd95c14 100644 --- a/vendor/github.com/openshift/api/features/features.go +++ b/vendor/github.com/openshift/api/features/features.go @@ -1020,4 +1020,12 @@ var ( enhancementPR("https://github.com/openshift/enhancements/pull/1910"). enable(inDevPreviewNoUpgrade(), inTechPreviewNoUpgrade()). mustRegister() + + FeatureGateNetworkObservabilityInstall = newFeatureGate("NetworkObservabilityInstall"). + reportProblemsToJiraComponent("netobserv"). + contactPerson("jtakvori"). + productScope(ocpSpecific). + enhancementPR("https://github.com/openshift/enhancements/pull/1908"). + enable(inDevPreviewNoUpgrade(), inTechPreviewNoUpgrade()). + mustRegister() ) diff --git a/vendor/modules.txt b/vendor/modules.txt index 59430453b5f..9226c1fe104 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1300,7 +1300,7 @@ github.com/opencontainers/image-spec/specs-go/v1 # github.com/opencontainers/runtime-spec v1.2.0 ## explicit github.com/opencontainers/runtime-spec/specs-go -# github.com/openshift/api v0.0.0-20260318185450-1f2fa3f09f4e +# github.com/openshift/api v0.0.0-20260318185450-1f2fa3f09f4e => github.com/OlivierCazade/api v0.0.0-20260325001208-9b6df7f19a28 ## explicit; go 1.25.0 github.com/openshift/api/annotations github.com/openshift/api/config/v1