github.com/Thanhphan1147/cloudfoundry-cli@v7.1.0+incompatible/actor/v3action/target.go (about) 1 package v3action 2 3 import ( 4 "strings" 5 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 7 "code.cloudfoundry.org/cli/util/configv3" 8 ) 9 10 type TargetSettings ccv3.TargetSettings 11 12 // SetTarget targets the Cloud Controller using the client and sets target 13 // information in the actor based on the response. 14 func (actor Actor) SetTarget(settings TargetSettings) (Warnings, error) { 15 if actor.Config.Target() == settings.URL && actor.Config.SkipSSLValidation() == settings.SkipSSLValidation { 16 return nil, nil 17 } 18 19 info, warnings, err := actor.CloudControllerClient.TargetCF(ccv3.TargetSettings(settings)) 20 if err != nil { 21 return Warnings(warnings), err 22 } 23 //TODO Remove this condition when earliest supportest CAPI is 1.87.0 24 //We have to do this because the current legacy supported CAPI version as of 2020 does not display the log cache url, this will break if a foundation on legacy CAPI have non-standard logcache urls 25 26 logCacheUrl := info.LogCache() 27 if logCacheUrl == "" { 28 logCacheUrl = strings.Replace(settings.URL, "api", "log-cache", 1) 29 } 30 actor.Config.SetTargetInformation(configv3.TargetInformationArgs{ 31 Api: settings.URL, 32 ApiVersion: info.CloudControllerAPIVersion(), 33 Auth: info.Login(), 34 MinCLIVersion: "", // Oldest supported V3 version should be OK 35 Doppler: info.Logging(), 36 LogCache: logCacheUrl, 37 Routing: info.Routing(), 38 SkipSSLValidation: settings.SkipSSLValidation, 39 }) 40 actor.Config.SetTokenInformation("", "", "") 41 42 return Warnings(warnings), nil 43 } 44 45 // ClearTarget clears target information from the actor. 46 func (actor Actor) ClearTarget() { 47 actor.Config.SetTargetInformation(configv3.TargetInformationArgs{}) 48 actor.Config.SetTokenInformation("", "", "") 49 }