1.0.1
This commit is contained in:
305
internal/service/cloudbroker/ic/input_checks.go
Normal file
305
internal/service/cloudbroker/ic/input_checks.go
Normal file
@@ -0,0 +1,305 @@
|
||||
// Input checks
|
||||
package ic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
account "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/account"
|
||||
extnet "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/extnet"
|
||||
grid "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/grid"
|
||||
image "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/image"
|
||||
lb "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/lb"
|
||||
rg "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/rg"
|
||||
vins "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/vins"
|
||||
)
|
||||
|
||||
func ExistRG(ctx context.Context, rgId uint64, c *decort.DecortClient) error {
|
||||
req := rg.ListRequest{
|
||||
ByID: rgId,
|
||||
IncludeDeleted: false,
|
||||
}
|
||||
|
||||
rgList, err := c.CloudBroker().RG().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(rgList.Data) == 0 {
|
||||
return fmt.Errorf("RG with id %v not found", rgId)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistAccount(ctx context.Context, accountId uint64, c *decort.DecortClient) error {
|
||||
req := account.ListRequest{
|
||||
ByID: accountId,
|
||||
}
|
||||
|
||||
accountList, err := c.CloudBroker().Account().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(accountList.Data) == 0 {
|
||||
return fmt.Errorf("account with id %d not found", accountId)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistAccounts(ctx context.Context, accountIds []uint64, c *decort.DecortClient) error {
|
||||
req := account.ListRequest{}
|
||||
|
||||
accountList, err := c.CloudBroker().Account().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(accountList.Data) == 0 {
|
||||
return fmt.Errorf("you have not been granted access to any account")
|
||||
}
|
||||
|
||||
notFound := make([]uint64, 0, len(accountIds))
|
||||
|
||||
for _, accID := range accountIds {
|
||||
found := false
|
||||
|
||||
for _, acc := range accountList.Data {
|
||||
if accID == acc.ID {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
notFound = append(notFound, accID)
|
||||
}
|
||||
}
|
||||
|
||||
if len(notFound) > 0 {
|
||||
return fmt.Errorf("Accounts with ids %v not found", notFound)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistRGs(ctx context.Context, rgIDs []uint64, c *decort.DecortClient) error {
|
||||
req := rg.ListRequest{
|
||||
IncludeDeleted: false,
|
||||
}
|
||||
|
||||
rgList, err := c.CloudBroker().RG().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(rgList.Data) == 0 {
|
||||
return fmt.Errorf("you have not been granted access to any resource group")
|
||||
}
|
||||
|
||||
notFound := make([]uint64, 0, len(rgIDs))
|
||||
|
||||
for _, rgID := range rgIDs {
|
||||
found := false
|
||||
|
||||
for _, rg := range rgList.Data {
|
||||
if rgID == rg.ID {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
notFound = append(notFound, rgID)
|
||||
}
|
||||
}
|
||||
|
||||
if len(notFound) > 0 {
|
||||
return fmt.Errorf("RGs with ids %v not found", notFound)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistLB(ctx context.Context, lbId uint64, c *decort.DecortClient) error {
|
||||
req := lb.ListRequest{
|
||||
ByID: lbId,
|
||||
}
|
||||
|
||||
lbList, err := c.CloudBroker().LB().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(lbList.Data) == 0 {
|
||||
return fmt.Errorf("LB with ID %v not found", lbId)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistLBFrontend(ctx context.Context, lbId uint64, fName string, c *decort.DecortClient) error {
|
||||
lb, err := c.CloudBroker().LB().Get(ctx, lb.GetRequest{LBID: lbId})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
frontends := lb.Frontends
|
||||
for _, f := range frontends {
|
||||
if f.Name == fName {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Errorf("frontend with name %v not found", fName)
|
||||
}
|
||||
|
||||
func ExistLBBackend(ctx context.Context, lbId uint64, bName string, c *decort.DecortClient) error {
|
||||
lb, err := c.CloudBroker().LB().Get(ctx, lb.GetRequest{LBID: lbId})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
backends := lb.Backends
|
||||
for _, b := range backends {
|
||||
if b.Name == bName {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Errorf("backend with name %v not found", bName)
|
||||
}
|
||||
|
||||
func ExistExtNetInLb(ctx context.Context, extNetId uint64, c *decort.DecortClient) error {
|
||||
if extNetId == 0 {
|
||||
return nil
|
||||
}
|
||||
req := extnet.ListRequest{
|
||||
ByID: extNetId,
|
||||
}
|
||||
|
||||
extNetList, err := c.CloudBroker().ExtNet().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(extNetList.Data) == 0 {
|
||||
return fmt.Errorf("EXTNET with ID %v not found", extNetId)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistVinsInLb(ctx context.Context, vinsId uint64, c *decort.DecortClient) error {
|
||||
if vinsId == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
req := vins.ListRequest{
|
||||
ByID: vinsId,
|
||||
}
|
||||
|
||||
vinsList, err := c.CloudBroker().VINS().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(vinsList.Data) == 0 {
|
||||
return fmt.Errorf("VINS with ID %v not found", vinsId)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistExtNetInVins(ctx context.Context, extNetId int, c *decort.DecortClient) error {
|
||||
if extNetId == 0 || extNetId == -1 {
|
||||
return nil
|
||||
}
|
||||
req := extnet.ListRequest{
|
||||
ByID: uint64(extNetId),
|
||||
}
|
||||
|
||||
extNetList, err := c.CloudBroker().ExtNet().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(extNetList.Data) == 0 {
|
||||
return fmt.Errorf("EXTNET with ID %v not found", extNetId)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistGID(ctx context.Context, gid uint64, c *decort.DecortClient) error {
|
||||
req := grid.ListRequest{}
|
||||
|
||||
gridList, err := c.CloudBroker().Grid().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, grid := range gridList.Data {
|
||||
if grid.GID == gid {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Errorf("GID with id %v not found", gid)
|
||||
}
|
||||
|
||||
func ExistVins(ctx context.Context, vinsId uint64, c *decort.DecortClient) error {
|
||||
req := vins.ListRequest{
|
||||
ByID: vinsId,
|
||||
IncludeDeleted: false,
|
||||
}
|
||||
|
||||
vinsList, err := c.CloudBroker().VINS().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(vinsList.Data) == 0 {
|
||||
return fmt.Errorf("vins with ID %v not found", vinsId)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ExistImages(ctx context.Context, imageIDs []uint64, c *decort.DecortClient) error {
|
||||
req := image.ListRequest{}
|
||||
|
||||
listImages, err := c.CloudBroker().Image().List(ctx, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(listImages.Data) == 0 {
|
||||
return fmt.Errorf("you have not been granted access to any images")
|
||||
}
|
||||
|
||||
notFound := make([]uint64, 0, len(imageIDs))
|
||||
|
||||
for _, imageID := range imageIDs {
|
||||
found := false
|
||||
|
||||
for _, image := range listImages.Data {
|
||||
if imageID == image.ID {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
notFound = append(notFound, imageID)
|
||||
}
|
||||
}
|
||||
|
||||
if len(notFound) > 0 {
|
||||
return fmt.Errorf("images with ids %v not found", notFound)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user