Skip to content

Commit 02c32d6

Browse files
committed
Revert "enable serviceinstance adapter with refactoring"
This reverts commit 0eeaa8e.
1 parent 5c7d0be commit 02c32d6

File tree

14 files changed

+77
-424
lines changed

14 files changed

+77
-424
lines changed

cmd/importer/cmd/subcmd/import.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,10 @@ var ImportCMD = &cobra.Command{
6363
// Create adapters
6464
clientAdapter := &adapters.CFClientAdapter{}
6565
resourceAdapters := map[string]resource.ResourceAdapter{
66-
v1alpha1.Space_Kind: &adapterv1alpha1.CFSpaceAdapter{},
67-
v1alpha1.Org_Kind: &adapterv1alpha1.CFOrganizationAdapter{},
68-
v1alpha1.App_Kind: &adapterv1alpha1.CFAppAdapter{},
69-
v1alpha1.RouteKind: &adapterv1alpha1.CFRouteAdapter{},
70-
v1alpha1.ServiceInstance_Kind: &adapterv1alpha1.CFServiceInstanceAdapter{},
66+
v1alpha1.Space_Kind: &adapterv1alpha1.CFSpaceAdapter{},
67+
v1alpha1.Org_Kind: &adapterv1alpha1.CFOrganizationAdapter{},
68+
v1alpha1.App_Kind: &adapterv1alpha1.CFAppAdapter{},
69+
v1alpha1.RouteKind: &adapterv1alpha1.CFRouteAdapter{},
7170
}
7271
configParser := &adapters.CFConfigParser{}
7372

cmd/importer/config.yaml

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
resources:
22
- org:
3-
name: cf-dev
3+
name: TodoCompany
44
managementPolicies: [Observe]
55
- space:
66
name: .*
7-
orgRef: cf-dev
7+
orgRef: TodoCompany
88
managementPolicies: [Observe]
99
- app:
1010
name: .*
11-
spaceRef: my-demo-space
11+
spaceRef: Production
1212
managementPolicies: [Observe]
13-
- route:
13+
- app:
1414
name: .*
15-
spaceRef: space-app
16-
domainRef: test-domain
17-
managementPolicies: [Observe]
18-
- serviceInstance:
15+
spaceRef: Testing
16+
managementPolicies: ["Observe"]
17+
- route:
1918
name: .*
20-
spaceRef: my-demo-space
21-
type: managed
19+
spaceRef: Testing
20+
domainRef: Testing
2221
managementPolicies: [Observe]
2322
providerConfigRef:
2423
name: default
2524
namespace: default
26-

examples/resources/org.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,17 @@ metadata:
77
spec:
88
managementPolicies: ["Observe"]
99
forProvider:
10-
name: complex-org-cf
10+
name: cf-dev
1111
providerConfigRef:
1212
name: default
1313

14+
---
15+
apiVersion: cloudfoundry.crossplane.io/v1alpha1
16+
kind: Organization
17+
metadata:
18+
namespace: default
19+
name: my-org-dev
20+
annotations:
21+
crossplane.io/external-name: cf-dev
22+
spec:
23+
forProvider: {}

examples/resources/orgrole.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ metadata:
66
name: my-org-auditor-daniel
77
spec:
88
forProvider:
9-
type: "Manager"
9+
type: "Auditor"
1010
orgRef:
1111
name: my-org
12-
username: "daniel.lou@sap.com"
12+
username: "1@example.com"
1313
origin: sap.ids

internal/cli/adapters/client.go

Lines changed: 22 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"encoding/json"
66
"fmt"
7-
"strconv"
87

98
cfv3 "github.com/cloudfoundry/go-cfclient/v3/client"
109
cfconfig "github.com/cloudfoundry/go-cfclient/v3/config"
@@ -65,8 +64,6 @@ func (c *CFClient) GetResourcesByType(ctx context.Context, resourceType string,
6564
return c.getApps(ctx, filter)
6665
case v1alpha1.RouteKind:
6766
return c.getRoutes(ctx, filter)
68-
case v1alpha1.ServiceInstance_Kind:
69-
return c.getServiceInstances(ctx, filter)
7067
default:
7168
return nil, fmt.Errorf("unsupported resource type: %s", resourceType)
7269
}
@@ -149,43 +146,28 @@ func (c *CFClient) getOrganizations(ctx context.Context, filter map[string]strin
149146
return results, nil
150147
}
151148

152-
// getSpaceReference retrieves a space reference by name
153-
func (c *CFClient) getSpaceReference(ctx context.Context, filter map[string]string) (string, error) {
154-
spaceName, ok := filter["space"]
155-
if !ok {
156-
return "", fmt.Errorf("space-reference filter is required")
157-
}
158-
159-
spaceRefFilter := cfv3.SpaceListOptions{Names: cfv3.Filter{Values: []string{spaceName}}}
160-
spaceRef, err := c.client.Spaces.ListAll(ctx, &spaceRefFilter)
161-
if err != nil {
162-
return "", fmt.Errorf("%s: %w", errGetSpaceReference, err)
163-
}
164-
165-
if len(spaceRef) == 0 || spaceRef[0].GUID == "" {
166-
return "", fmt.Errorf("%s: space %s not found", errGetSpaceReference, spaceName)
167-
}
168-
169-
return spaceRef[0].GUID, nil
170-
}
171-
172149
func (c *CFClient) getApps(ctx context.Context, filter map[string]string) ([]interface{}, error) {
173-
174150
// Get name filter
175151
name, ok := filter["name"]
176152
if !ok {
177153
return nil, fmt.Errorf("name filter is required for apps")
178154
}
155+
spaceName, ok := filter["space"]
156+
if !ok {
157+
return nil, fmt.Errorf("org-reference filter is required for apps")
158+
}
179159

180160
// get referenced space
181-
spaceGUID, err := c.getSpaceReference(ctx, filter)
182-
if err != nil {
183-
return nil, err
161+
spaceRefFilter := cfv3.SpaceListOptions{Names: cfv3.Filter{Values: []string{spaceName}}}
162+
spaceRef, err := c.client.Spaces.ListAll(ctx, &spaceRefFilter)
163+
kingpin.FatalIfError(err, "%s", errGetSpaceReference)
164+
165+
if spaceRef[0].GUID == "" {
166+
kingpin.FatalIfError(fmt.Errorf("organization %s not found", spaceName), "%s", errGetOrgReference)
184167
}
185168

186-
utils.PrintLine("Fetching apps in space:", spaceGUID, 30)
187169
// define filter-option with spaceRef for query
188-
opt := &cfv3.AppListOptions{SpaceGUIDs: cfv3.Filter{Values: []string{spaceGUID}}}
170+
opt := &cfv3.AppListOptions{SpaceGUIDs: cfv3.Filter{Values: []string{spaceRef[0].GUID}}}
189171

190172
// Get apps from CF
191173
responseCollection, err := c.client.Applications.ListAll(ctx, opt)
@@ -211,15 +193,22 @@ func (c *CFClient) getRoutes(ctx context.Context, filter map[string]string) ([]i
211193
if !ok {
212194
return nil, fmt.Errorf("host filter is required for routes")
213195
}
196+
spaceName, ok := filter["space"]
197+
if !ok {
198+
return nil, fmt.Errorf("space-reference filter is required for routes")
199+
}
214200
domainName, ok := filter["domain"]
215201
if !ok {
216202
return nil, fmt.Errorf("domain-reference filter is required for routes")
217203
}
218204

219205
// get referenced space
220-
spaceGUID, err := c.getSpaceReference(ctx, filter)
221-
if err != nil {
222-
return nil, err
206+
spaceRefFilter := cfv3.SpaceListOptions{Names: cfv3.Filter{Values: []string{spaceName}}}
207+
spaceRef, err := c.client.Spaces.ListAll(ctx, &spaceRefFilter)
208+
kingpin.FatalIfError(err, "%s", errGetSpaceReference)
209+
210+
if spaceRef[0].GUID == "" {
211+
kingpin.FatalIfError(fmt.Errorf("space %s not found", spaceName), "%s", errGetSpaceReference)
223212
}
224213

225214
// get referenced domain
@@ -233,7 +222,7 @@ func (c *CFClient) getRoutes(ctx context.Context, filter map[string]string) ([]i
233222

234223
// define filter-option with spaceRef for query
235224
opt := &cfv3.RouteListOptions{
236-
SpaceGUIDs: cfv3.Filter{Values: []string{spaceGUID}},
225+
SpaceGUIDs: cfv3.Filter{Values: []string{spaceRef[0].GUID}},
237226
DomainGUIDs: cfv3.Filter{Values: []string{domainRef[0].GUID}},
238227
}
239228

@@ -255,84 +244,6 @@ func (c *CFClient) getRoutes(ctx context.Context, filter map[string]string) ([]i
255244
return results, nil
256245
}
257246

258-
func (c *CFClient) getServiceInstances(ctx context.Context, filter map[string]string) ([]interface{}, error) {
259-
260-
// Get name filter
261-
name, ok := filter["name"]
262-
if !ok {
263-
return nil, fmt.Errorf("name filter is required for service instances")
264-
}
265-
266-
utils.PrintLine("Fetching service instances:", name, 30)
267-
// get referenced space
268-
spaceGUID, err := c.getSpaceReference(ctx, filter)
269-
if err != nil {
270-
return nil, err
271-
}
272-
utils.PrintLine("Fetching service instances in space ...", spaceGUID, 30)
273-
274-
// define filter-option with spaceRef for query
275-
opt := &cfv3.ServiceInstanceListOptions{SpaceGUIDs: cfv3.Filter{Values: []string{spaceGUID}}}
276-
277-
if serviceType, ok := filter["type"]; ok {
278-
opt.Type = serviceType
279-
}
280-
281-
// Get service instances from CF
282-
responseCollection, err := c.client.ServiceInstances.ListAll(ctx, opt)
283-
if err != nil {
284-
return nil, err
285-
}
286-
287-
utils.PrintLine("# service instances", strconv.Itoa(len(responseCollection)), 30)
288-
289-
// Filter service instances by name
290-
var results []interface{}
291-
for _, serviceInstance := range responseCollection {
292-
if utils.IsFullMatch(name, serviceInstance.Name) {
293-
results = append(results, serviceInstance)
294-
}
295-
}
296-
297-
return results, nil
298-
}
299-
300-
func (c *CFClient) GetServicePlan(ctx context.Context, guid string) (*v1alpha1.ServicePlanParameters, error) {
301-
sp, err := c.client.ServicePlans.Get(ctx, guid)
302-
if err != nil {
303-
return nil, fmt.Errorf("failed to get service plan: %w", err)
304-
}
305-
306-
// Get service offering details
307-
so, err := c.client.ServiceOfferings.Get(ctx, sp.Relationships.ServiceOffering.Data.GUID)
308-
if err != nil {
309-
return nil, fmt.Errorf("failed to get service offering: %w", err)
310-
}
311-
312-
return &v1alpha1.ServicePlanParameters{
313-
ID: &sp.GUID,
314-
Offering: &so.Name,
315-
Plan: &sp.Name,
316-
}, nil
317-
}
318-
319-
func (c *CFClient) GetServiceCredentials(ctx context.Context, guid string, serviceType string) (*json.RawMessage, error) {
320-
// Get credentials based on service type
321-
if serviceType == "managed" {
322-
params, err := c.client.ServiceInstances.GetManagedParameters(ctx, guid)
323-
if err != nil {
324-
return nil, fmt.Errorf("failed to get managed service parameters: %w", err)
325-
}
326-
return params, nil
327-
} else {
328-
creds, err := c.client.ServiceInstances.GetUserProvidedCredentials(ctx, guid)
329-
if err != nil {
330-
return nil, fmt.Errorf("failed to get user-provided service credentials: %w", err)
331-
}
332-
return creds, nil
333-
}
334-
}
335-
336247
// CFClientAdapter implements the ClientAdapter interface
337248
type CFClientAdapter struct{}
338249

internal/cli/adapters/config.go

Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"gopkg.in/yaml.v2"
1010

1111
"github.com/SAP/crossplane-provider-cloudfoundry/apis/resources/v1alpha1"
12-
"github.com/SAP/crossplane-provider-cloudfoundry/internal/cli/pkg/utils"
1312
"github.com/SAP/crossplane-provider-cloudfoundry/internal/crossplaneimport/client"
1413
"github.com/SAP/crossplane-provider-cloudfoundry/internal/crossplaneimport/config"
1514
"github.com/SAP/crossplane-provider-cloudfoundry/internal/crossplaneimport/resource"
@@ -22,10 +21,9 @@ type Config struct {
2221
}
2322

2423
type Resource struct {
25-
Space Space `yaml:"space"`
26-
Organization Organization `yaml:"org"`
27-
App App `yaml:"app"`
28-
ServiceInstance ServiceInstance `yaml:"serviceInstance"`
24+
Space Space `yaml:"space"`
25+
Organization Organization `yaml:"org"`
26+
App App `yaml:"app"`
2927
// add more resources here
3028
}
3129

@@ -46,13 +44,6 @@ type App struct {
4644
ManagementPolicies []ManagementPolicy `yaml:"managementPolicies"`
4745
}
4846

49-
type ServiceInstance struct {
50-
Name string `yaml:"name"`
51-
SpaceRef string `yaml:"spaceRef"`
52-
Type string `yaml:"type"`
53-
ManagementPolicies []ManagementPolicy `yaml:"managementPolicies"`
54-
}
55-
5647
type ManagementPolicy string
5748

5849
// CFResourceFilter implements the ResourceFilter interface
@@ -61,7 +52,6 @@ type CFResourceFilter struct {
6152
Space *SpaceFilter
6253
Organization *OrganizationFilter
6354
App *AppFilter
64-
ServiceInstance *ServiceInstanceFilter
6555
ManagementPolicies []v1.ManagementAction
6656
}
6757

@@ -86,12 +76,6 @@ func (f *CFResourceFilter) GetFilterCriteria() map[string]string {
8676
criteria["space"] = f.App.SpaceRef
8777
}
8878

89-
if f.ServiceInstance != nil {
90-
criteria["name"] = f.ServiceInstance.Name
91-
criteria["space"] = f.ServiceInstance.SpaceRef
92-
criteria["type"] = f.ServiceInstance.Type
93-
}
94-
9579
return criteria
9680
}
9781

@@ -113,12 +97,6 @@ type AppFilter struct {
11397
SpaceRef string
11498
}
11599

116-
type ServiceInstanceFilter struct {
117-
Name string
118-
SpaceRef string
119-
Type string
120-
}
121-
122100
// CFConfig implements the ProviderConfig interface
123101
type CFConfig struct {
124102
Resources []Resource
@@ -145,11 +123,6 @@ func (c *CFConfig) resourceIsValid(resource Resource) bool {
145123
fmt.Println(resource.App.Name + "is not a valid app configuration")
146124
return false
147125
}
148-
// check for empty service instance names
149-
if resource.ServiceInstance.Name != "" && (resource.ServiceInstance.ManagementPolicies == nil || resource.ServiceInstance.SpaceRef == "" || resource.ServiceInstance.Type == "") {
150-
fmt.Println(resource.ServiceInstance.Name + "is not a valid service instance configuration")
151-
return false
152-
}
153126
return true
154127
}
155128

@@ -230,7 +203,6 @@ func (p *CFConfigParser) ParseConfig(configPath string) (config.ProviderConfig,
230203
}
231204

232205
if res.App.Name != "" {
233-
utils.PrintLine("add app ...", res.App.Name, 30)
234206
var policies []v1.ManagementAction
235207
for _, policy := range res.App.ManagementPolicies {
236208
policies = append(policies, v1.ManagementAction(policy))
@@ -245,25 +217,6 @@ func (p *CFConfigParser) ParseConfig(configPath string) (config.ProviderConfig,
245217
ManagementPolicies: policies,
246218
})
247219
}
248-
249-
if res.ServiceInstance.Name != "" {
250-
utils.PrintLine("add service instances ...", res.ServiceInstance.Name, 30)
251-
252-
var policies []v1.ManagementAction
253-
for _, policy := range res.ServiceInstance.ManagementPolicies {
254-
policies = append(policies, v1.ManagementAction(policy))
255-
}
256-
257-
filters = append(filters, &CFResourceFilter{
258-
Type: v1alpha1.ServiceInstance_Kind,
259-
ServiceInstance: &ServiceInstanceFilter{
260-
Name: res.ServiceInstance.Name,
261-
SpaceRef: res.ServiceInstance.SpaceRef,
262-
Type: res.ServiceInstance.Type,
263-
},
264-
ManagementPolicies: policies,
265-
})
266-
}
267220
}
268221

269222
return cfConfig, filters, nil

0 commit comments

Comments
 (0)