github.com/willmadison/cli@v6.40.1-0.20181018160101-29d5937903ff+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/uaa" 7 uaaWrapper "code.cloudfoundry.org/cli/api/uaa/wrapper" 8 "code.cloudfoundry.org/cli/command" 9 "code.cloudfoundry.org/cli/command/translatableerror" 10 ) 11 12 // NewClients creates a new V2 Cloud Controller client and UAA client using the 13 // passed in config. 14 func NewClients(config command.Config, ui command.UI, targetCF bool) (*ccv2.Client, *uaa.Client, error) { 15 ccWrappers := []ccv2.ConnectionWrapper{} 16 17 verbose, location := config.Verbose() 18 if verbose { 19 ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay())) 20 } 21 22 if location != nil { 23 ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location))) 24 } 25 26 authWrapper := ccWrapper.NewUAAAuthentication(nil, config) 27 28 ccWrappers = append(ccWrappers, authWrapper) 29 ccWrappers = append(ccWrappers, ccWrapper.NewRetryRequest(config.RequestRetryCount())) 30 31 ccClient := ccv2.NewClient(ccv2.Config{ 32 AppName: config.BinaryName(), 33 AppVersion: config.BinaryVersion(), 34 JobPollingTimeout: config.OverallPollingTimeout(), 35 JobPollingInterval: config.PollingInterval(), 36 Wrappers: ccWrappers, 37 }) 38 39 if !targetCF { 40 return ccClient, nil, nil 41 } 42 43 if config.Target() == "" { 44 return nil, nil, translatableerror.NoAPISetError{ 45 BinaryName: config.BinaryName(), 46 } 47 } 48 49 _, err := ccClient.TargetCF(ccv2.TargetSettings{ 50 URL: config.Target(), 51 SkipSSLValidation: config.SkipSSLValidation(), 52 DialTimeout: config.DialTimeout(), 53 }) 54 if err != nil { 55 return nil, nil, err 56 } 57 58 if err = command.WarnIfAPIVersionBelowSupportedMinimum(ccClient.APIVersion(), ui); err != nil { 59 return nil, nil, err 60 } 61 62 if ccClient.AuthorizationEndpoint() == "" { 63 return nil, nil, translatableerror.AuthorizationEndpointNotFoundError{} 64 } 65 66 uaaClient := uaa.NewClient(config) 67 68 if verbose { 69 uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay())) 70 } 71 if location != nil { 72 uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location))) 73 } 74 75 uaaAuthWrapper := uaaWrapper.NewUAAAuthentication(nil, config) 76 uaaClient.WrapConnection(uaaAuthWrapper) 77 uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(config.RequestRetryCount())) 78 79 err = uaaClient.SetupResources(ccClient.AuthorizationEndpoint()) 80 if err != nil { 81 return nil, nil, err 82 } 83 84 uaaAuthWrapper.SetClient(uaaClient) 85 authWrapper.SetClient(uaaClient) 86 87 return ccClient, uaaClient, err 88 }