// findBootstrapTools returns a tools.List containing only those tools with // which it would be reasonable to launch an environment's first machine, // given the supplied constraints. If a specific agent version is not requested, // all tools matching the current major.minor version are chosen. func findBootstrapTools(env environs.Environ, vers *version.Number, arch *string, dev bool) (list coretools.List, err error) { // Construct a tools filter. cliVersion := version.Current.Number var filter coretools.Filter if arch != nil { filter.Arch = *arch } if vers != nil { // If we already have an explicit agent version set, we're done. filter.Number = *vers return findTools(env, cliVersion.Major, cliVersion.Minor, filter, false) } if !dev { logger.Infof("filtering tools by released version") filter.Released = true } return findTools(env, cliVersion.Major, cliVersion.Minor, filter, false) }
// FindBootstrapTools returns a ToolsList containing only those tools with // which it would be reasonable to launch an environment's first machine, given the supplied constraints. // If a specific agent version is not requested, all tools matching the current major.minor version are chosen. func FindBootstrapTools(cloudInst environs.ConfigGetter, params BootstrapToolsParams) (list coretools.List, err error) { // Construct a tools filter. cfg := cloudInst.Config() cliVersion := version.Current.Number filter := coretools.Filter{ Series: params.Series, Arch: stringOrEmpty(params.Arch), } if params.Version != nil { // If we already have an explicit agent version set, we're done. filter.Number = *params.Version return bootstrapFindTools(cloudInst, cliVersion.Major, cliVersion.Minor, filter, params.AllowRetry) } if dev := cliVersion.IsDev() || cfg.Development(); !dev { logger.Infof("filtering tools by released version") filter.Released = true } return bootstrapFindTools(cloudInst, cliVersion.Major, cliVersion.Minor, filter, params.AllowRetry) }