You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
324 lines
6.5 KiB
324 lines
6.5 KiB
// Input checks
|
|
package ic
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
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"
|
|
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
|
|
)
|
|
|
|
func ExistRG(ctx context.Context, rgId uint64, c *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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 *client.Client) 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
|
|
}
|
|
|
|
func ExistExtNetInRG(ctx context.Context, extNetId, accountId uint64, c *client.Client) error {
|
|
req := extnet.ListRequest{
|
|
AccountID: accountId,
|
|
ByID: extNetId,
|
|
}
|
|
|
|
listExtNet, err := c.CloudBroker().ExtNet().List(ctx, req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if len(listExtNet.Data) == 0 {
|
|
return fmt.Errorf("EXTNET with ID %v not found for account with id %d", extNetId, accountId)
|
|
}
|
|
|
|
return nil
|
|
}
|