示例#1
0
func (m *JSONDir) Save(id bakapy.TaskId, metadata *bakapy.Metadata) error {
	defer m.unLockId(id)
	saveTo := ospath.Join(m.RootDir, id.String())
	saveToTmp := saveTo + ".inpr"
	m.logger.Debug("saving metadata for task id %s to %s", id, saveTo)
	m.logger.Debug("%s", metadata)

	err := os.MkdirAll(ospath.Dir(saveTo), 0750)
	if err != nil {
		return err
	}
	file, err := os.Create(saveToTmp)
	if err != nil {
		return err
	}

	jsonData, err := json.Marshal(metadata)
	if err != nil {
		file.Close()
		return err
	}

	_, err = io.Copy(file, bytes.NewReader(jsonData))
	if err != nil {
		file.Close()
		return err
	}
	file.Close()
	err = os.Rename(saveToTmp, saveTo)
	if err != nil {
		return err
	}

	return nil
}
示例#2
0
func (m *JSONDir) get(id bakapy.TaskId) (*bakapy.Metadata, error) {
	filePath := ospath.Join(m.RootDir, id.String())
	file, err := os.Open(filePath)
	if err != nil {
		return nil, err
	}
	defer file.Close()
	data, err := ioutil.ReadAll(file)
	if err != nil {
		return nil, err
	}

	metadata := &bakapy.Metadata{}
	err = json.Unmarshal(data, metadata)
	if err != nil {
		return nil, err
	}
	return metadata, nil
}
示例#3
0
func (m *JSONDir) Remove(id bakapy.TaskId) error {
	m.logger.Debug("removing metadata for task id %s", id)
	m.lockId(id)
	defer m.unLockId(id)
	return os.Remove(ospath.Join(m.RootDir, id.String()))
}