// WriteEnvironments creates an environments file with envConfig and certs // from certNames. func WriteEnvironments(c *gc.C, envConfig string, certNames ...string) { envs := osenv.JujuHomePath("environments.yaml") err := ioutil.WriteFile(envs, []byte(envConfig), 0644) c.Assert(err, gc.IsNil) for _, name := range certNames { err := ioutil.WriteFile(osenv.JujuHomePath(name+"-cert.pem"), []byte(CACert), 0600) c.Assert(err, gc.IsNil) err = ioutil.WriteFile(osenv.JujuHomePath(name+"-private-key.pem"), []byte(CAKey), 0600) c.Assert(err, gc.IsNil) } }
// InitJujuHome initializes the charm, environs/config and utils/ssh packages // to use default paths based on the $JUJU_HOME or $HOME environment variables. // This function should be called before calling NewConn or Conn.Deploy. func InitJujuHome() error { jujuHome := osenv.JujuHomeDir() if jujuHome == "" { return stderrors.New( "cannot determine juju home, required environment variables are not set") } osenv.SetJujuHome(jujuHome) charm.CacheDir = osenv.JujuHomePath("charmcache") if err := ssh.LoadClientKeys(osenv.JujuHomePath("ssh")); err != nil { return fmt.Errorf("cannot load ssh client keys: %v", err) } return nil }
func (s *NewAPIClientSuite) TestWithBootstrapConfigAndNoEnvironmentsFile(c *gc.C) { coretesting.MakeSampleJujuHome(c) store := configstore.NewMem() bootstrapEnv(c, coretesting.SampleEnvName, store) info, err := store.ReadInfo(coretesting.SampleEnvName) c.Assert(err, gc.IsNil) c.Assert(info.BootstrapConfig(), gc.NotNil) c.Assert(info.APIEndpoint().Addresses, gc.HasLen, 0) err = os.Remove(osenv.JujuHomePath("environments.yaml")) c.Assert(err, gc.IsNil) apiOpen := func(*api.Info, api.DialOpts) (juju.APIState, error) { return &mockAPIState{}, nil } st, err := juju.NewAPIFromStore(coretesting.SampleEnvName, store, apiOpen) c.Check(err, gc.IsNil) st.Close() }