本文整理汇总了Golang中github.com/juju/juju/state/backups.Metadata.AsJSONBuffer方法的典型用法代码示例。如果您正苦于以下问题:Golang Metadata.AsJSONBuffer方法的具体用法?Golang Metadata.AsJSONBuffer怎么用?Golang Metadata.AsJSONBuffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/juju/juju/state/backups.Metadata
的用法示例。
在下文中一共展示了Metadata.AsJSONBuffer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: NewArchive
// NewArchive returns a new archive file containing the files.
func NewArchive(meta *backups.Metadata, files, dump []File) (*bytes.Buffer, error) {
dirs := set.NewStrings()
var sysFiles []File
for _, file := range files {
var parent string
for _, p := range strings.Split(path.Dir(file.Name), "/") {
if parent == "" {
parent = p
} else {
parent = path.Join(parent, p)
}
if !dirs.Contains(parent) {
sysFiles = append(sysFiles, File{
Name: parent,
IsDir: true,
})
dirs.Add(parent)
}
}
if file.IsDir {
if !dirs.Contains(file.Name) {
sysFiles = append(sysFiles, file)
dirs.Add(file.Name)
}
} else {
sysFiles = append(sysFiles, file)
}
}
var rootFile bytes.Buffer
if err := writeToTar(&rootFile, sysFiles); err != nil {
return nil, errors.Trace(err)
}
topfiles := []File{{
Name: "juju-backup",
IsDir: true,
}}
topfiles = append(topfiles, File{
Name: "juju-backup/dump",
IsDir: true,
})
for _, dumpFile := range dump {
topfiles = append(topfiles, File{
Name: "juju-backup/dump/" + dumpFile.Name,
Content: dumpFile.Content,
IsDir: dumpFile.IsDir,
})
}
topfiles = append(topfiles,
File{
Name: "juju-backup/root.tar",
Content: rootFile.String(),
},
)
if meta != nil {
metaFile, err := meta.AsJSONBuffer()
if err != nil {
return nil, errors.Trace(err)
}
topfiles = append(topfiles,
File{
Name: "juju-backup/metadata.json",
Content: metaFile.(*bytes.Buffer).String(),
},
)
}
var arFile bytes.Buffer
compressed := gzip.NewWriter(&arFile)
defer compressed.Close()
if err := writeToTar(compressed, topfiles); err != nil {
return nil, errors.Trace(err)
}
return &arFile, nil
}