本文整理汇总了Golang中launchpad/net/juju-core/environs.Storage类的典型用法代码示例。如果您正苦于以下问题:Golang Storage类的具体用法?Golang Storage怎么用?Golang Storage使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Storage类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: copyOne
func copyOne(
tool *state.Tools, source environs.StorageReader,
target environs.Storage, ctx *cmd.Context,
) error {
toolsName := tools.StorageName(tool.Binary)
fmt.Fprintf(ctx.Stderr, "copying %v", toolsName)
srcFile, err := source.Get(toolsName)
if err != nil {
return err
}
defer srcFile.Close()
// We have to buffer the content, because Put requires the content
// length, but Get only returns us a ReadCloser
buf := &bytes.Buffer{}
nBytes, err := io.Copy(buf, srcFile)
if err != nil {
return err
}
log.Infof("downloaded %v (%dkB), uploading", toolsName, (nBytes+512)/1024)
fmt.Fprintf(ctx.Stderr, ", download %dkB, uploading\n", (nBytes+512)/1024)
if err := target.Put(toolsName, buf, nBytes); err != nil {
return err
}
return nil
}
示例2: restoreBootstrapVerificationFile
func restoreBootstrapVerificationFile(c *C, storage environs.Storage) {
content := "juju-core storage writing verified: ok\n"
contentReader := strings.NewReader(content)
err := storage.Put("bootstrap-verify", contentReader,
int64(len(content)))
c.Assert(err, IsNil)
}
示例3: upload
func upload(s environs.Storage, v string) {
vers := version.MustParseBinary(v)
p := environs.ToolsStoragePath(vers)
err := s.Put(p, strings.NewReader(v), int64(len(v)))
if err != nil {
panic(err)
}
}
示例4: RemoveTools
// RemoveTools deletes all tools from the supplied storage.
func RemoveTools(c *C, storage environs.Storage) {
names, err := storage.List("tools/juju-")
c.Assert(err, IsNil)
c.Logf("removing files: %v", names)
for _, name := range names {
err = storage.Remove(name)
c.Check(err, IsNil)
}
}
示例5: setupSavedState
func (suite *StateSuite) setupSavedState(c *C, storage environs.Storage) environs.BootstrapState {
arch := "amd64"
state := environs.BootstrapState{
StateInstances: []instance.Id{instance.Id("an-instance-id")},
Characteristics: []instance.HardwareCharacteristics{{Arch: &arch}}}
content, err := goyaml.Marshal(state)
c.Assert(err, IsNil)
err = storage.Put(environs.StateFile, ioutil.NopCloser(bytes.NewReader(content)), int64(len(content)))
c.Assert(err, IsNil)
return state
}
示例6: RemoveFakeTools
// RemoveFakeTools deletes the fake tools from the supplied storage.
func RemoveFakeTools(c *C, storage environs.Storage) {
toolsVersion := version.Current
name := tools.StorageName(toolsVersion)
err := storage.Remove(name)
c.Check(err, IsNil)
if version.Current.Series != config.DefaultSeries {
toolsVersion.Series = config.DefaultSeries
name := tools.StorageName(toolsVersion)
err := storage.Remove(name)
c.Check(err, IsNil)
}
}
示例7: uploadFakeToolsVersion
func uploadFakeToolsVersion(storage environs.Storage, vers version.Binary) (*state.Tools, error) {
data := vers.String()
name := tools.StorageName(vers)
log.Noticef("environs/testing: uploading FAKE tools %s", vers)
if err := storage.Put(name, strings.NewReader(data), int64(len(data))); err != nil {
return nil, err
}
url, err := storage.URL(name)
if err != nil {
return nil, err
}
return &state.Tools{Binary: vers, URL: url}, nil
}
示例8: storageCopy
func storageCopy(source environs.Storage, sourcePath string, target environs.Storage, targetPath string) error {
rc, err := source.Get(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()))
}
示例9: checkRemoveAll
func checkRemoveAll(c *C, storage environs.Storage) {
contents := []byte("File contents.")
aFile := "a-file.txt"
err := storage.Put(aFile, bytes.NewBuffer(contents), int64(len(contents)))
c.Assert(err, IsNil)
err = storage.Put("empty-file", bytes.NewBuffer(nil), 0)
c.Assert(err, IsNil)
err = storage.RemoveAll()
c.Assert(err, IsNil)
files, err := storage.List("")
c.Assert(err, IsNil)
c.Check(files, HasLen, 0)
_, err = storage.Get(aFile)
c.Assert(err, NotNil)
c.Check(err, ErrorMatches, fmt.Sprintf("file %q not found", aFile))
}