Skip to content

Commit 9badf1a

Browse files
authored
Fix: resolve space name reference only when provided
2 parents d23be9c + 0184bc6 commit 9badf1a

4 files changed

Lines changed: 28 additions & 17 deletions

File tree

apis/resources/v1alpha1/serviceinstance_types.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/clients/role/spacerole.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ func findSpaceRole(ctx context.Context, client Role, spec v1alpha1.SpaceRolePara
6161

6262
// newSpaceRoleListOptions returns a list options for the given SpaceRoleParameters
6363
func newSpaceRoleListOptions(spec v1alpha1.SpaceRoleParameters) (*cfv3.RoleListOptions, error) {
64+
if spec.Space == nil {
65+
return nil, errors.New(ErrSpaceNotSpecified)
66+
}
67+
6468
opts := cfv3.NewRoleListOptions()
6569
opts.WithSpaceRoleType(SpaceRoleType(spec.Type))
6670

internal/clients/serviceinstance/serviceinstance.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ func (c *Client) createUserProvided(ctx context.Context, spec v1alpha1.ServiceIn
181181
return nil, errors.New("Missing or invalid credentials")
182182
}
183183

184+
// throw error if no space is provided
185+
if spec.Space == nil {
186+
return nil, errors.New("no space reference provided")
187+
}
184188
// create the service instance
185189
opt := resource.NewServiceInstanceCreateUserProvided(*spec.Name, *spec.Space)
186190
si, err := c.ServiceInstance.CreateUserProvided(ctx, opt)

internal/clients/space/reference.go

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,30 @@ type SpaceScoped interface {
1616
GetSpaceRef() *v1alpha1.SpaceReference
1717
}
1818

19-
// / Initialize implements the Initializer interface
19+
// ResolveByName resolves the space reference by name.
2020
func ResolveByName(ctx context.Context, clientFn clients.ClientFn, mg resource.Managed) error {
2121
cr, ok := mg.(SpaceScoped)
2222
if !ok {
2323
return errors.New("Cannot resolve space name. The resource does not implement SpaceScoped")
2424
}
2525

26-
// if external-name is not set, search by Name and Space
2726
sr := cr.GetSpaceRef()
28-
if sr == nil || sr.SpaceName == nil {
29-
if sr.Space != nil { // space GUID is directly set, so we do not need to use names.
30-
return nil
27+
// resolve space by name only if spaceName and orgName are set
28+
if sr != nil && sr.SpaceName != nil && sr.OrgName != nil {
29+
cf, err := clientFn(mg)
30+
if err != nil {
31+
return errors.Wrap(err, "Could not connect to Cloud Foundry")
32+
}
33+
spaceClient, _, orgClient := NewClient(cf)
34+
spaceGUID, err := GetGUID(ctx, orgClient, spaceClient, *sr.OrgName, *sr.SpaceName)
35+
if err != nil {
36+
return errors.Wrap(err, "Cannot resolve space reference by name")
3137
}
32-
return errors.New("Unknown space. Please specify `spaceRef` or `spaceSelector` or using `spaceName` and `orgNames`. ")
38+
sr.Space = spaceGUID
39+
return nil
3340
}
3441

35-
// spaceName and orgName are set, always retrieve space GUID
36-
cf, err := clientFn(mg)
37-
if err != nil {
38-
return errors.Wrap(err, "Could not connect to Cloud Foundry")
39-
}
40-
spaceClient, _, orgClient := NewClient(cf)
41-
spaceGUID, err := GetGUID(ctx, orgClient, spaceClient, *sr.OrgName, *sr.SpaceName)
42-
if err != nil {
43-
return errors.Wrap(err, "Cannot resolve space reference by name")
44-
}
45-
sr.Space = spaceGUID
42+
// nothing to resolve.
4643
return nil
4744
}
4845

0 commit comments

Comments
 (0)