github.com/jenspinney/cli@v6.42.1-0.20190207184520-7450c600020e+incompatible/command/v7/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, minVersionV3 string) (*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(config.RequestRetryCount())) 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, err 55 } 56 57 if minVersionV3 != "" { 58 err = command.MinimumCCAPIVersionCheck(ccClient.CloudControllerAPIVersion(), minVersionV3) 59 if err != nil { 60 if _, ok := err.(translatableerror.MinimumCFAPIVersionNotMetError); ok { 61 return nil, nil, translatableerror.V3V2SwitchError{} 62 } 63 return nil, nil, err 64 } 65 } 66 67 if ccClient.UAA() == "" { 68 return nil, nil, translatableerror.UAAEndpointNotFoundError{} 69 } 70 71 uaaClient := uaa.NewClient(config) 72 73 if verbose { 74 uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay())) 75 } 76 if location != nil { 77 uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location))) 78 } 79 80 uaaAuthWrapper := uaaWrapper.NewUAAAuthentication(uaaClient, config) 81 uaaClient.WrapConnection(uaaAuthWrapper) 82 uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(config.RequestRetryCount())) 83 84 err = uaaClient.SetupResources(ccClient.UAA()) 85 if err != nil { 86 return nil, nil, err 87 } 88 89 uaaAuthWrapper.SetClient(uaaClient) 90 authWrapper.SetClient(uaaClient) 91 92 return ccClient, uaaClient, nil 93 }