v16.1.0
This commit is contained in:
dayterr
2026-08-28 16:47:26 +03:00
parent 3c5157281e
commit fe3c7bf63a
142 changed files with 3160 additions and 479 deletions

View File

@@ -27,6 +27,8 @@ type AccessGrantRequest struct {
}
// AccessGrant grants user or group access to the resource group as specified
//
// Deprecated: will be removed in SDK v1.17
func (r RG) AccessGrant(ctx context.Context, req AccessGrantRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {

View File

@@ -20,6 +20,8 @@ type AccessRevokeRequest struct {
}
// AccessRevoke revokes specified user or group access from the resource group
//
// Deprecated: will be removed in SDK v1.17
func (r RG) AccessRevoke(ctx context.Context, req AccessRevokeRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {

View File

@@ -0,0 +1,40 @@
package rg
import (
"context"
"net/http"
"strconv"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/constants"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/validators"
)
// AddACLAccessRequest adds ACL access to a resource group
type AddACLAccessRequest struct {
ID uint64 `url:"id" json:"id" validate:"required"`
AccessType string `url:"accesstype" json:"accesstype" validate:"required"`
Usernames []string `url:"usernames,omitempty" json:"usernames,omitempty"`
APIAccesses []uint64 `url:"apiaccesses,omitempty" json:"apiaccesses,omitempty"`
}
// AddACLAccess adds ACL access to a resource group.
func (r RG) AddACLAccess(ctx context.Context, req AddACLAccessRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudapi/rg/add_acl_access"
res, err := r.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req)
if err != nil {
return false, err
}
result, err := strconv.ParseBool(string(res))
if err != nil {
return false, err
}
return result, nil
}

View File

@@ -0,0 +1,39 @@
package rg
import (
"context"
"net/http"
"strconv"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/constants"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/validators"
)
// DeleteACLAccessRequest deletes ACL access from a resource group
type DeleteACLAccessRequest struct {
ID uint64 `url:"id" json:"id" validate:"required"`
Usernames []string `url:"usernames,omitempty" json:"usernames,omitempty"`
APIAccesses []uint64 `url:"apiaccesses,omitempty" json:"apiaccesses,omitempty"`
}
// DeleteACLAccess deletes ACL access from a resource group.
func (r RG) DeleteACLAccess(ctx context.Context, req DeleteACLAccessRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudapi/rg/del_acl_access"
res, err := r.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req)
if err != nil {
return false, err
}
result, err := strconv.ParseBool(string(res))
if err != nil {
return false, err
}
return result, nil
}

View File

@@ -0,0 +1,44 @@
package rg
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/validators"
)
// GetACLAccessRequest struct to get detailed information about ACL account in a resource group
type GetACLAccessRequest struct {
ID uint64 `url:"id" json:"id" validate:"required"`
}
// Get gets current configuration of the ACL access in a resource group as a RecordRGACLAccess struct
func (r RG) GetACLAccess(ctx context.Context, req GetACLAccessRequest) (*RecordRGACLAccess, error) {
res, err := r.GetACLAccessRaw(ctx, req)
if err != nil {
return nil, err
}
info := RecordRGACLAccess{}
err = json.Unmarshal(res, &info)
if err != nil {
return nil, err
}
return &info, nil
}
// GetACLAccessRaw gets current configuration of the ACL access in a resource group as an array of bytes
func (r RG) GetACLAccessRaw(ctx context.Context, req GetACLAccessRequest) ([]byte, error) {
err := validators.ValidateRequest(req)
if err != nil {
return nil, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudapi/rg/get_acl_access"
res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req)
return res, err
}

View File

@@ -159,6 +159,44 @@ type RecordResourceGroup struct {
Computes []uint64 `json:"vms"`
}
// Detailed information about ACL Access in a resource group
type RecordRGACLAccess struct {
// Data
Data DataACL `json:"data"`
// Entry count
EntryCount uint64 `json:"entryCount"`
}
// Data ACL
type DataACL struct {
// RG ACL list
RGACLList []RGACL `json:"rgACL"`
// Account ACL list
AccountACL []AccountACL `json:"accountACL"`
}
// RG ACL info
type RGACL struct {
Right string `json:"right"`
GUID string `json:"guid"`
UserGroupID string `json:"userGroupId"`
Status string `json:"status"`
Type string `json:"type"`
Explicit bool `json:"explicit"`
}
// Account ACL info
type AccountACL struct {
Right string `json:"right"`
GUID string `json:"guid"`
UserGroupID string `json:"userGroupId"`
Status string `json:"status"`
Type string `json:"type"`
Explicit bool `json:"explicit"`
}
// Main information about resource group
type ItemResourceGroup struct {
//

View File

@@ -0,0 +1,40 @@
package rg
import (
"context"
"net/http"
"strconv"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/constants"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v16/internal/validators"
)
// UpdateACLAccessRequest updates ACL access in a resource group
type UpdateACLAccessRequest struct {
ID uint64 `url:"id" json:"id" validate:"required"`
AccessType string `url:"accesstype" json:"accesstype" validate:"required"`
Usernames []string `url:"usernames,omitempty" json:"usernames,omitempty"`
APIAccesses []uint64 `url:"apiaccesses,omitempty" json:"apiaccesses,omitempty"`
}
// UpdateACLAccess updates ACL access in a resource group.
func (r RG) UpdateACLAccess(ctx context.Context, req UpdateACLAccessRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudapi/rg/update_acl_access"
res, err := r.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req)
if err != nil {
return false, err
}
result, err := strconv.ParseBool(string(res))
if err != nil {
return false, err
}
return result, nil
}