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": "-",
+}