本文整理汇总了Golang中github.com/juju/juju/cmd/envcmd.Wrap函数的典型用法代码示例。如果您正苦于以下问题:Golang Wrap函数的具体用法?Golang Wrap怎么用?Golang Wrap使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Wrap函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: testSSHCommandHostAddressRetry
func (s *SSHSuite) testSSHCommandHostAddressRetry(c *gc.C, proxy bool) {
m := s.makeMachines(1, c, false)
ctx := coretesting.Context(c)
var called int
next := func() bool {
called++
return called < 2
}
attemptStarter := &callbackAttemptStarter{next: next}
s.PatchValue(&sshHostFromTargetAttemptStrategy, attemptStarter)
// Ensure that the ssh command waits for a public address, or the attempt
// strategy's Done method returns false.
args := []string{"--proxy=" + fmt.Sprint(proxy), "0"}
code := cmd.Main(envcmd.Wrap(&SSHCommand{}), ctx, args)
c.Check(code, gc.Equals, 1)
c.Assert(called, gc.Equals, 2)
called = 0
attemptStarter.next = func() bool {
called++
if called > 1 {
s.setAddresses(m[0], c)
}
return true
}
code = cmd.Main(envcmd.Wrap(&SSHCommand{}), ctx, args)
c.Check(code, gc.Equals, 0)
c.Assert(called, gc.Equals, 2)
}
示例2: TestBootstrapPropagatesEnvErrors
// In the case where we cannot examine an environment, we want the
// error to propagate back up to the user.
func (s *BootstrapSuite) TestBootstrapPropagatesEnvErrors(c *gc.C) {
//TODO(bogdanteleaga): fix this for windows once permissions are fixed
if runtime.GOOS == "windows" {
c.Skip("bug 1403084: this is very platform specific. When/if we will support windows state machine, this will probably be rewritten.")
}
const envName = "devenv"
env := resetJujuHome(c, envName)
defaultSeriesVersion := version.Current
defaultSeriesVersion.Series = config.PreferredSeries(env.Config())
// Force a dev version by having a non zero build number.
// This is because we have not uploaded any tools and auto
// upload is only enabled for dev versions.
defaultSeriesVersion.Build = 1234
s.PatchValue(&version.Current, defaultSeriesVersion)
s.PatchValue(&environType, func(string) (string, error) { return "", nil })
_, err := coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), "-e", envName)
c.Assert(err, jc.ErrorIsNil)
// Change permissions on the jenv file to simulate some kind of
// unexpected error when trying to read info from the environment
jenvFile := gitjujutesting.HomePath(".juju", "environments", envName+".jenv")
err = os.Chmod(jenvFile, os.FileMode(0200))
c.Assert(err, jc.ErrorIsNil)
// The second bootstrap should fail b/c of the propogated error
_, err = coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), "-e", envName)
c.Assert(err, gc.ErrorMatches, "there was an issue examining the environment: .*")
}
示例3: TestBootstrapPropagatesEnvErrors
// In the case where we cannot examine an environment, we want the
// error to propagate back up to the user.
func (s *BootstrapSuite) TestBootstrapPropagatesEnvErrors(c *gc.C) {
env := resetJujuHome(c)
defaultSeriesVersion := version.Current
defaultSeriesVersion.Series = config.PreferredSeries(env.Config())
// Force a dev version by having a non zero build number.
// This is because we have not uploaded any tools and auto
// upload is only enabled for dev versions.
defaultSeriesVersion.Build = 1234
s.PatchValue(&version.Current, defaultSeriesVersion)
const envName = "peckham"
_, err := coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), "-e", envName)
c.Assert(err, gc.IsNil)
// Change permissions on the jenv file to simulate some kind of
// unexpected error when trying to read info from the environment
jenvFile := gitjujutesting.HomePath(".juju", "environments", envName+".jenv")
err = os.Chmod(jenvFile, os.FileMode(0200))
c.Assert(err, gc.IsNil)
// The second bootstrap should fail b/c of the propogated error
_, err = coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), "-e", envName)
c.Assert(err, gc.ErrorMatches, "there was an issue examining the environment: .*")
}
示例4: TestDebugHooksCommand
func (s *DebugHooksSuite) TestDebugHooksCommand(c *gc.C) {
//TODO(bogdanteleaga): Fix once debughooks are supported on windows
if runtime.GOOS == "windows" {
c.Skip("bug 1403084: Skipping on windows for now")
}
machines := s.makeMachines(3, c, true)
dummy := s.AddTestingCharm(c, "dummy")
srv := s.AddTestingService(c, "mysql", dummy)
s.addUnit(srv, machines[0], c)
srv = s.AddTestingService(c, "mongodb", dummy)
s.addUnit(srv, machines[1], c)
s.addUnit(srv, machines[2], c)
for i, t := range debugHooksTests {
c.Logf("test %d: %s\n\t%s\n", i, t.info, t.args)
ctx := coretesting.Context(c)
debugHooksCmd := &debugHooksCommand{}
debugHooksCmd.proxy = true
err := envcmd.Wrap(debugHooksCmd).Init(t.args)
if err == nil {
err = envcmd.Wrap(debugHooksCmd).Run(ctx)
}
if t.error != "" {
c.Assert(err, gc.ErrorMatches, t.error)
} else {
c.Assert(err, jc.ErrorIsNil)
}
}
}
示例5: Main
// Main registers subcommands for the juju-metadata executable, and hands over control
// to the cmd package. This function is not redundant with main, because it
// provides an entry point for testing with arbitrary command line arguments.
func Main(args []string) {
ctx, err := cmd.DefaultContext()
if err != nil {
fmt.Fprintf(os.Stderr, "error: %v\n", err)
os.Exit(2)
}
if err := juju.InitJujuHome(); err != nil {
fmt.Fprintf(os.Stderr, "error: %s\n", err)
os.Exit(2)
}
metadatacmd := cmd.NewSuperCommand(cmd.SuperCommandParams{
Name: "metadata",
UsagePrefix: "juju",
Doc: metadataDoc,
Purpose: "tools for generating and validating image and tools metadata",
Log: &cmd.Log{}})
metadatacmd.Register(envcmd.Wrap(&ValidateImageMetadataCommand{}))
metadatacmd.Register(envcmd.Wrap(&ImageMetadataCommand{}))
metadatacmd.Register(envcmd.Wrap(&ToolsMetadataCommand{}))
metadatacmd.Register(envcmd.Wrap(&ValidateToolsMetadataCommand{}))
metadatacmd.Register(&SignMetadataCommand{})
os.Exit(cmd.Main(metadatacmd, ctx, args[1:]))
}
示例6: TestRemoveUser
func (s *RemoveUserSuite) TestRemoveUser(c *gc.C) {
_, err := testing.RunCommand(c, envcmd.Wrap(&UserAddCommand{}), "foobar")
c.Assert(err, gc.IsNil)
_, err = testing.RunCommand(c, envcmd.Wrap(&RemoveUserCommand{}), "foobar")
c.Assert(err, gc.IsNil)
}
示例7: TestResetPreviousUpgrade
func (s *UpgradeJujuSuite) TestResetPreviousUpgrade(c *gc.C) {
fakeAPI := NewFakeUpgradeJujuAPI(c, s.State)
fakeAPI.patch(s)
ctx := coretesting.Context(c)
var stdin bytes.Buffer
ctx.Stdin = &stdin
run := func(answer string, expect bool, args ...string) {
stdin.Reset()
if answer != "" {
stdin.WriteString(answer)
}
fakeAPI.reset()
cmd := &upgradeJujuCommand{}
err := coretesting.InitCommand(envcmd.Wrap(cmd),
append([]string{"--reset-previous-upgrade"}, args...))
c.Assert(err, jc.ErrorIsNil)
err = envcmd.Wrap(cmd).Run(ctx)
if expect {
c.Assert(err, jc.ErrorIsNil)
} else {
c.Assert(err, gc.ErrorMatches, "previous upgrade not reset and no new upgrade triggered")
}
c.Assert(fakeAPI.abortCurrentUpgradeCalled, gc.Equals, expect)
expectedVersion := version.Number{}
if expect {
expectedVersion = fakeAPI.nextVersion.Number
}
c.Assert(fakeAPI.setVersionCalledWith, gc.Equals, expectedVersion)
}
const expectUpgrade = true
const expectNoUpgrade = false
// EOF on stdin - equivalent to answering no.
run("", expectNoUpgrade)
// -y on command line - no confirmation required
run("", expectUpgrade, "-y")
// --yes on command line - no confirmation required
run("", expectUpgrade, "--yes")
// various ways of saying "yes" to the prompt
for _, answer := range []string{"y", "Y", "yes", "YES"} {
run(answer, expectUpgrade)
}
// various ways of saying "no" to the prompt
for _, answer := range []string{"n", "N", "no", "foo"} {
run(answer, expectNoUpgrade)
}
}
示例8: TestChangeAsCommandPair
func (s *SetEnvironmentSuite) TestChangeAsCommandPair(c *gc.C) {
_, err := testing.RunCommand(c, envcmd.Wrap(&SetEnvironmentCommand{}), "default-series=raring")
c.Assert(err, gc.IsNil)
context, err := testing.RunCommand(c, envcmd.Wrap(&GetEnvironmentCommand{}), "default-series")
c.Assert(err, gc.IsNil)
output := strings.TrimSpace(testing.Stdout(context))
c.Assert(output, gc.Equals, "raring")
}
示例9: TestBootstrapTwice
func (s *BootstrapSuite) TestBootstrapTwice(c *gc.C) {
const envName = "devenv"
s.patchVersionAndSeries(c, envName)
_, err := coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), "-e", envName)
c.Assert(err, jc.ErrorIsNil)
_, err = coretesting.RunCommand(c, envcmd.Wrap(&BootstrapCommand{}), "-e", envName)
c.Assert(err, gc.ErrorMatches, "environment is already bootstrapped")
}
示例10: NewPoolSuperCommand
// NewPoolSuperCommand creates the storage pool super subcommand and
// registers the subcommands that it supports.
func NewPoolSuperCommand() cmd.Command {
poolcmd := jujucmd.NewSubSuperCommand(cmd.SuperCommandParams{
Name: "pool",
Doc: poolCmdDoc,
UsagePrefix: "juju storage",
Purpose: poolCmdPurpose,
})
poolcmd.Register(envcmd.Wrap(&PoolListCommand{}))
poolcmd.Register(envcmd.Wrap(&PoolCreateCommand{}))
return poolcmd
}
示例11: NewSuperCommand
// NewSuperCommand creates the user supercommand and registers the subcommands
// that it supports.
func NewSuperCommand() cmd.Command {
machineCmd := cmd.NewSuperCommand(cmd.SuperCommandParams{
Name: "machine",
Doc: machineCommandDoc,
UsagePrefix: "juju",
Purpose: machineCommandPurpose,
})
machineCmd.Register(envcmd.Wrap(&AddCommand{}))
machineCmd.Register(envcmd.Wrap(&RemoveCommand{}))
return machineCmd
}
示例12: NewSuperCommand
// NewSuperCommand creates the user supercommand and registers the subcommands
// that it supports.
func NewSuperCommand() cmd.Command {
usercmd := cmd.NewSuperCommand(cmd.SuperCommandParams{
Name: "cached-images",
Doc: cachedimagesCommandDoc,
UsagePrefix: "juju",
Purpose: cachedImagesCommandPurpose,
})
usercmd.Register(envcmd.Wrap(&DeleteCommand{}))
usercmd.Register(envcmd.Wrap(&ListCommand{}))
return usercmd
}
示例13: TestNoEndpoints
func (s *EndpointSuite) TestNoEndpoints(c *gc.C) {
// Run command once to create store in test.
_, err := coretesting.RunCommand(c, envcmd.Wrap(&EndpointCommand{}))
c.Assert(err, gc.IsNil)
info := s.APIInfo(c)
s.setAPIAddresses(c)
ctx, err := coretesting.RunCommand(c, envcmd.Wrap(&EndpointCommand{}))
c.Assert(err, gc.IsNil)
c.Assert(ctx.Stderr.(*bytes.Buffer).String(), gc.Equals, "")
output := string(ctx.Stdout.(*bytes.Buffer).Bytes())
c.Assert(output, gc.Equals, fmt.Sprintf("%s\n", info.Addrs[0]))
}
示例14: TestBlockUpgradeInProgress
func (s *UpgradeJujuSuite) TestBlockUpgradeInProgress(c *gc.C) {
fakeAPI := NewFakeUpgradeJujuAPI(c, s.State)
fakeAPI.setVersionErr = common.OperationBlockedError("the operation has been blocked")
fakeAPI.patch(s)
cmd := &upgradeJujuCommand{}
err := coretesting.InitCommand(envcmd.Wrap(cmd), []string{})
c.Assert(err, jc.ErrorIsNil)
// Block operation
s.BlockAllChanges(c, "TestBlockUpgradeInProgress")
err = envcmd.Wrap(cmd).Run(coretesting.Context(c))
s.AssertBlocked(c, err, ".*To unblock changes.*")
}
示例15: NewSuperCommand
// NewSuperCommand returns a new action super-command.
func NewSuperCommand() cmd.Command {
actionCmd := cmd.NewSuperCommand(
cmd.SuperCommandParams{
Name: "action",
Doc: actionDoc,
UsagePrefix: "juju",
Purpose: actionPurpose,
})
actionCmd.Register(envcmd.Wrap(&DefinedCommand{}))
actionCmd.Register(envcmd.Wrap(&DoCommand{}))
actionCmd.Register(envcmd.Wrap(&FetchCommand{}))
actionCmd.Register(envcmd.Wrap(&StatusCommand{}))
return actionCmd
}