本文整理汇总了Golang中github.com/juju/core/environs/storage.Storage.Put方法的典型用法代码示例。如果您正苦于以下问题:Golang Storage.Put方法的具体用法?Golang Storage.Put怎么用?Golang Storage.Put使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/juju/core/environs/storage.Storage
的用法示例。
在下文中一共展示了Storage.Put方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: restoreBootstrapVerificationFile
func restoreBootstrapVerificationFile(c *gc.C, stor storage.Storage) {
content := "juju-core storage writing verified: ok\n"
contentReader := strings.NewReader(content)
err := stor.Put("bootstrap-verify", contentReader,
int64(len(content)))
c.Assert(err, gc.IsNil)
}
示例2: VerifyStorage
// VerifyStorage writes the bootstrap init file to the storage to indicate
// that the storage is writable.
func VerifyStorage(stor storage.Storage) error {
reader := strings.NewReader(verificationContent)
err := stor.Put(VerificationFilename, reader,
int64(len(verificationContent)))
if err != nil {
logger.Warningf("failed to write bootstrap-verify file: %v", err)
return VerifyStorageError
}
return nil
}
示例3: uploadMetadataFile
func uploadMetadataFile(stor storage.Storage, metadataDir, fileName string, size int64) error {
fullSourceFilename := filepath.Join(metadataDir, fileName)
logger.Debugf("uploading metadata file %s", fileName)
f, err := os.Open(fullSourceFilename)
if err != nil {
return err
}
defer f.Close()
destMetadataDir := path.Join(storage.BaseImagesPath, simplestreams.StreamsDir)
return stor.Put(path.Join(destMetadataDir, fileName), f, size)
}
示例4: UseTestImageData
func UseTestImageData(stor storage.Storage, cred *identity.Credentials) {
// Put some image metadata files into the public storage.
t := template.Must(template.New("").Parse(indexData))
var metadata bytes.Buffer
if err := t.Execute(&metadata, cred); err != nil {
panic(fmt.Errorf("cannot generate index metdata: %v", err))
}
data := metadata.Bytes()
stor.Put(simplestreams.DefaultIndexPath+".json", bytes.NewReader(data), int64(len(data)))
stor.Put(
productMetadatafile, strings.NewReader(imagesData), int64(len(imagesData)))
}
示例5: storageCopy
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()))
}
示例6: uploadFakeToolsVersion
func uploadFakeToolsVersion(stor storage.Storage, vers version.Binary) (*coretools.Tools, error) {
logger.Infof("uploading FAKE tools %s", vers)
tgz, checksum := coretesting.TarGz(
coretesting.NewTarFile("jujud", 0777, "jujud contents "+vers.String()))
size := int64(len(tgz))
name := envtools.StorageName(vers)
if err := stor.Put(name, bytes.NewReader(tgz), size); err != nil {
return nil, err
}
url, err := stor.URL(name)
if err != nil {
return nil, err
}
return &coretools.Tools{URL: url, Version: vers, Size: size, SHA256: checksum}, nil
}
示例7: checkRemoveAll
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))
}
示例8: writeMetadata
// writeMetadata generates some basic simplestreams metadata using the specified cloud and image details and writes
// it to the supplied store.
func writeMetadata(metadata []*ImageMetadata, cloudSpec []simplestreams.CloudSpec,
metadataStore storage.Storage) error {
index, products, err := MarshalImageMetadataJSON(metadata, cloudSpec, time.Now())
if err != nil {
return err
}
metadataInfo := []MetadataFile{
{simplestreams.UnsignedIndex, index},
{ProductMetadataPath, products},
}
for _, md := range metadataInfo {
err = metadataStore.Put(
filepath.Join(storage.BaseImagesPath, md.Path), bytes.NewReader(md.Data), int64(len(md.Data)))
if err != nil {
return err
}
}
return nil
}
示例9: UploadToStorage
// UploadToStorage uploads tools and metadata for the specified versions to storage.
func UploadToStorage(c *gc.C, stor storage.Storage, versions ...version.Binary) map[version.Binary]string {
uploaded := map[version.Binary]string{}
if len(versions) == 0 {
return uploaded
}
var err error
for _, vers := range versions {
filename := fmt.Sprintf("tools/releases/tools-%s.tar.gz", vers.String())
// Put a file in images since the dummy storage provider requires a
// file to exist before the URL can be found. This is to ensure it behaves
// the same way as MAAS.
err = stor.Put(filename, strings.NewReader("dummy"), 5)
c.Assert(err, gc.IsNil)
uploaded[vers], err = stor.URL(filename)
c.Assert(err, gc.IsNil)
}
objects := generateMetadata(c, versions...)
for _, object := range objects {
toolspath := path.Join("tools", object.path)
err = stor.Put(toolspath, bytes.NewReader(object.data), int64(len(object.data)))
c.Assert(err, gc.IsNil)
}
return uploaded
}