github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/command/v2/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 ccClient.AuthorizationEndpoint() == "" {
    59  		return nil, nil, translatableerror.AuthorizationEndpointNotFoundError{}
    60  	}
    61  
    62  	uaaClient := uaa.NewClient(config)
    63  
    64  	if verbose {
    65  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerTerminalDisplay()))
    66  	}
    67  	if location != nil {
    68  		uaaClient.WrapConnection(uaaWrapper.NewRequestLogger(ui.RequestLoggerFileWriter(location)))
    69  	}
    70  
    71  	uaaAuthWrapper := uaaWrapper.NewUAAAuthentication(nil, config)
    72  	uaaClient.WrapConnection(uaaAuthWrapper)
    73  	uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(config.RequestRetryCount()))
    74  
    75  	err = uaaClient.SetupResources(ccClient.AuthorizationEndpoint())
    76  	if err != nil {
    77  		return nil, nil, err
    78  	}
    79  
    80  	uaaAuthWrapper.SetClient(uaaClient)
    81  	authWrapper.SetClient(uaaClient)
    82  
    83  	return ccClient, uaaClient, err
    84  }