diff --git a/CHANGELOG.md b/CHANGELOG.md
index 993d48f..5dbf850 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,40 +1,13 @@
-## Version 1.10.1
+## Version 1.10.2
### Добавлено
-#### compute
+#### prometheus
| Идентификатор
задачи | Описание |
| --- | --- |
-| BGOS-268 | Вычисляемое поле `PreferredCPU` в моделях `RecordCompute, ItemCompute, InfoCompute` в cloudapi/compute и cloudbroker/compute |
-| BGOS-268 | Опциональное поле `PreferredCPU` в структурах `ResizeRequest, UpdateRequest` в cloudapi/compute и cloudbroker/compute |
+| BGOS-335 | Группа ручек cloudbroker/prometheus |
-#### kvmx86
+#### resmon
| Идентификатор
задачи | Описание |
| --- | --- |
-| BGOS-268 | Опциональное поле `PreferredCPU` в структурах `CreateRequest, CreateBlankRequest` в cloudapi/kvmx86 и cloudbroker/kvmx86 |
-
-#### node
-| Идентификатор
задачи | Описание |
-| --- | --- |
-| BGOS-270 | Вычисляемые поля `DPDK, UEFIFirmwareFile` в модели `ItemNode` в cloudbroker/node |
-| BGOS-271 | Вычисляемые поля `DPDK, NetworkMode, ToActive, ToInstalling, ToMaintenance, ToRestricted` в моделях `RecordNode` в cloudbroker/node |
-
-#### sep
-| Идентификатор
задачи | Описание |
-| --- | --- |
-| BGOS-273 | Вычисляемое поле `MultipathNum` в модели `RecordSEP` cloudbroker/sep |
-
-#### vins
-| Идентификатор
задачи | Описание |
-| --- | --- |
-| BGOS-265 | Вычисляемое поле `AccoundID` в модели `ItemReservation` в cloudbroker/vins |
-
-### Удалено
-
-#### sep
-| Идентификатор
задачи | Описание |
-| --- | --- |
-| BGOS-272 | Вычисляемые поля `_ckey,_meta` в модели `RecordSEP` в cloudbroker/sep |
-
-
-
+| BGOS-336 | Группа ручек cloudbroker/resmon |
\ No newline at end of file
diff --git a/README.md b/README.md
index 1ab007b..b0f39a1 100644
--- a/README.md
+++ b/README.md
@@ -142,6 +142,8 @@ go get -u repository.basistech.ru/BASIS/decort-golang-sdk
- `LB` - управление балансировщиками нагрузки;
- `Node` - управление нодами платформы;
- `PCIDevice` - управление устройствами;
+- `Prometheus` - получение статистики prometheus;
+- `Resmon` - получение статистики resource monitoring;
- `RG` - управление ресурсными группами аккаунта;
- `SEP` - управление storage endpoint (sep);
- `Stack` - получение информации о вычислительных узлах;
@@ -319,6 +321,8 @@ func main() {
- `pkg/cloudbroker/lb` - для `LB`
- `pkg/cloudbroker/node` - для `Node`
- `pkg/cloudbroker/pcidevice` - для `PCIDevice`
+ - `pkg/cloudbroker/prometheus` - для `Prometheus`
+ - `pkg/cloudbroker/resmon` - для `Resmon`
- `pkg/cloudbroker/rg` - для `RG`
- `pkg/cloudbroker/sep` - для `SEP`
- `pkg/cloudbroker/stack` - для `Stack`
@@ -505,6 +509,8 @@ func main() {
- `.LB()` - для работы с `LB`
- `.Node()` - для работы с `Node`
- `.PCIDevice()` - для работы с `PCIDevice`
+ - `.Prometheus()` - для работы с `Prometheus`
+ - `.Resmon()` - для работы с `Resmon`
- `.RG()` - для работы с `RG`
- `.SEP()` - для работы с `SEP`
- `.Stack()` - для работы с `Stack`
diff --git a/pkg/cloudbroker/prometheus.go b/pkg/cloudbroker/prometheus.go
new file mode 100644
index 0000000..1d92899
--- /dev/null
+++ b/pkg/cloudbroker/prometheus.go
@@ -0,0 +1,8 @@
+package cloudbroker
+
+import "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/prometheus"
+
+// Accessing the Prometheus method group
+func (cb *CloudBroker) Prometheus() *prometheus.Prometheus {
+ return prometheus.New(cb.client)
+}
diff --git a/pkg/cloudbroker/prometheus/compute_cpu_load.go b/pkg/cloudbroker/prometheus/compute_cpu_load.go
new file mode 100644
index 0000000..e5b6ffd
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_cpu_load.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeCPULoadRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Per-second CPU time consumed by Compute in percent, average over the time step specified
+func (p Prometheus) ComputeCPULoad(ctx context.Context, req ComputeCPULoadRequest) (*PrometheusData, error) {
+ res, err := p.ComputeCPULoadRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeCPULoadRaw(ctx context.Context, req ComputeCPULoadRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeCPUload"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_memory_available.go b/pkg/cloudbroker/prometheus/compute_memory_available.go
new file mode 100644
index 0000000..e0379f3
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_memory_available.go
@@ -0,0 +1,53 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeMemoryAvailableRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+}
+
+// Available Memory
+func (p Prometheus) ComputeMemoryAvailable(ctx context.Context, req ComputeMemoryAvailableRequest) (*PrometheusData, error) {
+ res, err := p.ComputeMemoryAvailableRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeMemoryAvailableRaw(ctx context.Context, req ComputeMemoryAvailableRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeMemoryAvailable"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_memory_unused.go b/pkg/cloudbroker/prometheus/compute_memory_unused.go
new file mode 100644
index 0000000..c8819d2
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_memory_unused.go
@@ -0,0 +1,53 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeMemoryUnusedRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+}
+
+// Unused Memory
+func (p Prometheus) ComputeMemoryUnused(ctx context.Context, req ComputeMemoryUnusedRequest) (*PrometheusData, error) {
+ res, err := p.ComputeMemoryUnusedRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeMemoryUnusedRaw(ctx context.Context, req ComputeMemoryUnusedRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeMemoryUnused"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_memory_usable.go b/pkg/cloudbroker/prometheus/compute_memory_usable.go
new file mode 100644
index 0000000..7c3ced4
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_memory_usable.go
@@ -0,0 +1,53 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeMemoryUsableRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+}
+
+// Usable Memory
+func (p Prometheus) ComputeMemoryUsable(ctx context.Context, req ComputeMemoryUsableRequest) (*PrometheusData, error) {
+ res, err := p.ComputeMemoryUsableRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeMemoryUsableRaw(ctx context.Context, req ComputeMemoryUsableRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeMemoryUsable"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_memory_usage.go b/pkg/cloudbroker/prometheus/compute_memory_usage.go
new file mode 100644
index 0000000..94ef234
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_memory_usage.go
@@ -0,0 +1,53 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeMemoryUsageRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+}
+
+// Memory Usage
+func (p Prometheus) ComputeMemoryUsage(ctx context.Context, req ComputeMemoryUsageRequest) (*PrometheusData, error) {
+ res, err := p.ComputeMemoryUsageRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeMemoryUsageRaw(ctx context.Context, req ComputeMemoryUsageRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeMemoryUsage"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_memory_used.go b/pkg/cloudbroker/prometheus/compute_memory_used.go
new file mode 100644
index 0000000..92ea98d
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_memory_used.go
@@ -0,0 +1,53 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeMemoryUsedRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+}
+
+// Used Memory
+func (p Prometheus) ComputeMemoryUsed(ctx context.Context, req ComputeMemoryUsedRequest) (*PrometheusData, error) {
+ res, err := p.ComputeMemoryUsedRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeMemoryUsedRaw(ctx context.Context, req ComputeMemoryUsedRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeMemoryUsed"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_read_bytes.go b/pkg/cloudbroker/prometheus/compute_read_bytes.go
new file mode 100644
index 0000000..5a471cf
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_read_bytes.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeReadBytesRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Read Bytes
+func (p Prometheus) ComputeReadBytes(ctx context.Context, req ComputeReadBytesRequest) (*PrometheusData, error) {
+ res, err := p.ComputeReadBytesRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeReadBytesRaw(ctx context.Context, req ComputeReadBytesRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeReadBytes"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_read_requests.go b/pkg/cloudbroker/prometheus/compute_read_requests.go
new file mode 100644
index 0000000..3c1941a
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_read_requests.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeReadRequestsRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Read Requests
+func (p Prometheus) ComputeReadRequests(ctx context.Context, req ComputeReadRequestsRequest) (*PrometheusData, error) {
+ res, err := p.ComputeReadRequestsRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeReadRequestsRaw(ctx context.Context, req ComputeReadRequestsRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeReadRequests"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_receive_bytes.go b/pkg/cloudbroker/prometheus/compute_receive_bytes.go
new file mode 100644
index 0000000..d19d50e
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_receive_bytes.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeReceiveBytesRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Receive Bytes
+func (p Prometheus) ComputeReceiveBytes(ctx context.Context, req ComputeReceiveBytesRequest) (*PrometheusData, error) {
+ res, err := p.ComputeReceiveBytesRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeReceiveBytesRaw(ctx context.Context, req ComputeReceiveBytesRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeReceiveBytes"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_receive_packets.go b/pkg/cloudbroker/prometheus/compute_receive_packets.go
new file mode 100644
index 0000000..66b0f8a
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_receive_packets.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeReceivePacketsRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Receive Packets
+func (p Prometheus) ComputeReceivePackets(ctx context.Context, req ComputeReceivePacketsRequest) (*PrometheusData, error) {
+ res, err := p.ComputeReceivePacketsRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeReceivePacketsRaw(ctx context.Context, req ComputeReceivePacketsRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeReceivePackets"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_transmit_bytes.go b/pkg/cloudbroker/prometheus/compute_transmit_bytes.go
new file mode 100644
index 0000000..96cfb91
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_transmit_bytes.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeTransmitBytesRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Transmit Bytes
+func (p Prometheus) ComputeTransmitBytes(ctx context.Context, req ComputeTransmitBytesRequest) (*PrometheusData, error) {
+ res, err := p.ComputeTransmitBytesRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeTransmitBytesRaw(ctx context.Context, req ComputeTransmitBytesRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeTransmitBytes"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_transmit_packets.go b/pkg/cloudbroker/prometheus/compute_transmit_packets.go
new file mode 100644
index 0000000..707d9ee
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_transmit_packets.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeTransmitPacketsRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Transmit Packets
+func (p Prometheus) ComputeTransmitPackets(ctx context.Context, req ComputeTransmitPacketsRequest) (*PrometheusData, error) {
+ res, err := p.ComputeTransmitPacketsRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeTransmitPacketsRaw(ctx context.Context, req ComputeTransmitPacketsRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeTransmitPackets"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_write_bytes.go b/pkg/cloudbroker/prometheus/compute_write_bytes.go
new file mode 100644
index 0000000..9adb12f
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_write_bytes.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeWriteBytesRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Write Bytes
+func (p Prometheus) ComputeWriteBytes(ctx context.Context, req ComputeWriteBytesRequest) (*PrometheusData, error) {
+ res, err := p.ComputeWriteBytesRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeWriteBytesRaw(ctx context.Context, req ComputeWriteBytesRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeWriteBytes"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/compute_write_requests.go b/pkg/cloudbroker/prometheus/compute_write_requests.go
new file mode 100644
index 0000000..64b6b05
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/compute_write_requests.go
@@ -0,0 +1,57 @@
+package prometheus
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type ComputeWriteRequestsRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Time to loads of statistic in seconds
+ // Required: false
+ ForLast uint64 `url:"forLast,omitempty" json:"forLast,omitempty"`
+
+ // The reading interval in seconds
+ // Required: true
+ Step uint64 `url:"step,omitempty" json:"step,omitempty"`
+
+ // Number of zeros after the decimal point
+ // Required: true
+ DecimalPlaces uint64 `url:"decimalPlaces,omitempty" json:"decimalPlaces,omitempty"`
+}
+
+// Write Requests
+func (p Prometheus) ComputeWriteRequests(ctx context.Context, req ComputeWriteRequestsRequest) (*PrometheusData, error) {
+ res, err := p.ComputeWriteRequestsRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := PrometheusData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (p Prometheus) ComputeWriteRequestsRaw(ctx context.Context, req ComputeWriteRequestsRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/prometheus/computeWriteRequests"
+
+ res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/prometheus/models.go b/pkg/cloudbroker/prometheus/models.go
new file mode 100644
index 0000000..6ab647d
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/models.go
@@ -0,0 +1,13 @@
+package prometheus
+
+// PrometheusData represents an array of data points
+type PrometheusData []PrometheusPoint
+
+// PrometheusPoint represents a single data point
+type PrometheusPoint struct {
+ // Value of the metric at a specific point in time
+ Value float64 `json:"value"`
+
+ // Timestamp the Unix timestamp.
+ Timestamp uint64 `json:"timestamp"`
+}
diff --git a/pkg/cloudbroker/prometheus/prometheus.go b/pkg/cloudbroker/prometheus/prometheus.go
new file mode 100644
index 0000000..e652f7b
--- /dev/null
+++ b/pkg/cloudbroker/prometheus/prometheus.go
@@ -0,0 +1,17 @@
+package prometheus
+
+import (
+ "repository.basistech.ru/BASIS/decort-golang-sdk/interfaces"
+)
+
+// Structure for creating request to prometheus
+type Prometheus struct {
+ client interfaces.Caller
+}
+
+// Builder for prometheus endpoints
+func New(client interfaces.Caller) *Prometheus {
+ return &Prometheus{
+ client: client,
+ }
+}
diff --git a/pkg/cloudbroker/resmon.go b/pkg/cloudbroker/resmon.go
new file mode 100644
index 0000000..bc8ea62
--- /dev/null
+++ b/pkg/cloudbroker/resmon.go
@@ -0,0 +1,10 @@
+package cloudbroker
+
+import (
+ "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/resmon"
+)
+
+// Accessing the Resmon method group
+func (cb *CloudBroker) Resmon() *resmon.Resmon {
+ return resmon.New(cb.client)
+}
diff --git a/pkg/cloudbroker/resmon/get_by_compute.go b/pkg/cloudbroker/resmon/get_by_compute.go
new file mode 100644
index 0000000..03a0e10
--- /dev/null
+++ b/pkg/cloudbroker/resmon/get_by_compute.go
@@ -0,0 +1,53 @@
+package resmon
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type GetByComputeRequest struct {
+ // Compute ID
+ // Required: true
+ ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
+
+ // Start of time period - unixtime
+ // Required: false
+ StartTime uint64 `url:"starttime,omitempty" json:"starttime,omitempty"`
+
+ // End of time period - unixtime
+ // Required: true
+ EndTime uint64 `url:"endtime,omitempty" json:"endtime,omitempty"`
+}
+
+// Get resource monitoring for the specified time period for the concrete compute instance
+func (r Resmon) GetByCompute(ctx context.Context, req GetByComputeRequest) (*GetByComputeData, error) {
+ res, err := r.GetByComputeRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := GetByComputeData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (r Resmon) GetByComputeRaw(ctx context.Context, req GetByComputeRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/resmon/getByCompute"
+
+ res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/resmon/get_by_computes.go b/pkg/cloudbroker/resmon/get_by_computes.go
new file mode 100644
index 0000000..1b82736
--- /dev/null
+++ b/pkg/cloudbroker/resmon/get_by_computes.go
@@ -0,0 +1,49 @@
+package resmon
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type GetByComputesRequest struct {
+ // Start of time period - unixtime
+ // Required: false
+ StartTime uint64 `url:"starttime,omitempty" json:"starttime,omitempty"`
+
+ // End of time period - unixtime
+ // Required: true
+ EndTime uint64 `url:"endtime,omitempty" json:"endtime,omitempty"`
+}
+
+// Get compute instances resource monitoring for the specified time period
+func (r Resmon) GetByComputes(ctx context.Context, req GetByComputesRequest) (*GetByComputeData, error) {
+ res, err := r.GetByComputesRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := GetByComputeData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (r Resmon) GetByComputesRaw(ctx context.Context, req GetByComputesRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/resmon/getByComputes"
+
+ res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/resmon/get_by_grid.go b/pkg/cloudbroker/resmon/get_by_grid.go
new file mode 100644
index 0000000..c7515b2
--- /dev/null
+++ b/pkg/cloudbroker/resmon/get_by_grid.go
@@ -0,0 +1,49 @@
+package resmon
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type GetByGRIDRequest struct {
+ // Start of time period - unixtime
+ // Required: false
+ StartTime uint64 `url:"starttime,omitempty" json:"starttime,omitempty"`
+
+ // End of time period - unixtime
+ // Required: true
+ EndTime uint64 `url:"endtime,omitempty" json:"endtime,omitempty"`
+}
+
+// Get a grid resource monitoring for the specified time period
+func (r Resmon) GetByGRID(ctx context.Context, req GetByGRIDRequest) (*GetByGRIDData, error) {
+ res, err := r.GetByGRIDRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := GetByGRIDData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (r Resmon) GetByGRIDRaw(ctx context.Context, req GetByGRIDRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/resmon/getByGrid"
+
+ res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/resmon/get_by_stack.go b/pkg/cloudbroker/resmon/get_by_stack.go
new file mode 100644
index 0000000..3b4321a
--- /dev/null
+++ b/pkg/cloudbroker/resmon/get_by_stack.go
@@ -0,0 +1,53 @@
+package resmon
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type GetByStackRequest struct {
+ // Stack ID
+ // Required: true
+ StackID uint64 `url:"stackId" json:"stackId" validate:"required"`
+
+ // Start of time period - unixtime
+ // Required: false
+ StartTime uint64 `url:"starttime,omitempty" json:"starttime,omitempty"`
+
+ // End of time period - unixtime
+ // Required: true
+ EndTime uint64 `url:"endtime,omitempty" json:"endtime,omitempty"`
+}
+
+// Get a grid resource monitoring for the specified time period
+func (r Resmon) GetByStack(ctx context.Context, req GetByStackRequest) (*GetByStackData, error) {
+ res, err := r.GetByStackRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := GetByStackData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (r Resmon) GetByStackRaw(ctx context.Context, req GetByStackRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/resmon/getByStack"
+
+ res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/resmon/get_by_stacks.go b/pkg/cloudbroker/resmon/get_by_stacks.go
new file mode 100644
index 0000000..aa128f6
--- /dev/null
+++ b/pkg/cloudbroker/resmon/get_by_stacks.go
@@ -0,0 +1,49 @@
+package resmon
+
+import (
+ "context"
+ "encoding/json"
+ "net/http"
+
+ "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
+)
+
+type GetByStacksRequest struct {
+ // Start of time period - unixtime
+ // Required: false
+ StartTime uint64 `url:"starttime,omitempty" json:"starttime,omitempty"`
+
+ // End of time period - unixtime
+ // Required: true
+ EndTime uint64 `url:"endtime,omitempty" json:"endtime,omitempty"`
+}
+
+// Get a grid resource monitoring for the specified time period
+func (r Resmon) GetByStacks(ctx context.Context, req GetByStacksRequest) (*GetByStackData, error) {
+ res, err := r.GetByStacksRaw(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+
+ info := GetByStackData{}
+
+ err = json.Unmarshal(res, &info)
+ if err != nil {
+ return nil, err
+ }
+
+ return &info, nil
+}
+
+// GetRaw gets information about compute as an array of bytes
+func (r Resmon) GetByStacksRaw(ctx context.Context, req GetByStacksRequest) ([]byte, error) {
+ err := validators.ValidateRequest(req)
+ if err != nil {
+ return nil, validators.ValidationErrors(validators.GetErrors(err))
+ }
+
+ url := "/cloudbroker/resmon/getByStacks"
+
+ res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req)
+ return res, err
+}
diff --git a/pkg/cloudbroker/resmon/models.go b/pkg/cloudbroker/resmon/models.go
new file mode 100644
index 0000000..5206bc8
--- /dev/null
+++ b/pkg/cloudbroker/resmon/models.go
@@ -0,0 +1,89 @@
+package resmon
+
+// GetByComputeData represents an array of data points
+type GetByComputeData []GetByComputePoint
+
+type GetByComputePoint struct {
+ ID uint64 `json:"id"`
+ Name string `json:"name"`
+ ComputeID uint64 `json:"computeId"`
+ AccountID uint64 `json:"accountId"`
+ RGID uint64 `json:"rgId"`
+ Usage ComputeUsage `json:"usage"`
+ Disks []ItemDisk `json:"disks"`
+ UID string `json:"uid"`
+ StackID uint64 `json:"stackId"`
+}
+
+type ComputeUsage struct {
+ VCPUsConsumed uint64 `json:"vcpusConsumed"`
+ Storage uint64 `json:"storage"`
+ CPUTime uint64 `json:"cpuTime"`
+ ExtIPs uint64 `json:"extips"`
+ RAMConsumed uint64 `json:"ramConsumed"`
+ VCPUsReserved uint64 `json:"vcpusReserved"`
+ IsUp uint64 `json:"isUp"`
+ RAMConsumedReal uint64 `json:"ramConsumedReal"`
+ RAMReserved uint64 `json:"ramReserved"`
+}
+
+type ItemDisk struct {
+ Pool string `json:"pool"`
+ ResID string `json:"resId"`
+ SizeUsed uint64 `json:"sizeUsed"`
+ SizeMax uint64 `json:"sizeMax"`
+}
+
+// GetByGRIDData represents an array of data points
+type GetByGRIDData []GetByGRIDPoint
+
+type GetByGRIDPoint struct {
+ UID string `json:"uid"`
+ Total ItemTotalByGRID `json:"total"`
+ Storages map[string]ItemStorage `json:"storages"`
+}
+
+type ItemTotalByGRID struct {
+ StacksCPU uint64 `json:"stacksCPU"`
+ StorageCapacity uint64 `json:"storageCapacity"`
+ CPUPower uint64 `json:"cpuPower"`
+ CPUUtil uint64 `json:"cpuUtil"`
+ TotalMem uint64 `json:"totalMem"`
+ ReservedMem uint64 `json:"reservedMem"`
+ UsedMem uint64 `json:"usedMem"`
+ FreeMem uint64 `json:"freeMem"`
+ VCPUConsumed uint64 `json:"vcpuConsumed"`
+}
+
+type ItemStorage struct {
+ CapacityLimit uint64 `json:"capacityLimit"`
+ Consumed uint64 `json:"consumed"`
+ Type string `json:"type"`
+ UID string `json:"uid"`
+}
+
+// GetByStackData represents an array of data points
+type GetByStackData []GetByStackPoint
+
+type GetByStackPoint struct {
+ Usage StackUsage `json:"usage"`
+ CPUInfo CPUinfoByStack `json:"cpuInfo"`
+ Name string `json:"name"`
+ ID uint64 `json:"id"`
+}
+
+type StackUsage struct {
+ CPUPower uint64 `json:"cpuPower"`
+ UsedVCPUs uint64 `json:"usedVcpus"`
+ PCPU uint64 `json:"pcpu"`
+ UsedMem uint64 `json:"usedMem"`
+ CPUUtil uint64 `json:"cpuUtil"`
+ ReservedMem uint64 `json:"reservedMem"`
+ FreeMem uint64 `json:"freeMem"`
+}
+
+type CPUinfoByStack struct {
+ ClockSpeed uint64 `json:"clockSpeed"`
+ CoreCount uint64 `json:"coreCount"`
+ PhysCount uint64 `json:"physCount"`
+}
diff --git a/pkg/cloudbroker/resmon/resmon.go b/pkg/cloudbroker/resmon/resmon.go
new file mode 100644
index 0000000..8f5054d
--- /dev/null
+++ b/pkg/cloudbroker/resmon/resmon.go
@@ -0,0 +1,15 @@
+package resmon
+
+import "repository.basistech.ru/BASIS/decort-golang-sdk/interfaces"
+
+// Structure for creating request to resource monitoring
+type Resmon struct {
+ client interfaces.Caller
+}
+
+// Builder for resource monitoring endpoints
+func New(client interfaces.Caller) *Resmon {
+ return &Resmon{
+ client: client,
+ }
+}