github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/command/v3/shared/new_clients.go (about) 1 package shared 2 3 import ( 4 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 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 V3 Cloud Controller client and UAA client using the 13 // passed in config. 14 func NewClients(config command.Config, ui command.UI, targetCF bool) (*ccv3.Client, *uaa.Client, error) { 15 ccWrappers := []ccv3.ConnectionWrapper{} 16 17 verbose, location := config.Verbose() 18 if verbose { 19 ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay())) 20 } 21 if location != nil { 22 ccWrappers = append(ccWrappers, ccWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location))) 23 } 24 25 authWrapper := ccWrapper.NewUAAAuthentication(nil, config) 26 27 ccWrappers = append(ccWrappers, authWrapper) 28 ccWrappers = append(ccWrappers, ccWrapper.NewRetryRequest(2)) 29 30 ccClient := ccv3.NewClient(ccv3.Config{ 31 AppName: config.BinaryName(), 32 AppVersion: config.BinaryVersion(), 33 JobPollingTimeout: config.OverallPollingTimeout(), 34 JobPollingInterval: config.PollingInterval(), 35 Wrappers: ccWrappers, 36 }) 37 38 if !targetCF { 39 return ccClient, nil, nil 40 } 41 42 if config.Target() == "" { 43 return nil, nil, translatableerror.NoAPISetError{ 44 BinaryName: config.BinaryName(), 45 } 46 } 47 48 _, err := ccClient.TargetCF(ccv3.TargetSettings{ 49 URL: config.Target(), 50 SkipSSLValidation: config.SkipSSLValidation(), 51 DialTimeout: config.DialTimeout(), 52 }) 53 if err != nil { 54 return nil, nil, HandleError(err) 55 } 56 57 if ccClient.UAA() == "" { 58 return nil, nil, translatableerror.UAAEndpointNotFoundError{} 59 } 60 61 uaaClient := uaa.NewClient(uaa.Config{ 62 AppName: config.BinaryName(), 63 AppVersion: config.BinaryVersion(), 64 ClientID: config.UAAOAuthClient(), 65 ClientSecret: config.UAAOAuthClientSecret(), 66 DialTimeout: config.DialTimeout(), 67 SkipSSLValidation: config.SkipSSLValidation(), 68 }) 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(uaaClient, config) 78 uaaClient.WrapConnection(uaaAuthWrapper) 79 uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(2)) 80 81 err = uaaClient.SetupResources(config, ccClient.UAA()) 82 if err != nil { 83 return nil, nil, err 84 } 85 86 uaaAuthWrapper.SetClient(uaaClient) 87 authWrapper.SetClient(uaaClient) 88 89 return ccClient, uaaClient, nil 90 }