github.com/arunkumar7540/cli@v6.45.0+incompatible/command/v6/shared/new_clients.go (about) 1 package shared 2 3 import ( 4 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 5 ccWrapper "code.cloudfoundry.org/cli/api/cloudcontroller/wrapper" 6 "code.cloudfoundry.org/cli/api/router" 7 routerWrapper "code.cloudfoundry.org/cli/api/router/wrapper" 8 "code.cloudfoundry.org/cli/api/uaa" 9 uaaWrapper "code.cloudfoundry.org/cli/api/uaa/wrapper" 10 "code.cloudfoundry.org/cli/command" 11 "code.cloudfoundry.org/cli/command/translatableerror" 12 ) 13 14 // NewClients creates a new V2 Cloud Controller client and UAA client using the 15 // passed in config. 16 func NewClients(config command.Config, ui command.UI, targetCF bool) (*ccv2.Client, *uaa.Client, error) { 17 ccWrappers := []ccv2.ConnectionWrapper{} 18 19 verbose, location := config.Verbose() 20 if verbose { 21 ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay())) 22 } 23 24 if location != nil { 25 ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location))) 26 } 27 28 authWrapper := ccWrapper.NewUAAAuthentication(nil, config) 29 30 ccWrappers = append(ccWrappers, authWrapper) 31 ccWrappers = append(ccWrappers, ccWrapper.NewRetryRequest(config.RequestRetryCount())) 32 33 ccClient := ccv2.NewClient(ccv2.Config{ 34 AppName: config.BinaryName(), 35 AppVersion: config.BinaryVersion(), 36 JobPollingTimeout: config.OverallPollingTimeout(), 37 JobPollingInterval: config.PollingInterval(), 38 Wrappers: ccWrappers, 39 }) 40 41 if !targetCF { 42 return ccClient, nil, nil 43 } 44 45 if config.Target() == "" { 46 return nil, nil, translatableerror.NoAPISetError{ 47 BinaryName: config.BinaryName(), 48 } 49 } 50 51 _, err := ccClient.TargetCF(ccv2.TargetSettings{ 52 URL: config.Target(), 53 SkipSSLValidation: config.SkipSSLValidation(), 54 DialTimeout: config.DialTimeout(), 55 }) 56 if err != nil { 57 return nil, nil, err 58 } 59 60 if err = command.WarnIfAPIVersionBelowSupportedMinimum(ccClient.APIVersion(), ui); err != nil { 61 return nil, nil, err 62 } 63 64 if ccClient.AuthorizationEndpoint() == "" { 65 return nil, nil, translatableerror.AuthorizationEndpointNotFoundError{} 66 } 67 68 uaaClient := uaa.NewClient(config) 69 70 if verbose { 71 uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay())) 72 } 73 if location != nil { 74 uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location))) 75 } 76 77 uaaAuthWrapper := uaaWrapper.NewUAAAuthentication(nil, config) 78 uaaClient.WrapConnection(uaaAuthWrapper) 79 uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(config.RequestRetryCount())) 80 81 err = uaaClient.SetupResources(ccClient.AuthorizationEndpoint()) 82 if err != nil { 83 return nil, nil, err 84 } 85 86 uaaAuthWrapper.SetClient(uaaClient) 87 authWrapper.SetClient(uaaClient) 88 89 return ccClient, uaaClient, err 90 } 91 92 func NewRouterClient(config command.Config, ui command.UI, uaaClient *uaa.Client) (*router.Client, error) { 93 routerConfig := router.Config{ 94 AppName: config.BinaryName(), 95 AppVersion: config.BinaryVersion(), 96 ConnectionConfig: router.ConnectionConfig{ 97 DialTimeout: config.DialTimeout(), 98 SkipSSLValidation: config.SkipSSLValidation(), 99 }, 100 RoutingEndpoint: config.RoutingEndpoint(), 101 } 102 103 routerWrappers := []router.ConnectionWrapper{} 104 105 verbose, location := config.Verbose() 106 107 if verbose { 108 routerWrappers = append(routerWrappers, routerWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay())) 109 } 110 111 if location != nil { 112 routerWrappers = append(routerWrappers, routerWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location))) 113 } 114 115 authWrapper := routerWrapper.NewUAAAuthentication(uaaClient, config) 116 errorWrapper := routerWrapper.NewErrorWrapper() 117 118 routerWrappers = append(routerWrappers, authWrapper, errorWrapper) 119 routerConfig.Wrappers = routerWrappers 120 121 routerClient := router.NewClient(routerConfig) 122 return routerClient, nil 123 }