// AddVolume add a volume data in zk. func (z *Zookeeper) AddVolume(v *volume.Volume) (err error) { var vpath = z.volumePath(v.Id) if _, err = z.c.Create(vpath, v.Meta(), 0, zk.WorldACL(zk.PermAll)); err != nil { log.Errorf("zk.Create(\"%s\") error(%v)", vpath, err) } return }
// SetVolume set the data into fpath. func (z *Zookeeper) SetVolume(v *volume.Volume) (err error) { var ( stat *zk.Stat vpath = z.volumePath(v.Id) ) if _, stat, err = z.c.Get(vpath); err != nil { log.Errorf("zk.Get(\"%s\") error(%v)", vpath, err) return } if _, err = z.c.Set(vpath, v.Meta(), stat.Version); err != nil { log.Errorf("zk.Set(\"%s\") error(%v)", vpath, err) } return }
// saveVolumeIndex save volumes index info to disk. func (s *Store) saveVolumeIndex() (err error) { var ( tn, n int v *volume.Volume ) if _, err = s.vf.Seek(0, os.SEEK_SET); err != nil { return } for _, v = range s.Volumes { if n, err = s.vf.WriteString(fmt.Sprintf("%s\n", string(v.Meta()))); err != nil { return } tn += n } if err = s.vf.Sync(); err != nil { return } err = os.Truncate(s.conf.VolumeIndex, int64(tn)) return }