@@ -33,11 +33,13 @@ import (
3333 clusterstatus "github.com/oceanbase/ob-operator/internal/const/status/obcluster"
3434 "github.com/oceanbase/ob-operator/internal/dashboard/business/common"
3535 "github.com/oceanbase/ob-operator/internal/dashboard/business/constant"
36+ "github.com/oceanbase/ob-operator/internal/dashboard/business/k8s"
3637 modelcommon "github.com/oceanbase/ob-operator/internal/dashboard/model/common"
3738 "github.com/oceanbase/ob-operator/internal/dashboard/model/param"
3839 "github.com/oceanbase/ob-operator/internal/dashboard/model/response"
3940 "github.com/oceanbase/ob-operator/internal/dashboard/utils"
4041 oberr "github.com/oceanbase/ob-operator/pkg/errors"
42+ "github.com/oceanbase/ob-operator/pkg/k8s/client"
4143 "github.com/oceanbase/ob-operator/pkg/oceanbase-sdk/model"
4244)
4345
@@ -122,17 +124,19 @@ func buildOBClusterResponse(ctx context.Context, obcluster *v1alpha1.OBCluster)
122124 logger .WithError (err ).Info ("Failed to get OceanBase database connection" )
123125 return nil , errors .Wrapf (err , "Failed to get connection of obcluster" )
124126 }
127+ versionStr := ""
125128 version , err := conn .GetVersion (ctx )
126129 if err != nil {
127130 logger .WithError (err ).Info ("Failed to get OceanBase database version" )
128- return nil , errors .Wrapf (err , "Failed to get version of obcluster" )
131+ } else {
132+ versionStr = version .Version
129133 }
130134
131135 respCluster := & response.OBCluster {
132136 OBClusterOverview : * overview ,
133137 OBClusterExtra : response.OBClusterExtra {
134138 RootPasswordSecret : obcluster .Spec .UserSecrets .Root ,
135- Version : version . Version ,
139+ Version : versionStr ,
136140 Parameters : nil ,
137141 },
138142 Metrics : nil ,
@@ -216,13 +220,21 @@ func buildOBClusterTopologyResp(ctx context.Context, obcluster *v1alpha1.OBClust
216220 sort .Slice (observerList .Items , func (i , j int ) bool {
217221 return observerList .Items [i ].Name < observerList .Items [j ].Name
218222 })
223+ c := client .GetClient ()
224+ if obzone .Spec .Topology .K8sCluster != "" {
225+ c , err = k8s .GetClientForK8sCluster (ctx , obzone .Spec .Topology .K8sCluster )
226+ if err != nil {
227+ return nil , errors .Wrap (err , fmt .Sprintf ("Get client for k8s cluster %s" , obzone .Spec .Topology .K8sCluster ))
228+ }
229+ }
219230 for _ , observer := range observerList .Items {
220231 logger .Debugf ("Add observer %s to result" , observer .Name )
221232 // compatible with old version CRD
222233 nodeName := observer .Status .NodeName
223234 if nodeName == "" {
224235 logger .Debugf ("Get node name of observer %s" , observer .Name )
225- pod , err := clients .GetPodOfOBServer (ctx , & observer )
236+ // pod name is the same as observer's name
237+ pod , err := k8s .GetPod (ctx , c , observer .Namespace , observer .Name )
226238 if err == nil {
227239 nodeName = pod .Spec .NodeName
228240 }
@@ -370,7 +382,7 @@ func buildOBClusterTopologyResp(ctx context.Context, obcluster *v1alpha1.OBClust
370382 Tolerations : tolerations ,
371383 }
372384 if len (obzone .Status .OBServerStatus ) > 0 {
373- respZone .RootService = obzone .Status .OBServerStatus [0 ].Server
385+ respZone .RootService = obzone .Status .OBServerStatus [0 ].GetConnectAddr ()
374386 }
375387 topology = append (topology , respZone )
376388 }
@@ -467,6 +479,7 @@ func buildOBClusterTopology(topology []param.ZoneTopology) []apitypes.OBZoneTopo
467479 Zone : zone .Zone ,
468480 NodeSelector : common .KVsToMap (zone .NodeSelector ),
469481 Replica : zone .Replicas ,
482+ K8sCluster : zone .K8sCluster ,
470483 }
471484 if len (zone .Affinities ) > 0 {
472485 topo .Affinity = & corev1.Affinity {}
@@ -742,6 +755,7 @@ func AddOBZone(ctx context.Context, obclusterIdentity *param.K8sObjectIdentity,
742755 Zone : zone .Zone ,
743756 NodeSelector : common .KVsToMap (zone .NodeSelector ),
744757 Replica : zone .Replicas ,
758+ K8sCluster : zone .K8sCluster ,
745759 })
746760 cluster , err := clients .UpdateOBCluster (ctx , obcluster )
747761 if err != nil {
@@ -967,13 +981,18 @@ func ListOBClusterParameters(ctx context.Context, nn *param.K8sObjectIdentity) (
967981 logger .WithError (err ).Info ("Failed to get OceanBase database connection" )
968982 return nil , errors .Wrapf (err , "Failed to get connection go obcluster" )
969983 }
984+ parameterList , err := clients .ListOBParametersOfOBCluster (ctx , obcluster )
985+ if err != nil {
986+ logger .WithError (err ).Error ("Failed to list parameters" )
987+ return nil , errors .New ("Failed to list obcluster parameters in k8s" )
988+ }
970989 parameters , err := conn .ListClusterParameters (ctx )
971990 if err != nil {
972991 logger .WithError (err ).Error ("Failed to query parameters" )
973- return nil , errors .New ("Failed to list obcluster parameters" )
992+ return nil , errors .New ("Failed to list obcluster parameters in obcluster " )
974993 }
975994 // convert to response data structure
976- aggParameters := aggregrateParametersByName ( parameters )
995+ aggParameters := aggregrateParameters ( parameterList . Items , parameters )
977996 return aggParameters , nil
978997}
979998
@@ -1033,7 +1052,7 @@ func aggregrateParameterByName(parameters []*model.Parameter) response.Aggregate
10331052 }
10341053}
10351054
1036- func aggregrateParametersByName ( parameters []* model.Parameter ) []response.AggregatedParameter {
1055+ func aggregrateParameters ( obparameters []v1alpha1. OBParameter , parameters []* model.Parameter ) []response.AggregatedParameter {
10371056 aggMap := make (map [string ][]* model.Parameter )
10381057 for _ , parameter := range parameters {
10391058 parameterList , exists := aggMap [parameter .Name ]
@@ -1044,8 +1063,15 @@ func aggregrateParametersByName(parameters []*model.Parameter) []response.Aggreg
10441063 aggMap [parameter .Name ] = parameterList
10451064 }
10461065 aggParameters := make ([]response.AggregatedParameter , 0 )
1047- for _ , parameterList := range aggMap {
1066+ for name , parameterList := range aggMap {
10481067 aggParameter := aggregrateParameterByName (parameterList )
1068+ for _ , obparameter := range obparameters {
1069+ if name == obparameter .Spec .Parameter .Name {
1070+ aggParameter .IsManagedByOperator = true
1071+ aggParameter .Status = obparameter .Status .Status
1072+ break
1073+ }
1074+ }
10491075 aggParameters = append (aggParameters , aggParameter )
10501076 }
10511077 return aggParameters
0 commit comments