github.com/verrazzano/verrazzano@v1.7.1/pkg/vzcr/enabled.go (about) 1 // Copyright (c) 2021, 2023, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package vzcr 5 6 import ( 7 "fmt" 8 "strings" 9 10 "k8s.io/apimachinery/pkg/runtime" 11 12 installv1alpha1 "github.com/verrazzano/verrazzano/platform-operator/apis/verrazzano/v1alpha1" 13 installv1beta1 "github.com/verrazzano/verrazzano/platform-operator/apis/verrazzano/v1beta1" 14 "github.com/verrazzano/verrazzano/platform-operator/controllers/verrazzano/component/common/override" 15 "github.com/verrazzano/verrazzano/platform-operator/controllers/verrazzano/component/spi" 16 ) 17 18 // IsPrometheusEnabled - Returns false only if explicitly disabled in the CR 19 func IsPrometheusEnabled(cr runtime.Object) bool { 20 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 21 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Prometheus != nil && vzv1alpha1.Spec.Components.Prometheus.Enabled != nil { 22 return *vzv1alpha1.Spec.Components.Prometheus.Enabled 23 } 24 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 25 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Prometheus != nil && vzv1beta1.Spec.Components.Prometheus.Enabled != nil { 26 return *vzv1beta1.Spec.Components.Prometheus.Enabled 27 } 28 } 29 return true 30 } 31 32 // IsOpenSearchDashboardsEnabled - Returns false only if explicitly disabled in the CR 33 func IsOpenSearchDashboardsEnabled(cr runtime.Object) bool { 34 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 35 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Kibana != nil && vzv1alpha1.Spec.Components.Kibana.Enabled != nil { 36 return *vzv1alpha1.Spec.Components.Kibana.Enabled 37 } 38 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 39 if vzv1beta1 != nil && vzv1beta1.Spec.Components.OpenSearchDashboards != nil && vzv1beta1.Spec.Components.OpenSearchDashboards.Enabled != nil { 40 return *vzv1beta1.Spec.Components.OpenSearchDashboards.Enabled 41 } 42 } 43 return true 44 } 45 46 // IsNGINXEnabled - Returns false only if explicitly disabled in the CR 47 func IsNGINXEnabled(cr runtime.Object) bool { 48 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 49 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Ingress != nil && vzv1alpha1.Spec.Components.Ingress.Enabled != nil { 50 return *vzv1alpha1.Spec.Components.Ingress.Enabled 51 } 52 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 53 if vzv1beta1 != nil && vzv1beta1.Spec.Components.IngressNGINX != nil && vzv1beta1.Spec.Components.IngressNGINX.Enabled != nil { 54 return *vzv1beta1.Spec.Components.IngressNGINX.Enabled 55 } 56 } 57 return true 58 } 59 60 // IsIstioEnabled - Returns false only if explicitly disabled in the CR 61 func IsIstioEnabled(cr runtime.Object) bool { 62 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 63 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Istio != nil && vzv1alpha1.Spec.Components.Istio.Enabled != nil { 64 return *vzv1alpha1.Spec.Components.Istio.Enabled 65 } 66 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 67 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Istio != nil && vzv1beta1.Spec.Components.Istio.Enabled != nil { 68 return *vzv1beta1.Spec.Components.Istio.Enabled 69 } 70 } 71 72 return true 73 } 74 75 // IsIstioInjectionEnabled - Returns false if either: 76 // 77 // Istio is explicitly disabled in the CR OR 78 // Istio is enabled but injection is explicitly disabled in the CR 79 func IsIstioInjectionEnabled(cr runtime.Object) bool { 80 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 81 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Istio != nil && vzv1alpha1.Spec.Components.Istio.Enabled != nil { 82 return *vzv1alpha1.Spec.Components.Istio.Enabled && (vzv1alpha1.Spec.Components.Istio.InjectionEnabled == nil || *vzv1alpha1.Spec.Components.Istio.InjectionEnabled) 83 } 84 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 85 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Istio != nil && vzv1beta1.Spec.Components.Istio.Enabled != nil { 86 return *vzv1beta1.Spec.Components.Istio.Enabled && (vzv1beta1.Spec.Components.Istio.InjectionEnabled == nil || *vzv1beta1.Spec.Components.Istio.InjectionEnabled) 87 } 88 } 89 90 return true 91 } 92 93 // IsClusterAPIEnabled - Returns false only if ClusterAPI is explicitly disabled by the user 94 func IsClusterAPIEnabled(cr runtime.Object) bool { 95 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 96 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.ClusterAPI != nil && vzv1alpha1.Spec.Components.ClusterAPI.Enabled != nil { 97 return *vzv1alpha1.Spec.Components.ClusterAPI.Enabled 98 } 99 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 100 if vzv1beta1 != nil && vzv1beta1.Spec.Components.ClusterAPI != nil && vzv1beta1.Spec.Components.ClusterAPI.Enabled != nil { 101 return *vzv1beta1.Spec.Components.ClusterAPI.Enabled 102 } 103 } 104 return true 105 } 106 107 // IsCertManagerEnabled - Returns false only if CertManager is explicitly disabled by the user 108 func IsCertManagerEnabled(cr runtime.Object) bool { 109 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 110 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.CertManager != nil && vzv1alpha1.Spec.Components.CertManager.Enabled != nil { 111 return *vzv1alpha1.Spec.Components.CertManager.Enabled 112 } 113 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 114 if vzv1beta1 != nil && vzv1beta1.Spec.Components.CertManager != nil && vzv1beta1.Spec.Components.CertManager.Enabled != nil { 115 return *vzv1beta1.Spec.Components.CertManager.Enabled 116 } 117 } 118 return true 119 } 120 121 // IsClusterIssuerEnabled - Returns false only if the ClusterIssuerComponent is explicitly disabled 122 func IsClusterIssuerEnabled(cr runtime.Object) bool { 123 if IsCertManagerEnabled(cr) { 124 return true 125 } 126 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 127 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.ClusterIssuer != nil && 128 vzv1alpha1.Spec.Components.ClusterIssuer.Enabled != nil { 129 return *vzv1alpha1.Spec.Components.ClusterIssuer.Enabled 130 } 131 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 132 if vzv1beta1 != nil && vzv1beta1.Spec.Components.ClusterIssuer != nil && 133 vzv1beta1.Spec.Components.ClusterIssuer.Enabled != nil { 134 return *vzv1beta1.Spec.Components.ClusterIssuer.Enabled 135 } 136 } 137 return true 138 } 139 140 // IsCertManagerWebhookOCIEnabled - Returns true IFF the ExternalCertManager component is explicitly enabled 141 func IsCertManagerWebhookOCIEnabled(cr runtime.Object) bool { 142 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 143 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.CertManagerWebhookOCI != nil && 144 vzv1alpha1.Spec.Components.CertManagerWebhookOCI.Enabled != nil { 145 return *vzv1alpha1.Spec.Components.CertManagerWebhookOCI.Enabled 146 } 147 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 148 if vzv1beta1 != nil && vzv1beta1.Spec.Components.CertManagerWebhookOCI != nil && 149 vzv1beta1.Spec.Components.CertManagerWebhookOCI.Enabled != nil { 150 return *vzv1beta1.Spec.Components.CertManagerWebhookOCI.Enabled 151 } 152 } 153 return false 154 } 155 156 // IsCertManagerWebhookOCIRequired - Returns true if the ExternalCertManager component is explicitly enabled, OR 157 // if all of the following is true: 158 // - ACME/LetsEncrypt certificates are configured 159 // - OCI DNS is enabled 160 // - the ClusterIssuerComponent is enabled 161 // 162 // This behavior is to allow backwards compatibility with earlier releases where the behavior was not implemented in 163 // a separate component, and was implicitly enabled by the other conditions 164 func IsCertManagerWebhookOCIRequired(cr runtime.Object) bool { 165 isLetsEncryptConfig, _ := IsLetsEncryptConfig(cr) 166 return IsCertManagerWebhookOCIEnabled(cr) || IsOCIDNSEnabled(cr) && isLetsEncryptConfig && IsClusterIssuerEnabled(cr) 167 } 168 169 // IsLetsEncryptConfig - Check if cert-type is LetsEncrypt 170 func IsLetsEncryptConfig(cr runtime.Object) (bool, error) { 171 if cr == nil { 172 return false, fmt.Errorf("Nil CR passed in") 173 } 174 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 175 componentSpec := vzv1alpha1.Spec.Components 176 if componentSpec.ClusterIssuer == nil { 177 return false, nil 178 } 179 return componentSpec.ClusterIssuer.IsLetsEncryptIssuer() 180 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 181 componentSpec := vzv1beta1.Spec.Components 182 if componentSpec.ClusterIssuer == nil { 183 return false, nil 184 } 185 return componentSpec.ClusterIssuer.IsLetsEncryptIssuer() 186 } 187 return false, fmt.Errorf("Illegal configuration state, unable to resolve ClusterIssuerComponent type: %v", cr) 188 } 189 190 // IsCAConfig - Check if cert-type is CA, if not it is assumed to be Acme 191 func IsCAConfig(cr runtime.Object) (bool, error) { 192 if cr == nil { 193 return false, fmt.Errorf("Nil CR passed in") 194 } 195 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 196 componentSpec := vzv1alpha1.Spec.Components 197 if componentSpec.ClusterIssuer == nil { 198 return true, nil 199 } 200 return componentSpec.ClusterIssuer.IsCAIssuer() 201 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 202 componentSpec := vzv1beta1.Spec.Components 203 if componentSpec.ClusterIssuer == nil { 204 return true, nil 205 } 206 return componentSpec.ClusterIssuer.IsCAIssuer() 207 } 208 return false, fmt.Errorf("Illegal configuration state, unable to resolve ClusterIssuerComponent type: %v", cr) 209 } 210 211 // IsKialiEnabled - Returns false only if explicitly disabled in the CR 212 func IsKialiEnabled(cr runtime.Object) bool { 213 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 214 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Kiali != nil && vzv1alpha1.Spec.Components.Kiali.Enabled != nil { 215 return *vzv1alpha1.Spec.Components.Kiali.Enabled 216 } 217 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 218 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Kiali != nil && vzv1beta1.Spec.Components.Kiali.Enabled != nil { 219 return *vzv1beta1.Spec.Components.Kiali.Enabled 220 } 221 } 222 return true 223 } 224 225 // IsOpenSearchEnabled - Returns false only if explicitly disabled in the CR 226 func IsOpenSearchEnabled(cr runtime.Object) bool { 227 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 228 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Elasticsearch != nil && vzv1alpha1.Spec.Components.Elasticsearch.Enabled != nil { 229 return *vzv1alpha1.Spec.Components.Elasticsearch.Enabled 230 } 231 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 232 if vzv1beta1 != nil && vzv1beta1.Spec.Components.OpenSearch != nil && vzv1beta1.Spec.Components.OpenSearch.Enabled != nil { 233 return *vzv1beta1.Spec.Components.OpenSearch.Enabled 234 } 235 } 236 return true 237 } 238 239 // IsGrafanaEnabled - Returns false only if explicitly disabled in the CR 240 func IsGrafanaEnabled(cr runtime.Object) bool { 241 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 242 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Grafana != nil && vzv1alpha1.Spec.Components.Grafana.Enabled != nil { 243 return *vzv1alpha1.Spec.Components.Grafana.Enabled 244 } 245 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 246 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Grafana != nil && vzv1beta1.Spec.Components.Grafana.Enabled != nil { 247 return *vzv1beta1.Spec.Components.Grafana.Enabled 248 } 249 } 250 return true 251 } 252 253 // IsFluentdEnabled - Returns false only if explicitly disabled in the CR 254 func IsFluentdEnabled(cr runtime.Object) bool { 255 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 256 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Fluentd != nil && vzv1alpha1.Spec.Components.Fluentd.Enabled != nil { 257 return *vzv1alpha1.Spec.Components.Fluentd.Enabled 258 } 259 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 260 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Fluentd != nil && vzv1beta1.Spec.Components.Fluentd.Enabled != nil { 261 return *vzv1beta1.Spec.Components.Fluentd.Enabled 262 } 263 } 264 return true 265 } 266 267 // IsFluentOperatorEnabled - Returns true IFF the FluentOperator component is explicitly enabled 268 func IsFluentOperatorEnabled(cr runtime.Object) bool { 269 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 270 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.FluentOperator != nil && vzv1alpha1.Spec.Components.FluentOperator.Enabled != nil { 271 return *vzv1alpha1.Spec.Components.FluentOperator.Enabled 272 } 273 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 274 if vzv1beta1 != nil && vzv1beta1.Spec.Components.FluentOperator != nil && vzv1beta1.Spec.Components.FluentOperator.Enabled != nil { 275 return *vzv1beta1.Spec.Components.FluentOperator.Enabled 276 } 277 } 278 return false 279 } 280 281 // IsFluentbitOpensearchOutputEnabled - Returns true IFF the FluentbitOpensearchOutput component is explicitly enabled 282 func IsFluentbitOpensearchOutputEnabled(cr runtime.Object) bool { 283 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 284 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.FluentbitOpensearchOutput != nil && vzv1alpha1.Spec.Components.FluentbitOpensearchOutput.Enabled != nil { 285 return *vzv1alpha1.Spec.Components.FluentbitOpensearchOutput.Enabled 286 } 287 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 288 if vzv1beta1 != nil && vzv1beta1.Spec.Components.FluentbitOpensearchOutput != nil && vzv1beta1.Spec.Components.FluentbitOpensearchOutput.Enabled != nil { 289 return *vzv1beta1.Spec.Components.FluentbitOpensearchOutput.Enabled 290 } 291 } 292 return false 293 294 } 295 296 // IsConsoleEnabled - Returns false only if explicitly disabled in the CR 297 func IsConsoleEnabled(cr runtime.Object) bool { 298 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 299 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Console != nil && vzv1alpha1.Spec.Components.Console.Enabled != nil { 300 return *vzv1alpha1.Spec.Components.Console.Enabled 301 } 302 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 303 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Console != nil && vzv1beta1.Spec.Components.Console.Enabled != nil { 304 return *vzv1beta1.Spec.Components.Console.Enabled 305 } 306 } 307 return true 308 } 309 310 // IsKeycloakEnabled - Returns false only if explicitly disabled in the CR 311 func IsKeycloakEnabled(cr runtime.Object) bool { 312 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 313 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Keycloak != nil && vzv1alpha1.Spec.Components.Keycloak.Enabled != nil { 314 return *vzv1alpha1.Spec.Components.Keycloak.Enabled 315 } 316 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 317 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Keycloak != nil && vzv1beta1.Spec.Components.Keycloak.Enabled != nil { 318 return *vzv1beta1.Spec.Components.Keycloak.Enabled 319 } 320 } 321 return true 322 } 323 324 // IsRancherEnabled - Returns false only if explicitly disabled in the CR 325 func IsRancherEnabled(cr runtime.Object) bool { 326 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 327 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Rancher != nil && vzv1alpha1.Spec.Components.Rancher.Enabled != nil { 328 return *vzv1alpha1.Spec.Components.Rancher.Enabled 329 } 330 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 331 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Rancher != nil && vzv1beta1.Spec.Components.Rancher.Enabled != nil { 332 return *vzv1beta1.Spec.Components.Rancher.Enabled 333 } 334 } 335 return true 336 } 337 338 // IsExternalDNSEnabled Indicates if the external-dns service is expected to be deployed, true if OCI DNS is configured 339 func IsExternalDNSEnabled(cr runtime.Object) bool { 340 return IsOCIDNSEnabled(cr) 341 } 342 343 // IsOCIDNSEnabled Returns true if OCI DNS is configured 344 func IsOCIDNSEnabled(cr runtime.Object) bool { 345 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 346 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.DNS != nil && vzv1alpha1.Spec.Components.DNS.OCI != nil { 347 return true 348 } 349 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 350 if vzv1beta1 != nil && vzv1beta1.Spec.Components.DNS != nil && vzv1beta1.Spec.Components.DNS.OCI != nil { 351 return true 352 } 353 } 354 return false 355 } 356 357 // IsVMOEnabled - Returns false if all VMO components are disabled 358 func IsVMOEnabled(vz runtime.Object) bool { 359 return IsOpenSearchDashboardsEnabled(vz) || IsOpenSearchEnabled(vz) || IsGrafanaEnabled(vz) 360 } 361 362 // IsPrometheusOperatorEnabled returns false only if the Prometheus Operator is explicitly disabled in the CR 363 func IsPrometheusOperatorEnabled(cr runtime.Object) bool { 364 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 365 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.PrometheusOperator != nil && vzv1alpha1.Spec.Components.PrometheusOperator.Enabled != nil { 366 return *vzv1alpha1.Spec.Components.PrometheusOperator.Enabled 367 } 368 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 369 if vzv1beta1 != nil && vzv1beta1.Spec.Components.PrometheusOperator != nil && vzv1beta1.Spec.Components.PrometheusOperator.Enabled != nil { 370 return *vzv1beta1.Spec.Components.PrometheusOperator.Enabled 371 } 372 } 373 return true 374 } 375 376 // IsPrometheusAdapterEnabled returns true only if the Prometheus Adapter is explicitly enabled in the CR 377 func IsPrometheusAdapterEnabled(cr runtime.Object) bool { 378 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 379 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.PrometheusAdapter != nil && vzv1alpha1.Spec.Components.PrometheusAdapter.Enabled != nil { 380 return *vzv1alpha1.Spec.Components.PrometheusAdapter.Enabled 381 } 382 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 383 if vzv1beta1 != nil && vzv1beta1.Spec.Components.PrometheusAdapter != nil && vzv1beta1.Spec.Components.PrometheusAdapter.Enabled != nil { 384 return *vzv1beta1.Spec.Components.PrometheusAdapter.Enabled 385 } 386 } 387 return false 388 } 389 390 // IsKubeStateMetricsEnabled returns true only if Kube State Metrics is explicitly enabled in the CR 391 func IsKubeStateMetricsEnabled(cr runtime.Object) bool { 392 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 393 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.KubeStateMetrics != nil && vzv1alpha1.Spec.Components.KubeStateMetrics.Enabled != nil { 394 return *vzv1alpha1.Spec.Components.KubeStateMetrics.Enabled 395 } 396 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 397 return *vzv1beta1.Spec.Components.KubeStateMetrics.Enabled 398 } 399 return false 400 } 401 402 // IsPrometheusPushgatewayEnabled returns true only if the Prometheus Pushgateway is explicitly enabled in the CR 403 func IsPrometheusPushgatewayEnabled(cr runtime.Object) bool { 404 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 405 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.PrometheusPushgateway != nil && vzv1alpha1.Spec.Components.PrometheusPushgateway.Enabled != nil { 406 return *vzv1alpha1.Spec.Components.PrometheusPushgateway.Enabled 407 } 408 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 409 if vzv1beta1 != nil && vzv1beta1.Spec.Components.PrometheusPushgateway != nil && vzv1beta1.Spec.Components.PrometheusPushgateway.Enabled != nil { 410 return *vzv1beta1.Spec.Components.PrometheusPushgateway.Enabled 411 } 412 } 413 return false 414 } 415 416 // IsPrometheusNodeExporterEnabled returns false only if the Prometheus Node-Exporter is explicitly disabled in the CR 417 func IsPrometheusNodeExporterEnabled(cr runtime.Object) bool { 418 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 419 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.PrometheusNodeExporter != nil && vzv1alpha1.Spec.Components.PrometheusNodeExporter.Enabled != nil { 420 return *vzv1alpha1.Spec.Components.PrometheusNodeExporter.Enabled 421 } 422 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 423 if vzv1beta1 != nil && vzv1beta1.Spec.Components.PrometheusNodeExporter != nil && vzv1beta1.Spec.Components.PrometheusNodeExporter.Enabled != nil { 424 return *vzv1beta1.Spec.Components.PrometheusNodeExporter.Enabled 425 } 426 } 427 return true 428 } 429 430 // IsJaegerOperatorEnabled returns true only if the Jaeger Operator is explicitly enabled in the CR 431 func IsJaegerOperatorEnabled(cr runtime.Object) bool { 432 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 433 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.JaegerOperator != nil && vzv1alpha1.Spec.Components.JaegerOperator.Enabled != nil { 434 return *vzv1alpha1.Spec.Components.JaegerOperator.Enabled 435 } 436 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 437 if vzv1beta1 != nil && vzv1beta1.Spec.Components.JaegerOperator != nil && vzv1beta1.Spec.Components.JaegerOperator.Enabled != nil { 438 return *vzv1beta1.Spec.Components.JaegerOperator.Enabled 439 } 440 } 441 return false 442 } 443 444 // IsAuthProxyEnabled returns false only if Auth Proxy is explicitly disabled in the CR 445 func IsAuthProxyEnabled(cr runtime.Object) bool { 446 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 447 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.AuthProxy != nil && vzv1alpha1.Spec.Components.AuthProxy.Enabled != nil { 448 return *vzv1alpha1.Spec.Components.AuthProxy.Enabled 449 } 450 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 451 if vzv1beta1 != nil && vzv1beta1.Spec.Components.AuthProxy != nil && vzv1beta1.Spec.Components.AuthProxy.Enabled != nil { 452 return *vzv1beta1.Spec.Components.AuthProxy.Enabled 453 } 454 } 455 return true 456 } 457 458 // IsApplicationOperatorEnabled returns false only if Application Operator is explicitly disabled in the CR 459 func IsApplicationOperatorEnabled(cr runtime.Object) bool { 460 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 461 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.ApplicationOperator != nil && vzv1alpha1.Spec.Components.ApplicationOperator.Enabled != nil { 462 return *vzv1alpha1.Spec.Components.ApplicationOperator.Enabled 463 } 464 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 465 if vzv1beta1 != nil && vzv1beta1.Spec.Components.ApplicationOperator != nil && vzv1beta1.Spec.Components.ApplicationOperator.Enabled != nil { 466 return *vzv1beta1.Spec.Components.ApplicationOperator.Enabled 467 } 468 } 469 return true 470 } 471 472 // IsVeleroEnabled returns false unless Velero is not explicitly enabled in the CR 473 func IsVeleroEnabled(cr runtime.Object) bool { 474 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 475 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Velero != nil && vzv1alpha1.Spec.Components.Velero.Enabled != nil { 476 return *vzv1alpha1.Spec.Components.Velero.Enabled 477 } 478 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 479 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Velero != nil && vzv1beta1.Spec.Components.Velero.Enabled != nil { 480 return *vzv1beta1.Spec.Components.Velero.Enabled 481 } 482 } 483 return false 484 } 485 486 // IsMySQLOperatorEnabled returns false if MySqlOperator is explicitly disabled in the CR 487 func IsMySQLOperatorEnabled(cr runtime.Object) bool { 488 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 489 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.MySQLOperator != nil && vzv1alpha1.Spec.Components.MySQLOperator.Enabled != nil { 490 return *vzv1alpha1.Spec.Components.MySQLOperator.Enabled 491 } 492 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 493 if vzv1beta1 != nil && vzv1beta1.Spec.Components.MySQLOperator != nil && vzv1beta1.Spec.Components.MySQLOperator.Enabled != nil { 494 return *vzv1beta1.Spec.Components.MySQLOperator.Enabled 495 } 496 } 497 return true 498 } 499 500 // IsOAMEnabled returns false if OAM is explicitly disabled in the CR 501 func IsOAMEnabled(cr runtime.Object) bool { 502 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 503 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.OAM != nil && vzv1alpha1.Spec.Components.OAM.Enabled != nil { 504 return *vzv1alpha1.Spec.Components.OAM.Enabled 505 } 506 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 507 if vzv1beta1 != nil && vzv1beta1.Spec.Components.OAM != nil && vzv1beta1.Spec.Components.OAM.Enabled != nil { 508 return *vzv1beta1.Spec.Components.OAM.Enabled 509 } 510 } 511 return true 512 } 513 514 // IsVerrazzanoComponentEnabled returns false if Verrazzano is explicitly disabled in the CR 515 func IsVerrazzanoComponentEnabled(cr runtime.Object) bool { 516 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 517 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Verrazzano != nil && vzv1alpha1.Spec.Components.Verrazzano.Enabled != nil { 518 return *vzv1alpha1.Spec.Components.Verrazzano.Enabled 519 } 520 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 521 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Verrazzano != nil && vzv1beta1.Spec.Components.Verrazzano.Enabled != nil { 522 return *vzv1beta1.Spec.Components.Verrazzano.Enabled 523 } 524 } 525 return true 526 } 527 528 // IsClusterOperatorEnabled returns false only if Cluster Operator is explicitly disabled in the CR 529 func IsClusterOperatorEnabled(cr runtime.Object) bool { 530 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 531 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.ClusterOperator != nil && vzv1alpha1.Spec.Components.ClusterOperator.Enabled != nil { 532 return *vzv1alpha1.Spec.Components.ClusterOperator.Enabled 533 } 534 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 535 if vzv1beta1 != nil && vzv1beta1.Spec.Components.ClusterOperator != nil && vzv1beta1.Spec.Components.ClusterOperator.Enabled != nil { 536 return *vzv1beta1.Spec.Components.ClusterOperator.Enabled 537 } 538 } 539 return true 540 } 541 542 // IsWebLogicOperatorEnabled returns false if WebLogicOperator is explicitly disabled in the CR 543 func IsWebLogicOperatorEnabled(cr runtime.Object) bool { 544 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 545 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.WebLogicOperator != nil && vzv1alpha1.Spec.Components.WebLogicOperator.Enabled != nil { 546 return *vzv1alpha1.Spec.Components.WebLogicOperator.Enabled 547 } 548 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 549 if vzv1beta1 != nil && vzv1beta1.Spec.Components.WebLogicOperator != nil && vzv1beta1.Spec.Components.WebLogicOperator.Enabled != nil { 550 return *vzv1beta1.Spec.Components.WebLogicOperator.Enabled 551 } 552 } 553 return true 554 } 555 556 // IsCoherenceOperatorEnabled returns false if CoherenceOperator is explicitly disabled in the CR 557 func IsCoherenceOperatorEnabled(cr runtime.Object) bool { 558 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 559 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.CoherenceOperator != nil && vzv1alpha1.Spec.Components.CoherenceOperator.Enabled != nil { 560 return *vzv1alpha1.Spec.Components.CoherenceOperator.Enabled 561 } 562 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 563 if vzv1beta1 != nil && vzv1beta1.Spec.Components.CoherenceOperator != nil && vzv1beta1.Spec.Components.CoherenceOperator.Enabled != nil { 564 return *vzv1beta1.Spec.Components.CoherenceOperator.Enabled 565 } 566 } 567 return true 568 } 569 570 // IsNodeExporterEnabled returns false if NodeExporter is explicitly disabled in the CR, or Prometheus is disabled in the CR 571 func IsNodeExporterEnabled(cr runtime.Object) bool { 572 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 573 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.PrometheusNodeExporter != nil && vzv1alpha1.Spec.Components.PrometheusNodeExporter.Enabled != nil { 574 return *vzv1alpha1.Spec.Components.PrometheusNodeExporter.Enabled 575 } 576 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 577 if vzv1beta1 != nil && vzv1beta1.Spec.Components.PrometheusNodeExporter != nil && vzv1beta1.Spec.Components.PrometheusNodeExporter.Enabled != nil { 578 return *vzv1beta1.Spec.Components.PrometheusNodeExporter.Enabled 579 } 580 } 581 return IsPrometheusEnabled(cr) 582 } 583 584 // IsRancherBackupEnabled returns false unless RancherBackup is explicitly enabled in the CR 585 func IsRancherBackupEnabled(cr runtime.Object) bool { 586 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 587 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.RancherBackup != nil && vzv1alpha1.Spec.Components.RancherBackup.Enabled != nil { 588 return *vzv1alpha1.Spec.Components.RancherBackup.Enabled 589 } 590 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 591 if vzv1beta1 != nil && vzv1beta1.Spec.Components.RancherBackup != nil && vzv1beta1.Spec.Components.RancherBackup.Enabled != nil { 592 return *vzv1beta1.Spec.Components.RancherBackup.Enabled 593 } 594 } 595 return false 596 } 597 598 // IsArgoCDEnabled returns false unless ArgoCD is explicitly enabled in the CR 599 func IsArgoCDEnabled(cr runtime.Object) bool { 600 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 601 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.ArgoCD != nil && vzv1alpha1.Spec.Components.ArgoCD.Enabled != nil { 602 return *vzv1alpha1.Spec.Components.ArgoCD.Enabled 603 } 604 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 605 if vzv1beta1 != nil && vzv1beta1.Spec.Components.ArgoCD != nil && vzv1beta1.Spec.Components.ArgoCD.Enabled != nil { 606 return *vzv1beta1.Spec.Components.ArgoCD.Enabled 607 } 608 } 609 return false 610 } 611 612 // IsThanosEnabled returns true only if Thanos is explicitly enabled in the CR 613 func IsThanosEnabled(cr runtime.Object) bool { 614 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 615 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Thanos != nil && vzv1alpha1.Spec.Components.Thanos.Enabled != nil { 616 return *vzv1alpha1.Spec.Components.Thanos.Enabled 617 } 618 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 619 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Thanos != nil && vzv1beta1.Spec.Components.Thanos.Enabled != nil { 620 return *vzv1beta1.Spec.Components.Thanos.Enabled 621 } 622 } 623 return false 624 } 625 626 // IsClusterAgentEnabled returns false only if Cluster Agent is explicitly disabled in the CR 627 func IsClusterAgentEnabled(cr runtime.Object) bool { 628 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 629 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.ClusterAgent != nil && vzv1alpha1.Spec.Components.ClusterAgent.Enabled != nil { 630 return *vzv1alpha1.Spec.Components.ClusterAgent.Enabled 631 } 632 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 633 if vzv1beta1 != nil && vzv1beta1.Spec.Components.ClusterAgent != nil && vzv1beta1.Spec.Components.ClusterAgent.Enabled != nil { 634 return *vzv1beta1.Spec.Components.ClusterAgent.Enabled 635 } 636 } 637 return true 638 } 639 640 // IsComponentStatusEnabled checks if the component is enabled by looking at the component status State field 641 func IsComponentStatusEnabled(cr runtime.Object, componentName string) bool { 642 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 643 if vzv1alpha1 != nil && 644 vzv1alpha1.Status.Components[componentName] != nil && 645 !(vzv1alpha1.Status.Components[componentName].State == installv1alpha1.CompStateDisabled || 646 vzv1alpha1.Status.Components[componentName].State == installv1alpha1.CompStateUninstalled || 647 vzv1alpha1.Status.Components[componentName].State == installv1alpha1.CompStateUninstalling) { 648 return true 649 } 650 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 651 if vzv1beta1 != nil && 652 vzv1beta1.Status.Components[componentName] != nil && 653 !(vzv1beta1.Status.Components[componentName].State == installv1beta1.CompStateDisabled || 654 vzv1beta1.Status.Components[componentName].State == installv1beta1.CompStateUninstalled || 655 vzv1beta1.Status.Components[componentName].State == installv1beta1.CompStateUninstalling) { 656 return true 657 } 658 } 659 return false 660 } 661 662 // IsAlertmanagerEnabled returns true only if the Alertmanager is explicitly enabled in the CR as part of Prometheus Operator overrides 663 func IsAlertmanagerEnabled(cr runtime.Object, ctx spi.ComponentContext) (bool, error) { 664 var overrideStrings []string 665 var err error 666 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 667 if vzv1alpha1 == nil || vzv1alpha1.Spec.Components.PrometheusOperator == nil || (vzv1alpha1.Spec.Components.PrometheusOperator.Enabled != nil && !*vzv1alpha1.Spec.Components.PrometheusOperator.Enabled) || vzv1alpha1.Spec.Components.PrometheusOperator.ValueOverrides == nil { 668 return false, nil 669 } 670 671 overrideStrings, err = override.GetInstallOverridesYAML(ctx, vzv1alpha1.Spec.Components.PrometheusOperator.ValueOverrides) 672 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 673 if vzv1beta1 == nil || vzv1beta1.Spec.Components.PrometheusOperator == nil || (vzv1beta1.Spec.Components.PrometheusOperator.Enabled != nil && !*vzv1beta1.Spec.Components.PrometheusOperator.Enabled) || vzv1beta1.Spec.Components.PrometheusOperator.ValueOverrides == nil { 674 return false, nil 675 } 676 677 overrideStrings, err = override.GetInstallOverridesYAMLUsingClient(ctx.Client(), vzv1beta1.Spec.Components.PrometheusOperator.ValueOverrides, vzv1beta1.Namespace) 678 } 679 680 if err != nil { 681 return false, fmt.Errorf("error while reading install overrides, error: %v", err.Error()) 682 } 683 684 if len(overrideStrings) == 0 { 685 return false, nil 686 } 687 688 for _, overrideYaml := range overrideStrings { 689 if strings.Contains(overrideYaml, "alertmanager:") { 690 value, err := override.ExtractValueFromOverrideString(overrideYaml, "alertmanager.enabled") 691 if err != nil { 692 return false, fmt.Errorf("error while reading value for alertmanager.enabled from overrides") 693 } 694 return value.(bool), nil 695 } 696 } 697 698 return false, nil 699 } 700 701 // IsDexEnabled returns true only if Dex is explicitly enabled in the CR 702 func IsDexEnabled(cr runtime.Object) bool { 703 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 704 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.Dex != nil && vzv1alpha1.Spec.Components.Dex.Enabled != nil { 705 return *vzv1alpha1.Spec.Components.Dex.Enabled 706 } 707 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 708 if vzv1beta1 != nil && vzv1beta1.Spec.Components.Dex != nil && vzv1beta1.Spec.Components.Dex.Enabled != nil { 709 return *vzv1beta1.Spec.Components.Dex.Enabled 710 } 711 } 712 return false 713 } 714 715 // IsOpenSearchOperatorEnabled returns false only if OpenSearchOperator is explicitly disabled in the CR 716 func IsOpenSearchOperatorEnabled(cr runtime.Object) bool { 717 if vzv1alpha1, ok := cr.(*installv1alpha1.Verrazzano); ok { 718 if vzv1alpha1 != nil && vzv1alpha1.Spec.Components.OpenSearchOperator != nil && vzv1alpha1.Spec.Components.OpenSearchOperator.Enabled != nil { 719 return *vzv1alpha1.Spec.Components.OpenSearchOperator.Enabled 720 } 721 } else if vzv1beta1, ok := cr.(*installv1beta1.Verrazzano); ok { 722 if vzv1beta1 != nil && vzv1beta1.Spec.Components.OpenSearchOperator != nil && vzv1beta1.Spec.Components.OpenSearchOperator.Enabled != nil { 723 return *vzv1beta1.Spec.Components.OpenSearchOperator.Enabled 724 } 725 } 726 return true 727 }