Compare commits

...

2 Commits

Author SHA1 Message Date
89831894df v1.11.5 2025-06-26 13:21:52 +03:00
92431c5c65 v1.11.4 2025-05-21 13:39:23 +03:00
6 changed files with 251 additions and 58 deletions

View File

@@ -1,59 +1,8 @@
## Version 1.11.3
## Version 1.11.5
### Добавлено
### account
#### Общие изменения
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-467 | Опциональные поля `Name` и `Reason` в структуре запроса `DeleteRequest` в cloudbroker/account |
### apiaccess
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-470 | Опциональное поле `Desc` в структуре запроса `ListRequest` в cloudbroker/apiaccess |
#### bservice
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-361 | Группа ручек `bservice` в cloudbroker/bservice |
#### location
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-471 | Поле `SDNSupport` в возвращаемой модели `ItemLocation` в cloudbroker/location |
### Исправлено
#### disks
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-468 | Исправлен тип поля `UpdatedBy` c uint64 на string в структурах ответа `ItemComputeDisk` в cloudapi/disks и `ItemDisk` в cloudbroker/disks |
#### kvmvm
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-433 | Исправлена ошибка валидации поля LoaderType для всех структур в cloudapi/compute и в cloudbroker/compute |
| BGOS-458 | Изменен тип параметров `CPUPin`, `HPBacked`, `AutoStart`, `HotResize` с bool на interface в структуре `UpdateRequest` cloudapi/compute и в cloudbroker/compute |
#### node
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-472 | Исправлен тип поля `NumaNode` c uint64 на int в структуре ответа `Backplane1` в cloudbroker/node |
| BGOS-428 | Поле `Message` заменено на `Reason` в структуре запроса `EnableNodesRequest` в cloudbroker/node |
### Удалено
### compute
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-469 | Опциональное поле `SepID` в структуре запроса `CreateTemplateFromBlankRequest` в cloudapi/compute и cloudbroker/compute |
### disks
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-469 | Опциональное поле `SepID` в структуре запроса `FromPlatformDiskRequest` в cloudapi/disks и cloudbroker/disks |
#### rg
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-427 | Поле `RegisterComputes` в структурах ответа `RecordResourceGroup`, `ItemResourceGroup` в cloudapi/rg и `ItemRG` в cloudbroker/rg |
| BGOS-532 | Метод `Check` для `DecortClient`, `BVSDecortClient` и `LegacyDecortClient` |

View File

@@ -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: "<APP_ID>",
AppSecret: "<APP_SECRET>",
SSOURL: "https://sso.digitalenergy.online",
DecortURL: "https://mr4.digitalenergy.online",
Retries: 5,
SSLSkipVerify: true,
}
// Создание клиента
client := decort.New(config)
// Проверка соответствия версии
checkInfo, err := client.Check()
}
```

88
check.go Normal file
View File

@@ -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))
}

View File

@@ -12,3 +12,7 @@ var FileName = map[string]string{
}
var K8sValues = []string{"labels", "taints", "annotations, additionalSANs"}
var VersionMap = map[string]string{
"4.3.0": "-",
}

View File

@@ -494,8 +494,8 @@ type RecordCompute struct {
// Userdata
Userdata interface{} `json:"userdata"`
// vGPU IDs
VGPUs []uint64 `json:"vgpus"`
// vGPUs list
VGPUs []VGPUItem `json:"vgpus"`
// Virtual image ID
VirtualImageID uint64 `json:"virtualImageId"`
@@ -507,6 +507,65 @@ type RecordCompute struct {
VNCPassword string `json:"vncPasswd"`
}
type VGPUItem struct {
// ID
ID uint64 `json:"id"`
// GID
GID uint64 `json:"gid"`
// Type
Type string `json:"type"`
// Mode
Mode string `json:"mode"`
// Status
Status string `json:"status"`
// ProfileID
ProfileID uint64 `json:"profileId"`
// RAM
RAM uint64 `json:"ram"`
// LastUpdateTime
LastUpdateTime uint64 `json:"lastUpdateTime"`
// CreatedTime
CreatedTime uint64 `json:"createdTime"`
// DeletedTime
DeletedTime uint64 `json:"deletedTime"`
// VMID
VMID uint64 `json:"vmid"`
// PGPuid
PGPuid uint64 `json:"pgpuid"`
// ReferenceID
ReferenceID string `json:"referenceId"`
// AccountID
AccountID uint64 `json:"accountId"`
// RgID
RgID uint64 `json:"rgId"`
// LastClaimedBy
LastClaimedBy uint64 `json:"lastClaimedBy"`
// PCISlot
PCISlot uint64 `json:"pciSlot"`
// BusNumber
BusNumber uint64 `json:"bus_number"`
// GUID
GUID uint64 `json:"guid"`
}
// Information about libvirt settings
type LibvirtSettings struct {
// TX mode

View File

@@ -1074,8 +1074,8 @@ type RecordCompute struct {
// Userdata
Userdata interface{} `json:"userdata"`
// List VGPU IDs
VGPUs []uint64 `json:"vgpus"`
// List VGPU
VGPUs []VGPUItem `json:"vgpus"`
// Virtual image ID
VirtualImageID uint64 `json:"virtualImageId"`
@@ -1087,6 +1087,65 @@ type RecordCompute struct {
VNCPassword string `json:"vncPasswd"`
}
type VGPUItem struct {
// ID
ID uint64 `json:"id"`
// GID
GID uint64 `json:"gid"`
// Type
Type string `json:"type"`
// Mode
Mode string `json:"mode"`
// Status
Status string `json:"status"`
// ProfileID
ProfileID uint64 `json:"profileId"`
// RAM
RAM uint64 `json:"ram"`
// LastUpdateTime
LastUpdateTime uint64 `json:"lastUpdateTime"`
// CreatedTime
CreatedTime uint64 `json:"createdTime"`
// DeletedTime
DeletedTime uint64 `json:"deletedTime"`
// VMID
VMID uint64 `json:"vmid"`
// PGPuid
PGPuid uint64 `json:"pgpuid"`
// ReferenceID
ReferenceID string `json:"referenceId"`
// AccountID
AccountID uint64 `json:"accountId"`
// RgID
RgID uint64 `json:"rgId"`
// LastClaimedBy
LastClaimedBy uint64 `json:"lastClaimedBy"`
// PCISlot
PCISlot uint64 `json:"pciSlot"`
// BusNumber
BusNumber uint64 `json:"bus_number"`
// GUID
GUID uint64 `json:"guid"`
}
// Information about of disk IDs
type ListInfoDisks []InfoDisk