Put a note for deprecating json fields

Put a note for deprecating json fields that they are only here to
maintain compatibility and they will be removed in future

Start using env vars starting with `CLUSTER_IPFSPROXY`

License: MIT
Signed-off-by: Kishan Mohanbhai Sagathiya <kishansagathiya@gmail.com>
This commit is contained in:
Kishan Sagathiya 2018-12-17 08:24:17 +05:30
parent 2da12bc59a
commit 3b86a94418
2 changed files with 49 additions and 26 deletions

View File

@ -50,6 +50,8 @@ USER root
RUN mkdir -p $IPFS_CLUSTER_PATH && \
chown 1000:100 $IPFS_CLUSTER_PATH
USER ipfs
VOLUME $IPFS_CLUSTER_PATH
ENTRYPOINT ["/usr/local/bin/start-daemons.sh"]

View File

@ -6,12 +6,16 @@ import (
"fmt"
"time"
"github.com/kelseyhightower/envconfig"
ma "github.com/multiformats/go-multiaddr"
"github.com/ipfs/ipfs-cluster/config"
)
const configKey = "ipfsproxy"
const (
configKey = "ipfsproxy"
envConfigKey = "cluster_ipfsproxy"
)
// Default values for Config.
const (
@ -49,18 +53,45 @@ type Config struct {
}
type jsonConfig struct {
ProxyListenMultiaddress string `json:"proxy_listen_multiaddress,omitempty"`
NodeMultiaddress string `json:"node_multiaddress"`
ProxyReadTimeout string `json:"proxy_read_timeout,omitempty"`
ProxyReadHeaderTimeout string `json:"proxy_read_header_timeout,omitempty"`
ProxyWriteTimeout string `json:"proxy_write_timeout,omitempty"`
ProxyIdleTimeout string `json:"proxy_idle_timeout,omitempty"`
NodeMultiaddress string `json:"node_multiaddress"`
ListenMultiaddress string `json:"listen_multiaddress"`
ReadTimeout string `json:"read_timeout"`
ReadHeaderTimeout string `json:"read_header_timeout"`
WriteTimeout string `json:"write_timeout"`
IdleTimeout string `json:"idle_timeout"`
// Below fields are only here to maintain backward compatibility
// They will be removed in future
ProxyListenMultiaddress string `json:"proxy_listen_multiaddress,omitempty"`
ProxyReadTimeout string `json:"proxy_read_timeout,omitempty"`
ProxyReadHeaderTimeout string `json:"proxy_read_header_timeout,omitempty"`
ProxyWriteTimeout string `json:"proxy_write_timeout,omitempty"`
ProxyIdleTimeout string `json:"proxy_idle_timeout,omitempty"`
}
// toNewFields converts json config written in old style (fields starting with `proxy_`)
// to new style (without `proxy_`)
func (jcfg *jsonConfig) toNewFields() {
if jcfg.ListenMultiaddress == "" {
jcfg.ListenMultiaddress = jcfg.ProxyListenMultiaddress
}
if jcfg.ReadTimeout == "" {
jcfg.ReadTimeout = jcfg.ProxyReadTimeout
}
if jcfg.ReadHeaderTimeout == "" {
jcfg.ReadHeaderTimeout = jcfg.ProxyReadHeaderTimeout
}
if jcfg.WriteTimeout == "" {
jcfg.WriteTimeout = jcfg.ProxyWriteTimeout
}
if jcfg.IdleTimeout == "" {
jcfg.IdleTimeout = jcfg.ProxyIdleTimeout
}
}
// ConfigKey provides a human-friendly identifier for this type of Config.
@ -128,31 +159,21 @@ func (cfg *Config) LoadJSON(raw []byte) error {
return err
}
if jcfg.ListenMultiaddress == "" {
jcfg.ListenMultiaddress = jcfg.ProxyListenMultiaddress
}
if jcfg.ReadTimeout == "" {
jcfg.ReadTimeout = jcfg.ProxyReadTimeout
}
if jcfg.ReadHeaderTimeout == "" {
jcfg.ReadHeaderTimeout = jcfg.ProxyReadHeaderTimeout
}
if jcfg.WriteTimeout == "" {
jcfg.WriteTimeout = jcfg.ProxyWriteTimeout
}
if jcfg.IdleTimeout == "" {
jcfg.IdleTimeout = jcfg.ProxyIdleTimeout
}
// This is here only here to maintain backward compatibility
// This won't be needed after removing old style fields(starting with `proxy_`)
jcfg.toNewFields()
err = cfg.Default()
if err != nil {
return fmt.Errorf("error setting config to default values: %s", err)
}
// override json config with env var
err = envconfig.Process("cluster_ipfsproxy", jcfg)
if err != nil {
return err
}
proxyAddr, err := ma.NewMultiaddr(jcfg.ListenMultiaddress)
if err != nil {
return fmt.Errorf("error parsing proxy listen_multiaddress: %s", err)