Skip to content

Commit

Permalink
Emit a warning if the account used is not active
Browse files Browse the repository at this point in the history
  • Loading branch information
NeilW committed Jul 14, 2023
1 parent aae4ccf commit 1d6b12c
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 9 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 3.4.3 (July 14, 2023)

BUG FIXES:
- auth: emit warning if account is not active during plan

## 3.4.2 (July 12, 2023)

BUG FIXES:
Expand Down
28 changes: 25 additions & 3 deletions brightbox/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package brightbox

import (
"context"
"fmt"
"log"
"net/http"

brightbox "github.com/brightbox/gobrightbox/v2"
"github.com/brightbox/gobrightbox/v2/clientcredentials"
"github.com/brightbox/gobrightbox/v2/endpoint"
"github.com/brightbox/gobrightbox/v2/enums/accountstatus"
"github.com/brightbox/gobrightbox/v2/passwordcredentials"
"github.com/gophercloud/gophercloud"
"github.com/hashicorp/go-cleanhttp"
Expand All @@ -27,6 +29,8 @@ func authenticatedClients(authCtx context.Context, authd authdetails) (*brightbo
return nil, nil, diag.FromErr(err)
}

var diags diag.Diagnostics

if authd.Account == "" {
log.Printf("[INFO] Obtaining default account")

Expand All @@ -36,26 +40,44 @@ func authenticatedClients(authCtx context.Context, authd authdetails) (*brightbo
}
authd.Account = accounts[0].ID
log.Printf("[DEBUG] default account is %v", authd.Account)
diags = checkIsActive(diags, &accounts[0])
} else {
log.Printf("[INFO] Checking credentials have access to %v", authd.Account)
_, err := client.Account(authCtx, authd.Account)
account, err := client.Account(authCtx, authd.Account)
if err != nil {
return nil, nil, diag.Errorf("Unable to access account %v with supplied credentials", authd.Account)
}
log.Printf("[DEBUG] account check passsed")
diags = checkIsActive(diags, account)
}

log.Printf("[DEBUG] Building Orbit Client")
oe, err := orbitEndpointFromAuthd(authd)
if err != nil {
return nil, nil, diag.FromErr(err)
return nil, nil, append(diags, diag.FromErr(err)...)
}

storageContext, storageCancel := context.WithCancel(context.Background())
defer storageCancel()
storageContext = contextWithLoggedHTTPClient(storageContext)
orbit, err := orbitServiceClient(storageContext, client, oe)
return client, orbit, diag.FromErr(err)
if err != nil {
diags = append(diags, diag.FromErr(err)...)
}
return client, orbit, diags
}

func checkIsActive(diags diag.Diagnostics, account *brightbox.Account) diag.Diagnostics {
if account.Status == accountstatus.Active {
return diags
}
return append(diags,
diag.Diagnostic{
Severity: diag.Warning,
Summary: fmt.Sprintf("Account %v is not active", account.ID),
Detail: fmt.Sprintf("The account %v is showing state %v\nIf this is unexpected, please use the GUI to contact Brightbox Support", account.ID, account.Status),
},
)
}

func orbitServiceClient(serviceContext context.Context, client *brightbox.Client, endpoint string) (*gophercloud.ServiceClient, error) {
Expand Down
9 changes: 3 additions & 6 deletions brightbox/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func obtainCloudClient() (*CompositeClient, diag.Diagnostics) {

// Validate account config entries
func validateConfig(authd authdetails) diag.Diagnostics {
var result []diag.Diagnostic
var result diag.Diagnostics
log.Printf("[DEBUG] Validating Config")
if strings.HasPrefix(authd.APIClient, appPrefix) {
log.Printf("[DEBUG] Detected OAuth Application. Validating User details.")
Expand All @@ -91,10 +91,7 @@ func configureClient(ctx context.Context, authd authdetails) (*CompositeClient,
return nil, err
}

apiclient, orbitclient, err := authenticatedClients(ctx, authd)
if err.HasError() {
return nil, err
}
apiclient, orbitclient, diags := authenticatedClients(ctx, authd)

if apiclient != nil {
log.Printf("[INFO] Brightbox Client configured for URL: %s", apiclient.ResourceBaseURL())
Expand All @@ -108,5 +105,5 @@ func configureClient(ctx context.Context, authd authdetails) (*CompositeClient,
OrbitClient: orbitclient,
}

return composite, nil
return composite, diags
}

0 comments on commit 1d6b12c

Please sign in to comment.