mirror of https://github.com/docker/docs.git
				
				
				
			cleaning up some dead code and fixing memorystore consistency
Signed-off-by: David Lawrence <david.lawrence@docker.com> (github: endophage)
This commit is contained in:
		
							parent
							
								
									637a2331d4
								
							
						
					
					
						commit
						dec9a5a95c
					
				| 
						 | 
				
			
			@ -6,7 +6,6 @@ import (
 | 
			
		|||
	"encoding/hex"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"github.com/Sirupsen/logrus"
 | 
			
		||||
	"github.com/docker/notary"
 | 
			
		||||
| 
						 | 
				
			
			@ -541,18 +540,3 @@ func (c Client) TargetMeta(role, path string, excludeRoles ...string) (*data.Fil
 | 
			
		|||
	}
 | 
			
		||||
	return meta, ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DownloadTarget downloads the target to dst from the remote
 | 
			
		||||
func (c Client) DownloadTarget(dst io.Writer, path string, meta *data.FileMeta) error {
 | 
			
		||||
	reader, err := c.remote.GetTarget(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer reader.Close()
 | 
			
		||||
	r := io.TeeReader(
 | 
			
		||||
		io.LimitReader(reader, meta.Length),
 | 
			
		||||
		dst,
 | 
			
		||||
	)
 | 
			
		||||
	err = utils.ValidateTarget(r, meta)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,6 @@
 | 
			
		|||
package store
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"github.com/docker/notary/tuf/data"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -23,17 +21,9 @@ type PublicKeyStore interface {
 | 
			
		|||
	GetKey(role string) ([]byte, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TargetStore represents a collection of targets that can be walked similarly
 | 
			
		||||
// to walking a directory, passing a callback that receives the path and meta
 | 
			
		||||
// for each target
 | 
			
		||||
type TargetStore interface {
 | 
			
		||||
	WalkStagedTargets(paths []string, targetsFn targetsWalkFunc) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LocalStore represents a local TUF sture
 | 
			
		||||
type LocalStore interface {
 | 
			
		||||
	MetadataStore
 | 
			
		||||
	TargetStore
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RemoteStore is similar to LocalStore with the added expectation that it should
 | 
			
		||||
| 
						 | 
				
			
			@ -41,5 +31,4 @@ type LocalStore interface {
 | 
			
		|||
type RemoteStore interface {
 | 
			
		||||
	MetadataStore
 | 
			
		||||
	PublicKeyStore
 | 
			
		||||
	GetTarget(path string) (io.ReadCloser, error)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,8 @@
 | 
			
		|||
package store
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"crypto/sha256"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
 | 
			
		||||
	"github.com/docker/notary"
 | 
			
		||||
	"github.com/docker/notary/tuf/data"
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +43,10 @@ type MemoryStore struct {
 | 
			
		|||
	keys       map[string][]data.PrivateKey
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetMeta returns up to size bytes of data references by name.
 | 
			
		||||
// If size is -1, this corresponds to "infinite," but we cut off at 100MB
 | 
			
		||||
// as we will always know the size for everything but a timestamp and
 | 
			
		||||
// sometimes a root, neither of which should be exceptionally large
 | 
			
		||||
func (m *MemoryStore) GetMeta(name string, size int64) ([]byte, error) {
 | 
			
		||||
	d, ok := m.meta[name]
 | 
			
		||||
	if ok {
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +68,7 @@ func (m *MemoryStore) GetMeta(name string, size int64) ([]byte, error) {
 | 
			
		|||
	return nil, ErrMetaNotFound{Resource: name}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetMeta sets the metadata value for the given name
 | 
			
		||||
func (m *MemoryStore) SetMeta(name string, meta []byte) error {
 | 
			
		||||
	m.meta[name] = meta
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +78,8 @@ func (m *MemoryStore) SetMeta(name string, meta []byte) error {
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetMultiMeta sets multiple pieces of metadata for multiple names
 | 
			
		||||
// in a single operation.
 | 
			
		||||
func (m *MemoryStore) SetMultiMeta(metas map[string][]byte) error {
 | 
			
		||||
	for role, blob := range metas {
 | 
			
		||||
		m.SetMeta(role, blob)
 | 
			
		||||
| 
						 | 
				
			
			@ -86,56 +90,22 @@ func (m *MemoryStore) SetMultiMeta(metas map[string][]byte) error {
 | 
			
		|||
// RemoveMeta removes the metadata for a single role - if the metadata doesn't
 | 
			
		||||
// exist, no error is returned
 | 
			
		||||
func (m *MemoryStore) RemoveMeta(name string) error {
 | 
			
		||||
	if meta, ok := m.meta[name]; ok {
 | 
			
		||||
		checksum := sha256.Sum256(meta)
 | 
			
		||||
		path := utils.URLFilePath(name, checksum[:], true)
 | 
			
		||||
		delete(m.meta, name)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *MemoryStore) GetTarget(path string) (io.ReadCloser, error) {
 | 
			
		||||
	return &utils.NoopCloser{Reader: bytes.NewReader(m.files[path])}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *MemoryStore) WalkStagedTargets(paths []string, targetsFn targetsWalkFunc) error {
 | 
			
		||||
	if len(paths) == 0 {
 | 
			
		||||
		for path, dat := range m.files {
 | 
			
		||||
			meta, err := data.NewFileMeta(bytes.NewReader(dat), "sha256")
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if err = targetsFn(path, meta); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, path := range paths {
 | 
			
		||||
		dat, ok := m.files[path]
 | 
			
		||||
		if !ok {
 | 
			
		||||
			return ErrMetaNotFound{Resource: path}
 | 
			
		||||
		}
 | 
			
		||||
		meta, err := data.NewFileMeta(bytes.NewReader(dat), "sha256")
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if err = targetsFn(path, meta); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		delete(m.consistent, path)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *MemoryStore) Commit(map[string][]byte, bool, map[string]data.Hashes) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetKey returns the public key for the given role
 | 
			
		||||
func (m *MemoryStore) GetKey(role string) ([]byte, error) {
 | 
			
		||||
	return nil, fmt.Errorf("GetKey is not implemented for the MemoryStore")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Clear this existing memory store by setting this store as new empty one
 | 
			
		||||
// RemoveAll clears the existing memory store by setting this store as new empty one
 | 
			
		||||
func (m *MemoryStore) RemoveAll() error {
 | 
			
		||||
	m.meta = make(map[string][]byte)
 | 
			
		||||
	m.files = make(map[string][]byte)
 | 
			
		||||
	m.keys = make(map[string][]data.PrivateKey)
 | 
			
		||||
	*m = *NewMemoryStore(nil, nil)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,11 +9,15 @@ type CorruptingMemoryStore struct {
 | 
			
		|||
	store.MemoryStore
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewCorruptingMemoryStore returns a new instance of memory store that
 | 
			
		||||
// corrupts all data requested from it.
 | 
			
		||||
func NewCorruptingMemoryStore(meta map[string][]byte, files map[string][]byte) *CorruptingMemoryStore {
 | 
			
		||||
	s := store.NewMemoryStore(meta, files)
 | 
			
		||||
	return &CorruptingMemoryStore{MemoryStore: *s}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetMeta returns up to size bytes of meta identified by string. It will
 | 
			
		||||
// always be corrupted by setting the first character to }
 | 
			
		||||
func (cm CorruptingMemoryStore) GetMeta(name string, size int64) ([]byte, error) {
 | 
			
		||||
	d, err := cm.MemoryStore.GetMeta(name, size)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue