本文整理汇总了Golang中github.com/juju/juju/juju/arch.HostArch函数的典型用法代码示例。如果您正苦于以下问题:Golang HostArch函数的具体用法?Golang HostArch怎么用?Golang HostArch使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了HostArch函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Bootstrap
// Bootstrap is specified in the Environ interface.
func (env *localEnviron) Bootstrap(ctx environs.BootstrapContext, args environs.BootstrapParams) (string, string, environs.BootstrapFinalizer, error) {
if err := ensureNotRoot(); err != nil {
return "", "", nil, err
}
// Make sure there are tools available for the
// host's architecture and series.
if _, err := args.AvailableTools.Match(tools.Filter{
Arch: arch.HostArch(),
Series: version.Current.Series,
}); err != nil {
return "", "", nil, err
}
cfg, err := env.Config().Apply(map[string]interface{}{
// Record the bootstrap IP, so the containers know where to go for storage.
"bootstrap-ip": env.bridgeAddress,
})
if err == nil {
err = env.SetConfig(cfg)
}
if err != nil {
logger.Errorf("failed to apply bootstrap-ip to config: %v", err)
return "", "", nil, err
}
return arch.HostArch(), version.Current.Series, env.finishBootstrap, nil
}
示例2: testFindToolsExact
func (s *toolsSuite) testFindToolsExact(c *gc.C, t common.ToolsStorageGetter, inStorage bool, develVersion bool) {
var called bool
s.PatchValue(common.EnvtoolsFindTools, func(e environs.Environ, major, minor int, stream string, filter coretools.Filter) (list coretools.List, err error) {
called = true
c.Assert(filter.Number, gc.Equals, version.Current.Number)
c.Assert(filter.Series, gc.Equals, version.Current.Series)
c.Assert(filter.Arch, gc.Equals, arch.HostArch())
if develVersion {
c.Assert(stream, gc.Equals, "devel")
} else {
c.Assert(stream, gc.Equals, "released")
}
return nil, errors.NotFoundf("tools")
})
toolsFinder := common.NewToolsFinder(s.State, t, sprintfURLGetter("tools:%s"))
result, err := toolsFinder.FindTools(params.FindToolsParams{
Number: version.Current.Number,
MajorVersion: -1,
MinorVersion: -1,
Series: version.Current.Series,
Arch: arch.HostArch(),
})
c.Assert(err, jc.ErrorIsNil)
if inStorage {
c.Assert(result.Error, gc.IsNil)
c.Assert(called, jc.IsFalse)
} else {
c.Assert(result.Error, gc.ErrorMatches, "tools not found")
c.Assert(called, jc.IsTrue)
}
}
示例3: validateUploadAllowed
// validateUploadAllowed returns an error if an attempt to upload tools should
// not be allowed.
func validateUploadAllowed(env environs.Environ, toolsArch *string) error {
// Now check that the architecture for which we are setting up an
// environment matches that from which we are bootstrapping.
hostArch := arch.HostArch()
// We can't build tools for a different architecture if one is specified.
if toolsArch != nil && *toolsArch != hostArch {
return fmt.Errorf("cannot build tools for %q using a machine running on %q", *toolsArch, hostArch)
}
// If no architecture is specified, ensure the target provider supports instances matching our architecture.
supportedArchitectures, err := env.SupportedArchitectures()
if err != nil {
return fmt.Errorf(
"no packaged tools available and cannot determine environment's supported architectures: %v", err)
}
archSupported := false
for _, arch := range supportedArchitectures {
if hostArch == arch {
archSupported = true
break
}
}
if !archSupported {
envType := env.Config().Type()
return errors.Errorf("environment %q of type %s does not support instances running on %q", env.Config().Name(), envType, hostArch)
}
return nil
}
示例4: TestFindAvailableToolsCompleteNoValidate
func (s *toolsSuite) TestFindAvailableToolsCompleteNoValidate(c *gc.C) {
s.PatchValue(&arch.HostArch, func() string { return arch.AMD64 })
var allTools tools.List
for _, series := range series.SupportedSeries() {
binary := version.Binary{
Number: version.Current.Number,
Series: series,
Arch: arch.HostArch(),
OS: version.Current.OS,
}
allTools = append(allTools, &tools.Tools{
Version: binary,
URL: "http://testing.invalid/tools.tar.gz",
})
}
s.PatchValue(bootstrap.FindTools, func(_ environs.Environ, major, minor int, stream string, f tools.Filter) (tools.List, error) {
return allTools, nil
})
env := newEnviron("foo", useDefaultKeys, nil)
availableTools, err := bootstrap.FindAvailableTools(env, nil, nil, false)
c.Assert(err, jc.ErrorIsNil)
c.Assert(availableTools, gc.HasLen, len(allTools))
c.Assert(env.supportedArchitecturesCount, gc.Equals, 0)
}
示例5: Bootstrap
func (e *bootstrapEnviron) Bootstrap(ctx environs.BootstrapContext, args environs.BootstrapParams) (string, string, environs.BootstrapFinalizer, error) {
e.bootstrapCount++
e.args = args
finalizer := func(_ environs.BootstrapContext, icfg *instancecfg.InstanceConfig) error {
e.finalizerCount++
e.instanceConfig = icfg
return nil
}
return arch.HostArch(), series.HostSeries(), finalizer, nil
}
示例6: FindTools
func (f mockToolsFinder) FindTools(number version.Number, series string, a string) (coretools.List, error) {
v, err := version.ParseBinary(fmt.Sprintf("%s-%s-%s", number, series, arch.HostArch()))
if err != nil {
return nil, err
}
if a != "" {
v.Arch = a
}
return coretools.List{&coretools.Tools{Version: v}}, nil
}
示例7: createRunningContainer
func (s *KVMSuite) createRunningContainer(c *gc.C, name string) kvm.Container {
kvmContainer := s.ContainerFactory.New(name)
network := container.BridgeNetworkConfig("testbr0", 0, nil)
c.Assert(kvmContainer.Start(kvm.StartParams{
Series: "quantal",
Arch: arch.HostArch(),
UserDataFile: "userdata.txt",
Network: network}), gc.IsNil)
return kvmContainer
}
示例8: TestConstraintsValidator
func (s *localJujuTestSuite) TestConstraintsValidator(c *gc.C) {
ctx := envtesting.BootstrapContext(c)
env, err := local.Provider.PrepareForBootstrap(ctx, minimalConfig(c))
c.Assert(err, jc.ErrorIsNil)
validator, err := env.ConstraintsValidator()
c.Assert(err, jc.ErrorIsNil)
hostArch := arch.HostArch()
cons := constraints.MustParse(fmt.Sprintf("arch=%s instance-type=foo tags=bar cpu-power=10 cpu-cores=2", hostArch))
unsupported, err := validator.Validate(cons)
c.Assert(err, jc.ErrorIsNil)
c.Assert(unsupported, jc.SameContents, []string{"cpu-cores", "cpu-power", "instance-type", "tags"})
}
示例9: 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())
}
示例10: testFindTools
func (s *provisionerSuite) testFindTools(c *gc.C, matchArch bool, apiError, logicError error) {
var toolsList = coretools.List{&coretools.Tools{Version: version.Current}}
var called bool
provisioner.PatchFacadeCall(s, s.provisioner, func(request string, args, response interface{}) error {
called = true
c.Assert(request, gc.Equals, "FindTools")
expected := params.FindToolsParams{
Number: version.Current.Number,
Series: version.Current.Series,
MinorVersion: -1,
MajorVersion: -1,
}
if matchArch {
expected.Arch = arch.HostArch()
}
c.Assert(args, gc.Equals, expected)
result := response.(*params.FindToolsResult)
result.List = toolsList
if logicError != nil {
result.Error = common.ServerError(logicError)
}
return apiError
})
var a *string
if matchArch {
arch := arch.HostArch()
a = &arch
}
apiList, err := s.provisioner.FindTools(version.Current.Number, version.Current.Series, a)
c.Assert(called, jc.IsTrue)
if apiError != nil {
c.Assert(err, gc.Equals, apiError)
} else if logicError != nil {
c.Assert(err.Error(), gc.Equals, logicError.Error())
} else {
c.Assert(err, jc.ErrorIsNil)
c.Assert(apiList, jc.SameContents, toolsList)
}
}
示例11: setupAutoUploadTest
func (s *BootstrapSuite) setupAutoUploadTest(c *gc.C, vers, series string) environs.Environ {
s.PatchValue(&envtools.BundleTools, toolstesting.GetMockBundleTools(c))
sourceDir := createToolsSource(c, vAll)
s.PatchValue(&envtools.DefaultBaseURL, sourceDir)
// Change the tools location to be the test location and also
// the version and ensure their later restoring.
// Set the current version to be something for which there are no tools
// so we can test that an upload is forced.
s.PatchValue(&version.Current, version.MustParseBinary(vers+"-"+series+"-"+arch.HostArch()))
// Create home with dummy provider and remove all
// of its envtools.
return resetJujuHome(c, "devenv")
}
示例12: TestConstraintsValidatorVocab
func (s *localJujuTestSuite) TestConstraintsValidatorVocab(c *gc.C) {
env := s.Prepare(c)
validator, err := env.ConstraintsValidator()
c.Assert(err, jc.ErrorIsNil)
hostArch := arch.HostArch()
var invalidArch string
for _, a := range arch.AllSupportedArches {
if a != hostArch {
invalidArch = a
break
}
}
cons := constraints.MustParse(fmt.Sprintf("arch=%s", invalidArch))
_, err = validator.Validate(cons)
c.Assert(err, gc.ErrorMatches, "invalid constraint value: arch="+invalidArch+"\nvalid values are:.*")
}
示例13: UploadFakeTools
// UploadFakeTools uploads fake tools of the architectures in
// s.UploadArches for each LTS release to the specified storage.
func (s *ToolsFixture) UploadFakeTools(c *gc.C, stor storage.Storage, toolsDir, stream string) {
arches := s.UploadArches
if len(arches) == 0 {
arches = []string{arch.HostArch()}
}
var versions []version.Binary
for _, arch := range arches {
v := version.Current
v.Arch = arch
for _, series := range toolsLtsSeries {
v.Series = series
versions = append(versions, v)
}
}
_, err := UploadFakeToolsVersions(stor, toolsDir, stream, versions...)
c.Assert(err, jc.ErrorIsNil)
}
示例14: locallyBuildableTools
// locallyBuildableTools returns the list of tools that
// can be built locally, for series of the same OS.
func locallyBuildableTools() (buildable coretools.List) {
for _, series := range version.SupportedSeries() {
if os, err := version.GetOSFromSeries(series); err != nil || os != version.Current.OS {
continue
}
binary := version.Binary{
Number: version.Current.Number,
Series: series,
Arch: arch.HostArch(),
OS: version.Current.OS,
}
// Increment the build number so we know it's a development build.
binary.Build++
buildable = append(buildable, &coretools.Tools{Version: binary})
}
return buildable
}
示例15: TestMissingToolsUploadFailedError
func (s *BootstrapSuite) TestMissingToolsUploadFailedError(c *gc.C) {
buildToolsTarballAlwaysFails := func(forceVersion *version.Number, stream string) (*sync.BuiltTools, error) {
return nil, fmt.Errorf("an error")
}
s.setupAutoUploadTest(c, "1.7.3", "precise")
s.PatchValue(&sync.BuildToolsTarball, buildToolsTarballAlwaysFails)
ctx, err := coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), "-e", "devenv")
c.Check(coretesting.Stderr(ctx), gc.Equals, fmt.Sprintf(`
Bootstrapping environment "devenv"
Starting new instance for initial state server
Building tools to upload (1.7.3.1-raring-%s)
`[1:], arch.HostArch()))
c.Check(err, gc.ErrorMatches, "failed to bootstrap environment: cannot upload bootstrap tools: an error")
}