github.com/argoproj-labs/argocd-operator@v0.10.0/api/v1alpha1/argocd_conversion.go (about) 1 package v1alpha1 2 3 import ( 4 "reflect" 5 6 ctrl "sigs.k8s.io/controller-runtime" 7 "sigs.k8s.io/controller-runtime/pkg/conversion" 8 9 "github.com/argoproj-labs/argocd-operator/api/v1beta1" 10 ) 11 12 var conversionLogger = ctrl.Log.WithName("conversion-webhook") 13 14 // ConvertTo converts this (v1alpha1) ArgoCD to the Hub version (v1beta1). 15 func (src *ArgoCD) ConvertTo(dstRaw conversion.Hub) error { 16 conversionLogger.Info("v1alpha1 to v1beta1 conversion requested.") 17 dst := dstRaw.(*v1beta1.ArgoCD) 18 19 // ObjectMeta conversion 20 dst.ObjectMeta = src.ObjectMeta 21 22 // Spec conversion 23 24 // sso field 25 sso := ConvertAlphaToBetaSSO(src.Spec.SSO) 26 27 // in case of conflict, deprecated fields will have more priority during conversion to beta 28 // deprecated keycloak configs set in alpha (.spec.sso.image, .spec.sso.version, .spec.sso.verifyTLS, .spec.sso.resources), 29 // override .spec.sso.keycloak in beta 30 if src.Spec.SSO != nil && !reflect.DeepEqual(src.Spec.SSO, &ArgoCDSSOSpec{}) { 31 if src.Spec.SSO.Image != "" || src.Spec.SSO.Version != "" || src.Spec.SSO.VerifyTLS != nil || src.Spec.SSO.Resources != nil { 32 if sso.Keycloak == nil { 33 sso.Keycloak = &v1beta1.ArgoCDKeycloakSpec{} 34 } 35 sso.Keycloak.Image = src.Spec.SSO.Image 36 sso.Keycloak.Version = src.Spec.SSO.Version 37 sso.Keycloak.VerifyTLS = src.Spec.SSO.VerifyTLS 38 sso.Keycloak.Resources = src.Spec.SSO.Resources 39 } 40 } 41 42 // deprecated dex configs set in alpha (.spec.dex), override .spec.sso.dex in beta 43 if src.Spec.Dex != nil && !reflect.DeepEqual(src.Spec.Dex, &ArgoCDDexSpec{}) && (src.Spec.Dex.Config != "" || src.Spec.Dex.OpenShiftOAuth) { 44 if sso == nil { 45 sso = &v1beta1.ArgoCDSSOSpec{} 46 } 47 sso.Provider = v1beta1.SSOProviderTypeDex 48 sso.Dex = ConvertAlphaToBetaDex(src.Spec.Dex) 49 } 50 51 dst.Spec.SSO = sso 52 53 // rest of the fields 54 dst.Spec.ApplicationSet = ConvertAlphaToBetaApplicationSet(src.Spec.ApplicationSet) 55 dst.Spec.ExtraConfig = src.Spec.ExtraConfig 56 dst.Spec.ApplicationInstanceLabelKey = src.Spec.ApplicationInstanceLabelKey 57 dst.Spec.ConfigManagementPlugins = src.Spec.ConfigManagementPlugins 58 dst.Spec.Controller = *ConvertAlphaToBetaController(&src.Spec.Controller) 59 dst.Spec.DisableAdmin = src.Spec.DisableAdmin 60 dst.Spec.ExtraConfig = src.Spec.ExtraConfig 61 dst.Spec.GATrackingID = src.Spec.GATrackingID 62 dst.Spec.GAAnonymizeUsers = src.Spec.GAAnonymizeUsers 63 dst.Spec.Grafana = *ConvertAlphaToBetaGrafana(&src.Spec.Grafana) 64 dst.Spec.HA = *ConvertAlphaToBetaHA(&src.Spec.HA) 65 dst.Spec.HelpChatURL = src.Spec.HelpChatURL 66 dst.Spec.HelpChatText = src.Spec.HelpChatText 67 dst.Spec.Image = src.Spec.Image 68 dst.Spec.Import = (*v1beta1.ArgoCDImportSpec)(src.Spec.Import) 69 dst.Spec.InitialRepositories = src.Spec.InitialRepositories 70 dst.Spec.InitialSSHKnownHosts = v1beta1.SSHHostsSpec(src.Spec.InitialSSHKnownHosts) 71 dst.Spec.KustomizeBuildOptions = src.Spec.KustomizeBuildOptions 72 dst.Spec.KustomizeVersions = ConvertAlphaToBetaKustomizeVersions(src.Spec.KustomizeVersions) 73 dst.Spec.OIDCConfig = src.Spec.OIDCConfig 74 dst.Spec.Monitoring = v1beta1.ArgoCDMonitoringSpec(src.Spec.Monitoring) 75 dst.Spec.NodePlacement = (*v1beta1.ArgoCDNodePlacementSpec)(src.Spec.NodePlacement) 76 dst.Spec.Notifications = v1beta1.ArgoCDNotifications(src.Spec.Notifications) 77 dst.Spec.Prometheus = *ConvertAlphaToBetaPrometheus(&src.Spec.Prometheus) 78 dst.Spec.RBAC = v1beta1.ArgoCDRBACSpec(src.Spec.RBAC) 79 dst.Spec.Redis = *ConvertAlphaToBetaRedis(&src.Spec.Redis) 80 dst.Spec.Repo = *ConvertAlphaToBetaRepo(&src.Spec.Repo) 81 dst.Spec.RepositoryCredentials = src.Spec.RepositoryCredentials 82 dst.Spec.ResourceHealthChecks = ConvertAlphaToBetaResourceHealthChecks(src.Spec.ResourceHealthChecks) 83 dst.Spec.ResourceIgnoreDifferences = ConvertAlphaToBetaResourceIgnoreDifferences(src.Spec.ResourceIgnoreDifferences) 84 dst.Spec.ResourceActions = ConvertAlphaToBetaResourceActions(src.Spec.ResourceActions) 85 dst.Spec.ResourceExclusions = src.Spec.ResourceExclusions 86 dst.Spec.ResourceInclusions = src.Spec.ResourceInclusions 87 dst.Spec.ResourceTrackingMethod = src.Spec.ResourceTrackingMethod 88 dst.Spec.Server = *ConvertAlphaToBetaServer(&src.Spec.Server) 89 dst.Spec.SourceNamespaces = src.Spec.SourceNamespaces 90 dst.Spec.StatusBadgeEnabled = src.Spec.StatusBadgeEnabled 91 dst.Spec.TLS = *ConvertAlphaToBetaTLS(&src.Spec.TLS) 92 dst.Spec.UsersAnonymousEnabled = src.Spec.UsersAnonymousEnabled 93 dst.Spec.Version = src.Spec.Version 94 dst.Spec.Banner = (*v1beta1.Banner)(src.Spec.Banner) 95 96 // Status conversion 97 dst.Status = v1beta1.ArgoCDStatus(src.Status) 98 99 return nil 100 } 101 102 // ConvertFrom converts from the Hub version (v1beta1) to this (v1alpha1) version. 103 func (dst *ArgoCD) ConvertFrom(srcRaw conversion.Hub) error { 104 conversionLogger.Info("v1beta1 to v1alpha1 conversion requested.") 105 106 src := srcRaw.(*v1beta1.ArgoCD) 107 108 // ObjectMeta conversion 109 dst.ObjectMeta = src.ObjectMeta 110 111 // Spec conversion 112 113 // sso field 114 // ignoring conversions of sso fields from v1beta1 to deprecated v1alpha1 as 115 // there is no data loss since the new fields in v1beta1 are also present in v1alpha1 & 116 // v1alpha1 is not used in business logic & only exists for presentation 117 sso := ConvertBetaToAlphaSSO(src.Spec.SSO) 118 dst.Spec.SSO = sso 119 120 // rest of the fields 121 dst.Spec.ApplicationSet = ConvertBetaToAlphaApplicationSet(src.Spec.ApplicationSet) 122 dst.Spec.ExtraConfig = src.Spec.ExtraConfig 123 dst.Spec.ApplicationInstanceLabelKey = src.Spec.ApplicationInstanceLabelKey 124 dst.Spec.ConfigManagementPlugins = src.Spec.ConfigManagementPlugins 125 dst.Spec.Controller = *ConvertBetaToAlphaController(&src.Spec.Controller) 126 dst.Spec.DisableAdmin = src.Spec.DisableAdmin 127 dst.Spec.ExtraConfig = src.Spec.ExtraConfig 128 dst.Spec.GATrackingID = src.Spec.GATrackingID 129 dst.Spec.GAAnonymizeUsers = src.Spec.GAAnonymizeUsers 130 dst.Spec.Grafana = *ConvertBetaToAlphaGrafana(&src.Spec.Grafana) 131 dst.Spec.HA = *ConvertBetaToAlphaHA(&src.Spec.HA) 132 dst.Spec.HelpChatURL = src.Spec.HelpChatURL 133 dst.Spec.HelpChatText = src.Spec.HelpChatText 134 dst.Spec.Image = src.Spec.Image 135 dst.Spec.Import = (*ArgoCDImportSpec)(src.Spec.Import) 136 dst.Spec.InitialRepositories = src.Spec.InitialRepositories 137 dst.Spec.InitialSSHKnownHosts = SSHHostsSpec(src.Spec.InitialSSHKnownHosts) 138 dst.Spec.KustomizeBuildOptions = src.Spec.KustomizeBuildOptions 139 dst.Spec.KustomizeVersions = ConvertBetaToAlphaKustomizeVersions(src.Spec.KustomizeVersions) 140 dst.Spec.OIDCConfig = src.Spec.OIDCConfig 141 dst.Spec.Monitoring = ArgoCDMonitoringSpec(src.Spec.Monitoring) 142 dst.Spec.NodePlacement = (*ArgoCDNodePlacementSpec)(src.Spec.NodePlacement) 143 dst.Spec.Notifications = ArgoCDNotifications(src.Spec.Notifications) 144 dst.Spec.Prometheus = *ConvertBetaToAlphaPrometheus(&src.Spec.Prometheus) 145 dst.Spec.RBAC = ArgoCDRBACSpec(src.Spec.RBAC) 146 dst.Spec.Redis = *ConvertBetaToAlphaRedis(&src.Spec.Redis) 147 dst.Spec.Repo = *ConvertBetaToAlphaRepo(&src.Spec.Repo) 148 dst.Spec.RepositoryCredentials = src.Spec.RepositoryCredentials 149 dst.Spec.ResourceHealthChecks = ConvertBetaToAlphaResourceHealthChecks(src.Spec.ResourceHealthChecks) 150 dst.Spec.ResourceIgnoreDifferences = ConvertBetaToAlphaResourceIgnoreDifferences(src.Spec.ResourceIgnoreDifferences) 151 dst.Spec.ResourceActions = ConvertBetaToAlphaResourceActions(src.Spec.ResourceActions) 152 dst.Spec.ResourceExclusions = src.Spec.ResourceExclusions 153 dst.Spec.ResourceInclusions = src.Spec.ResourceInclusions 154 dst.Spec.ResourceTrackingMethod = src.Spec.ResourceTrackingMethod 155 dst.Spec.Server = *ConvertBetaToAlphaServer(&src.Spec.Server) 156 dst.Spec.SourceNamespaces = src.Spec.SourceNamespaces 157 dst.Spec.StatusBadgeEnabled = src.Spec.StatusBadgeEnabled 158 dst.Spec.TLS = *ConvertBetaToAlphaTLS(&src.Spec.TLS) 159 dst.Spec.UsersAnonymousEnabled = src.Spec.UsersAnonymousEnabled 160 dst.Spec.Version = src.Spec.Version 161 dst.Spec.Banner = (*Banner)(src.Spec.Banner) 162 163 // Status conversion 164 dst.Status = ArgoCDStatus(src.Status) 165 166 return nil 167 } 168 169 // Conversion funcs for v1alpha1 to v1beta1. 170 func ConvertAlphaToBetaController(src *ArgoCDApplicationControllerSpec) *v1beta1.ArgoCDApplicationControllerSpec { 171 var dst *v1beta1.ArgoCDApplicationControllerSpec 172 if src != nil { 173 dst = &v1beta1.ArgoCDApplicationControllerSpec{ 174 Processors: v1beta1.ArgoCDApplicationControllerProcessorsSpec(src.Processors), 175 LogLevel: src.LogLevel, 176 LogFormat: src.LogFormat, 177 Resources: src.Resources, 178 ParallelismLimit: src.ParallelismLimit, 179 AppSync: src.AppSync, 180 Sharding: v1beta1.ArgoCDApplicationControllerShardSpec(src.Sharding), 181 Env: src.Env, 182 } 183 } 184 return dst 185 } 186 187 func ConvertAlphaToBetaRedis(src *ArgoCDRedisSpec) *v1beta1.ArgoCDRedisSpec { 188 var dst *v1beta1.ArgoCDRedisSpec 189 if src != nil { 190 dst = &v1beta1.ArgoCDRedisSpec{ 191 AutoTLS: src.AutoTLS, 192 DisableTLSVerification: src.DisableTLSVerification, 193 Image: src.Image, 194 Resources: src.Resources, 195 Version: src.Version, 196 } 197 } 198 return dst 199 } 200 201 func ConvertAlphaToBetaRepo(src *ArgoCDRepoSpec) *v1beta1.ArgoCDRepoSpec { 202 var dst *v1beta1.ArgoCDRepoSpec 203 if src != nil { 204 dst = &v1beta1.ArgoCDRepoSpec{ 205 AutoTLS: src.AutoTLS, 206 Env: src.Env, 207 ExecTimeout: src.ExecTimeout, 208 ExtraRepoCommandArgs: src.ExtraRepoCommandArgs, 209 Image: src.Image, 210 InitContainers: src.InitContainers, 211 LogFormat: src.LogFormat, 212 LogLevel: src.LogLevel, 213 MountSAToken: src.MountSAToken, 214 Replicas: src.Replicas, 215 Resources: src.Resources, 216 ServiceAccount: src.ServiceAccount, 217 SidecarContainers: src.SidecarContainers, 218 VerifyTLS: src.VerifyTLS, 219 Version: src.Version, 220 VolumeMounts: src.VolumeMounts, 221 Volumes: src.Volumes, 222 } 223 } 224 return dst 225 } 226 227 func ConvertAlphaToBetaWebhookServer(src *WebhookServerSpec) *v1beta1.WebhookServerSpec { 228 var dst *v1beta1.WebhookServerSpec 229 if src != nil { 230 dst = &v1beta1.WebhookServerSpec{ 231 Host: src.Host, 232 Ingress: v1beta1.ArgoCDIngressSpec(src.Ingress), 233 Route: v1beta1.ArgoCDRouteSpec(src.Route), 234 } 235 } 236 return dst 237 } 238 239 func ConvertAlphaToBetaApplicationSet(src *ArgoCDApplicationSet) *v1beta1.ArgoCDApplicationSet { 240 var dst *v1beta1.ArgoCDApplicationSet 241 if src != nil { 242 dst = &v1beta1.ArgoCDApplicationSet{ 243 Env: src.Env, 244 ExtraCommandArgs: src.ExtraCommandArgs, 245 Image: src.Image, 246 Version: src.Version, 247 Resources: src.Resources, 248 LogLevel: src.LogLevel, 249 WebhookServer: *ConvertAlphaToBetaWebhookServer(&src.WebhookServer), 250 } 251 } 252 return dst 253 } 254 255 func ConvertAlphaToBetaGrafana(src *ArgoCDGrafanaSpec) *v1beta1.ArgoCDGrafanaSpec { 256 var dst *v1beta1.ArgoCDGrafanaSpec 257 if src != nil { 258 dst = &v1beta1.ArgoCDGrafanaSpec{ 259 Enabled: src.Enabled, 260 Host: src.Host, 261 Image: src.Image, 262 Ingress: v1beta1.ArgoCDIngressSpec(src.Ingress), 263 } 264 } 265 return dst 266 } 267 268 func ConvertAlphaToBetaPrometheus(src *ArgoCDPrometheusSpec) *v1beta1.ArgoCDPrometheusSpec { 269 var dst *v1beta1.ArgoCDPrometheusSpec 270 if src != nil { 271 dst = &v1beta1.ArgoCDPrometheusSpec{ 272 Enabled: src.Enabled, 273 Host: src.Host, 274 Ingress: v1beta1.ArgoCDIngressSpec(src.Ingress), 275 Route: v1beta1.ArgoCDRouteSpec(src.Route), 276 Size: src.Size, 277 } 278 } 279 return dst 280 } 281 282 func ConvertAlphaToBetaSSO(src *ArgoCDSSOSpec) *v1beta1.ArgoCDSSOSpec { 283 var dst *v1beta1.ArgoCDSSOSpec 284 if src != nil { 285 dst = &v1beta1.ArgoCDSSOSpec{ 286 Provider: v1beta1.SSOProviderType(src.Provider), 287 Dex: ConvertAlphaToBetaDex(src.Dex), 288 Keycloak: (*v1beta1.ArgoCDKeycloakSpec)(src.Keycloak), 289 } 290 } 291 return dst 292 } 293 294 func ConvertAlphaToBetaDex(src *ArgoCDDexSpec) *v1beta1.ArgoCDDexSpec { 295 var dst *v1beta1.ArgoCDDexSpec 296 if src != nil { 297 dst = &v1beta1.ArgoCDDexSpec{ 298 Config: src.Config, 299 Groups: src.Groups, 300 Image: src.Image, 301 OpenShiftOAuth: src.OpenShiftOAuth, 302 Resources: src.Resources, 303 Version: src.Version, 304 Env: nil, 305 } 306 } 307 return dst 308 } 309 310 func ConvertAlphaToBetaHA(src *ArgoCDHASpec) *v1beta1.ArgoCDHASpec { 311 var dst *v1beta1.ArgoCDHASpec 312 if src != nil { 313 dst = &v1beta1.ArgoCDHASpec{ 314 Enabled: src.Enabled, 315 RedisProxyImage: src.RedisProxyImage, 316 RedisProxyVersion: src.RedisProxyVersion, 317 Resources: src.Resources, 318 } 319 } 320 return dst 321 } 322 323 func ConvertAlphaToBetaTLS(src *ArgoCDTLSSpec) *v1beta1.ArgoCDTLSSpec { 324 var dst *v1beta1.ArgoCDTLSSpec 325 if src != nil { 326 dst = &v1beta1.ArgoCDTLSSpec{ 327 CA: v1beta1.ArgoCDCASpec(src.CA), 328 InitialCerts: src.InitialCerts, 329 } 330 } 331 return dst 332 } 333 334 func ConvertAlphaToBetaServer(src *ArgoCDServerSpec) *v1beta1.ArgoCDServerSpec { 335 var dst *v1beta1.ArgoCDServerSpec 336 if src != nil { 337 dst = &v1beta1.ArgoCDServerSpec{ 338 Autoscale: v1beta1.ArgoCDServerAutoscaleSpec(src.Autoscale), 339 GRPC: *ConvertAlphaToBetaGRPC(&src.GRPC), 340 Host: src.Host, 341 Ingress: v1beta1.ArgoCDIngressSpec(src.Ingress), 342 Insecure: src.Insecure, 343 LogLevel: src.LogLevel, 344 LogFormat: src.LogFormat, 345 Replicas: src.Replicas, 346 Resources: src.Resources, 347 Route: v1beta1.ArgoCDRouteSpec(src.Route), 348 Service: v1beta1.ArgoCDServerServiceSpec(src.Service), 349 Env: src.Env, 350 ExtraCommandArgs: src.ExtraCommandArgs, 351 } 352 } 353 return dst 354 } 355 356 func ConvertAlphaToBetaGRPC(src *ArgoCDServerGRPCSpec) *v1beta1.ArgoCDServerGRPCSpec { 357 var dst *v1beta1.ArgoCDServerGRPCSpec 358 if src != nil { 359 dst = &v1beta1.ArgoCDServerGRPCSpec{ 360 Host: src.Host, 361 Ingress: v1beta1.ArgoCDIngressSpec(src.Ingress), 362 } 363 } 364 return dst 365 } 366 367 func ConvertAlphaToBetaKustomizeVersions(src []KustomizeVersionSpec) []v1beta1.KustomizeVersionSpec { 368 var dst []v1beta1.KustomizeVersionSpec 369 for _, s := range src { 370 dst = append(dst, v1beta1.KustomizeVersionSpec{ 371 Version: s.Version, 372 Path: s.Path, 373 }, 374 ) 375 } 376 return dst 377 } 378 379 func ConvertAlphaToBetaResourceIgnoreDifferences(src *ResourceIgnoreDifference) *v1beta1.ResourceIgnoreDifference { 380 var dst *v1beta1.ResourceIgnoreDifference 381 if src != nil { 382 dst = &v1beta1.ResourceIgnoreDifference{ 383 All: (*v1beta1.IgnoreDifferenceCustomization)(src.All), 384 ResourceIdentifiers: ConvertAlphaToBetaResourceIdentifiers(src.ResourceIdentifiers), 385 } 386 } 387 return dst 388 } 389 390 func ConvertAlphaToBetaResourceIdentifiers(src []ResourceIdentifiers) []v1beta1.ResourceIdentifiers { 391 var dst []v1beta1.ResourceIdentifiers 392 for _, s := range src { 393 dst = append(dst, v1beta1.ResourceIdentifiers{ 394 Group: s.Group, 395 Kind: s.Kind, 396 Customization: v1beta1.IgnoreDifferenceCustomization(s.Customization), 397 }, 398 ) 399 } 400 return dst 401 } 402 403 func ConvertAlphaToBetaResourceActions(src []ResourceAction) []v1beta1.ResourceAction { 404 var dst []v1beta1.ResourceAction 405 for _, s := range src { 406 dst = append(dst, v1beta1.ResourceAction{ 407 Group: s.Group, 408 Kind: s.Kind, 409 Action: s.Action, 410 }, 411 ) 412 } 413 return dst 414 } 415 416 func ConvertAlphaToBetaResourceHealthChecks(src []ResourceHealthCheck) []v1beta1.ResourceHealthCheck { 417 var dst []v1beta1.ResourceHealthCheck 418 for _, s := range src { 419 dst = append(dst, v1beta1.ResourceHealthCheck{ 420 Group: s.Group, 421 Kind: s.Kind, 422 Check: s.Check, 423 }, 424 ) 425 } 426 return dst 427 } 428 429 // Conversion funcs for v1beta1 to v1alpha1. 430 func ConvertBetaToAlphaController(src *v1beta1.ArgoCDApplicationControllerSpec) *ArgoCDApplicationControllerSpec { 431 var dst *ArgoCDApplicationControllerSpec 432 if src != nil { 433 dst = &ArgoCDApplicationControllerSpec{ 434 Processors: ArgoCDApplicationControllerProcessorsSpec(src.Processors), 435 LogLevel: src.LogLevel, 436 LogFormat: src.LogFormat, 437 Resources: src.Resources, 438 ParallelismLimit: src.ParallelismLimit, 439 AppSync: src.AppSync, 440 Sharding: ArgoCDApplicationControllerShardSpec(src.Sharding), 441 Env: src.Env, 442 } 443 } 444 return dst 445 } 446 447 func ConvertBetaToAlphaWebhookServer(src *v1beta1.WebhookServerSpec) *WebhookServerSpec { 448 var dst *WebhookServerSpec 449 if src != nil { 450 dst = &WebhookServerSpec{ 451 Host: src.Host, 452 Ingress: ArgoCDIngressSpec(src.Ingress), 453 Route: ArgoCDRouteSpec(src.Route), 454 } 455 } 456 return dst 457 } 458 459 func ConvertBetaToAlphaApplicationSet(src *v1beta1.ArgoCDApplicationSet) *ArgoCDApplicationSet { 460 var dst *ArgoCDApplicationSet 461 if src != nil { 462 dst = &ArgoCDApplicationSet{ 463 Env: src.Env, 464 ExtraCommandArgs: src.ExtraCommandArgs, 465 Image: src.Image, 466 Version: src.Version, 467 Resources: src.Resources, 468 LogLevel: src.LogLevel, 469 WebhookServer: *ConvertBetaToAlphaWebhookServer(&src.WebhookServer), 470 } 471 } 472 return dst 473 } 474 475 func ConvertBetaToAlphaGrafana(src *v1beta1.ArgoCDGrafanaSpec) *ArgoCDGrafanaSpec { 476 var dst *ArgoCDGrafanaSpec 477 if src != nil { 478 dst = &ArgoCDGrafanaSpec{ 479 Enabled: src.Enabled, 480 Host: src.Host, 481 Image: src.Image, 482 Ingress: ArgoCDIngressSpec(src.Ingress), 483 } 484 } 485 return dst 486 } 487 488 func ConvertBetaToAlphaPrometheus(src *v1beta1.ArgoCDPrometheusSpec) *ArgoCDPrometheusSpec { 489 var dst *ArgoCDPrometheusSpec 490 if src != nil { 491 dst = &ArgoCDPrometheusSpec{ 492 Enabled: src.Enabled, 493 Host: src.Host, 494 Ingress: ArgoCDIngressSpec(src.Ingress), 495 Route: ArgoCDRouteSpec(src.Route), 496 Size: src.Size, 497 } 498 } 499 return dst 500 } 501 502 func ConvertBetaToAlphaSSO(src *v1beta1.ArgoCDSSOSpec) *ArgoCDSSOSpec { 503 var dst *ArgoCDSSOSpec 504 if src != nil { 505 dst = &ArgoCDSSOSpec{ 506 Provider: SSOProviderType(src.Provider), 507 Dex: ConvertBetaToAlphaDex(src.Dex), 508 Keycloak: (*ArgoCDKeycloakSpec)(src.Keycloak), 509 } 510 } 511 return dst 512 } 513 514 func ConvertBetaToAlphaDex(src *v1beta1.ArgoCDDexSpec) *ArgoCDDexSpec { 515 var dst *ArgoCDDexSpec 516 if src != nil { 517 dst = &ArgoCDDexSpec{ 518 Config: src.Config, 519 Groups: src.Groups, 520 Image: src.Image, 521 OpenShiftOAuth: src.OpenShiftOAuth, 522 Resources: src.Resources, 523 Version: src.Version, 524 } 525 } 526 return dst 527 } 528 529 func ConvertBetaToAlphaHA(src *v1beta1.ArgoCDHASpec) *ArgoCDHASpec { 530 var dst *ArgoCDHASpec 531 if src != nil { 532 dst = &ArgoCDHASpec{ 533 Enabled: src.Enabled, 534 RedisProxyImage: src.RedisProxyImage, 535 RedisProxyVersion: src.RedisProxyVersion, 536 Resources: src.Resources, 537 } 538 } 539 return dst 540 } 541 542 func ConvertBetaToAlphaTLS(src *v1beta1.ArgoCDTLSSpec) *ArgoCDTLSSpec { 543 var dst *ArgoCDTLSSpec 544 if src != nil { 545 dst = &ArgoCDTLSSpec{ 546 CA: ArgoCDCASpec(src.CA), 547 InitialCerts: src.InitialCerts, 548 } 549 } 550 return dst 551 } 552 553 func ConvertBetaToAlphaServer(src *v1beta1.ArgoCDServerSpec) *ArgoCDServerSpec { 554 var dst *ArgoCDServerSpec 555 if src != nil { 556 dst = &ArgoCDServerSpec{ 557 Autoscale: ArgoCDServerAutoscaleSpec(src.Autoscale), 558 GRPC: *ConvertBetaToAlphaGRPC(&src.GRPC), 559 Host: src.Host, 560 Ingress: ArgoCDIngressSpec(src.Ingress), 561 Insecure: src.Insecure, 562 LogLevel: src.LogLevel, 563 LogFormat: src.LogFormat, 564 Replicas: src.Replicas, 565 Resources: src.Resources, 566 Route: ArgoCDRouteSpec(src.Route), 567 Service: ArgoCDServerServiceSpec(src.Service), 568 Env: src.Env, 569 ExtraCommandArgs: src.ExtraCommandArgs, 570 } 571 } 572 return dst 573 } 574 575 func ConvertBetaToAlphaGRPC(src *v1beta1.ArgoCDServerGRPCSpec) *ArgoCDServerGRPCSpec { 576 var dst *ArgoCDServerGRPCSpec 577 if src != nil { 578 dst = &ArgoCDServerGRPCSpec{ 579 Host: src.Host, 580 Ingress: ArgoCDIngressSpec(src.Ingress), 581 } 582 } 583 return dst 584 } 585 586 func ConvertBetaToAlphaKustomizeVersions(src []v1beta1.KustomizeVersionSpec) []KustomizeVersionSpec { 587 var dst []KustomizeVersionSpec 588 for _, s := range src { 589 dst = append(dst, KustomizeVersionSpec{ 590 Version: s.Version, 591 Path: s.Path, 592 }, 593 ) 594 } 595 return dst 596 } 597 598 func ConvertBetaToAlphaResourceIgnoreDifferences(src *v1beta1.ResourceIgnoreDifference) *ResourceIgnoreDifference { 599 var dst *ResourceIgnoreDifference 600 if src != nil { 601 dst = &ResourceIgnoreDifference{ 602 All: (*IgnoreDifferenceCustomization)(src.All), 603 ResourceIdentifiers: ConvertBetaToAlphaResourceIdentifiers(src.ResourceIdentifiers), 604 } 605 } 606 return dst 607 } 608 609 func ConvertBetaToAlphaResourceIdentifiers(src []v1beta1.ResourceIdentifiers) []ResourceIdentifiers { 610 var dst []ResourceIdentifiers 611 for _, s := range src { 612 dst = append(dst, ResourceIdentifiers{ 613 Group: s.Group, 614 Kind: s.Kind, 615 Customization: IgnoreDifferenceCustomization(s.Customization), 616 }, 617 ) 618 } 619 return dst 620 } 621 622 func ConvertBetaToAlphaResourceActions(src []v1beta1.ResourceAction) []ResourceAction { 623 var dst []ResourceAction 624 for _, s := range src { 625 dst = append(dst, ResourceAction{ 626 Group: s.Group, 627 Kind: s.Kind, 628 Action: s.Action, 629 }, 630 ) 631 } 632 return dst 633 } 634 635 func ConvertBetaToAlphaResourceHealthChecks(src []v1beta1.ResourceHealthCheck) []ResourceHealthCheck { 636 var dst []ResourceHealthCheck 637 for _, s := range src { 638 dst = append(dst, ResourceHealthCheck{ 639 Group: s.Group, 640 Kind: s.Kind, 641 Check: s.Check, 642 }, 643 ) 644 } 645 return dst 646 } 647 648 func ConvertBetaToAlphaRedis(src *v1beta1.ArgoCDRedisSpec) *ArgoCDRedisSpec { 649 var dst *ArgoCDRedisSpec 650 if src != nil { 651 dst = &ArgoCDRedisSpec{ 652 AutoTLS: src.AutoTLS, 653 DisableTLSVerification: src.DisableTLSVerification, 654 Image: src.Image, 655 Resources: src.Resources, 656 Version: src.Version, 657 } 658 } 659 return dst 660 } 661 662 func ConvertBetaToAlphaRepo(src *v1beta1.ArgoCDRepoSpec) *ArgoCDRepoSpec { 663 var dst *ArgoCDRepoSpec 664 if src != nil { 665 dst = &ArgoCDRepoSpec{ 666 AutoTLS: src.AutoTLS, 667 Env: src.Env, 668 ExecTimeout: src.ExecTimeout, 669 ExtraRepoCommandArgs: src.ExtraRepoCommandArgs, 670 Image: src.Image, 671 InitContainers: src.InitContainers, 672 LogFormat: src.LogFormat, 673 LogLevel: src.LogLevel, 674 MountSAToken: src.MountSAToken, 675 Replicas: src.Replicas, 676 Resources: src.Resources, 677 ServiceAccount: src.ServiceAccount, 678 SidecarContainers: src.SidecarContainers, 679 VerifyTLS: src.VerifyTLS, 680 Version: src.Version, 681 VolumeMounts: src.VolumeMounts, 682 Volumes: src.Volumes, 683 } 684 } 685 return dst 686 }