v15.1.0
This commit is contained in:
76
pkg/cloudbroker/node/install.go
Normal file
76
pkg/cloudbroker/node/install.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package node
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v15/internal/validators"
|
||||
)
|
||||
|
||||
// InstallRequest struct to install a node
|
||||
type InstallRequest struct {
|
||||
// Node name
|
||||
// Required: true
|
||||
Name string `url:"name" json:"name" validate:"required"`
|
||||
|
||||
// Node roles
|
||||
// Required: true
|
||||
Roles []string `url:"roles" json:"roles" validate:"required"`
|
||||
|
||||
// OS version
|
||||
// Required: true
|
||||
OSVersion string `url:"os_version" json:"os_version" validate:"required"`
|
||||
|
||||
// OS user
|
||||
// Required: false
|
||||
OSUser string `url:"os_user,omitempty" json:"os_user,omitempty"`
|
||||
|
||||
// OS user password
|
||||
// Required: true
|
||||
OSUserPassword string `url:"os_user_password" json:"os_user_password" validate:"required"`
|
||||
|
||||
// Backplane IP address
|
||||
// Required: true
|
||||
BackplaneIP string `url:"backplane_ip" json:"backplane_ip" validate:"required"`
|
||||
|
||||
// Management IP address
|
||||
// Required: true
|
||||
ManagementIP string `url:"management_ip" json:"management_ip" validate:"required"`
|
||||
|
||||
// VX backend IP address
|
||||
// Required: true
|
||||
VXBackendIP string `url:"vxbackend_ip" json:"vxbackend_ip" validate:"required"`
|
||||
|
||||
// Gateway management IP address
|
||||
// Required: true
|
||||
GWMgmtIP string `url:"gw_mgmt_ip" json:"gw_mgmt_ip" validate:"required"`
|
||||
|
||||
// IPMI address
|
||||
// Required: true
|
||||
IPMIAddress string `url:"ipmi_address" json:"ipmi_address" validate:"required"`
|
||||
|
||||
// IPMI user
|
||||
// Required: true
|
||||
IPMIUser string `url:"ipmi_user" json:"ipmi_user" validate:"required"`
|
||||
|
||||
// IPMI password
|
||||
// Required: true
|
||||
IPMIPassword string `url:"ipmi_password" json:"ipmi_password" validate:"required"`
|
||||
}
|
||||
|
||||
// Install installs a node
|
||||
func (n Node) Install(ctx context.Context, req InstallRequest) (string, error) {
|
||||
err := validators.ValidateRequest(req)
|
||||
if err != nil {
|
||||
return "", validators.ValidationErrors(validators.GetErrors(err))
|
||||
}
|
||||
|
||||
url := "/cloudbroker/node/install"
|
||||
|
||||
res, err := n.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return string(res), nil
|
||||
}
|
||||
Reference in New Issue
Block a user