Skip to content

Commit

Permalink
draft
Browse files Browse the repository at this point in the history
  • Loading branch information
SivaanandM committed Jul 12, 2024
1 parent dbae34a commit c2dcd9d
Show file tree
Hide file tree
Showing 77 changed files with 2,964 additions and 4,990 deletions.
40 changes: 12 additions & 28 deletions client/account.go
Original file line number Diff line number Diff line change
@@ -1,48 +1,32 @@
package client

import (
"errors"
"fmt"

"github.com/spectrocloud/hapi/apiutil/transport"
"github.com/spectrocloud/hapi/models"
clusterC "github.com/spectrocloud/hapi/spectrocluster/client/v1"
clientV1 "github.com/spectrocloud/palette-api-go/client/v1"
"github.com/spectrocloud/palette-api-go/models"
"github.com/spectrocloud/palette-sdk-go/client/apiutil"
)

func (h *V1Client) ListCloudAccounts(scope string) ([]*models.V1CloudAccountSummary, error) {
var params *clusterC.V1CloudAccountsListSummaryParams
switch scope {
case "project":
params = clusterC.NewV1CloudAccountsListSummaryParams().WithContext(h.Ctx)
case "tenant":
params = clusterC.NewV1CloudAccountsListSummaryParams()

}
var limit int64 = 0
params.Limit = &limit
resp, err := h.GetClusterClient().V1CloudAccountsListSummary(params)

var e *transport.TransportError
if errors.As(err, &e) && e.HttpCode == 404 {
return nil, nil
} else if err != nil {
func (h *V1Client) ListCloudAccounts() ([]*models.V1CloudAccountSummary, error) {
params := clientV1.NewV1CloudAccountsListSummaryParamsWithContext(h.ctx).
WithLimit(apiutil.Ptr(int64(0)))
resp, err := h.Client.V1CloudAccountsListSummary(params)
if err := apiutil.Handle404(err); err != nil {
return nil, err
}

return resp.Payload.Items, nil
}

func (h *V1Client) GetCloudAccount(scope, id string) (*models.V1CloudAccountSummary, error) {
accounts, err := h.ListCloudAccounts(scope)
func (h *V1Client) GetCloudAccount(uid string) (*models.V1CloudAccountSummary, error) {
accounts, err := h.ListCloudAccounts()
if err != nil {
return nil, err
}

for _, account := range accounts {
if account.Metadata.UID == id {
if account.Metadata.UID == uid {
return account, nil
}
}

return nil, fmt.Errorf("account not found with id %s", id)
return nil, fmt.Errorf("account not found with uid %s", uid)
}
100 changes: 33 additions & 67 deletions client/account_aws.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package client

import (
"errors"

"github.com/spectrocloud/hapi/apiutil/transport"
cloudC "github.com/spectrocloud/hapi/cloud/client/v1"
"github.com/spectrocloud/hapi/models"
clusterC "github.com/spectrocloud/hapi/spectrocluster/client/v1"
clientV1 "github.com/spectrocloud/palette-api-go/client/v1"
"github.com/spectrocloud/palette-api-go/models"
"github.com/spectrocloud/palette-sdk-go/client/apiutil"
)

func toV1AwsCloudAccount(account *models.V1AwsAccount) *models.V1AwsCloudAccount {
Expand All @@ -20,99 +17,68 @@ func toV1AwsCloudAccount(account *models.V1AwsAccount) *models.V1AwsCloudAccount
}
}

func (h *V1Client) CreateCloudAccountAws(account *models.V1AwsAccount, AccountContext string) (string, error) {
// validate account
if err := validateCloudAccountAws(account, h); err != nil {
func (h *V1Client) CreateCloudAccountAws(account *models.V1AwsAccount) (string, error) {
if err := h.validateCloudAccountAws(account); err != nil {
return "", err
}
params := clientV1.NewV1CloudAccountsAwsCreateParamsWithContext(h.ctx).
WithBody(account)

var params *clusterC.V1CloudAccountsAwsCreateParams
switch AccountContext {
case "project":
params = clusterC.NewV1CloudAccountsAwsCreateParamsWithContext(h.Ctx).WithBody(account)
case "tenant":
params = clusterC.NewV1CloudAccountsAwsCreateParams().WithBody(account)
}

success, err := h.GetClusterClient().V1CloudAccountsAwsCreate(params)
resp, err := h.Client.V1CloudAccountsAwsCreate(params)
if err != nil {
return "", err
}

return *success.Payload.UID, nil
return *resp.Payload.UID, nil
}

func validateCloudAccountAws(account *models.V1AwsAccount, h *V1Client) error {
func (h *V1Client) validateCloudAccountAws(account *models.V1AwsAccount) error {
// check PCG
if err := h.CheckPCG(account.Metadata.Annotations[OverlordUID]); err != nil {
return err
}

// validate account
paramsValidate := cloudC.NewV1AwsAccountValidateParams()
paramsValidate = paramsValidate.WithAwsCloudAccount(toV1AwsCloudAccount(account))
_, err := h.GetCloudClient().V1AwsAccountValidate(paramsValidate)
if err != nil {
return err
}
params := clientV1.NewV1AwsAccountValidateParamsWithContext(h.ctx).
WithAwsCloudAccount(toV1AwsCloudAccount(account))

return nil
_, err := h.Client.V1AwsAccountValidate(params)
return err
}

func (h *V1Client) UpdateCloudAccountAws(account *models.V1AwsAccount) error {
// validate account
if err := validateCloudAccountAws(account, h); err != nil {
if err := h.validateCloudAccountAws(account); err != nil {
return err
}

uid := account.Metadata.UID
params := clusterC.NewV1CloudAccountsAwsUpdateParamsWithContext(h.Ctx).WithUID(uid).WithBody(account)
_, err := h.GetClusterClient().V1CloudAccountsAwsUpdate(params)
params := clientV1.NewV1CloudAccountsAwsUpdateParamsWithContext(h.ctx).
WithUID(account.Metadata.UID).
WithBody(account)
_, err := h.Client.V1CloudAccountsAwsUpdate(params)
return err
}

func (h *V1Client) DeleteCloudAccountAws(uid, AccountContext string) error {
var params *clusterC.V1CloudAccountsAwsDeleteParams
switch AccountContext {
case "project":
params = clusterC.NewV1CloudAccountsAwsDeleteParamsWithContext(h.Ctx).WithUID(uid)
case "tenant":
params = clusterC.NewV1CloudAccountsAwsDeleteParams().WithUID(uid)
}
_, err := h.GetClusterClient().V1CloudAccountsAwsDelete(params)
func (h *V1Client) DeleteCloudAccountAws(uid string) error {
params := clientV1.NewV1CloudAccountsAwsDeleteParamsWithContext(h.ctx).
WithUID(uid)
_, err := h.Client.V1CloudAccountsAwsDelete(params)
return err
}

func (h *V1Client) GetCloudAccountAws(uid, AccountContext string) (*models.V1AwsAccount, error) {
var params *clusterC.V1CloudAccountsAwsGetParams
switch AccountContext {
case "project":
params = clusterC.NewV1CloudAccountsAwsGetParamsWithContext(h.Ctx).WithUID(uid)
case "tenant":
params = clusterC.NewV1CloudAccountsAwsGetParams().WithUID(uid)
}
success, err := h.GetClusterClient().V1CloudAccountsAwsGet(params)

var e *transport.TransportError
if errors.As(err, &e) && e.HttpCode == 404 {
return nil, nil
} else if err != nil {
func (h *V1Client) GetCloudAccountAws(uid string) (*models.V1AwsAccount, error) {
params := clientV1.NewV1CloudAccountsAwsGetParamsWithContext(h.ctx).
WithUID(uid)
resp, err := h.Client.V1CloudAccountsAwsGet(params)
if err := apiutil.Handle404(err); err != nil {
return nil, err
}

return success.Payload, nil
return resp.Payload, nil
}

func (h *V1Client) GetCloudAccountsAws() ([]*models.V1AwsAccount, error) {
limit := int64(0)
params := clusterC.NewV1CloudAccountsAwsListParamsWithContext(h.Ctx).WithLimit(&limit)
response, err := h.GetClusterClient().V1CloudAccountsAwsList(params)
params := clientV1.NewV1CloudAccountsAwsListParamsWithContext(h.ctx).
WithLimit(apiutil.Ptr(int64(0)))
resp, err := h.Client.V1CloudAccountsAwsList(params)
if err != nil {
return nil, err
}

accounts := make([]*models.V1AwsAccount, len(response.Payload.Items))
copy(accounts, response.Payload.Items)

return accounts, nil
return resp.Payload.Items, nil
}
99 changes: 34 additions & 65 deletions client/account_azure.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package client

import (
"errors"

"github.com/spectrocloud/hapi/apiutil/transport"
cloudC "github.com/spectrocloud/hapi/cloud/client/v1"
"github.com/spectrocloud/hapi/models"
clusterC "github.com/spectrocloud/hapi/spectrocluster/client/v1"
clientV1 "github.com/spectrocloud/palette-api-go/client/v1"
"github.com/spectrocloud/palette-api-go/models"
"github.com/spectrocloud/palette-sdk-go/client/apiutil"
)

func toV1AzureCloudAccount(account *models.V1AzureAccount) *models.V1AzureCloudAccount {
Expand All @@ -20,100 +17,72 @@ func toV1AzureCloudAccount(account *models.V1AzureAccount) *models.V1AzureCloudA
}
}

func (h *V1Client) CreateCloudAccountAzure(account *models.V1AzureAccount, AccountContext string) (string, error) {
func (h *V1Client) CreateCloudAccountAzure(account *models.V1AzureAccount) (string, error) {
// validate account
if err := validateCloudAccountAzure(account, h); err != nil {
if err := h.validateCloudAccountAzure(account); err != nil {
return "", err
}

var params *clusterC.V1CloudAccountsAzureCreateParams
switch AccountContext {
case "project":
params = clusterC.NewV1CloudAccountsAzureCreateParamsWithContext(h.Ctx).WithBody(account)
case "tenant":
params = clusterC.NewV1CloudAccountsAzureCreateParams().WithBody(account)
}
success, err := h.GetClusterClient().V1CloudAccountsAzureCreate(params)
params := clientV1.NewV1CloudAccountsAzureCreateParamsWithContext(h.ctx).
WithBody(account)
resp, err := h.Client.V1CloudAccountsAzureCreate(params)
if err != nil {
return "", err
}

return *success.Payload.UID, nil
return *resp.Payload.UID, nil
}

func validateCloudAccountAzure(account *models.V1AzureAccount, h *V1Client) error {
func (h *V1Client) validateCloudAccountAzure(account *models.V1AzureAccount) error {
// check PCG
if err := h.CheckPCG(account.Metadata.Annotations[OverlordUID]); err != nil {
return err
}

// validate account
paramsValidate := cloudC.NewV1AzureAccountValidateParams()
paramsValidate = paramsValidate.WithAzureCloudAccount(toV1AzureCloudAccount(account))

_, err := h.GetCloudClient().V1AzureAccountValidate(paramsValidate)
if err != nil {
return err
}
params := clientV1.NewV1AzureAccountValidateParamsWithContext(h.ctx).
WithAzureCloudAccount(toV1AzureCloudAccount(account))

return nil
_, err := h.Client.V1AzureAccountValidate(params)
return err
}

func (h *V1Client) UpdateCloudAccountAzure(account *models.V1AzureAccount) error {
// validate account
if err := validateCloudAccountAzure(account, h); err != nil {
if err := h.validateCloudAccountAzure(account); err != nil {
return err
}

uid := account.Metadata.UID
params := clusterC.NewV1CloudAccountsAzureUpdateParamsWithContext(h.Ctx).WithUID(uid).WithBody(account)
_, err := h.GetClusterClient().V1CloudAccountsAzureUpdate(params)
params := clientV1.NewV1CloudAccountsAzureUpdateParamsWithContext(h.ctx).
WithUID(account.Metadata.UID).
WithBody(account)

_, err := h.Client.V1CloudAccountsAzureUpdate(params)
return err
}

func (h *V1Client) DeleteCloudAccountAzure(uid, AccountContext string) error {
var params *clusterC.V1CloudAccountsAzureDeleteParams
switch AccountContext {
case "project":
params = clusterC.NewV1CloudAccountsAzureDeleteParamsWithContext(h.Ctx).WithUID(uid)
case "tenant":
params = clusterC.NewV1CloudAccountsAzureDeleteParams().WithUID(uid)
}
_, err := h.GetClusterClient().V1CloudAccountsAzureDelete(params)
func (h *V1Client) DeleteCloudAccountAzure(uid string) error {
params := clientV1.NewV1CloudAccountsAzureDeleteParamsWithContext(h.ctx).
WithUID(uid)
_, err := h.Client.V1CloudAccountsAzureDelete(params)
return err
}

func (h *V1Client) GetCloudAccountAzure(uid, AccountContext string) (*models.V1AzureAccount, error) {
var params *clusterC.V1CloudAccountsAzureGetParams
switch AccountContext {
case "project":
params = clusterC.NewV1CloudAccountsAzureGetParamsWithContext(h.Ctx).WithUID(uid)
case "tenant":
params = clusterC.NewV1CloudAccountsAzureGetParams().WithUID(uid)
}

success, err := h.GetClusterClient().V1CloudAccountsAzureGet(params)

var e *transport.TransportError
if errors.As(err, &e) && e.HttpCode == 404 {
return nil, nil
} else if err != nil {
func (h *V1Client) GetCloudAccountAzure(uid string) (*models.V1AzureAccount, error) {
params := clientV1.NewV1CloudAccountsAzureGetParamsWithContext(h.ctx).
WithUID(uid)
resp, err := h.Client.V1CloudAccountsAzureGet(params)
if err := apiutil.Handle404(err); err != nil {
return nil, err
}

return success.Payload, nil
return resp.Payload, nil
}

func (h *V1Client) GetCloudAccountsAzure() ([]*models.V1AzureAccount, error) {
limit := int64(0)
params := clusterC.NewV1CloudAccountsAzureListParamsWithContext(h.Ctx).WithLimit(&limit)
response, err := h.GetClusterClient().V1CloudAccountsAzureList(params)
params := clientV1.NewV1CloudAccountsAzureListParamsWithContext(h.ctx).
WithLimit(apiutil.Ptr(int64(0)))
resp, err := h.Client.V1CloudAccountsAzureList(params)
if err != nil {
return nil, err
}

accounts := make([]*models.V1AzureAccount, len(response.Payload.Items))
copy(accounts, response.Payload.Items)

return accounts, nil
return resp.Payload.Items, nil
}
Loading

0 comments on commit c2dcd9d

Please sign in to comment.