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/hex" | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" |  | ||||||
| 
 | 
 | ||||||
| 	"github.com/Sirupsen/logrus" | 	"github.com/Sirupsen/logrus" | ||||||
| 	"github.com/docker/notary" | 	"github.com/docker/notary" | ||||||
|  | @ -541,18 +540,3 @@ func (c Client) TargetMeta(role, path string, excludeRoles ...string) (*data.Fil | ||||||
| 	} | 	} | ||||||
| 	return meta, "" | 	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 | package store | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"io" |  | ||||||
| 
 |  | ||||||
| 	"github.com/docker/notary/tuf/data" | 	"github.com/docker/notary/tuf/data" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -23,17 +21,9 @@ type PublicKeyStore interface { | ||||||
| 	GetKey(role string) ([]byte, error) | 	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
 | // LocalStore represents a local TUF sture
 | ||||||
| type LocalStore interface { | type LocalStore interface { | ||||||
| 	MetadataStore | 	MetadataStore | ||||||
| 	TargetStore |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // RemoteStore is similar to LocalStore with the added expectation that it should
 | // RemoteStore is similar to LocalStore with the added expectation that it should
 | ||||||
|  | @ -41,5 +31,4 @@ type LocalStore interface { | ||||||
| type RemoteStore interface { | type RemoteStore interface { | ||||||
| 	MetadataStore | 	MetadataStore | ||||||
| 	PublicKeyStore | 	PublicKeyStore | ||||||
| 	GetTarget(path string) (io.ReadCloser, error) |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,10 +1,8 @@ | ||||||
| package store | package store | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" |  | ||||||
| 	"crypto/sha256" | 	"crypto/sha256" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" |  | ||||||
| 
 | 
 | ||||||
| 	"github.com/docker/notary" | 	"github.com/docker/notary" | ||||||
| 	"github.com/docker/notary/tuf/data" | 	"github.com/docker/notary/tuf/data" | ||||||
|  | @ -45,7 +43,10 @@ type MemoryStore struct { | ||||||
| 	keys       map[string][]data.PrivateKey | 	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
 | // 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) { | func (m *MemoryStore) GetMeta(name string, size int64) ([]byte, error) { | ||||||
| 	d, ok := m.meta[name] | 	d, ok := m.meta[name] | ||||||
| 	if ok { | 	if ok { | ||||||
|  | @ -67,6 +68,7 @@ func (m *MemoryStore) GetMeta(name string, size int64) ([]byte, error) { | ||||||
| 	return nil, ErrMetaNotFound{Resource: name} | 	return nil, ErrMetaNotFound{Resource: name} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // SetMeta sets the metadata value for the given name
 | ||||||
| func (m *MemoryStore) SetMeta(name string, meta []byte) error { | func (m *MemoryStore) SetMeta(name string, meta []byte) error { | ||||||
| 	m.meta[name] = meta | 	m.meta[name] = meta | ||||||
| 
 | 
 | ||||||
|  | @ -76,6 +78,8 @@ func (m *MemoryStore) SetMeta(name string, meta []byte) error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // SetMultiMeta sets multiple pieces of metadata for multiple names
 | ||||||
|  | // in a single operation.
 | ||||||
| func (m *MemoryStore) SetMultiMeta(metas map[string][]byte) error { | func (m *MemoryStore) SetMultiMeta(metas map[string][]byte) error { | ||||||
| 	for role, blob := range metas { | 	for role, blob := range metas { | ||||||
| 		m.SetMeta(role, blob) | 		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
 | // RemoveMeta removes the metadata for a single role - if the metadata doesn't
 | ||||||
| // exist, no error is returned
 | // exist, no error is returned
 | ||||||
| func (m *MemoryStore) RemoveMeta(name string) error { | func (m *MemoryStore) RemoveMeta(name string) error { | ||||||
| 	delete(m.meta, name) | 	if meta, ok := m.meta[name]; ok { | ||||||
| 	return nil | 		checksum := sha256.Sum256(meta) | ||||||
| } | 		path := utils.URLFilePath(name, checksum[:], true) | ||||||
| 
 | 		delete(m.meta, name) | ||||||
| func (m *MemoryStore) GetTarget(path string) (io.ReadCloser, error) { | 		delete(m.consistent, path) | ||||||
| 	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 |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (m *MemoryStore) Commit(map[string][]byte, bool, map[string]data.Hashes) error { | // GetKey returns the public key for the given role
 | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (m *MemoryStore) GetKey(role string) ([]byte, error) { | func (m *MemoryStore) GetKey(role string) ([]byte, error) { | ||||||
| 	return nil, fmt.Errorf("GetKey is not implemented for the MemoryStore") | 	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 { | func (m *MemoryStore) RemoveAll() error { | ||||||
| 	m.meta = make(map[string][]byte) | 	*m = *NewMemoryStore(nil, nil) | ||||||
| 	m.files = make(map[string][]byte) |  | ||||||
| 	m.keys = make(map[string][]data.PrivateKey) |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -9,11 +9,15 @@ type CorruptingMemoryStore struct { | ||||||
| 	store.MemoryStore | 	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 { | func NewCorruptingMemoryStore(meta map[string][]byte, files map[string][]byte) *CorruptingMemoryStore { | ||||||
| 	s := store.NewMemoryStore(meta, files) | 	s := store.NewMemoryStore(meta, files) | ||||||
| 	return &CorruptingMemoryStore{MemoryStore: *s} | 	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) { | func (cm CorruptingMemoryStore) GetMeta(name string, size int64) ([]byte, error) { | ||||||
| 	d, err := cm.MemoryStore.GetMeta(name, size) | 	d, err := cm.MemoryStore.GetMeta(name, size) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue