@@ -64,12 +64,19 @@ type componentDefRefConvert struct {
6464 serviceVersion string
6565}
6666
67+ type serviceVersionConvert struct {
68+ fromServiceVersion string
69+ toServiceVersion string
70+ }
71+
6772var (
6873 clusterVersionConvert = map [string ]map [string ]componentDefRefConvert {}
6974 // 0.9 cmpd name => 1.0 cmpd prefix
7075 componentDefWithChartVersion = []string {
7176 "clickhouse-24" ,
77+ "apecloud-mysql" ,
7278 "elasticsearch-8" ,
79+ "elasticsearch-7" ,
7380 "kafka-combine" , "kafka-controller" , "kafka-exporter" , "kafka-broker" ,
7481 "loki-backend" , "loki-gateway" , "loki-write" , "loki-read" ,
7582 "milvus-datanode" , "milvus-indexnode" , "milvus-minio" ,
8592 "redis-7" , "redis-cluster-7" , "redis-sentinel-7" , "redis-twemproxy-0.5" ,
8693 "pulsar-bookkeeper" , "pulsar-broker-3" , "pulsar-proxy-3" , "pulsar-zookeeper-3" ,
8794 "starrocks-ce-be" , "starrocks-ce-fe" ,
88- "tidb-pd-7" , "tidb-7" , "tikv-7" , "tikv-8" , "tidb-8" , "tidb-pd-8" ,
8995 "vanilla-postgresql-12" , "vanilla-postgresql-14" , "vanilla-postgresql-15" , "vanilla-postgresql-supabase15" ,
9096 "vm-insert" , "vm-select" , "vm-storage" ,
9197 "weaviate" ,
@@ -97,6 +103,18 @@ var (
97103 "etcd-" : "etcd-3" ,
98104 "ch-keeper-24" : "clickhouse-keeper-24" ,
99105 "pulsar-bkrecovery" : "pulsar-bookies-recovery-3" ,
106+ "tidb-pd" : "tidb-pd" ,
107+ "tidb-7" : "tidb" ,
108+ "tidb-8" : "tidb" ,
109+ "tikv" : "tikv" ,
110+ }
111+ componentServiceVersionMapping = map [string ][]serviceVersionConvert {
112+ "minio" : {
113+ {
114+ fromServiceVersion : "0.9.0" ,
115+ toServiceVersion : "2024.6.29" ,
116+ },
117+ },
100118 }
101119)
102120
@@ -397,6 +415,10 @@ func (o *UpgradeToV1Options) Run() error {
397415 if err = o .convertAccounts (); err != nil {
398416 return err
399417 }
418+ if err = o .ConvertServices (); err != nil {
419+ return err
420+ }
421+
400422 // convert to v1
401423 clusterObj , err := apiruntime .DefaultUnstructuredConverter .ToUnstructured (cluster )
402424 if err != nil {
@@ -622,7 +644,8 @@ func (o *UpgradeToV1Options) Convert09ComponentDef(cluster *kbappsv1.Cluster,
622644 return "<yourComponentDef>" , nil
623645 }
624646 for i := range clusterV1alpha1Spec .ComponentSpecs {
625- compDef , err := convertCompDef (clusterV1alpha1Spec .ComponentSpecs [i ].ComponentDef )
647+ compDef09 := clusterV1alpha1Spec .ComponentSpecs [i ].ComponentDef
648+ compDef , err := convertCompDef (compDef09 )
626649 if err != nil {
627650 return err
628651 }
@@ -631,9 +654,14 @@ func (o *UpgradeToV1Options) Convert09ComponentDef(cluster *kbappsv1.Cluster,
631654 if cluster .Spec .ComponentSpecs [i ].ServiceAccountName == fmt .Sprintf ("kb-%s" , cluster .Name ) {
632655 cluster .Spec .ComponentSpecs [i ].ServiceAccountName = ""
633656 }
657+ toServiceVersion := o .ConvertServiceVersion (compDef09 , clusterV1alpha1Spec .ComponentSpecs [i ].ServiceVersion )
658+ if len (toServiceVersion ) != 0 {
659+ cluster .Spec .ComponentSpecs [i ].ServiceVersion = toServiceVersion
660+ }
634661 }
635662 for i := range clusterV1alpha1Spec .ShardingSpecs {
636- compDef , err := convertCompDef (clusterV1alpha1Spec .ShardingSpecs [i ].Template .ComponentDef )
663+ compDef09 := clusterV1alpha1Spec .ShardingSpecs [i ].Template .ComponentDef
664+ compDef , err := convertCompDef (compDef09 )
637665 if err != nil {
638666 return err
639667 }
@@ -642,11 +670,60 @@ func (o *UpgradeToV1Options) Convert09ComponentDef(cluster *kbappsv1.Cluster,
642670 if cluster .Spec .Shardings [i ].Template .ServiceAccountName == fmt .Sprintf ("kb-%s" , cluster .Name ) {
643671 cluster .Spec .Shardings [i ].Template .ServiceAccountName = ""
644672 }
673+ toServiceVersion := o .ConvertServiceVersion (compDef09 , clusterV1alpha1Spec .ShardingSpecs [i ].Template .ServiceVersion )
674+ if len (toServiceVersion ) != 0 {
675+ cluster .Spec .Shardings [i ].Template .ServiceVersion = toServiceVersion
676+ }
645677 }
646678 delete (cluster .Annotations , kbIncrementConverterAK )
647679 return nil
648680}
649681
682+ func (o * UpgradeToV1Options ) ConvertServiceVersion (compDef09 string , fromServiceVersion string ) string {
683+ var toServiceVersion string
684+ if converts , ok := componentServiceVersionMapping [compDef09 ]; ok {
685+ for _ , s := range converts {
686+ if s .fromServiceVersion == fromServiceVersion {
687+ toServiceVersion = s .toServiceVersion
688+ break
689+ }
690+ }
691+ }
692+ return toServiceVersion
693+ }
694+
695+ func (o * UpgradeToV1Options ) convertService (svc unstructured.Unstructured ) error {
696+ selector , _ , _ := unstructured .NestedStringMap (svc .Object , "spec" , "selector" )
697+ if _ , ok := selector [constant .AppNameLabelKey ]; ! ok {
698+ return nil
699+ }
700+ delete (selector , constant .AppNameLabelKey )
701+ _ = unstructured .SetNestedStringMap (svc .Object , selector , "spec" , "selector" )
702+ if _ , err := o .Dynamic .Resource (types .ServiceGVR ()).Namespace (o .Namespace ).Update (context .TODO (), & svc , metav1.UpdateOptions {}); err != nil {
703+ return err
704+ }
705+ selector1 , _ , _ := unstructured .NestedStringMap (svc .Object , "spec" , "selector" )
706+ fmt .Println (selector1 )
707+ return nil
708+ }
709+
710+ func (o * UpgradeToV1Options ) ConvertServices () error {
711+ svcList , err := o .Dynamic .Resource (types .ServiceGVR ()).Namespace (o .Namespace ).List (context .TODO (), metav1.ListOptions {
712+ LabelSelector : fmt .Sprintf ("%s=%s,app.kubernetes.io/managed-by=kubeblocks" , constant .AppInstanceLabelKey , o .Name ),
713+ })
714+ if err != nil {
715+ return err
716+ }
717+ for i := range svcList .Items {
718+ svc := svcList .Items [i ]
719+ fmt .Println (svc .GetName ())
720+ if err = o .convertService (svc ); err != nil {
721+ return err
722+ }
723+ }
724+ return nil
725+ }
726+
650727func (o * UpgradeToV1Options ) printDiff (clusterV1Alpha1 * kbappsv1alpha1.Cluster , clusterV1 * kbappsv1.Cluster ) {
651728 delete (clusterV1Alpha1 .Annotations , corev1 .LastAppliedConfigAnnotation )
652729 delete (clusterV1 .Annotations , corev1 .LastAppliedConfigAnnotation )
0 commit comments