@ -15,9 +15,9 @@ import (
"time"
"time"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8s"
k8s_ca "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8s"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker"
k8s_cb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/k8s"
"github.com/google/go-querystring/query"
"github.com/google/go-querystring/query"
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
)
)
@ -71,113 +71,252 @@ func (dc *DecortClient) CloudBroker() *cloudbroker.CloudBroker {
// DecortApiCall method for sending requests to the platform
// DecortApiCall method for sending requests to the platform
func ( dc * DecortClient ) DecortApiCall ( ctx context . Context , method , url string , params interface { } ) ( [ ] byte , error ) {
func ( dc * DecortClient ) DecortApiCall ( ctx context . Context , method , url string , params interface { } ) ( [ ] byte , error ) {
if k8sCreateReq , ok := params . ( k8s . CreateRequest ) ; ok {
k8sCaCreateReq , okCa := params . ( k8s_ca . CreateRequest )
k8sCbCreateReq , okCb := params . ( k8s_cb . CreateRequest )
if okCa {
reqBody := & bytes . Buffer { }
reqBody := & bytes . Buffer { }
writer := multipart . NewWriter ( reqBody )
writer := multipart . NewWriter ( reqBody )
if k8sCreateReq . OidcCertificate != "" {
if k8sC aC reateReq. OidcCertificate != "" {
part , _ := writer . CreateFormFile ( "oidcCertificate" , "ca.crt" )
part , _ := writer . CreateFormFile ( "oidcCertificate" , "ca.crt" )
_ , _ = io . Copy ( part , strings . NewReader ( k8sC reateReq. OidcCertificate ) )
_ , _ = io . Copy ( part , strings . NewReader ( k8sC aC reateReq. OidcCertificate ) )
}
}
_ = writer . WriteField ( "name" , k8sC reateReq. Name )
_ = writer . WriteField ( "name" , k8sC aC reateReq. Name )
_ = writer . WriteField ( "rgId" , strconv . FormatUint ( k8sC reateReq. RGID , 10 ) )
_ = writer . WriteField ( "rgId" , strconv . FormatUint ( k8sC aC reateReq. RGID , 10 ) )
_ = writer . WriteField ( "k8ciId" , strconv . FormatUint ( k8sC reateReq. K8SCIID , 10 ) )
_ = writer . WriteField ( "k8ciId" , strconv . FormatUint ( k8sC aC reateReq. K8SCIID , 10 ) )
_ = writer . WriteField ( "workerGroupName" , k8sC reateReq. WorkerGroupName )
_ = writer . WriteField ( "workerGroupName" , k8sC aC reateReq. WorkerGroupName )
_ = writer . WriteField ( "networkPlugin" , k8sC reateReq. NetworkPlugin )
_ = writer . WriteField ( "networkPlugin" , k8sC aC reateReq. NetworkPlugin )
if k8sC reateReq. MasterSEPID != 0 {
if k8sC aC reateReq. MasterSEPID != 0 {
_ = writer . WriteField ( "masterSepId" , strconv . FormatUint ( k8sC reateReq. MasterSEPID , 10 ) )
_ = writer . WriteField ( "masterSepId" , strconv . FormatUint ( k8sC aC reateReq. MasterSEPID , 10 ) )
}
}
if k8sC reateReq. MasterSEPPool != "" {
if k8sC aC reateReq. MasterSEPPool != "" {
_ = writer . WriteField ( "masterSepPool" , k8sC reateReq. MasterSEPPool )
_ = writer . WriteField ( "masterSepPool" , k8sC aC reateReq. MasterSEPPool )
}
}
if k8sC reateReq. WorkerSEPID != 0 {
if k8sC aC reateReq. WorkerSEPID != 0 {
_ = writer . WriteField ( "workerSepId" , strconv . FormatUint ( k8sC reateReq. WorkerSEPID , 10 ) )
_ = writer . WriteField ( "workerSepId" , strconv . FormatUint ( k8sC aC reateReq. WorkerSEPID , 10 ) )
}
}
if k8sC reateReq. WorkerSEPPool != "" {
if k8sC aC reateReq. WorkerSEPPool != "" {
_ = writer . WriteField ( "workerSepPool" , k8sC reateReq. WorkerSEPPool )
_ = writer . WriteField ( "workerSepPool" , k8sC aC reateReq. WorkerSEPPool )
}
}
if k8sC reateReq. Labels != nil {
if k8sC aC reateReq. Labels != nil {
for _ , v := range k8sC reateReq. Labels {
for _ , v := range k8sC aC reateReq. Labels {
_ = writer . WriteField ( "labels" , v )
_ = writer . WriteField ( "labels" , v )
}
}
}
}
if k8sC reateReq. Taints != nil {
if k8sC aC reateReq. Taints != nil {
for _ , v := range k8sC reateReq. Taints {
for _ , v := range k8sC aC reateReq. Taints {
_ = writer . WriteField ( "taints" , v )
_ = writer . WriteField ( "taints" , v )
}
}
}
}
if k8sC reateReq. Annotations != nil {
if k8sC aC reateReq. Annotations != nil {
for _ , v := range k8sC reateReq. Annotations {
for _ , v := range k8sC aC reateReq. Annotations {
_ = writer . WriteField ( "annotations" , v )
_ = writer . WriteField ( "annotations" , v )
}
}
}
}
if k8sC reateReq. MasterCPU != 0 {
if k8sC aC reateReq. MasterCPU != 0 {
_ = writer . WriteField ( "masterCpu" , strconv . FormatUint ( uint64 ( k8sC reateReq. MasterCPU ) , 10 ) )
_ = writer . WriteField ( "masterCpu" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. MasterCPU ) , 10 ) )
}
}
if k8sC reateReq. MasterNum != 0 {
if k8sC aC reateReq. MasterNum != 0 {
_ = writer . WriteField ( "masterNum" , strconv . FormatUint ( uint64 ( k8sC reateReq. MasterNum ) , 10 ) )
_ = writer . WriteField ( "masterNum" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. MasterNum ) , 10 ) )
}
}
if k8sC reateReq. MasterRAM != 0 {
if k8sC aC reateReq. MasterRAM != 0 {
_ = writer . WriteField ( "masterRam" , strconv . FormatUint ( uint64 ( k8sC reateReq. MasterRAM ) , 10 ) )
_ = writer . WriteField ( "masterRam" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. MasterRAM ) , 10 ) )
}
}
if k8sC reateReq. MasterDisk != 0 {
if k8sC aC reateReq. MasterDisk != 0 {
_ = writer . WriteField ( "masterDisk" , strconv . FormatUint ( uint64 ( k8sC reateReq. MasterDisk ) , 10 ) )
_ = writer . WriteField ( "masterDisk" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. MasterDisk ) , 10 ) )
}
}
if k8sC reateReq. WorkerCPU != 0 {
if k8sC aC reateReq. WorkerCPU != 0 {
_ = writer . WriteField ( "workerCpu" , strconv . FormatUint ( uint64 ( k8sC reateReq. WorkerCPU ) , 10 ) )
_ = writer . WriteField ( "workerCpu" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. WorkerCPU ) , 10 ) )
}
}
if k8sC reateReq. WorkerNum != 0 {
if k8sC aC reateReq. WorkerNum != 0 {
_ = writer . WriteField ( "workerNum" , strconv . FormatUint ( uint64 ( k8sC reateReq. WorkerNum ) , 10 ) )
_ = writer . WriteField ( "workerNum" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. WorkerNum ) , 10 ) )
}
}
if k8sC reateReq. WorkerRAM != 0 {
if k8sC aC reateReq. WorkerRAM != 0 {
_ = writer . WriteField ( "workerRam" , strconv . FormatUint ( uint64 ( k8sC reateReq. WorkerRAM ) , 10 ) )
_ = writer . WriteField ( "workerRam" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. WorkerRAM ) , 10 ) )
}
}
if k8sC reateReq. WorkerDisk != 0 {
if k8sC aC reateReq. WorkerDisk != 0 {
_ = writer . WriteField ( "workerDisk" , strconv . FormatUint ( uint64 ( k8sC reateReq. WorkerDisk ) , 10 ) )
_ = writer . WriteField ( "workerDisk" , strconv . FormatUint ( uint64 ( k8sC aC reateReq. WorkerDisk ) , 10 ) )
}
}
if k8sC reateReq. ExtNetID != 0 {
if k8sC aC reateReq. ExtNetID != 0 {
_ = writer . WriteField ( "extnetId" , strconv . FormatUint ( k8sC reateReq. ExtNetID , 10 ) )
_ = writer . WriteField ( "extnetId" , strconv . FormatUint ( k8sC aC reateReq. ExtNetID , 10 ) )
}
}
if k8sC reateReq. VinsId != 0 {
if k8sC aC reateReq. VinsId != 0 {
_ = writer . WriteField ( "vinsId" , strconv . FormatUint ( k8sC reateReq. VinsId , 10 ) )
_ = writer . WriteField ( "vinsId" , strconv . FormatUint ( k8sC aC reateReq. VinsId , 10 ) )
}
}
if ! k8sC reateReq. WithLB {
if ! k8sC aC reateReq. WithLB {
_ = writer . WriteField ( "withLB" , strconv . FormatBool ( k8sC reateReq. WithLB ) )
_ = writer . WriteField ( "withLB" , strconv . FormatBool ( k8sC aC reateReq. WithLB ) )
}
}
_ = writer . WriteField ( "highlyAvailable" , strconv . FormatBool ( k8sC reateReq. HighlyAvailable ) )
_ = writer . WriteField ( "highlyAvailable" , strconv . FormatBool ( k8sC aC reateReq. HighlyAvailable ) )
if k8sC reateReq. AdditionalSANs != nil {
if k8sC aC reateReq. AdditionalSANs != nil {
for _ , v := range k8sC reateReq. AdditionalSANs {
for _ , v := range k8sC aC reateReq. AdditionalSANs {
_ = writer . WriteField ( "additionalSANs" , v )
_ = writer . WriteField ( "additionalSANs" , v )
}
}
}
}
if k8sC reateReq. InitConfiguration != "" {
if k8sC aC reateReq. InitConfiguration != "" {
_ = writer . WriteField ( "initConfiguration" , k8sC reateReq. InitConfiguration )
_ = writer . WriteField ( "initConfiguration" , k8sC aC reateReq. InitConfiguration )
}
}
if k8sC reateReq. ClusterConfiguration != "" {
if k8sC aC reateReq. ClusterConfiguration != "" {
_ = writer . WriteField ( "clusterConfiguration" , k8sC reateReq. ClusterConfiguration )
_ = writer . WriteField ( "clusterConfiguration" , k8sC aC reateReq. ClusterConfiguration )
}
}
if k8sC reateReq. KubeletConfiguration != "" {
if k8sC aC reateReq. KubeletConfiguration != "" {
_ = writer . WriteField ( "kubeletConfiguration" , k8sC reateReq. KubeletConfiguration )
_ = writer . WriteField ( "kubeletConfiguration" , k8sC aC reateReq. KubeletConfiguration )
}
}
if k8sC reateReq. KubeProxyConfiguration != "" {
if k8sC aC reateReq. KubeProxyConfiguration != "" {
_ = writer . WriteField ( "kubeProxyConfiguration" , k8sC reateReq. KubeProxyConfiguration )
_ = writer . WriteField ( "kubeProxyConfiguration" , k8sC aC reateReq. KubeProxyConfiguration )
}
}
if k8sC reateReq. JoinConfiguration != "" {
if k8sC aC reateReq. JoinConfiguration != "" {
_ = writer . WriteField ( "joinConfiguration" , k8sC reateReq. JoinConfiguration )
_ = writer . WriteField ( "joinConfiguration" , k8sC aC reateReq. JoinConfiguration )
}
}
if k8sC reateReq. Description != "" {
if k8sC aC reateReq. Description != "" {
_ = writer . WriteField ( "desc" , k8sC reateReq. Description )
_ = writer . WriteField ( "desc" , k8sC aC reateReq. Description )
}
}
if k8sC reateReq. UserData != "" {
if k8sC aC reateReq. UserData != "" {
_ = writer . WriteField ( "userData" , k8sC reateReq. UserData )
_ = writer . WriteField ( "userData" , k8sC aC reateReq. UserData )
}
}
_ = writer . WriteField ( "extnetOnly" , strconv . FormatBool ( k8sCreateReq . ExtNetOnly ) )
_ = writer . WriteField ( "extnetOnly" , strconv . FormatBool ( k8sCaCreateReq . ExtNetOnly ) )
_ = writer . FormDataContentType ( )
ct := writer . FormDataContentType ( )
writer . Close ( )
req , err := http . NewRequestWithContext ( ctx , method , dc . decortURL + "/restmachine" + url , reqBody )
if err != nil {
return nil , err
}
if err = dc . getToken ( ctx ) ; err != nil {
return nil , err
}
resp , err := dc . domp ( req , ct )
if err != nil {
return nil , err
}
defer resp . Body . Close ( )
respBytes , err := io . ReadAll ( resp . Body )
if err != nil {
return nil , err
}
if resp . StatusCode != 200 {
return nil , errors . New ( string ( respBytes ) )
}
return respBytes , nil
} else if okCb {
reqBody := & bytes . Buffer { }
writer := multipart . NewWriter ( reqBody )
if k8sCbCreateReq . OidcCertificate != "" {
part , _ := writer . CreateFormFile ( "oidcCertificate" , "ca.crt" )
_ , _ = io . Copy ( part , strings . NewReader ( k8sCbCreateReq . OidcCertificate ) )
}
_ = writer . WriteField ( "name" , k8sCbCreateReq . Name )
_ = writer . WriteField ( "rgId" , strconv . FormatUint ( k8sCbCreateReq . RGID , 10 ) )
_ = writer . WriteField ( "k8ciId" , strconv . FormatUint ( k8sCbCreateReq . K8CIID , 10 ) )
_ = writer . WriteField ( "workerGroupName" , k8sCbCreateReq . WorkerGroupName )
_ = writer . WriteField ( "networkPlugin" , k8sCbCreateReq . NetworkPlugin )
if k8sCbCreateReq . MasterSEPID != 0 {
_ = writer . WriteField ( "masterSepId" , strconv . FormatUint ( k8sCbCreateReq . MasterSEPID , 10 ) )
}
if k8sCbCreateReq . MasterSEPPool != "" {
_ = writer . WriteField ( "masterSepPool" , k8sCbCreateReq . MasterSEPPool )
}
if k8sCbCreateReq . WorkerSEPID != 0 {
_ = writer . WriteField ( "workerSepId" , strconv . FormatUint ( k8sCbCreateReq . WorkerSEPID , 10 ) )
}
if k8sCbCreateReq . WorkerSEPPool != "" {
_ = writer . WriteField ( "workerSepPool" , k8sCbCreateReq . WorkerSEPPool )
}
if k8sCbCreateReq . Labels != nil {
for _ , v := range k8sCbCreateReq . Labels {
_ = writer . WriteField ( "labels" , v )
}
}
if k8sCbCreateReq . Taints != nil {
for _ , v := range k8sCbCreateReq . Taints {
_ = writer . WriteField ( "taints" , v )
}
}
if k8sCbCreateReq . Annotations != nil {
for _ , v := range k8sCbCreateReq . Annotations {
_ = writer . WriteField ( "annotations" , v )
}
}
if k8sCbCreateReq . MasterCPU != 0 {
_ = writer . WriteField ( "masterCpu" , strconv . FormatUint ( k8sCbCreateReq . MasterCPU , 10 ) )
}
if k8sCbCreateReq . MasterNum != 0 {
_ = writer . WriteField ( "masterNum" , strconv . FormatUint ( k8sCbCreateReq . MasterNum , 10 ) )
}
if k8sCbCreateReq . MasterRAM != 0 {
_ = writer . WriteField ( "masterRam" , strconv . FormatUint ( k8sCbCreateReq . MasterRAM , 10 ) )
}
if k8sCbCreateReq . MasterDisk != 0 {
_ = writer . WriteField ( "masterDisk" , strconv . FormatUint ( k8sCbCreateReq . MasterDisk , 10 ) )
}
if k8sCbCreateReq . WorkerCPU != 0 {
_ = writer . WriteField ( "workerCpu" , strconv . FormatUint ( k8sCbCreateReq . WorkerCPU , 10 ) )
}
if k8sCbCreateReq . WorkerNum != 0 {
_ = writer . WriteField ( "workerNum" , strconv . FormatUint ( k8sCbCreateReq . WorkerNum , 10 ) )
}
if k8sCbCreateReq . WorkerRAM != 0 {
_ = writer . WriteField ( "workerRam" , strconv . FormatUint ( k8sCbCreateReq . WorkerRAM , 10 ) )
}
if k8sCbCreateReq . WorkerDisk != 0 {
_ = writer . WriteField ( "workerDisk" , strconv . FormatUint ( k8sCbCreateReq . WorkerDisk , 10 ) )
}
if k8sCbCreateReq . ExtNetID != 0 {
_ = writer . WriteField ( "extnetId" , strconv . FormatUint ( k8sCbCreateReq . ExtNetID , 10 ) )
}
if k8sCbCreateReq . VinsId != 0 {
_ = writer . WriteField ( "vinsId" , strconv . FormatUint ( k8sCbCreateReq . VinsId , 10 ) )
}
if ! k8sCbCreateReq . WithLB {
_ = writer . WriteField ( "withLB" , strconv . FormatBool ( k8sCbCreateReq . WithLB ) )
}
_ = writer . WriteField ( "highlyAvailable" , strconv . FormatBool ( k8sCbCreateReq . HighlyAvailable ) )
if k8sCbCreateReq . AdditionalSANs != nil {
for _ , v := range k8sCbCreateReq . AdditionalSANs {
_ = writer . WriteField ( "additionalSANs" , v )
}
}
if k8sCbCreateReq . InitConfiguration != "" {
_ = writer . WriteField ( "initConfiguration" , k8sCbCreateReq . InitConfiguration )
}
if k8sCbCreateReq . ClusterConfiguration != "" {
_ = writer . WriteField ( "clusterConfiguration" , k8sCbCreateReq . ClusterConfiguration )
}
if k8sCbCreateReq . KubeletConfiguration != "" {
_ = writer . WriteField ( "kubeletConfiguration" , k8sCbCreateReq . KubeletConfiguration )
}
if k8sCbCreateReq . KubeProxyConfiguration != "" {
_ = writer . WriteField ( "kubeProxyConfiguration" , k8sCbCreateReq . KubeProxyConfiguration )
}
if k8sCbCreateReq . JoinConfiguration != "" {
_ = writer . WriteField ( "joinConfiguration" , k8sCbCreateReq . JoinConfiguration )
}
if k8sCbCreateReq . Description != "" {
_ = writer . WriteField ( "desc" , k8sCbCreateReq . Description )
}
if k8sCbCreateReq . UserData != "" {
_ = writer . WriteField ( "userData" , k8sCbCreateReq . UserData )
}
_ = writer . WriteField ( "extnetOnly" , strconv . FormatBool ( k8sCbCreateReq . ExtNetOnly ) )
_ = writer . FormDataContentType ( )
_ = writer . FormDataContentType ( )
ct := writer . FormDataContentType ( )
ct := writer . FormDataContentType ( )
@ -311,7 +450,7 @@ func (dc *DecortClient) domp(req *http.Request, ctype string) (*http.Response, e
// var resp *http.Response
// var resp *http.Response
// var err error
// var err error
buf , _ := io . ReadAll ( req . Body )
buf , _ := io . ReadAll ( req . Body )
req = req . Clone ( req . Context ( ) )
// req = req.Clone(req.Context())
// for i := uint64(0); i < dc.cfg.Retries; i++ {
// for i := uint64(0); i < dc.cfg.Retries; i++ {
req . Body = io . NopCloser ( bytes . NewBuffer ( buf ) )
req . Body = io . NopCloser ( bytes . NewBuffer ( buf ) )