github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/api/migrate/v1beta1tov1beta2.go (about) 1 package migrate 2 3 import ( 4 "github.com/caos/orbos/internal/operator/boom/api/latest" 5 "github.com/caos/orbos/internal/operator/boom/api/migrate/argocd" 6 "github.com/caos/orbos/internal/operator/boom/api/migrate/grafana" 7 "github.com/caos/orbos/internal/operator/boom/api/migrate/storage" 8 "github.com/caos/orbos/internal/operator/boom/api/v1beta1" 9 "github.com/caos/orbos/internal/operator/boom/api/v1beta2" 10 ) 11 12 func V1beta1Tov1beta2(oldToolset *v1beta1.Toolset) *v1beta2.Toolset { 13 newToolset := &v1beta2.Toolset{ 14 APIVersion: "boom.caos.ch/v1beta2", 15 Metadata: &latest.Metadata{ 16 Name: oldToolset.Metadata.Name, 17 Namespace: oldToolset.Metadata.Namespace, 18 }, 19 Kind: "Toolset", 20 } 21 if oldToolset.Spec != nil { 22 oldSpec := oldToolset.Spec 23 newSpec := &v1beta2.ToolsetSpec{ 24 CurrentStateFolder: oldSpec.CurrentStateFolder, 25 ForceApply: oldSpec.ForceApply, 26 } 27 if oldSpec.BoomVersion != "" { 28 newSpec.Boom = &latest.Boom{ 29 Version: oldSpec.BoomVersion, 30 } 31 } 32 33 if oldSpec.PreApply != nil { 34 newSpec.PreApply = &latest.Apply{ 35 Deploy: oldSpec.PreApply.Deploy, 36 Folder: oldSpec.PreApply.Folder, 37 } 38 } 39 40 if oldSpec.PostApply != nil { 41 newSpec.PostApply = &latest.Apply{ 42 Deploy: oldSpec.PostApply.Deploy, 43 Folder: oldSpec.PostApply.Folder, 44 } 45 } 46 47 if oldSpec.PrometheusOperator != nil { 48 newSpec.MetricCollection = &latest.MetricCollection{ 49 Deploy: oldSpec.PrometheusOperator.Deploy, 50 NodeSelector: oldSpec.PrometheusOperator.NodeSelector, 51 } 52 } 53 54 if oldSpec.LoggingOperator != nil { 55 newSpec.LogCollection = &v1beta2.LogCollection{ 56 Deploy: oldSpec.LoggingOperator.Deploy, 57 NodeSelector: oldSpec.LoggingOperator.NodeSelector, 58 } 59 if oldSpec.LoggingOperator.FluentdPVC != nil { 60 newSpec.LogCollection.FluentdPVC = storage.V1beta1Tov1beta2(oldSpec.LoggingOperator.FluentdPVC) 61 } 62 } 63 64 if oldSpec.PrometheusNodeExporter != nil { 65 newSpec.NodeMetricsExporter = &latest.NodeMetricsExporter{Deploy: oldSpec.PrometheusNodeExporter.Deploy} 66 } 67 68 if oldSpec.PrometheusSystemdExporter != nil { 69 newSpec.SystemdMetricsExporter = &latest.SystemdMetricsExporter{Deploy: oldSpec.PrometheusSystemdExporter.Deploy} 70 } 71 72 if oldSpec.Ambassador != nil { 73 newSpec.APIGateway = &latest.APIGateway{ 74 Deploy: oldSpec.Ambassador.Deploy, 75 ReplicaCount: oldSpec.Ambassador.ReplicaCount, 76 ActivateDevPortal: oldSpec.Ambassador.ActivateDevPortal, 77 NodeSelector: oldSpec.Ambassador.NodeSelector, 78 } 79 if oldSpec.Ambassador.Service != nil { 80 newSpec.APIGateway.Service = &latest.AmbassadorService{ 81 Type: oldSpec.Ambassador.Service.Type, 82 LoadBalancerIP: oldSpec.Ambassador.Service.LoadBalancerIP, 83 } 84 if oldSpec.Ambassador.Service.Ports != nil { 85 ports := make([]*latest.Port, 0) 86 for _, v := range oldSpec.Ambassador.Service.Ports { 87 ports = append(ports, &latest.Port{ 88 Name: v.Name, 89 Port: v.Port, 90 TargetPort: v.TargetPort, 91 NodePort: v.NodePort, 92 }) 93 } 94 newSpec.APIGateway.Service.Ports = ports 95 } 96 } 97 } 98 99 if oldSpec.Grafana != nil { 100 newSpec.Monitoring = grafana.V1beta1Tov1beta2(oldSpec.Grafana) 101 } 102 103 if oldSpec.Argocd != nil { 104 newSpec.Reconciling = argocd.V1beta1Tov1beta2(oldSpec.Argocd) 105 } 106 if oldSpec.KubeStateMetrics != nil { 107 newSpec.KubeMetricsExporter = &latest.KubeMetricsExporter{ 108 Deploy: oldSpec.KubeStateMetrics.Deploy, 109 ReplicaCount: oldSpec.KubeStateMetrics.ReplicaCount, 110 NodeSelector: oldSpec.KubeStateMetrics.NodeSelector, 111 } 112 } 113 if oldSpec.Prometheus != nil { 114 newSpec.MetricsPersisting = &latest.MetricsPersisting{ 115 Deploy: oldSpec.Prometheus.Deploy, 116 NodeSelector: oldSpec.Prometheus.NodeSelector, 117 } 118 if oldSpec.Prometheus.Storage != nil { 119 newSpec.MetricsPersisting.Storage = storage.V1beta1Tov1beta2(oldSpec.Prometheus.Storage) 120 } 121 if oldSpec.Prometheus.Metrics != nil { 122 newSpec.MetricsPersisting.Metrics = &latest.Metrics{ 123 Ambassador: oldSpec.Prometheus.Metrics.Ambassador, 124 Argocd: oldSpec.Prometheus.Metrics.Argocd, 125 KubeStateMetrics: oldSpec.Prometheus.Metrics.KubeStateMetrics, 126 PrometheusNodeExporter: oldSpec.Prometheus.Metrics.PrometheusNodeExporter, 127 PrometheusSystemdExporter: oldSpec.Prometheus.Metrics.PrometheusSystemdExporter, 128 APIServer: oldSpec.Prometheus.Metrics.APIServer, 129 PrometheusOperator: oldSpec.Prometheus.Metrics.PrometheusOperator, 130 LoggingOperator: oldSpec.Prometheus.Metrics.LoggingOperator, 131 Loki: oldSpec.Prometheus.Metrics.Loki, 132 Boom: oldSpec.Prometheus.Metrics.Boom, 133 Orbiter: oldSpec.Prometheus.Metrics.Orbiter, 134 } 135 } 136 if oldSpec.Prometheus.RemoteWrite != nil { 137 newSpec.MetricsPersisting.RemoteWrite = &latest.RemoteWrite{ 138 URL: oldSpec.Prometheus.RemoteWrite.URL, 139 } 140 if oldSpec.Prometheus.RemoteWrite.BasicAuth != nil { 141 newSpec.MetricsPersisting.RemoteWrite.BasicAuth = &latest.BasicAuth{} 142 if oldSpec.Prometheus.RemoteWrite.BasicAuth.Username != nil { 143 newSpec.MetricsPersisting.RemoteWrite.BasicAuth.Username = &latest.SecretKeySelector{ 144 Name: oldSpec.Prometheus.RemoteWrite.BasicAuth.Username.Name, 145 Key: oldSpec.Prometheus.RemoteWrite.BasicAuth.Username.Key, 146 } 147 } 148 if oldSpec.Prometheus.RemoteWrite.BasicAuth.Password != nil { 149 newSpec.MetricsPersisting.RemoteWrite.BasicAuth.Password = &latest.SecretKeySelector{ 150 Name: oldSpec.Prometheus.RemoteWrite.BasicAuth.Password.Name, 151 Key: oldSpec.Prometheus.RemoteWrite.BasicAuth.Password.Key, 152 } 153 } 154 } 155 } 156 } 157 if oldSpec.Loki != nil { 158 newSpec.LogsPersisting = &latest.LogsPersisting{ 159 Deploy: oldSpec.Loki.Deploy, 160 ClusterOutput: oldSpec.Loki.ClusterOutput, 161 NodeSelector: oldSpec.Loki.NodeSelector, 162 } 163 if oldSpec.Loki != nil { 164 newSpec.LogsPersisting.Storage = storage.V1beta1Tov1beta2(oldSpec.Loki.Storage) 165 } 166 if oldSpec.Loki.Logs != nil { 167 newSpec.LogsPersisting.Logs = &latest.Logs{ 168 Ambassador: oldSpec.Loki.Logs.Ambassador, 169 Grafana: oldSpec.Loki.Logs.Grafana, 170 Argocd: oldSpec.Loki.Logs.Argocd, 171 KubeStateMetrics: oldSpec.Loki.Logs.KubeStateMetrics, 172 PrometheusNodeExporter: oldSpec.Loki.Logs.PrometheusNodeExporter, 173 PrometheusOperator: oldSpec.Loki.Logs.PrometheusOperator, 174 LoggingOperator: oldSpec.Loki.Logs.LoggingOperator, 175 Loki: oldSpec.Loki.Logs.Loki, 176 Prometheus: oldSpec.Loki.Logs.Prometheus, 177 MetricsServer: oldSpec.Loki.Logs.MetricsServer, 178 PrometheusSystemdExporter: oldSpec.Loki.Logs.PrometheusSystemdExporter, 179 } 180 } 181 } 182 if oldSpec.MetricsServer != nil { 183 newSpec.MetricsServer = &latest.MetricsServer{ 184 Deploy: oldSpec.MetricsServer.Deploy, 185 } 186 } 187 newToolset.Spec = newSpec 188 } 189 190 return newToolset 191 }