func (s *configFunctionalSuite) TestUsingTCPRemote(c *gc.C) { if s.client == nil { c.Skip("LXD not running locally") } cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", Remote: lxdclient.Local, } nonlocal, err := cfg.UsingTCPRemote() c.Assert(err, jc.ErrorIsNil) checkValidRemote(c, &nonlocal.Remote) c.Check(nonlocal, jc.DeepEquals, lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", Remote: lxdclient.Remote{ Name: lxdclient.Local.Name, Host: nonlocal.Remote.Host, Cert: nonlocal.Remote.Cert, }, }) // TODO(ericsnow) Check that the server has the certs. }
func (s *configSuite) TestValidateMissingRemote(c *gc.C) { cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", } err := cfg.Validate() c.Check(err, jc.Satisfies, errors.IsNotValid) }
func (s *configSuite) TestValidateOkay(c *gc.C) { cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", Remote: s.remote, } err := cfg.Validate() c.Check(err, jc.ErrorIsNil) }
func (s *configSuite) TestWithDefaultsOkay(c *gc.C) { cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", Remote: s.remote, } updated, err := cfg.WithDefaults() c.Assert(err, jc.ErrorIsNil) c.Check(updated, jc.DeepEquals, cfg) }
func (s *configSuite) TestUsingTCPRemoteNoop(c *gc.C) { cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", Remote: s.remote, } nonlocal, err := cfg.UsingTCPRemote() c.Assert(err, jc.ErrorIsNil) c.Check(nonlocal, jc.DeepEquals, cfg) }
func (s *configFunctionalSuite) TestWrite(c *gc.C) { dirname := c.MkDir() cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: dirname, Remote: s.remote, } err := cfg.Write() c.Assert(err, jc.ErrorIsNil) checkFiles(c, cfg) }
func (s *configSuite) TestWithDefaultsMissingRemote(c *gc.C) { cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", } updated, err := cfg.WithDefaults() c.Assert(err, jc.ErrorIsNil) c.Check(updated, jc.DeepEquals, lxdclient.Config{ Namespace: "my-ns", Dirname: "some-dir", Remote: lxdclient.Local, }) }
func (s *configSuite) TestWithDefaultsMissingDirname(c *gc.C) { cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "", Remote: s.remote, } updated, err := cfg.WithDefaults() c.Assert(err, jc.ErrorIsNil) c.Check(updated, jc.DeepEquals, lxdclient.Config{ Namespace: "my-ns", // TODO(ericsnow) This will change on Windows once the LXD // code is cross-platform. Dirname: "/.config/lxc", // IsolationSuite sets $HOME to "". Remote: s.remote, }) }
func (s *configSuite) TestWithDefaultsMissingDirname(c *gc.C) { cfg := lxdclient.Config{ Namespace: "my-ns", Dirname: "", Remote: s.remote, } updated, err := cfg.WithDefaults() c.Assert(err, jc.ErrorIsNil) c.Logf("path.Clean of dirname is %s (dirname is %s)", path.Clean(updated.Dirname), updated.Dirname) c.Check(updated, jc.DeepEquals, lxdclient.Config{ Namespace: "my-ns", // TODO(ericsnow) This will change on Windows once the LXD // code is cross-platform. Dirname: "/.config/lxc", Remote: s.remote, }) }
// clientConfig builds a LXD Config based on the env config and returns it. func (c *environConfig) clientConfig() (lxdclient.Config, error) { remote := lxdclient.Remote{ Name: "juju-remote", Host: c.remoteURL(), } if c.clientCert() != "" { certPEM := []byte(c.clientCert()) keyPEM := []byte(c.clientKey()) cert := lxdclient.NewCert(certPEM, keyPEM) cert.Name = fmt.Sprintf("juju cert for env %q", c.Name()) remote.Cert = &cert } cfg := lxdclient.Config{ Namespace: c.namespace(), Dirname: lxdclient.ConfigPath("juju-" + c.namespace()), Remote: remote, } cfg, err := cfg.WithDefaults() if err != nil { return cfg, errors.Trace(err) } return cfg, nil }
func (s *configSuite) TestWriteInvalid(c *gc.C) { var cfg lxdclient.Config err := cfg.Write() c.Check(err, jc.Satisfies, errors.IsNotValid) }
func (s *configSuite) TestValidateZeroValue(c *gc.C) { var cfg lxdclient.Config err := cfg.Validate() c.Check(err, jc.Satisfies, errors.IsNotValid) }