Allows storagedriver parameter values to be of type interface{}
This enables use of nil, booleans, numeric types, and even complex structures for parameter values, assuming they can be parsed from yaml.master
							parent
							
								
									f9b119974d
								
							
						
					
					
						commit
						030b0ff310
					
				|  | @ -103,7 +103,7 @@ func (storage Storage) Parameters() Parameters { | |||
| } | ||||
| 
 | ||||
| // setParameter changes the parameter at the provided key to the new value
 | ||||
| func (storage Storage) setParameter(key, value string) { | ||||
| func (storage Storage) setParameter(key string, value interface{}) { | ||||
| 	storage[storage.Type()][key] = value | ||||
| } | ||||
| 
 | ||||
|  | @ -143,7 +143,7 @@ func (storage Storage) MarshalYAML() (interface{}, error) { | |||
| } | ||||
| 
 | ||||
| // Parameters defines a key-value parameters mapping
 | ||||
| type Parameters map[string]string | ||||
| type Parameters map[string]interface{} | ||||
| 
 | ||||
| // Reporting defines error reporting methods.
 | ||||
| type Reporting struct { | ||||
|  |  | |||
|  | @ -21,12 +21,12 @@ var configStruct = Configuration{ | |||
| 			"region":    "us-east-1", | ||||
| 			"bucket":    "my-bucket", | ||||
| 			"rootpath":  "/registry", | ||||
| 			"encrypt":   "true", | ||||
| 			"secure":    "false", | ||||
| 			"encrypt":   true, | ||||
| 			"secure":    false, | ||||
| 			"accesskey": "SAMPLEACCESSKEY", | ||||
| 			"secretkey": "SUPERSECRET", | ||||
| 			"host":      "", | ||||
| 			"port":      "", | ||||
| 			"host":      nil, | ||||
| 			"port":      42, | ||||
| 		}, | ||||
| 	}, | ||||
| 	Reporting: Reporting{ | ||||
|  | @ -50,7 +50,7 @@ storage: | |||
|     accesskey: SAMPLEACCESSKEY | ||||
|     secretkey: SUPERSECRET | ||||
|     host: ~ | ||||
|     port: ~ | ||||
|     port: 42 | ||||
| reporting: | ||||
|   bugsnag: | ||||
|     apikey: BugsnagApiKey | ||||
|  | @ -142,7 +142,7 @@ func (suite *ConfigSuite) TestParseWithSameEnvStorage(c *C) { | |||
| // Configuration struct
 | ||||
| func (suite *ConfigSuite) TestParseWithDifferentEnvStorageParams(c *C) { | ||||
| 	suite.expectedConfig.Storage.setParameter("region", "us-west-1") | ||||
| 	suite.expectedConfig.Storage.setParameter("secure", "true") | ||||
| 	suite.expectedConfig.Storage.setParameter("secure", true) | ||||
| 	suite.expectedConfig.Storage.setParameter("newparam", "some Value") | ||||
| 
 | ||||
| 	os.Setenv("REGISTRY_STORAGE_S3_REGION", "us-west-1") | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ type StorageDriverFactory interface { | |||
| 	// Create returns a new storagedriver.StorageDriver with the given parameters
 | ||||
| 	// Parameters will vary by driver and may be ignored
 | ||||
| 	// Each parameter key must only consist of lowercase letters and numbers
 | ||||
| 	Create(parameters map[string]string) (storagedriver.StorageDriver, error) | ||||
| 	Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) | ||||
| } | ||||
| 
 | ||||
| // Register makes a storage driver available by the provided name.
 | ||||
|  | @ -37,7 +37,7 @@ func Register(name string, factory StorageDriverFactory) { | |||
| // To run in-process, the StorageDriverFactory must first be registered with the given name
 | ||||
| // If no in-process drivers are found with the given name, this attempts to create an IPC driver
 | ||||
| // If no in-process or external drivers are found, an InvalidStorageDriverError is returned
 | ||||
| func Create(name string, parameters map[string]string) (storagedriver.StorageDriver, error) { | ||||
| func Create(name string, parameters map[string]interface{}) (storagedriver.StorageDriver, error) { | ||||
| 	driverFactory, ok := driverFactories[name] | ||||
| 	if !ok { | ||||
| 		return nil, InvalidStorageDriverError{name} | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ func init() { | |||
| // filesystemDriverFactory implements the factory.StorageDriverFactory interface
 | ||||
| type filesystemDriverFactory struct{} | ||||
| 
 | ||||
| func (factory *filesystemDriverFactory) Create(parameters map[string]string) (storagedriver.StorageDriver, error) { | ||||
| func (factory *filesystemDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { | ||||
| 	return FromParameters(parameters), nil | ||||
| } | ||||
| 
 | ||||
|  | @ -36,12 +36,12 @@ type Driver struct { | |||
| // FromParameters constructs a new Driver with a given parameters map
 | ||||
| // Optional Parameters:
 | ||||
| // - rootdirectory
 | ||||
| func FromParameters(parameters map[string]string) *Driver { | ||||
| func FromParameters(parameters map[string]interface{}) *Driver { | ||||
| 	var rootDirectory = defaultRootDirectory | ||||
| 	if parameters != nil { | ||||
| 		rootDir, ok := parameters["rootdirectory"] | ||||
| 		if ok { | ||||
| 			rootDirectory = rootDir | ||||
| 			rootDirectory = fmt.Sprint(rootDir) | ||||
| 		} | ||||
| 	} | ||||
| 	return New(rootDirectory) | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ func init() { | |||
| // inMemoryDriverFacotry implements the factory.StorageDriverFactory interface.
 | ||||
| type inMemoryDriverFactory struct{} | ||||
| 
 | ||||
| func (factory *inMemoryDriverFactory) Create(parameters map[string]string) (storagedriver.StorageDriver, error) { | ||||
| func (factory *inMemoryDriverFactory) Create(parameters map[string]interface{}) (storagedriver.StorageDriver, error) { | ||||
| 	return New(), nil | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue