func (s *URLsSuite) TestToolsMetadataURLsRegisteredFuncs(c *gc.C) { tools.RegisterToolsDataSourceFunc("id0", func(environs.Environ) (simplestreams.DataSource, error) { return simplestreams.NewURLDataSource("id0", "betwixt/releases", utils.NoVerifySSLHostnames), nil }) tools.RegisterToolsDataSourceFunc("id1", func(environs.Environ) (simplestreams.DataSource, error) { return simplestreams.NewURLDataSource("id1", "yoink", utils.NoVerifySSLHostnames), nil }) // overwrite the one previously registered against id1 tools.RegisterToolsDataSourceFunc("id1", func(environs.Environ) (simplestreams.DataSource, error) { // NotSupported errors do not cause GetMetadataSources to fail, // they just cause the datasource function to be ignored. return nil, errors.NewNotSupported(nil, "oyvey") }) defer tools.UnregisterToolsDataSourceFunc("id0") defer tools.UnregisterToolsDataSourceFunc("id1") env := s.env(c, "config-tools-metadata-url") sources, err := tools.GetMetadataSources(env) c.Assert(err, jc.ErrorIsNil) sstesting.AssertExpectedSources(c, sources, []string{ "config-tools-metadata-url/", "betwixt/releases/", "https://streams.canonical.com/juju/tools/", }) }
func (s *bootstrapSuite) setupBootstrapSpecificVersion(c *gc.C, clientMajor, clientMinor int, toolsVersion *version.Number) (error, int, version.Number) { currentVersion := version.Current currentVersion.Major = clientMajor currentVersion.Minor = clientMinor currentVersion.Tag = "" s.PatchValue(&version.Current, currentVersion) s.PatchValue(&series.HostSeries, func() string { return "trusty" }) s.PatchValue(&arch.HostArch, func() string { return arch.AMD64 }) env := newEnviron("foo", useDefaultKeys, nil) s.setDummyStorage(c, env) envtools.RegisterToolsDataSourceFunc("local storage", func(environs.Environ) (simplestreams.DataSource, error) { return storage.NewStorageSimpleStreamsDataSource("test datasource", env.storage, "tools", simplestreams.CUSTOM_CLOUD_DATA, false), nil }) defer envtools.UnregisterToolsDataSourceFunc("local storage") toolsBinaries := []version.Binary{ version.MustParseBinary("10.11.12-trusty-amd64"), version.MustParseBinary("10.11.13-trusty-amd64"), version.MustParseBinary("10.11-beta1-trusty-amd64"), } stream := "released" if toolsVersion != nil && toolsVersion.Tag != "" { stream = "devel" currentVersion.Tag = toolsVersion.Tag } _, err := envtesting.UploadFakeToolsVersions(env.storage, stream, stream, toolsBinaries...) c.Assert(err, jc.ErrorIsNil) err = bootstrap.Bootstrap(envtesting.BootstrapContext(c), env, bootstrap.BootstrapParams{ AgentVersion: toolsVersion, }) vers, _ := env.cfg.AgentVersion() return err, env.bootstrapCount, vers }
func (s *bootstrapSuite) setupBootstrapSpecificVersion( c *gc.C, clientMajor, clientMinor int, toolsVersion *version.Number, ) (error, int, version.Number) { currentVersion := version.Current currentVersion.Major = clientMajor currentVersion.Minor = clientMinor currentVersion.Series = "trusty" currentVersion.Arch = "amd64" s.PatchValue(&version.Current, currentVersion) env := newEnviron("foo", useDefaultKeys, nil) s.setDummyStorage(c, env) envtools.RegisterToolsDataSourceFunc("local storage", func(environs.Environ) (simplestreams.DataSource, error) { return storage.NewStorageSimpleStreamsDataSource("test datasource", env.storage, "tools"), nil }) defer envtools.UnregisterToolsDataSourceFunc("local storage") toolsBinaries := []version.Binary{ version.MustParseBinary("10.11.12-trusty-amd64"), version.MustParseBinary("10.11.13-trusty-amd64"), } _, err := envtesting.UploadFakeToolsVersions(env.storage, "released", "released", toolsBinaries...) c.Assert(err, jc.ErrorIsNil) err = bootstrap.Bootstrap(envtesting.BootstrapContext(c), env, bootstrap.BootstrapParams{ AgentVersion: toolsVersion, }) vers, _ := env.cfg.AgentVersion() return err, env.bootstrapCount, vers }
func (s *URLsSuite) TestToolsMetadataURLsRegisteredFuncsError(c *gc.C) { tools.RegisterToolsDataSourceFunc("id0", func(environs.Environ) (simplestreams.DataSource, error) { // Non-NotSupported errors cause GetMetadataSources to fail. return nil, errors.New("oyvey!") }) defer tools.UnregisterToolsDataSourceFunc("id0") env := s.env(c, "config-tools-metadata-url") _, err := tools.GetMetadataSources(env) c.Assert(err, gc.ErrorMatches, "oyvey!") }
func init() { environs.RegisterProvider(providerType, providerInstance) environs.RegisterImageDataSourceFunc("keystone catalog", getKeystoneImageSource) tools.RegisterToolsDataSourceFunc("keystone catalog", getKeystoneToolsSource) // Register the Openstack specific providers. registry.RegisterProvider( CinderProviderType, &cinderProvider{newOpenstackStorageAdapter}, ) // Register the Cinder provider with the Openstack provider. registry.RegisterEnvironStorageProviders(providerType, CinderProviderType) }
func (s *bootstrapSuite) setupBootstrapSpecificVersion(c *gc.C, clientMajor, clientMinor int, toolsVersion *version.Number) (error, int, version.Number) { currentVersion := jujuversion.Current currentVersion.Major = clientMajor currentVersion.Minor = clientMinor currentVersion.Tag = "" s.PatchValue(&jujuversion.Current, currentVersion) s.PatchValue(&series.HostSeries, func() string { return "trusty" }) s.PatchValue(&arch.HostArch, func() string { return arch.AMD64 }) env := newEnviron("foo", useDefaultKeys, nil) s.setDummyStorage(c, env) envtools.RegisterToolsDataSourceFunc("local storage", func(environs.Environ) (simplestreams.DataSource, error) { return storage.NewStorageSimpleStreamsDataSource("test datasource", env.storage, "tools", simplestreams.CUSTOM_CLOUD_DATA, false), nil }) defer envtools.UnregisterToolsDataSourceFunc("local storage") toolsBinaries := []version.Binary{ version.MustParseBinary("10.11.12-trusty-amd64"), version.MustParseBinary("10.11.13-trusty-amd64"), version.MustParseBinary("10.11-beta1-trusty-amd64"), } stream := "released" if toolsVersion != nil && toolsVersion.Tag != "" { stream = "devel" currentVersion.Tag = toolsVersion.Tag } _, err := envtesting.UploadFakeToolsVersions(env.storage, stream, stream, toolsBinaries...) c.Assert(err, jc.ErrorIsNil) err = bootstrap.Bootstrap(envtesting.BootstrapContext(c), env, bootstrap.BootstrapParams{ ControllerConfig: coretesting.FakeControllerConfig(), AdminSecret: "admin-secret", CAPrivateKey: coretesting.CAKey, AgentVersion: toolsVersion, BuildAgentTarball: func(build bool, ver *version.Number, _ string) (*sync.BuiltAgent, error) { c.Logf("BuildAgentTarball version %s", ver) c.Assert(build, jc.IsFalse) return &sync.BuiltAgent{Dir: c.MkDir()}, nil }, }) vers, _ := env.cfg.AgentVersion() return err, env.bootstrapCount, vers }
func init() { environs.RegisterProvider(providerType, providerInstance) environs.RegisterImageDataSourceFunc("keystone catalog", getKeystoneImageSource) tools.RegisterToolsDataSourceFunc("keystone catalog", getKeystoneToolsSource) }