1.5.8-k8s-extnet-branch v1.5.2
Nikita Sorokin 2 years ago
parent 040235f92f
commit f1529c9aac

@ -1,6 +1,14 @@
## Version 1.5.1
## Version 1.5.2
### Bugfix
- Changed StatelessSepID field type in cloudapi/compute/get and cloudapi/compute/list responde models
- Fix tag 'url' VINSID field in cloudbroker/account/list_vins
- Added oppurtunity to create compute without interface in cloudapi/cloubroker/kvm*/create*
- Made the field Reason not required in cloudbroker/account/enable and cloudbroker/account/disable
- Made the field RecursiveDelete required in cloudbroker/account/deleteUser
- Add a validator function to a workersGroupName field - must be 3 or more symbol
- Add a token actuality check, add an error handler in client/client-transport and client/http-client
- Add a fields SEPID and Pool in ListRequest struct in cloudbroker/disks/list and cloudapi/disks/list

@ -4,6 +4,7 @@ import (
"crypto/tls"
"net/http"
"net/url"
"time"
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
)
@ -17,6 +18,12 @@ func NewLegacyHttpClient(cfg config.LegacyConfig) *http.Client {
},
}
var expiredTime time.Time
if cfg.Token != "" {
expiredTime = time.Now().AddDate(0, 0, 1)
}
return &http.Client{
Transport: &transportLegacy{
base: transCfg,
@ -25,6 +32,7 @@ func NewLegacyHttpClient(cfg config.LegacyConfig) *http.Client {
retries: cfg.Retries,
token: cfg.Token,
decortURL: cfg.DecortURL,
expiryTime: expiredTime,
},
Timeout: cfg.Timeout.Get(),

@ -15,10 +15,11 @@ type transportLegacy struct {
retries uint64
token string
decortURL string
expiryTime time.Time
}
func (t *transportLegacy) RoundTrip(request *http.Request) (*http.Response, error) {
if t.token == "" {
if t.token == "" || time.Now().After(t.expiryTime) {
body := fmt.Sprintf("username=%s&password=%s", t.username, t.password)
bodyReader := strings.NewReader(body)
@ -39,6 +40,7 @@ func (t *transportLegacy) RoundTrip(request *http.Request) (*http.Response, erro
token := string(tokenBytes)
t.token = token
t.expiryTime = time.Now().AddDate(0, 0, 1)
}
tokenValue := fmt.Sprintf("&authkey=%s", t.token)
@ -63,7 +65,9 @@ func (t *transportLegacy) RoundTrip(request *http.Request) (*http.Response, erro
err = fmt.Errorf("%s", respBytes)
resp.Body.Close()
}
if err != nil {
return nil, fmt.Errorf("could not execute request: %w", err)
}
time.Sleep(time.Second * 5)
}
return nil, fmt.Errorf("could not execute request: %w", err)

@ -1,9 +1,10 @@
package validators
import (
"github.com/go-playground/validator/v10"
"regexp"
"strings"
"github.com/go-playground/validator/v10"
)
// computeDriverValidator is used to validate Driver field in kvmx86/kvmppc create.
@ -263,3 +264,11 @@ func strictLooseValidator(fe validator.FieldLevel) bool {
return StringInSlice(fieldValue, strictLooseValues)
}
// name workerGroup must be more 3 symbol
func workerGroupNameValidator(fe validator.FieldLevel) bool {
fieldValue := fe.Field().String()
fieldValue = strings.Trim(fieldValue, " ")
return len(fieldValue) >= 3
}

@ -127,6 +127,12 @@ func errorMessage(fe validator.FieldError) string {
fe.Field(),
joinValues(flipgroupClientTypeValues))
// k8s Validators
case "workerGroupName":
return fmt.Sprintf("%s %s must be more 3 symbol",
prefix,
fe.Field())
// KVM_X86/KVM_PPC Validators
case "kvmNetType":
return fmt.Sprintf("%s %s must be one of the following: %s",

@ -180,5 +180,10 @@ func registerAllValidators(validate *validator.Validate) error {
return err
}
err = validate.RegisterValidation("workerGroupName", workerGroupNameValidator)
if err != nil {
return err
}
return nil
}

@ -40,6 +40,14 @@ type ListRequest struct {
// Required: false
Type string `url:"type,omitempty" json:"type,omitempty"`
// Find by sep ID
// Required: false
SEPID uint64 `url:"sepId,omitempty" json:"sepId,omitempty"`
// Find by pool name
// Required: false
Pool string `url:"pool,omitempty" json:"pool,omitempty"`
// Page number
// Required: false
Page uint64 `url:"page,omitempty" json:"page,omitempty"`

@ -24,7 +24,7 @@ type CreateRequest struct {
// Name for first worker group created with cluster
// Required: true
WorkerGroupName string `url:"workerGroupName" json:"workerGroupName" validate:"required"`
WorkerGroupName string `url:"workerGroupName" json:"workerGroupName" validate:"required,workerGroupName"`
// Network plugin
// Must be one of these values: flannel, weawenet, calico

@ -20,7 +20,7 @@ type DeleteUserRequest struct {
// Recursively revoke access rights from owned cloudspaces and vmachines
// Required: false
RecursiveDelete bool `url:"recursivedelete,omitempty" json:"recursivedelete,omitempty"`
RecursiveDelete bool `url:"recursivedelete" json:"recursivedelete" validate:"required"`
}
// DeleteUser revokes user access from the account

@ -16,7 +16,7 @@ type DisableRequest struct {
// Reason to disable
// Required: true
Reason string `url:"reason" json:"reason" validate:"required"`
Reason string `url:"reason,omitempty" json:"reason,omitempty"`
}
// Disable disables an account

@ -16,7 +16,7 @@ type EnableRequest struct {
// Reason to enable
// Required: true
Reason string `url:"reason" json:"reason" validate:"required"`
Reason string `url:"reason,omitempty" json:"reason,omitempty"`
}
// Enable enables an account

@ -16,7 +16,7 @@ type ListVINSRequest struct {
// Find by VINS ID
// Required: false
VINSID uint64 `url:"vins,omitempty" json:"vinsId,omitempty"`
VINSID uint64 `url:"vinsId,omitempty" json:"vinsId,omitempty"`
// Find by name
// Required: false

@ -40,6 +40,14 @@ type ListRequest struct {
// Required: false
Type string `url:"type,omitempty" json:"type,omitempty"`
// Find by sep ID
// Required: false
SEPID uint64 `url:"sepId,omitempty" json:"sepId,omitempty"`
// Find by pool name
// Required: false
Pool string `url:"pool,omitempty" json:"pool,omitempty"`
// Page number
// Required: false
Page uint64 `url:"page,omitempty" json:"page,omitempty"`

@ -24,7 +24,7 @@ type CreateRequest struct {
// Name for first worker group created with cluster
// Required: true
WorkerGroupName string `url:"workerGroupName" json:"workerGroupName" validate:"required"`
WorkerGroupName string `url:"workerGroupName" json:"workerGroupName" validate:"required, workerGroupName"`
// Network plugin
// Must be one of these values: flunnel, weawenet, calico

Loading…
Cancel
Save