v1.5.0-alfa

1.5.8-k8s-extnet-branch v1.5.0-alfa
Tim Tkachev 2 years ago
parent b7137683ab
commit 256dba5134

@ -0,0 +1,8 @@
package cloudbroker
import "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/backup"
// Accessing the Backup method group
func (cb *CloudBroker) Backup() *backup.Backup {
return backup.New(cb.client)
}

@ -0,0 +1,17 @@
package backup
import (
"repository.basistech.ru/BASIS/decort-golang-sdk/interfaces"
)
// Structure for creating request to backup
type Backup struct {
client interfaces.Caller
}
// Builder for backup endpoints
func New(client interfaces.Caller) *Backup {
return &Backup{
client: client,
}
}

@ -0,0 +1,81 @@
package backup
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strings"
)
// Request struct for creating disk backup
type CreateDiskBackupRequest struct {
// Compute ID
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Disk ID
// Required: true
DiskID uint64 `url:"diskId" json:"diskId" validate:"required"`
// Backup path
// Required: true
BackupPath string `url:"backupPath" json:"backupPath" validate:"required"`
// Async API Call
// For async call use CreateDiskBackupAsync
// For sync call use CreateDiskBackup
// Required: true
async bool `url:"async"`
}
// CreateDiskBackup creates disk backup
func (b Backup) CreateDiskBackup(ctx context.Context, req CreateDiskBackupRequest) (ListInfoBackup, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return nil, validators.ValidationError(validationError)
}
}
req.async = false
url := "/cloudbroker/backup/createDiskBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return nil, err
}
result := make(ListInfoBackup, 0)
err = json.Unmarshal(res, &result)
if err != nil {
return nil, err
}
return result, nil
}
// CreateDiskBackupAsync creates disk backup
func (b Backup) CreateDiskBackupAsync(ctx context.Context, req CreateDiskBackupRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return "", validators.ValidationError(validationError)
}
}
req.async = true
url := "/cloudbroker/backup/createDiskBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return "", err
}
result := strings.ReplaceAll(string(res), "\"", "")
return result, nil
}

@ -0,0 +1,83 @@
package backup
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strings"
)
type Disk struct {
// Disk ID
DiskID uint64 `url:"diskId" json:"diskId" validate:"required"`
// Backup path
BackupPath string `url:"backupPath" json:"backupPath" validate:"required"`
}
// Request struct for creating disks backup
type CreateDisksBackupRequest struct {
// Compute ID
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Disks
Disks []Disk `url:"disks" json:"disks" validate:"required,dive"`
// Async API Call
// For async call use CreateDisksBackupAsync
// For sync call use CreateDisksBackup
// Required: true
async bool `url:"async"`
}
// CreateDisksBackup creates disks backup
func (b Backup) CreateDisksBackup(ctx context.Context, req CreateDisksBackupRequest) (ListInfoBackup, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return nil, validators.ValidationError(validationError)
}
}
req.async = false
url := "/cloudbroker/backup/createDisksBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return nil, err
}
result := make(ListInfoBackup, 0)
err = json.Unmarshal(res, &result)
if err != nil {
return nil, err
}
return result, nil
}
// CreateDisksBackupAsync creates disks backup
func (b Backup) CreateDisksBackupAsync(ctx context.Context, req CreateDisksBackupRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return "", validators.ValidationError(validationError)
}
}
req.async = true
url := "/cloudbroker/backup/createDisksBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return "", err
}
result := strings.ReplaceAll(string(res), "\"", "")
return result, nil
}

@ -0,0 +1,73 @@
package backup
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
"strings"
)
// Request struct for deleting disk backup
type DeleteDiskBackupRequest struct {
// Backup path
BackupPath string `url:"backupPath" json:"backupPath" validate:"required"`
// Backup file
BackupFile string `url:"backupFile" json:"backupFile" validate:"required"`
// Async API Call
// For async call use DeleteDiskBackupAsync
// For sync call use DeleteDiskBackup
// Required: true
async bool `url:"async"`
}
// DeleteDiskBackup deletes disk backup
func (b Backup) DeleteDiskBackup(ctx context.Context, req DeleteDiskBackupRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
req.async = false
url := "/cloudbroker/backup/deleteDiskBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return false, err
}
result, err := strconv.ParseBool(string(res))
if err != nil {
return false, err
}
return result, nil
}
// DeleteDiskBackupAsync deletes disk backup
func (b Backup) DeleteDiskBackupAsync(ctx context.Context, req DeleteDiskBackupRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return "", validators.ValidationError(validationError)
}
}
req.async = true
url := "/cloudbroker/backup/deleteDiskBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return "", err
}
result := strings.ReplaceAll(string(res), "\"", "")
return result, nil
}

@ -0,0 +1,40 @@
package backup
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
// Request struct for getting list of backup paths
type ListBackupPathsRequest struct {
// Grid ID
GID uint64 `url:"gridId" json:"gridId" validate:"required"`
}
// ListBackupPaths gets list of backup paths
func (b Backup) ListBackupPaths(ctx context.Context, req ListBackupPathsRequest) ([]string, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return nil, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/backup/listBackupPaths"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return nil, err
}
list := make([]string, 0)
err = json.Unmarshal(res, &list)
if err != nil {
return nil, err
}
return list, nil
}

@ -0,0 +1,28 @@
package backup
// Main info about backup
type InfoBackup struct {
// Compute ID
ComputeID uint64 `json:"computeId"`
// Disk ID
DiskID uint64 `json:"diskId"`
// Backup path
BackupPath string `json:"backupPath"`
}
// CreateDisksBackup response
type ListInfoBackup []InfoBackup
// RestoreDiskFromFile response
type InfoRestoredDisk struct {
// Compute ID
ComputeID uint64 `json:"computeId"`
// Disk ID
DiskID uint64 `json:"diskId"`
}
// RestoreDisksFromFile response
type ListInfoRestoredDisk []InfoRestoredDisk

@ -0,0 +1,81 @@
package backup
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strings"
)
// Request struct for restoring disk from backup
type RestoreDiskFromBackupRequest struct {
// Compute ID
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Disk ID
DiskID uint64 `url:"diskId" json:"diskId" validate:"required"`
// Backup path
BackupPath string `url:"backupPath" json:"backupPath" validate:"required"`
// Backup file
BackupFile string `url:"backupFile" json:"backupFile" validate:"required"`
// Async API Call
// For async call use RestoreDiskFromBackupAsync
// For sync call use RestoreDiskFromBackup
// Required: true
async bool `url:"async"`
}
// RestoreDiskFromBackup restores disk from backup
func (b Backup) RestoreDiskFromBackup(ctx context.Context, req RestoreDiskFromBackupRequest) (ListInfoRestoredDisk, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return nil, validators.ValidationError(validationError)
}
}
req.async = false
url := "/cloudbroker/backup/restoreDiskFromBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return nil, err
}
result := make(ListInfoRestoredDisk, 0)
err = json.Unmarshal(res, &result)
if err != nil {
return nil, err
}
return result, nil
}
// RestoreDiskFromBackupAsync restores disk from backup
func (b Backup) RestoreDiskFromBackupAsync(ctx context.Context, req RestoreDiskFromBackupRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return "", validators.ValidationError(validationError)
}
}
req.async = true
url := "/cloudbroker/backup/restoreDiskFromBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return "", err
}
result := strings.ReplaceAll(string(res), "\"", "")
return result, nil
}

@ -0,0 +1,86 @@
package backup
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strings"
)
type BackupFile struct {
// Disk ID
DiskID uint64 `url:"diskId" json:"diskId" validate:"required"`
// Backup path
BackupPath string `url:"backupPath" json:"backupPath" validate:"required"`
// Backup file
BackupFile string `url:"backupFile" json:"backupFile" validate:"required"`
}
// Request struct for restoring disks from backup
type RestoreDisksFromBackupRequest struct {
// Compute ID
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
//Backup files
BackupFiles []BackupFile `url:"backupFiles" json:"backupFiles" validate:"required,dive"`
// Async API Call
// For async call use RestoreDisksFromBackupAsync
// For sync call use RestoreDisksFromBackup
// Required: true
async bool `url:"async"`
}
// RestoreDisksFromBackup restores disks from backup
func (b Backup) RestoreDisksFromBackup(ctx context.Context, req RestoreDisksFromBackupRequest) (ListInfoRestoredDisk, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return nil, validators.ValidationError(validationError)
}
}
req.async = false
url := "/cloudbroker/backup/restoreDisksFromBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return nil, err
}
result := make(ListInfoRestoredDisk, 0)
err = json.Unmarshal(res, &result)
if err != nil {
return nil, err
}
return result, nil
}
// RestoreDisksFromBackupAsync restores disks from backup
func (b Backup) RestoreDisksFromBackupAsync(ctx context.Context, req RestoreDisksFromBackupRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return "", validators.ValidationError(validationError)
}
}
req.async = true
url := "/cloudbroker/backup/restoreDisksFromBackup"
res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return "", err
}
result := strings.ReplaceAll(string(res), "\"", "")
return result, nil
}
Loading…
Cancel
Save