func (s *bootstrapSuite) TestBootstrap(c *gc.C) { args := s.getArgs(c) args.Host = "ubuntu@" + args.Host defer fakeSSH{SkipDetection: true}.install(c).Restore() err := manual.Bootstrap(args) c.Assert(err, gc.IsNil) bootstrapState, err := bootstrap.LoadState(s.env.Storage()) c.Assert(err, gc.IsNil) c.Assert( bootstrapState.StateInstances, gc.DeepEquals, []instance.Id{manual.BootstrapInstanceId}, ) // Do it all again; this should work, despite the fact that // there's a bootstrap state file. Existence for that is // checked in general bootstrap code (environs/bootstrap). defer fakeSSH{SkipDetection: true}.install(c).Restore() err = manual.Bootstrap(args) c.Assert(err, gc.IsNil) // We *do* check that the machine has no juju* upstart jobs, though. defer fakeSSH{ Provisioned: true, SkipDetection: true, SkipProvisionAgent: true, }.install(c).Restore() err = manual.Bootstrap(args) c.Assert(err, gc.Equals, manual.ErrProvisioned) }
func (s *bootstrapSuite) TestBootstrapNoMatchingTools(c *gc.C) { // Empty tools list. args := s.getArgs(c) args.PossibleTools = nil defer fakeSSH{SkipDetection: true, SkipProvisionAgent: true}.install(c).Restore() c.Assert(manual.Bootstrap(args), gc.ErrorMatches, "possible tools is empty") // Non-empty list, but none that match the series/arch. args = s.getArgs(c) args.Series = "edgy" defer fakeSSH{SkipDetection: true, SkipProvisionAgent: true}.install(c).Restore() c.Assert(manual.Bootstrap(args), gc.ErrorMatches, "no matching tools available") }
func (s *bootstrapSuite) testBootstrapToolsURL(c *gc.C, toolsURL, expectedURL string) { s.PatchValue(manual.ProvisionMachineAgent, func(host string, mcfg *cloudinit.MachineConfig, w io.Writer) error { c.Assert(mcfg.Tools.URL, gc.Equals, expectedURL) return nil }) args := s.getArgs(c) args.PossibleTools[0].URL = toolsURL defer fakeSSH{SkipDetection: true}.install(c).Restore() err := manual.Bootstrap(args) c.Assert(err, gc.IsNil) }
func (s *bootstrapSuite) TestBootstrapScriptFailure(c *gc.C) { args := s.getArgs(c) args.Host = "ubuntu@" + args.Host defer fakeSSH{SkipDetection: true, ProvisionAgentExitCode: 1}.install(c).Restore() err := manual.Bootstrap(args) c.Assert(err, gc.NotNil) // Since the script failed, the state file should have been // removed from storage. _, err = bootstrap.LoadState(s.env.Storage()) c.Check(err, gc.Equals, environs.ErrNotBootstrapped) }
func (s *bootstrapSuite) TestBootstrapNilEnviron(c *gc.C) { args := s.getArgs(c) args.Environ = nil c.Assert(manual.Bootstrap(args), gc.ErrorMatches, "environ argument is nil") }
func (s *bootstrapSuite) TestBootstrapEmptyHost(c *gc.C) { args := s.getArgs(c) args.Host = "" c.Assert(manual.Bootstrap(args), gc.ErrorMatches, "host argument is empty") }
func (s *bootstrapSuite) TestBootstrapEmptyDataDir(c *gc.C) { args := s.getArgs(c) args.DataDir = "" c.Assert(manual.Bootstrap(args), gc.ErrorMatches, "data-dir argument is empty") }