本文整理汇总了Golang中github.com/juju/utils.WriteYaml函数的典型用法代码示例。如果您正苦于以下问题:Golang WriteYaml函数的具体用法?Golang WriteYaml怎么用?Golang WriteYaml使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了WriteYaml函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Write
// Write atomically writes to disk the relation state change in hi.
// It must be called after the respective hook was executed successfully.
// Write doesn't validate hi but guarantees that successive writes of
// the same hi are idempotent.
func (d *StateDir) Write(hi hook.Info) (err error) {
defer errors.Maskf(&err, "failed to write %q hook info for %q on state directory", hi.Kind, hi.RemoteUnit)
if hi.Kind == hooks.RelationBroken {
return d.Remove()
}
name := strings.Replace(hi.RemoteUnit, "/", "-", 1)
path := filepath.Join(d.path, name)
if hi.Kind == hooks.RelationDeparted {
if err = os.Remove(path); err != nil && !os.IsNotExist(err) {
return err
}
// If atomic delete succeeded, update own state.
delete(d.state.Members, hi.RemoteUnit)
return nil
}
di := diskInfo{&hi.ChangeVersion, hi.Kind == hooks.RelationJoined}
if err := utils.WriteYaml(path, &di); err != nil {
return err
}
// If write was successful, update own state.
d.state.Members[hi.RemoteUnit] = hi.ChangeVersion
if hi.Kind == hooks.RelationJoined {
d.state.ChangedPending = hi.RemoteUnit
} else {
d.state.ChangedPending = ""
}
return nil
}
示例2: Write
// Write stores the supplied status information to disk.
func (f *StateFile) Write(code, info string) error {
st := state{
Code: code,
Info: info,
}
return errors.Trace(utils.WriteYaml(f.path, st))
}
示例3: storeManifest
// storeManifest stores, into dataPath, the supplied manifest for the supplied charm.
func (d *manifestDeployer) storeManifest(url *charm.URL, manifest set.Strings) error {
if err := os.MkdirAll(d.DataPath(manifestsDataPath), 0755); err != nil {
return err
}
name := charm.Quote(url.String())
path := filepath.Join(d.DataPath(manifestsDataPath), name)
return utils.WriteYaml(path, manifest.SortedValues())
}
示例4: Write
// Write stores the supplied status information to disk.
func (f *StateFile) Write(code, info string, disconnected *Disconnected) error {
st := state{
Code: code,
Info: info,
Disconnected: disconnected,
}
return errors.Trace(utils.WriteYaml(f.path, st))
}
示例5: Write
// Write stores the supplied state to the file.
func (f *StateFile) Write(started bool, op Op, step OpStep, hi *uhook.Info, url *charm.URL) error {
st := &State{
Started: started,
Op: op,
OpStep: step,
Hook: hi,
CharmURL: url,
}
if err := st.validate(); err != nil {
panic(err)
}
return utils.WriteYaml(f.path, st)
}
示例6: CommitHook
// CommitHook atomically writes to disk the storage state change in hi.
// It must be called after the respective hook was executed successfully.
// CommitHook doesn't validate hi but guarantees that successive writes
// of the same hi are idempotent.
func (d *stateFile) CommitHook(hi hook.Info) (err error) {
defer errors.DeferredAnnotatef(&err, "failed to write %q hook info for %q on state directory", hi.Kind, hi.StorageId)
if hi.Kind == hooks.StorageDetaching {
return d.Remove()
}
attached := true
di := diskInfo{&attached}
if err := utils.WriteYaml(d.path, &di); err != nil {
return err
}
// If write was successful, update own state.
d.state.attached = true
return nil
}
示例7: writeFilesystemInfo
func (s *tmpfsFilesystemSource) writeFilesystemInfo(tag names.FilesystemTag, info storage.FilesystemInfo) error {
filename := s.filesystemInfoFile(tag)
if _, err := os.Stat(filename); err == nil {
return errors.Errorf("filesystem %v already exists", tag.Id())
}
if err := ensureDir(s.dirFuncs, filepath.Dir(filename)); err != nil {
return errors.Trace(err)
}
err := utils.WriteYaml(filename, filesystemInfo{&info.Size})
if err != nil {
return errors.Annotate(err, "writing filesystem info to disk")
}
return err
}
示例8: TestStates
func (s *StateFileSuite) TestStates(c *gc.C) {
for i, t := range stateTests {
c.Logf("test %d", i)
path := filepath.Join(c.MkDir(), "uniter")
file := operation.NewStateFile(path)
_, err := file.Read()
c.Assert(err, gc.Equals, operation.ErrNoStateFile)
err = file.Write(&t.st)
if t.err == "" {
c.Assert(err, jc.ErrorIsNil)
} else {
c.Assert(err, gc.ErrorMatches, "invalid operation state: "+t.err)
err := utils.WriteYaml(path, &t.st)
c.Assert(err, jc.ErrorIsNil)
_, err = file.Read()
c.Assert(err, gc.ErrorMatches, `cannot read ".*": invalid operation state: `+t.err)
continue
}
st, err := file.Read()
c.Assert(err, jc.ErrorIsNil)
c.Assert(st, jc.DeepEquals, &t.st)
}
}
示例9: WriteCharmURL
// WriteCharmURL writes a charm identity file into the supplied path.
func WriteCharmURL(path string, url *charm.URL) error {
return utils.WriteYaml(path, url.String())
}
示例10: writeOldState
func (s *upgradeStateContextSuite) writeOldState(c *gc.C, state *oldState) {
err := utils.WriteYaml(s.uniterStateFile, state)
c.Assert(err, jc.ErrorIsNil)
}
示例11: Write
// Write stores the supplied state to the file.
func (f *StateFile) Write(st *State) error {
if err := st.validate(); err != nil {
return errors.Trace(err)
}
return utils.WriteYaml(f.path, st)
}