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-
172149func (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
337248type CFClientAdapter struct {}
338249
0 commit comments