Skip to content

Commit

Permalink
Update generated tags (#2)
Browse files Browse the repository at this point in the history
* refactor required arguments to be passed in, not set as env vars

* add exported public interface

* refactor code and remove calls to get service offering and plan name

* fix typo

* update unit tests to catch more issues

* add support for environment tag

* fix interface

* refactor tags generator to accept service and plan name

* remove code to fetch service instance name
  • Loading branch information
markdboyd authored Jan 10, 2024
1 parent 26bcae3 commit ade4150
Show file tree
Hide file tree
Showing 4 changed files with 186 additions and 522 deletions.
94 changes: 12 additions & 82 deletions cf.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package brokertags

import (
"context"
"fmt"
"os"

"github.com/cloudfoundry-community/go-cfclient/v3/client"
"github.com/cloudfoundry-community/go-cfclient/v3/config"
Expand All @@ -12,72 +10,31 @@ import (

type NameResolver interface {
getOrganizationName(organizationGUID string) (string, error)
getServiceInstanceName(instanceGUID string) (string, error)
getServiceOfferingName(serviceGUID string) (string, error)
getServicePlanName(servicePlanGUID string) (string, error)
getSpaceName(spaceGUID string) (string, error)
}

type OrganizationGetter interface {
Get(ctx context.Context, guid string) (*resource.Organization, error)
}

type ServiceInstanceGetter interface {
Get(ctx context.Context, guid string) (*resource.ServiceInstance, error)
}

type ServiceOfferingGetter interface {
Get(ctx context.Context, guid string) (*resource.ServiceOffering, error)
}

type ServicePlanGetter interface {
Get(ctx context.Context, guid string) (*resource.ServicePlan, error)
}

type SpaceGetter interface {
Get(ctx context.Context, guid string) (*resource.Space, error)
}

type cfNameResolver struct {
Organizations OrganizationGetter
ServiceInstances ServiceInstanceGetter
ServiceOfferings ServiceOfferingGetter
ServicePlans ServicePlanGetter
Spaces SpaceGetter
Organizations OrganizationGetter
Spaces SpaceGetter
}

const (
cfApiUrlEnvVar = "CF_API_URL"
cfApiClientIdEnvVar = "CF_API_CLIENT_ID"
cfApiClientSecretEnvVar = "CF_API_CLIENT_SECRET"
)

func getRequiredEnvVars() (map[string]string, error) {
requiredEnvVars := []string{
cfApiUrlEnvVar,
cfApiClientIdEnvVar,
cfApiClientSecretEnvVar,
}
envVarValues := make(map[string]string)
for _, envVarName := range requiredEnvVars {
value, exists := os.LookupEnv(envVarName)
if !exists {
return nil, fmt.Errorf("%s environment variable is required", envVarName)
}
envVarValues[envVarName] = value
}
return envVarValues, nil
}

func newCFNameResolver() (*cfNameResolver, error) {
envVars, err := getRequiredEnvVars()
if err != nil {
return nil, err
}
func newCFNameResolver(
cfApiUrl string,
cfApiClientId string,
cfApiClientSecret string,
) (*cfNameResolver, error) {
cfg, err := config.NewClientSecret(
envVars[cfApiUrlEnvVar],
envVars[cfApiClientIdEnvVar],
envVars[cfApiClientSecretEnvVar],
cfApiUrl,
cfApiClientId,
cfApiClientSecret,
)
if err != nil {
return nil, err
Expand All @@ -87,38 +44,11 @@ func newCFNameResolver() (*cfNameResolver, error) {
return nil, err
}
return &cfNameResolver{
Organizations: cf.Organizations,
ServiceInstances: cf.ServiceInstances,
ServiceOfferings: cf.ServiceOfferings,
ServicePlans: cf.ServicePlans,
Spaces: cf.Spaces,
Organizations: cf.Organizations,
Spaces: cf.Spaces,
}, nil
}

func (c *cfNameResolver) getServiceInstanceName(instanceGUID string) (string, error) {
instance, err := c.ServiceInstances.Get(context.Background(), instanceGUID)
if err != nil {
return "", err
}
return instance.Name, nil
}

func (c *cfNameResolver) getServiceOfferingName(serviceGUID string) (string, error) {
service, err := c.ServiceOfferings.Get(context.Background(), serviceGUID)
if err != nil {
return "", err
}
return service.Name, nil
}

func (c *cfNameResolver) getServicePlanName(servicePlanGUID string) (string, error) {
servicePlan, err := c.ServicePlans.Get(context.Background(), servicePlanGUID)
if err != nil {
return "", err
}
return servicePlan.Name, nil
}

func (c *cfNameResolver) getOrganizationName(organizationGUID string) (string, error) {
organization, err := c.Organizations.Get(context.Background(), organizationGUID)
if err != nil {
Expand Down
Loading

0 comments on commit ade4150

Please sign in to comment.