Skip to content
Open
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
2 changes: 2 additions & 0 deletions cmd/bridge/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ func main() {
fNodeOperatingSystems := fs.String("node-operating-systems", "", "List of node operating systems. Example --node-operating-system=linux,windows")
fCopiedCSVsDisabled := fs.Bool("copied-csvs-disabled", false, "Flag to indicate if OLM copied CSVs are disabled.")
fTechPreview := fs.Bool("tech-preview", false, "Enable console Technology Preview features.")
fOLMLifecycleMetadata := fs.Bool("olm-lifecycle-metadata", false, "Enable OLM operator lifecycle and compatibility features.")

cfg, err := serverconfig.Parse(fs, os.Args[1:], "BRIDGE")
if err != nil {
Expand Down Expand Up @@ -357,6 +358,7 @@ func main() {
K8sMode: *fK8sMode,
CopiedCSVsDisabled: *fCopiedCSVsDisabled,
TechPreview: *fTechPreview,
OLMLifecycleMetadata: *fOLMLifecycleMetadata,
Capabilities: capabilities,
}

Expand Down
1 change: 1 addition & 0 deletions frontend/@types/console/window.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ declare interface Window {
hubConsoleURL: string;
k8sMode: string;
techPreview: boolean;
olmLifecycleMetadata: boolean;
capabilities: {
name: string;
visibility: { state: 'Enabled' | 'Disabled' };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ import type { FeatureFlagHandler } from '@console/dynamic-plugin-sdk/src/extensi
import { Flags } from './const';

export const detectLifecycleMetadata: FeatureFlagHandler = (setFeatureFlag) => {
setFeatureFlag(Flags.OPERATOR_LIFECYCLE_METADATA, !!window.SERVER_FLAGS.techPreview);
setFeatureFlag(Flags.OPERATOR_LIFECYCLE_METADATA, !!window.SERVER_FLAGS.olmLifecycleMetadata);
};
3 changes: 3 additions & 0 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ type jsGlobals struct {
Telemetry serverconfig.MultiKeyValue `json:"telemetry"`
ThanosPublicURL string `json:"thanosPublicURL"`
TechPreview bool `json:"techPreview"`
OLMLifecycleMetadata bool `json:"olmLifecycleMetadata"`
UserSettingsLocation string `json:"userSettingsLocation"`
DevConsoleProxyAvailable bool `json:"devConsoleProxyAvailable"`
}
Expand Down Expand Up @@ -172,6 +173,7 @@ type Server struct {
CSRFVerifier *csrfverifier.CSRFVerifier
CustomLogoFiles serverconfig.LogosKeyValue
TechPreview bool
OLMLifecycleMetadata bool
CustomFaviconFiles serverconfig.LogosKeyValue
CustomProductName string
DevCatalogCategories string
Expand Down Expand Up @@ -790,6 +792,7 @@ func (s *Server) indexHandler(w http.ResponseWriter, r *http.Request) {
Telemetry: s.Telemetry,
ThanosPublicURL: s.ThanosPublicURL.String(),
TechPreview: s.TechPreview,
OLMLifecycleMetadata: s.OLMLifecycleMetadata,
UserSettingsLocation: s.UserSettingsLocation,
DevConsoleProxyAvailable: true,
}
Expand Down
4 changes: 4 additions & 0 deletions pkg/serverconfig/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,10 @@ func addClusterInfo(fs *flag.FlagSet, clusterInfo *ClusterInfo) {
if clusterInfo.TechPreviewEnabled {
fs.Set("tech-preview", "true")
}

if clusterInfo.OLMLifecycleMetadataEnabled {
fs.Set("olm-lifecycle-metadata", "true")
}
}

func addProviders(fs *flag.FlagSet, providers *Providers) {
Expand Down
15 changes: 15 additions & 0 deletions pkg/serverconfig/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,20 @@ func TestSetFlagsFromConfig(t *testing.T) {
},
expectedError: nil,
},
{
name: "Should apply OLM lifecycle metadata enabled",
config: Config{
APIVersion: "console.openshift.io/v1",
Kind: "ConsoleConfig",
ClusterInfo: ClusterInfo{
OLMLifecycleMetadataEnabled: true,
},
},
expectedFlagValues: map[string]string{
"olm-lifecycle-metadata": "true",
},
expectedError: nil,
},
{
name: "Should apply CSP configuration",
config: Config{
Expand All @@ -314,6 +328,7 @@ func TestSetFlagsFromConfig(t *testing.T) {
fs.Var(&MultiKeyValue{}, "plugins", "")
fs.Var(&MultiKeyValue{}, "telemetry", "")
fs.Var(&MultiKeyValue{}, "content-security-policy", "")
fs.Bool("olm-lifecycle-metadata", false, "")

actualError := SetFlagsFromConfig(fs, &test.config)
actual := make(map[string]string)
Expand Down
19 changes: 10 additions & 9 deletions pkg/serverconfig/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,16 @@ type MonitoringInfo struct {

// ClusterInfo holds information the about the cluster such as master public URL and console public URL.
type ClusterInfo struct {
ConsoleBaseAddress string `yaml:"consoleBaseAddress,omitempty"`
ConsoleBasePath string `yaml:"consoleBasePath,omitempty"`
MasterPublicURL string `yaml:"masterPublicURL,omitempty"`
ControlPlaneTopology configv1.TopologyMode `yaml:"controlPlaneTopology,omitempty"`
ReleaseVersion string `yaml:"releaseVersion,omitempty"`
NodeArchitectures []string `yaml:"nodeArchitectures,omitempty"`
NodeOperatingSystems []string `yaml:"nodeOperatingSystems,omitempty"`
CopiedCSVsDisabled bool `yaml:"copiedCSVsDisabled,omitempty"`
TechPreviewEnabled bool `yaml:"techPreviewEnabled,omitempty"`
ConsoleBaseAddress string `yaml:"consoleBaseAddress,omitempty"`
ConsoleBasePath string `yaml:"consoleBasePath,omitempty"`
MasterPublicURL string `yaml:"masterPublicURL,omitempty"`
ControlPlaneTopology configv1.TopologyMode `yaml:"controlPlaneTopology,omitempty"`
ReleaseVersion string `yaml:"releaseVersion,omitempty"`
NodeArchitectures []string `yaml:"nodeArchitectures,omitempty"`
NodeOperatingSystems []string `yaml:"nodeOperatingSystems,omitempty"`
CopiedCSVsDisabled bool `yaml:"copiedCSVsDisabled,omitempty"`
TechPreviewEnabled bool `yaml:"techPreviewEnabled,omitempty"`
OLMLifecycleMetadataEnabled bool `yaml:"olmLifecycleMetadataEnabled,omitempty"`
}

// Auth holds configuration for authenticating with OpenShift. The auth method is assumed to be "openshift".
Expand Down