Bring etcd support for bucket DNS federation

- Supports centralized `config.json`
- Supports centralized `bucket` service records
  for client lookups
- implement a new proxy forwarder
This commit is contained in:
Harshavardhana
2018-02-02 18:18:52 -08:00
committed by kannappanr
parent 7872c192ec
commit 853ea371ce
144 changed files with 77684 additions and 81 deletions

View File

@@ -128,9 +128,9 @@ func (s *serverConfig) GetCacheConfig() CacheConfig {
}
// Save config.
func (s *serverConfig) Save() error {
func (s *serverConfig) Save(configFile string) error {
// Save config file.
return quick.Save(getConfigFile(), s)
return quick.Save(configFile, s)
}
// Returns the string describing a difference with the given
@@ -230,7 +230,10 @@ func newServerConfig() *serverConfig {
// found, otherwise use default parameters
func newConfig() error {
// Initialize server config.
srvCfg := newServerConfig()
srvCfg, err := newQuickConfig(newServerConfig())
if err != nil {
return err
}
// If env is set override the credentials from config file.
if globalIsEnvCreds {
@@ -269,7 +272,29 @@ func newConfig() error {
globalServerConfigMu.Unlock()
// Save config into file.
return globalServerConfig.Save()
return globalServerConfig.Save(getConfigFile())
}
// newQuickConfig - initialize a new server config, with an allocated
// quick.Config interface.
func newQuickConfig(srvCfg *serverConfig) (*serverConfig, error) {
if globalEtcdClient == nil {
qcfg, err := quick.NewLocalConfig(srvCfg)
if err != nil {
return nil, err
}
srvCfg.Config = qcfg
return srvCfg, nil
}
qcfg, err := quick.NewEtcdConfig(srvCfg, globalEtcdClient)
if err != nil {
return nil, err
}
srvCfg.Config = qcfg
return srvCfg, nil
}
// getValidConfig - returns valid server configuration
@@ -279,7 +304,14 @@ func getValidConfig() (*serverConfig, error) {
Browser: true,
}
if _, err := quick.Load(getConfigFile(), srvCfg); err != nil {
var err error
srvCfg, err = newQuickConfig(srvCfg)
if err != nil {
return nil, err
}
configFile := getConfigFile()
if err = srvCfg.Load(configFile); err != nil {
return nil, err
}