@@ -972,6 +972,16 @@ func ListCluster(connectionName string, rsType string) ([]*cres.ClusterInfo, err
972972 // set ResourceInfo
973973 info .IId = getUserIID (cres.IID {NameId : iidInfo .NameId , SystemId : iidInfo .SystemId })
974974
975+ // Replace placeholders in kubeconfig with actual values
976+ if info .AccessInfo .Kubeconfig != "" {
977+ if strings .Contains (info .AccessInfo .Kubeconfig , "CONNECTION_NAME_PLACEHOLDER" ) {
978+ info .AccessInfo .Kubeconfig = strings .ReplaceAll (info .AccessInfo .Kubeconfig , "CONNECTION_NAME_PLACEHOLDER" , connectionName )
979+ }
980+ if strings .Contains (info .AccessInfo .Kubeconfig , "CLUSTER_NAME_PLACEHOLDER" ) {
981+ info .AccessInfo .Kubeconfig = strings .ReplaceAll (info .AccessInfo .Kubeconfig , "CLUSTER_NAME_PLACEHOLDER" , iidInfo .NameId )
982+ }
983+ }
984+
975985 // set used Resources's userIID
976986 err = setResourcesNameId (connectionName , & info )
977987 if err != nil {
@@ -1064,6 +1074,16 @@ func GetCluster(connectionName string, rsType string, clusterName string) (*cres
10641074 // set ResourceInfo
10651075 info .IId = getUserIID (cres.IID {NameId : iidInfo .NameId , SystemId : iidInfo .SystemId })
10661076
1077+ // Replace placeholders in kubeconfig with actual values
1078+ if info .AccessInfo .Kubeconfig != "" {
1079+ if strings .Contains (info .AccessInfo .Kubeconfig , "CONNECTION_NAME_PLACEHOLDER" ) {
1080+ info .AccessInfo .Kubeconfig = strings .ReplaceAll (info .AccessInfo .Kubeconfig , "CONNECTION_NAME_PLACEHOLDER" , connectionName )
1081+ }
1082+ if strings .Contains (info .AccessInfo .Kubeconfig , "CLUSTER_NAME_PLACEHOLDER" ) {
1083+ info .AccessInfo .Kubeconfig = strings .ReplaceAll (info .AccessInfo .Kubeconfig , "CLUSTER_NAME_PLACEHOLDER" , clusterName )
1084+ }
1085+ }
1086+
10671087 // set used Resources's userIID
10681088 err = setResourcesNameId (connectionName , & info )
10691089 if err != nil {
@@ -1074,6 +1094,84 @@ func GetCluster(connectionName string, rsType string, clusterName string) (*cres
10741094 return & info , nil
10751095}
10761096
1097+ // Generate Token for Cluster Authentication
1098+ // (1) get IID(NameId)
1099+ // (2) generate token using driver
1100+ func GenerateClusterToken (connectionName string , clusterName string ) (string , error ) {
1101+ cblog .Info ("call GenerateClusterToken()" )
1102+
1103+ // check empty and trim user inputs
1104+ connectionName , err := EmptyCheckAndTrim ("connectionName" , connectionName )
1105+ if err != nil {
1106+ cblog .Error (err )
1107+ return "" , err
1108+ }
1109+
1110+ if err := checkCapability (connectionName , CLUSTER_HANDLER ); err != nil {
1111+ return "" , err
1112+ }
1113+
1114+ clusterName , err = EmptyCheckAndTrim ("clusterName" , clusterName )
1115+ if err != nil {
1116+ cblog .Error (err )
1117+ return "" , err
1118+ }
1119+
1120+ cldConn , err := ccm .GetCloudConnection (connectionName )
1121+ if err != nil {
1122+ cblog .Error (err )
1123+ return "" , err
1124+ }
1125+
1126+ handler , err := cldConn .CreateClusterHandler ()
1127+ if err != nil {
1128+ cblog .Error (err )
1129+ return "" , err
1130+ }
1131+
1132+ clusterSPLock .RLock (connectionName , clusterName )
1133+ defer clusterSPLock .RUnlock (connectionName , clusterName )
1134+
1135+ // (1) get IID(NameId)
1136+ var iidInfoList []* ClusterIIDInfo
1137+ if os .Getenv ("PERMISSION_BASED_CONTROL_MODE" ) != "" {
1138+ err = getAuthIIDInfoList (connectionName , & iidInfoList )
1139+ if err != nil {
1140+ cblog .Error (err )
1141+ return "" , err
1142+ }
1143+ } else {
1144+ err = infostore .ListByCondition (& iidInfoList , CONNECTION_NAME_COLUMN , connectionName )
1145+ if err != nil {
1146+ cblog .Error (err )
1147+ return "" , err
1148+ }
1149+ }
1150+ var iidInfo * ClusterIIDInfo
1151+ var bool_ret = false
1152+ for _ , OneIIdInfo := range iidInfoList {
1153+ if OneIIdInfo .NameId == clusterName {
1154+ iidInfo = OneIIdInfo
1155+ bool_ret = true
1156+ break
1157+ }
1158+ }
1159+ if bool_ret == false {
1160+ err := fmt .Errorf ("The cluster '%s' does not exist!" , clusterName )
1161+ cblog .Error (err )
1162+ return "" , err
1163+ }
1164+
1165+ // (2) generate token using driver
1166+ token , err := handler .GenerateClusterToken (getDriverIID (cres.IID {NameId : iidInfo .NameId , SystemId : iidInfo .SystemId }))
1167+ if err != nil {
1168+ cblog .Error (err )
1169+ return "" , err
1170+ }
1171+
1172+ return token , nil
1173+ }
1174+
10771175// (1) check exist(NameID)
10781176// (2) add NodeGroup
10791177// (3) Get ClusterInfo
0 commit comments