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  }