本文整理汇总了Golang中github.com/juju/juju/environs/config.LatestLtsSeries函数的典型用法代码示例。如果您正苦于以下问题:Golang LatestLtsSeries函数的具体用法?Golang LatestLtsSeries怎么用?Golang LatestLtsSeries使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LatestLtsSeries函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestAutoUploadAfterFailedSync
func (s *BootstrapSuite) TestAutoUploadAfterFailedSync(c *gc.C) {
s.PatchValue(&version.Current.Series, config.LatestLtsSeries())
otherSeries := "quantal"
env := s.setupAutoUploadTest(c, "1.7.3", otherSeries)
// Run command and check for that upload has been run for tools matching the current juju version.
opc, errc := runCommand(nullContext(c), envcmd.Wrap(new(BootstrapCommand)))
c.Assert(<-errc, gc.IsNil)
c.Assert((<-opc).(dummy.OpPutFile).Env, gc.Equals, "peckham")
list, err := envtools.FindTools(env, version.Current.Major, version.Current.Minor, coretools.Filter{}, false)
c.Assert(err, gc.IsNil)
c.Logf("found: " + list.String())
urls := list.URLs()
// We expect:
// supported LTS series precise, trusty,
// the specified series (quantal),
// and the environment's default series (raring).
expectedVers := []version.Binary{
version.MustParseBinary(fmt.Sprintf("1.7.3.1-%s-%s", "quantal", version.Current.Arch)),
version.MustParseBinary(fmt.Sprintf("1.7.3.1-%s-%s", "raring", version.Current.Arch)),
version.MustParseBinary(fmt.Sprintf("1.7.3.1-%s-%s", "precise", version.Current.Arch)),
version.MustParseBinary(fmt.Sprintf("1.7.3.1-%s-%s", "trusty", version.Current.Arch)),
}
c.Assert(urls, gc.HasLen, len(expectedVers))
for _, vers := range expectedVers {
c.Logf("seeking: " + vers.String())
_, found := urls[vers]
c.Check(found, gc.Equals, true)
}
}
示例2: resolveCharmStoreEntityURL
// resolveCharmStoreEntityURL resolves the given charm or bundle URL string
// by looking it up in the appropriate charm repository.
// If it is a charm store URL, the given csParams will
// be used to access the charm store repository.
// If it is a local charm or bundle URL, the local charm repository at
// the given repoPath will be used. The given configuration
// will be used to add any necessary attributes to the repo
// and to return the charm's supported series if possible.
//
// resolveCharmStoreEntityURL also returns the charm repository holding
// the charm or bundle.
func resolveCharmStoreEntityURL(args resolveCharmStoreEntityParams) (*charm.URL, []string, charmrepo.Interface, error) {
url, err := charm.ParseURL(args.urlStr)
if err != nil {
return nil, nil, nil, errors.Trace(err)
}
repo, err := charmrepo.InferRepository(url, args.csParams, args.repoPath)
if err != nil {
return nil, nil, nil, errors.Trace(err)
}
repo = config.SpecializeCharmRepo(repo, args.conf)
if url.Schema == "local" && url.Series == "" {
if defaultSeries, ok := args.conf.DefaultSeries(); ok {
url.Series = defaultSeries
}
if url.Series == "" {
possibleURL := *url
possibleURL.Series = config.LatestLtsSeries()
logger.Errorf("The series is not specified in the model (default-series) or with the charm. Did you mean:\n\t%s", &possibleURL)
return nil, nil, nil, errors.Errorf("cannot resolve series for charm: %q", url)
}
}
resultUrl, supportedSeries, err := repo.Resolve(url)
if err != nil {
return nil, nil, nil, errors.Trace(err)
}
return resultUrl, supportedSeries, repo, nil
}
示例3: runAllowRetriesTest
func (s *BootstrapSuite) runAllowRetriesTest(c *gc.C, test bootstrapRetryTest) {
toolsVersions := envtesting.VAll
if test.version != "" {
useVersion := strings.Replace(test.version, "%LTS%", config.LatestLtsSeries(), 1)
testVersion := version.MustParseBinary(useVersion)
s.PatchValue(&version.Current, testVersion)
if test.addVersionToSource {
toolsVersions = append([]version.Binary{}, toolsVersions...)
toolsVersions = append(toolsVersions, testVersion)
}
}
resetJujuHome(c)
sourceDir := createToolsSource(c, toolsVersions)
s.PatchValue(&envtools.DefaultBaseURL, sourceDir)
var findToolsRetryValues []bool
mockFindTools := func(cloudInst environs.ConfigGetter, majorVersion, minorVersion int,
filter coretools.Filter, allowRetry bool) (list coretools.List, err error) {
findToolsRetryValues = append(findToolsRetryValues, allowRetry)
return nil, errors.NotFoundf("tools")
}
restore := envtools.TestingPatchBootstrapFindTools(mockFindTools)
defer restore()
_, errc := runCommand(nullContext(c), envcmd.Wrap(new(BootstrapCommand)), test.args...)
err := <-errc
c.Check(findToolsRetryValues, gc.DeepEquals, test.expectedAllowRetry)
stripped := strings.Replace(err.Error(), "\n", "", -1)
c.Check(stripped, gc.Matches, test.err)
}
示例4: TestImageMetadataFilesLatestLts
func (s *ImageMetadataSuite) TestImageMetadataFilesLatestLts(c *gc.C) {
ec2Config, err := config.New(config.UseDefaults, map[string]interface{}{
"name": "ec2-latest-lts",
"type": "ec2",
"uuid": testing.ModelTag.Id(),
"controller-uuid": testing.ModelTag.Id(),
"region": "us-east-1",
})
c.Assert(err, jc.ErrorIsNil)
s.store.BootstrapConfig["ec2-controller"] = jujuclient.BootstrapConfig{
Cloud: "ec2",
CloudRegion: "us-east-1",
Config: ec2Config.AllAttrs(),
}
ctx, err := runImageMetadata(c, s.store,
"-m", "ec2-controller:ec2-latest-lts",
"-d", s.dir, "-i", "1234", "-r", "region", "-a", "arch", "-u", "endpoint",
)
c.Assert(err, jc.ErrorIsNil)
out := testing.Stdout(ctx)
expected := expectedMetadata{
series: config.LatestLtsSeries(),
arch: "arch",
}
s.assertCommandOutput(c, expected, out, defaultIndexFileName, defaultImageFileName)
}
示例5: SetUpTest
func (s *funcSuite) SetUpTest(c *gc.C) {
s.baseImageMetadataSuite.SetUpTest(c)
var err error
s.env, err = environs.Prepare(
envtesting.BootstrapContext(c),
jujuclienttesting.NewMemStore(),
environs.PrepareParams{
ControllerName: "dummycontroller",
BaseConfig: mockConfig(),
CloudName: "dummy",
},
)
c.Assert(err, jc.ErrorIsNil)
s.state = s.constructState(s.env.Config())
s.expected = cloudimagemetadata.Metadata{
cloudimagemetadata.MetadataAttributes{
Stream: "released",
Source: "custom",
Series: config.LatestLtsSeries(),
Arch: "amd64",
Region: "dummy_region",
},
0,
"",
}
}
示例6: TestUpgradeJuju
func (s *UpgradeJujuSuite) TestUpgradeJuju(c *gc.C) {
for i, test := range upgradeJujuTests {
c.Logf("\ntest %d: %s", i, test.about)
s.Reset(c)
tools.DefaultBaseURL = ""
// Set up apparent CLI version and initialize the command.
s.PatchValue(&version.Current, version.MustParseBinary(test.currentVersion))
com := &UpgradeJujuCommand{}
if err := coretesting.InitCommand(envcmd.Wrap(com), test.args); err != nil {
if test.expectInitErr != "" {
c.Check(err, gc.ErrorMatches, test.expectInitErr)
} else {
c.Check(err, jc.ErrorIsNil)
}
continue
}
// Set up state and environ, and run the command.
toolsDir := c.MkDir()
updateAttrs := map[string]interface{}{
"agent-version": test.agentVersion,
"agent-metadata-url": "file://" + toolsDir + "/tools",
}
err := s.State.UpdateEnvironConfig(updateAttrs, nil, nil)
c.Assert(err, jc.ErrorIsNil)
versions := make([]version.Binary, len(test.tools))
for i, v := range test.tools {
versions[i] = version.MustParseBinary(v)
}
if len(versions) > 0 {
stor, err := filestorage.NewFileStorageWriter(toolsDir)
c.Assert(err, jc.ErrorIsNil)
envtesting.MustUploadFakeToolsVersions(stor, s.Environ.Config().AgentStream(), versions...)
}
err = com.Run(coretesting.Context(c))
if test.expectErr != "" {
c.Check(err, gc.ErrorMatches, test.expectErr)
continue
} else if !c.Check(err, jc.ErrorIsNil) {
continue
}
// Check expected changes to environ/state.
cfg, err := s.State.EnvironConfig()
c.Check(err, jc.ErrorIsNil)
agentVersion, ok := cfg.AgentVersion()
c.Check(ok, jc.IsTrue)
c.Check(agentVersion, gc.Equals, version.MustParse(test.expectVersion))
for _, uploaded := range test.expectUploaded {
// Substitute latest LTS for placeholder in expected series for uploaded tools
uploaded = strings.Replace(uploaded, "%LTS%", config.LatestLtsSeries(), 1)
vers := version.MustParseBinary(uploaded)
s.checkToolsUploaded(c, vers, agentVersion)
}
}
}
示例7: SetUpTest
func (s *RepoSuite) SetUpTest(c *gc.C) {
s.JujuConnSuite.SetUpTest(c)
s.CharmsPath = c.MkDir()
// Change the environ's config to ensure we're using the one in state.
updateAttrs := map[string]interface{}{"default-series": config.LatestLtsSeries()}
err := s.State.UpdateModelConfig(updateAttrs, nil, nil)
c.Assert(err, jc.ErrorIsNil)
}
示例8: setParams
// setParams sets parameters based on the environment configuration
// for those which have not been explicitly specified.
func (c *imageMetadataCommand) setParams(context *cmd.Context) error {
c.privateStorage = "<private storage name>"
var environ environs.Environ
if environ, err := c.prepare(context); err == nil {
logger.Infof("creating image metadata for model %q", environ.Config().Name())
// If the user has not specified region and endpoint, try and get it from the environment.
if c.Region == "" || c.Endpoint == "" {
var cloudSpec simplestreams.CloudSpec
if inst, ok := environ.(simplestreams.HasRegion); ok {
if cloudSpec, err = inst.Region(); err != nil {
return err
}
} else {
return errors.Errorf("model %q cannot provide region and endpoint", environ.Config().Name())
}
// If only one of region or endpoint is provided, that is a problem.
if cloudSpec.Region != cloudSpec.Endpoint && (cloudSpec.Region == "" || cloudSpec.Endpoint == "") {
return errors.Errorf("cannot generate metadata without a complete cloud configuration")
}
if c.Region == "" {
c.Region = cloudSpec.Region
}
if c.Endpoint == "" {
c.Endpoint = cloudSpec.Endpoint
}
}
cfg := environ.Config()
if c.Series == "" {
c.Series = config.PreferredSeries(cfg)
}
} else {
logger.Warningf("model could not be opened: %v", err)
}
if environ == nil {
logger.Infof("no model found, creating image metadata using user supplied data")
}
if c.Series == "" {
c.Series = config.LatestLtsSeries()
}
if c.ImageId == "" {
return errors.Errorf("image id must be specified")
}
if c.Region == "" {
return errors.Errorf("image region must be specified")
}
if c.Endpoint == "" {
return errors.Errorf("cloud endpoint URL must be specified")
}
if c.Dir == "" {
logger.Infof("no destination directory specified, using current directory")
var err error
if c.Dir, err = os.Getwd(); err != nil {
return err
}
}
return nil
}
示例9: TestWithConfigAndNoInfo
func (s *NewAPIClientSuite) TestWithConfigAndNoInfo(c *gc.C) {
coretesting.MakeSampleJujuHome(c)
store := newConfigStore(coretesting.SampleEnvName, &environInfo{
bootstrapConfig: map[string]interface{}{
"type": "dummy",
"name": "myenv",
"state-server": true,
"authorized-keys": "i-am-a-key",
"default-series": config.LatestLtsSeries(),
"firewall-mode": config.FwInstance,
"development": false,
"ssl-hostname-verification": true,
"admin-secret": "adminpass",
},
})
bootstrapEnv(c, coretesting.SampleEnvName, store)
// Verify the cache is empty.
info, err := store.ReadInfo("myenv")
c.Assert(err, gc.IsNil)
c.Assert(info, gc.NotNil)
c.Assert(info.APIEndpoint(), jc.DeepEquals, configstore.APIEndpoint{})
c.Assert(info.APICredentials(), jc.DeepEquals, configstore.APICredentials{})
called := 0
expectState := mockedAPIState(0)
apiOpen := func(apiInfo *api.Info, opts api.DialOpts) (juju.APIState, error) {
c.Check(apiInfo.Tag, gc.Equals, names.NewUserTag("admin"))
c.Check(string(apiInfo.CACert), gc.Not(gc.Equals), "")
c.Check(apiInfo.Password, gc.Equals, "adminpass")
// EnvironTag wasn't in regular Config
c.Check(apiInfo.EnvironTag, gc.IsNil)
c.Check(opts, gc.DeepEquals, api.DefaultDialOpts())
called++
return expectState, nil
}
st, err := juju.NewAPIFromStore("myenv", store, apiOpen)
c.Assert(err, gc.IsNil)
c.Assert(st, gc.Equals, expectState)
c.Assert(called, gc.Equals, 1)
// Make sure the cache is updated.
info, err = store.ReadInfo("myenv")
c.Assert(err, gc.IsNil)
c.Assert(info, gc.NotNil)
ep := info.APIEndpoint()
c.Assert(ep.Addresses, gc.HasLen, 1)
c.Check(ep.Addresses[0], gc.Matches, `localhost:\d+`)
c.Check(ep.CACert, gc.Not(gc.Equals), "")
// Old servers won't hand back EnvironTag, so it should stay empty in
// the cache
c.Check(ep.EnvironUUID, gc.Equals, "")
creds := info.APICredentials()
c.Check(creds.User, gc.Equals, "admin")
c.Check(creds.Password, gc.Equals, "adminpass")
}
示例10: SetUpTest
func (s *RepoSuite) SetUpTest(c *gc.C) {
s.JujuConnSuite.SetUpTest(c)
s.BaseRepoSuite.SetUpTest(c)
// Change the environ's config to ensure we're using the one in state,
// not the one in the local environments.yaml
updateAttrs := map[string]interface{}{"default-series": config.LatestLtsSeries()}
err := s.State.UpdateModelConfig(updateAttrs, nil, nil)
c.Assert(err, jc.ErrorIsNil)
}
示例11: charmSeries
// charmSeries determine what series to use with a charm.
// Order of preference is:
// - user requested or defined by bundle when deploying
// - default from charm metadata supported series
// - model default
// - charm store default
func charmSeries(
requestedSeries, seriesFromCharm string,
supportedSeries []string,
force bool,
conf *config.Config,
fromBundle bool,
) (string, string, error) {
// User has requested a series and we have a new charm with series in metadata.
if requestedSeries != "" && seriesFromCharm == "" {
if !force && !isSeriesSupported(requestedSeries, supportedSeries) {
return "", "", charm.NewUnsupportedSeriesError(requestedSeries, supportedSeries)
}
if fromBundle {
return requestedSeries, msgBundleSeries, nil
} else {
return requestedSeries, msgUserRequestedSeries, nil
}
}
// User has requested a series and it's an old charm for a single series.
if seriesFromCharm != "" {
if !force && requestedSeries != "" && requestedSeries != seriesFromCharm {
return "", "", charm.NewUnsupportedSeriesError(requestedSeries, []string{seriesFromCharm})
}
if requestedSeries != "" {
if fromBundle {
return requestedSeries, msgBundleSeries, nil
} else {
return requestedSeries, msgUserRequestedSeries, nil
}
}
return seriesFromCharm, msgSingleCharmSeries, nil
}
// Use charm default.
if len(supportedSeries) > 0 {
return supportedSeries[0], msgDefaultCharmSeries, nil
}
// Use model default supported series.
if defaultSeries, ok := conf.DefaultSeries(); ok {
if !force && !isSeriesSupported(defaultSeries, supportedSeries) {
return "", "", charm.NewUnsupportedSeriesError(defaultSeries, supportedSeries)
}
return defaultSeries, msgDefaultModelSeries, nil
}
// Use latest LTS.
latestLtsSeries := config.LatestLtsSeries()
if !force && !isSeriesSupported(latestLtsSeries, supportedSeries) {
return "", "", charm.NewUnsupportedSeriesError(latestLtsSeries, supportedSeries)
}
return latestLtsSeries, msgLatestLTSSeries, nil
}
示例12: SetUpTest
func (s *RepoSuite) SetUpTest(c *gc.C) {
s.JujuConnSuite.SetUpTest(c)
// Change the environ's config to ensure we're using the one in state,
// not the one in the local environments.yaml
updateAttrs := map[string]interface{}{"default-series": config.LatestLtsSeries()}
err := s.State.UpdateEnvironConfig(updateAttrs, nil, nil)
c.Assert(err, jc.ErrorIsNil)
s.RepoPath = os.Getenv("JUJU_REPOSITORY")
repoPath := c.MkDir()
os.Setenv("JUJU_REPOSITORY", repoPath)
s.SeriesPath = filepath.Join(repoPath, config.LatestLtsSeries())
err = os.Mkdir(s.SeriesPath, 0777)
c.Assert(err, jc.ErrorIsNil)
// Create a symlink "quantal" -> "precise", because most charms
// and machines are written with hard-coded "quantal" series,
// hence they interact badly with a local repository that assumes
// only "precise" charms are available.
err = symlink.New(s.SeriesPath, filepath.Join(repoPath, "quantal"))
c.Assert(err, jc.ErrorIsNil)
}
示例13: TestAddMachine
func (s *AddMachineSuite) TestAddMachine(c *gc.C) {
context, err := runAddMachine(c)
c.Assert(err, gc.IsNil)
c.Assert(testing.Stderr(context), gc.Equals, "created machine 0\n")
m, err := s.State.Machine("0")
c.Assert(err, gc.IsNil)
c.Assert(m.Life(), gc.Equals, state.Alive)
c.Assert(m.Series(), gc.DeepEquals, config.LatestLtsSeries())
mcons, err := m.Constraints()
c.Assert(err, gc.IsNil)
c.Assert(&mcons, jc.Satisfies, constraints.IsEmpty)
}
示例14: TestAutoUploadAfterFailedSync
func (s *BootstrapSuite) TestAutoUploadAfterFailedSync(c *gc.C) {
s.PatchValue(&version.Current.Series, config.LatestLtsSeries())
s.setupAutoUploadTest(c, "1.7.3", "quantal")
// Run command and check for that upload has been run for tools matching
// the current juju version.
opc, errc := cmdtesting.RunCommand(cmdtesting.NullContext(c), envcmd.Wrap(new(BootstrapCommand)), "-e", "devenv")
c.Assert(<-errc, gc.IsNil)
c.Check((<-opc).(dummy.OpBootstrap).Env, gc.Equals, "devenv")
icfg := (<-opc).(dummy.OpFinalizeBootstrap).InstanceConfig
c.Assert(icfg, gc.NotNil)
c.Assert(icfg.Tools.Version.String(), gc.Equals, "1.7.3.1-raring-"+arch.HostArch())
}
示例15: TestAutoUploadAfterFailedSync
func (s *BootstrapSuite) TestAutoUploadAfterFailedSync(c *gc.C) {
s.PatchValue(&version.Current.Series, config.LatestLtsSeries())
s.setupAutoUploadTest(c, "1.7.3", "quantal")
// Run command and check for that upload has been run for tools matching
// the current juju version.
opc, errc := runCommand(nullContext(c), envcmd.Wrap(new(BootstrapCommand)))
c.Assert(<-errc, gc.IsNil)
c.Check((<-opc).(dummy.OpPutFile).Env, gc.Equals, "peckham") // verify storage
c.Check((<-opc).(dummy.OpBootstrap).Env, gc.Equals, "peckham")
mcfg := (<-opc).(dummy.OpFinalizeBootstrap).MachineConfig
c.Assert(mcfg, gc.NotNil)
c.Assert(mcfg.Tools.Version.String(), gc.Equals, "1.7.3.1-raring-"+version.Current.Arch)
}