本文整理汇总了Golang中github.com/juju/juju/environs/tools.ReadAllMetadata函数的典型用法代码示例。如果您正苦于以下问题:Golang ReadAllMetadata函数的具体用法?Golang ReadAllMetadata怎么用?Golang ReadAllMetadata使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ReadAllMetadata函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestReadWriteMetadataSingleStream
func (*metadataHelperSuite) TestReadWriteMetadataSingleStream(c *gc.C) {
metadata := map[string][]*tools.ToolsMetadata{
"released": {{
Release: "precise",
Version: "1.2.3",
Arch: "amd64",
Path: "path1",
}, {
Release: "raring",
Version: "1.2.3",
Arch: "amd64",
Path: "path2",
}},
}
stor, err := filestorage.NewFileStorageWriter(c.MkDir())
c.Assert(err, jc.ErrorIsNil)
out, err := tools.ReadAllMetadata(stor)
c.Assert(err, jc.ErrorIsNil) // non-existence is not an error
c.Assert(out, gc.HasLen, 0)
err = tools.WriteMetadata(stor, metadata, []string{"released"}, tools.DoNotWriteMirrors)
c.Assert(err, jc.ErrorIsNil)
// Read back what was just written.
out, err = tools.ReadAllMetadata(stor)
c.Assert(err, jc.ErrorIsNil)
for _, outMetadata := range out {
for _, md := range outMetadata {
// FullPath is set by ReadAllMetadata.
c.Assert(md.FullPath, gc.Not(gc.Equals), "")
md.FullPath = ""
}
}
c.Assert(out, jc.DeepEquals, metadata)
}
示例2: writeMetadataMultipleStream
func (*metadataHelperSuite) writeMetadataMultipleStream(c *gc.C) (storage.StorageReader, map[string][]*tools.ToolsMetadata) {
metadata := map[string][]*tools.ToolsMetadata{
"released": {{
Release: "precise",
Version: "1.2.3",
Arch: "amd64",
Path: "path1",
}},
"proposed": {{
Release: "raring",
Version: "1.2.3",
Arch: "amd64",
Path: "path2",
}},
}
stor, err := filestorage.NewFileStorageWriter(c.MkDir())
c.Assert(err, jc.ErrorIsNil)
out, err := tools.ReadAllMetadata(stor)
c.Assert(out, gc.HasLen, 0)
c.Assert(err, jc.ErrorIsNil) // non-existence is not an error
err = tools.WriteMetadata(stor, metadata, []string{"released", "proposed"}, tools.DoNotWriteMirrors)
c.Assert(err, jc.ErrorIsNil)
return stor, metadata
}
示例3: TestReadMetadataPrefersNewIndex
func (*metadataHelperSuite) TestReadMetadataPrefersNewIndex(c *gc.C) {
if runtime.GOOS == "windows" {
c.Skip("Skipped for now because of introduced regression")
}
metadataDir := c.MkDir()
// Generate metadata and rename index to index.json
metadata := map[string][]*tools.ToolsMetadata{
"proposed": {{
Release: "precise",
Version: "1.2.3",
Arch: "amd64",
Path: "path1",
}},
"released": {{
Release: "trusty",
Version: "1.2.3",
Arch: "amd64",
Path: "path1",
}},
}
stor, err := filestorage.NewFileStorageWriter(metadataDir)
c.Assert(err, jc.ErrorIsNil)
err = tools.WriteMetadata(stor, metadata, []string{"proposed", "released"}, tools.DoNotWriteMirrors)
c.Assert(err, jc.ErrorIsNil)
err = os.Rename(
filepath.Join(metadataDir, "tools", "streams", "v1", "index2.json"),
filepath.Join(metadataDir, "tools", "streams", "v1", "index.json"),
)
c.Assert(err, jc.ErrorIsNil)
// Generate different metadata with index2.json
metadata = map[string][]*tools.ToolsMetadata{
"released": {{
Release: "precise",
Version: "1.2.3",
Arch: "amd64",
Path: "path1",
}},
}
err = tools.WriteMetadata(stor, metadata, []string{"released"}, tools.DoNotWriteMirrors)
c.Assert(err, jc.ErrorIsNil)
// Read back all metadata, expecting to find metadata in index2.json.
out, err := tools.ReadAllMetadata(stor)
for _, outMetadata := range out {
for _, md := range outMetadata {
// FullPath is set by ReadAllMetadata.
c.Assert(md.FullPath, gc.Not(gc.Equals), "")
md.FullPath = ""
}
}
c.Assert(out, jc.DeepEquals, metadata)
}
示例4: TestReadWriteMetadataMultipleStream
func (s *metadataHelperSuite) TestReadWriteMetadataMultipleStream(c *gc.C) {
stor, metadata := s.writeMetadataMultipleStream(c)
// Read back what was just written.
out, err := tools.ReadAllMetadata(stor)
c.Assert(err, jc.ErrorIsNil)
for _, outMetadata := range out {
for _, md := range outMetadata {
// FullPath is set by ReadAllMetadata.
c.Assert(md.FullPath, gc.Not(gc.Equals), "")
md.FullPath = ""
}
}
c.Assert(out, jc.DeepEquals, metadata)
}
示例5: mergeAndWriteMetadata
// This is essentially the same as tools.MergeAndWriteMetadata, but also
// resolves metadata for existing tools by fetching them and computing
// size/sha256 locally.
func mergeAndWriteMetadata(
stor storage.Storage, toolsDir, stream string, clean bool, toolsList coretools.List, writeMirrors envtools.ShouldWriteMirrors,
) error {
existing, err := envtools.ReadAllMetadata(stor)
if err != nil {
return err
}
if clean {
delete(existing, stream)
}
metadata := envtools.MetadataFromTools(toolsList, toolsDir)
var mergedMetadata []*envtools.ToolsMetadata
if mergedMetadata, err = envtools.MergeMetadata(metadata, existing[stream]); err != nil {
return err
}
if err = envtools.ResolveMetadata(stor, toolsDir, mergedMetadata); err != nil {
return err
}
existing[stream] = mergedMetadata
return envtools.WriteMetadata(stor, existing, []string{stream}, writeMirrors)
}