func (s *filestorageSuite) TestGetRefusesTemp(c *gc.C) { s.createFile(c, ".tmp/test-file") _, err := storage.Get(s.reader, ".tmp/test-file") c.Check(err, gc.NotNil) c.Check(err, jc.Satisfies, os.IsNotExist) s.createFile(c, ".tmp/foo/test-file") _, err = storage.Get(s.reader, ".tmp/foo/test-file") c.Check(err, gc.NotNil) c.Check(err, jc.Satisfies, os.IsNotExist) }
// LoadState reads state from the given storage. func LoadState(stor storage.StorageReader) (*BootstrapState, error) { r, err := storage.Get(stor, StateFile) if err != nil { if errors.IsNotFound(err) { return nil, environs.ErrNotBootstrapped } return nil, err } return loadState(r) }
func storageCopy(source storage.Storage, sourcePath string, target storage.Storage, targetPath string) error { rc, err := storage.Get(source, sourcePath) if err != nil { return err } var buf bytes.Buffer _, err = io.Copy(&buf, rc) rc.Close() if err != nil { return err } return target.Put(targetPath, &buf, int64(buf.Len())) }
func (t *LiveTests) TestBootstrapVerifyStorage(c *gc.C) { // Bootstrap automatically verifies that storage is writable. t.BootstrapOnce(c) environ := t.Env stor := environ.Storage() reader, err := storage.Get(stor, "bootstrap-verify") c.Assert(err, gc.IsNil) defer reader.Close() contents, err := ioutil.ReadAll(reader) c.Assert(err, gc.IsNil) c.Check(string(contents), gc.Equals, "juju-core storage writing verified: ok\n") }
func (s *verifyStorageSuite) TestVerifyStorage(c *gc.C) { ctx := testing.Context(c) environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) c.Assert(err, gc.IsNil) stor := environ.Storage() err = environs.VerifyStorage(stor) c.Assert(err, gc.IsNil) reader, err := storage.Get(stor, environs.VerificationFilename) c.Assert(err, gc.IsNil) defer reader.Close() contents, err := ioutil.ReadAll(reader) c.Assert(err, gc.IsNil) c.Check(string(contents), gc.Equals, "juju-core storage writing verified: ok\n") }
func (suite *StateSuite) TestCreateStateFileWritesEmptyStateFile(c *gc.C) { stor := suite.newStorage(c) url, err := bootstrap.CreateStateFile(stor) c.Assert(err, gc.IsNil) reader, err := storage.Get(stor, bootstrap.StateFile) c.Assert(err, gc.IsNil) data, err := ioutil.ReadAll(reader) c.Assert(err, gc.IsNil) c.Check(string(data), gc.Equals, "") c.Assert(url, gc.NotNil) expectedURL, err := stor.URL(bootstrap.StateFile) c.Assert(err, gc.IsNil) c.Check(url, gc.Equals, expectedURL) }
// CheckEnvironment checks if an environment has a bootstrap-verify // that is written by juju-core commands (as compared to one being // written by Python juju). // // If there is no bootstrap-verify file in the storage, it is still // considered to be a Juju-core environment since early versions have // not written it out. // // Returns InvalidEnvironmentError on failure, nil otherwise. func CheckEnvironment(environ Environ) error { stor := environ.Storage() reader, err := storage.Get(stor, VerificationFilename) if errors.IsNotFound(err) { // When verification file does not exist, this is a juju-core // environment. return nil } else if err != nil { return err } else if content, err := ioutil.ReadAll(reader); err != nil { return err } else if string(content) != verificationContent { return InvalidEnvironmentError } return nil }
func (suite *StateSuite) TestSaveStateWritesStateFile(c *gc.C) { stor := suite.newStorage(c) state := bootstrap.BootstrapState{ StateInstances: []instance.Id{instance.Id("an-instance-id")}, } marshaledState, err := goyaml.Marshal(state) c.Assert(err, gc.IsNil) err = bootstrap.SaveState(stor, &state) c.Assert(err, gc.IsNil) loadedState, err := storage.Get(stor, bootstrap.StateFile) c.Assert(err, gc.IsNil) content, err := ioutil.ReadAll(loadedState) c.Assert(err, gc.IsNil) c.Check(content, gc.DeepEquals, marshaledState) }
func checkRemoveAll(c *gc.C, stor storage.Storage) { contents := []byte("File contents.") aFile := "a-file.txt" err := stor.Put(aFile, bytes.NewBuffer(contents), int64(len(contents))) c.Assert(err, gc.IsNil) err = stor.Put("empty-file", bytes.NewBuffer(nil), 0) c.Assert(err, gc.IsNil) err = stor.RemoveAll() c.Assert(err, gc.IsNil) files, err := storage.List(stor, "") c.Assert(err, gc.IsNil) c.Check(files, gc.HasLen, 0) _, err = storage.Get(stor, aFile) c.Assert(err, gc.NotNil) c.Check(err, gc.ErrorMatches, fmt.Sprintf("file %q not found", aFile)) }
func checkFileHasContents(c *gc.C, stor storage.StorageReader, name string, contents []byte) { r, err := storage.Get(stor, name) c.Assert(err, gc.IsNil) c.Check(r, gc.NotNil) defer r.Close() data, err := ioutil.ReadAll(r) c.Check(err, gc.IsNil) c.Check(data, gc.DeepEquals, contents) url, err := stor.URL(name) c.Assert(err, gc.IsNil) resp, err := http.Get(url) c.Assert(err, gc.IsNil) data, err = ioutil.ReadAll(resp.Body) c.Assert(err, gc.IsNil) defer resp.Body.Close() c.Assert(resp.StatusCode, gc.Equals, http.StatusOK, gc.Commentf("error response: %s", data)) c.Check(data, gc.DeepEquals, contents) }
func (s *filestorageSuite) TestGet(c *gc.C) { expectedpath, data := s.createFile(c, "test-file") _, file := filepath.Split(expectedpath) rc, err := storage.Get(s.reader, file) c.Assert(err, gc.IsNil) defer rc.Close() c.Assert(err, gc.IsNil) b, err := ioutil.ReadAll(rc) c.Assert(err, gc.IsNil) c.Assert(b, gc.DeepEquals, data) // Get on a non-existant path returns errors.NotFound _, err = s.reader.Get("nowhere") c.Assert(err, jc.Satisfies, errors.IsNotFound) // Get on a directory returns errors.NotFound s.createFile(c, "dir/file") _, err = s.reader.Get("dir") c.Assert(err, jc.Satisfies, errors.IsNotFound) }
func (s *EmptyStorageSuite) TestGet(c *gc.C) { f, err := storage.Get(environs.EmptyStorage, "anything") c.Assert(f, gc.IsNil) c.Assert(err, gc.ErrorMatches, `file "anything" not found`) }
func checkFileDoesNotExist(c *gc.C, stor storage.StorageReader, name string) { r, err := storage.Get(stor, name) c.Assert(r, gc.IsNil) c.Assert(err, jc.Satisfies, errors.IsNotFound) }