diff --git a/CHANGELOG.md b/CHANGELOG.md index b1dece4..33fcf7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ -## Version 1.11.4 +## Version 1.11.5 -### Исправлено +### Добавлено -#### compute +#### Общие изменения | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-486 | Изменен тип параметров `VGPUs` с []uint64 на []VGPUItem в структуре `RecordCompute` в cloudapi/compute и в cloudbroker/compute | \ No newline at end of file +| BGOS-532 | Метод `Check` для `DecortClient`, `BVSDecortClient` и `LegacyDecortClient` | \ No newline at end of file diff --git a/README.md b/README.md index deaebf0..69e0a3a 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,8 @@ Decort SDK - это библиотека, написанная на языке G - [Создание универсального клиента](#создание-универсального-клиента) - [Пример создания универсального клиента](#пример-создания-универсального-клиента) - [Пример выполнения запроса](#пример-выполнения-запроса-4) + - [Проверка соответствия версии платформы и версии dynamix](#проверка-соответствия-версии-платформы-и-версии-dynamix) + - [Пример выполнения запроса](#пример-выполнения-запроса-5) ## Установка @@ -1604,4 +1606,36 @@ func main() { fmt.Println(res) } +``` + + +## Проверка соответствия версии платформы и версии dynamix + +С версии 1.11.5 для каждого клиента добавлен метод `Check` для проверки соответствия decort-sdk и платформы dynamix. +В случае соответсвия decort-sdk и платформы dynamix возвращается структура, содержащая информацию о версии и актуальном билде платформы. + +#### Пример выполнения запроса + +```go +import ( + "repository.basistech.ru/BASIS/decort-golang-sdk/config" +) + +func main(){ + // Настройка конфигурации + config := config.Config{ + AppID: "", + AppSecret: "", + SSOURL: "https://sso.digitalenergy.online", + DecortURL: "https://mr4.digitalenergy.online", + Retries: 5, + SSLSkipVerify: true, + } + + // Создание клиента + client := decort.New(config) + + // Проверка соответствия версии + checkInfo, err := client.Check() +} ``` \ No newline at end of file diff --git a/check.go b/check.go new file mode 100644 index 0000000..889d741 --- /dev/null +++ b/check.go @@ -0,0 +1,88 @@ +package decortsdk + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "net/http" + "strings" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" +) + +type CheckInfo struct { + Version string `json:"version"` + Build uint64 `json:"build"` +} + +const versionURL = "/system/info/version" + +func (de DecortClient) Check() (*CheckInfo, error) { + res, err := de.DecortApiCall(context.Background(), http.MethodGet, versionURL, nil) + if err != nil { + return nil, err + } + + info := CheckInfo{} + + err = json.Unmarshal([]byte(strings.Replace(strings.Trim(string(res), `"`), "\\", "", -1)), &info) + if err != nil { + return nil, err + } + + if v, ok := constants.VersionMap[info.Version]; ok { + if v == "-" { + return &info, nil + } + return nil, errors.New(fmt.Sprintf("SDK don't support platform version %s, please use %s SDK version", info.Version, v)) + } + + return nil, errors.New(fmt.Sprintf("platform version %s isn't supported", info.Version)) +} + +func (bvs BVSDecortClient) Check() (*CheckInfo, error) { + res, err := bvs.DecortApiCall(context.Background(), http.MethodGet, versionURL, nil) + if err != nil { + return nil, err + } + + info := CheckInfo{} + + err = json.Unmarshal([]byte(strings.Replace(strings.Trim(string(res), `"`), "\\", "", -1)), &info) + if err != nil { + return nil, err + } + + if v, ok := constants.VersionMap[info.Version]; ok { + if v == "-" { + return &info, nil + } + return nil, errors.New(fmt.Sprintf("SDK don't support platform version %s, please use %s SDK version", info.Version, v)) + } + + return nil, errors.New(fmt.Sprintf("platform version %s isn't supported", info.Version)) +} + +func (ldc LegacyDecortClient) Check() (*CheckInfo, error) { + res, err := ldc.DecortApiCall(context.Background(), http.MethodGet, versionURL, nil) + if err != nil { + return nil, err + } + + info := CheckInfo{} + + err = json.Unmarshal([]byte(strings.Replace(strings.Trim(string(res), `"`), "\\", "", -1)), &info) + if err != nil { + return nil, err + } + + if v, ok := constants.VersionMap[info.Version]; ok { + if v == "-" { + return &info, nil + } + return nil, errors.New(fmt.Sprintf("SDK don't support platform version %s, please use %s SDK version", info.Version, v)) + } + + return nil, errors.New(fmt.Sprintf("platform version %s isn't supported", info.Version)) +} diff --git a/internal/constants/constants.go b/internal/constants/constants.go index 3ce48de..4ebc2e3 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -12,3 +12,7 @@ var FileName = map[string]string{ } var K8sValues = []string{"labels", "taints", "annotations, additionalSANs"} + +var VersionMap = map[string]string{ + "4.3.0": "-", +}