예제 #1
0
파일: image_cache.go 프로젝트: vmware/vic
// Save will persist the image cache to the portlayer k/v store
func (ic *ICache) Save() error {
	defer trace.End(trace.Begin(""))
	ic.m.Lock()
	defer ic.m.Unlock()

	m := struct {
		IDIndex     *truncindex.TruncIndex
		CacheByID   map[string]*metadata.ImageConfig
		CacheByName map[string]*metadata.ImageConfig
	}{
		ic.iDIndex,
		ic.cacheByID,
		ic.cacheByName,
	}

	bytes, err := json.Marshal(m)
	if err != nil {
		log.Errorf("Unable to marshal image cache: %s", err.Error())
		return err
	}

	err = kv.Put(ic.client, imageCacheKey, string(bytes))
	if err != nil {
		log.Errorf("Unable to save image cache: %s", err.Error())
		return err
	}

	return nil
}
예제 #2
0
파일: layer_cache.go 프로젝트: vmware/vic
// Save will persist the image cache to the portlayer k/v store
func (lc *LCache) Save() error {
	defer trace.End(trace.Begin(""))
	lc.m.Lock()
	defer lc.m.Unlock()

	m := struct {
		Layers map[string]*ImageWithMeta
	}{
		Layers: lc.layers,
	}

	bytes, err := json.Marshal(m)
	if err != nil {
		log.Errorf("Unable to marshal layer cache: %s", err.Error())
		return err
	}

	err = kv.Put(lc.client, layerCacheKey, string(bytes))
	if err != nil {
		log.Errorf("Unable to save layer cache: %s", err.Error())
		return err
	}

	return nil
}
예제 #3
0
파일: repo_cache.go 프로젝트: vmware/vic
// Save will persist the repository cache to the
// portlayer k/v
func (store *repoCache) Save() error {
	defer trace.End(trace.Begin(""))

	b, err := json.Marshal(store)
	if err != nil {
		log.Errorf("Unable to marshal repository cache: %s", err.Error())
		return err
	}

	err = kv.Put(store.client, repoKey, string(b))
	if err != nil {
		log.Errorf("Unable to save repository cache: %s", err.Error())
		return err
	}

	return nil
}