func (s *bootstrapSuite) assertUploadTools(c *gc.C, vers version.Binary, forceVersion bool, extraConfig map[string]interface{}, errMessage string) { s.PatchValue(&version.Current, vers) // If we allow released tools to be uploaded, the build number is incremented so in that case // we need to ensure the environment is set up to allow dev tools to be used. env := newEnviron("foo", useDefaultKeys, extraConfig) s.setDummyStorage(c, env) envtesting.RemoveFakeTools(c, env.Storage()) // At this point, as a result of setDummyStorage, env has tools for amd64 uploaded. // Set version.Current to be arm64 to simulate a different CLI version. cliVersion := version.Current cliVersion.Arch = "arm64" version.Current = cliVersion s.PatchValue(&envtools.BundleTools, toolstesting.GetMockBundleTools(c)) // Host runs arm64, environment supports arm64. s.PatchValue(&arch.HostArch, func() string { return "arm64" }) arch := "arm64" err := bootstrap.UploadTools(coretesting.Context(c), env, &arch, forceVersion, "precise") if errMessage != "" { c.Assert(err, gc.NotNil) stripped := strings.Replace(err.Error(), "\n", "", -1) c.Assert(stripped, gc.Matches, errMessage) return } c.Assert(err, gc.IsNil) params := envtools.BootstrapToolsParams{ Arch: &arch, Series: version.Current.Series, } agentTools, err := envtools.FindBootstrapTools(env, params) c.Assert(err, gc.IsNil) c.Assert(agentTools, gc.HasLen, 1) expectedVers := vers expectedVers.Number.Build++ expectedVers.Series = version.Current.Series c.Assert(agentTools[0].Version, gc.DeepEquals, expectedVers) }
func (b bootstrapFuncs) UploadTools(ctx environs.BootstrapContext, env environs.Environ, toolsArch *string, forceVersion bool, bootstrapSeries ...string) error { return bootstrap.UploadTools(ctx, env, toolsArch, forceVersion, bootstrapSeries...) }