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 && \ RUN mkdir -p $IPFS_CLUSTER_PATH && \
chown 1000:100 $IPFS_CLUSTER_PATH chown 1000:100 $IPFS_CLUSTER_PATH
USER ipfs
VOLUME $IPFS_CLUSTER_PATH VOLUME $IPFS_CLUSTER_PATH
ENTRYPOINT ["/usr/local/bin/start-daemons.sh"] ENTRYPOINT ["/usr/local/bin/start-daemons.sh"]

View File

@ -6,12 +6,16 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/kelseyhightower/envconfig"
ma "github.com/multiformats/go-multiaddr" ma "github.com/multiformats/go-multiaddr"
"github.com/ipfs/ipfs-cluster/config" "github.com/ipfs/ipfs-cluster/config"
) )
const configKey = "ipfsproxy" const (
configKey = "ipfsproxy"
envConfigKey = "cluster_ipfsproxy"
)
// Default values for Config. // Default values for Config.
const ( const (
@ -49,18 +53,45 @@ type Config struct {
} }
type jsonConfig struct { type jsonConfig struct {
ProxyListenMultiaddress string `json:"proxy_listen_multiaddress,omitempty"`
NodeMultiaddress string `json:"node_multiaddress"` 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"`
ListenMultiaddress string `json:"listen_multiaddress"` ListenMultiaddress string `json:"listen_multiaddress"`
ReadTimeout string `json:"read_timeout"` ReadTimeout string `json:"read_timeout"`
ReadHeaderTimeout string `json:"read_header_timeout"` ReadHeaderTimeout string `json:"read_header_timeout"`
WriteTimeout string `json:"write_timeout"` WriteTimeout string `json:"write_timeout"`
IdleTimeout string `json:"idle_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. // ConfigKey provides a human-friendly identifier for this type of Config.
@ -128,31 +159,21 @@ func (cfg *Config) LoadJSON(raw []byte) error {
return err return err
} }
if jcfg.ListenMultiaddress == "" { // This is here only here to maintain backward compatibility
jcfg.ListenMultiaddress = jcfg.ProxyListenMultiaddress // This won't be needed after removing old style fields(starting with `proxy_`)
} jcfg.toNewFields()
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
}
err = cfg.Default() err = cfg.Default()
if err != nil { if err != nil {
return fmt.Errorf("error setting config to default values: %s", err) 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) proxyAddr, err := ma.NewMultiaddr(jcfg.ListenMultiaddress)
if err != nil { if err != nil {
return fmt.Errorf("error parsing proxy listen_multiaddress: %s", err) return fmt.Errorf("error parsing proxy listen_multiaddress: %s", err)