mirror of
https://github.com/rancher/os.git
synced 2025-09-13 13:39:53 +00:00
Move around code for better clarity
This commit is contained in:
committed by
niusmallnan
parent
2f50b7b178
commit
1f50386828
83
pkg/docker/env.go
Normal file
83
pkg/docker/env.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
composeConfig "github.com/docker/libcompose/config"
|
||||
"github.com/rancher/os/config"
|
||||
"github.com/rancher/os/pkg/log"
|
||||
)
|
||||
|
||||
type ConfigEnvironment struct {
|
||||
cfg *config.CloudConfig
|
||||
}
|
||||
|
||||
func NewConfigEnvironment(cfg *config.CloudConfig) *ConfigEnvironment {
|
||||
return &ConfigEnvironment{
|
||||
cfg: cfg,
|
||||
}
|
||||
}
|
||||
|
||||
func appendEnv(array []string, key, value string) []string {
|
||||
parts := strings.SplitN(key, "/", 2)
|
||||
if len(parts) == 2 {
|
||||
key = parts[1]
|
||||
}
|
||||
|
||||
return append(array, fmt.Sprintf("%s=%s", key, value))
|
||||
}
|
||||
|
||||
func environmentFromCloudConfig(cfg *config.CloudConfig) map[string]string {
|
||||
environment := cfg.Rancher.Environment
|
||||
if cfg.Rancher.Network.HTTPProxy != "" {
|
||||
environment["http_proxy"] = cfg.Rancher.Network.HTTPProxy
|
||||
environment["HTTP_PROXY"] = cfg.Rancher.Network.HTTPProxy
|
||||
}
|
||||
if cfg.Rancher.Network.HTTPSProxy != "" {
|
||||
environment["https_proxy"] = cfg.Rancher.Network.HTTPSProxy
|
||||
environment["HTTPS_PROXY"] = cfg.Rancher.Network.HTTPSProxy
|
||||
}
|
||||
if cfg.Rancher.Network.NoProxy != "" {
|
||||
environment["no_proxy"] = cfg.Rancher.Network.NoProxy
|
||||
environment["NO_PROXY"] = cfg.Rancher.Network.NoProxy
|
||||
}
|
||||
if v := config.GetKernelVersion(); v != "" {
|
||||
environment["KERNEL_VERSION"] = v
|
||||
log.Debugf("Using /proc/version to set rancher.environment.KERNEL_VERSION = %s", v)
|
||||
}
|
||||
return environment
|
||||
}
|
||||
|
||||
func lookupKeys(cfg *config.CloudConfig, keys ...string) []string {
|
||||
environment := environmentFromCloudConfig(cfg)
|
||||
|
||||
for _, key := range keys {
|
||||
if strings.HasSuffix(key, "*") {
|
||||
result := []string{}
|
||||
for envKey, envValue := range environment {
|
||||
keyPrefix := key[:len(key)-1]
|
||||
if strings.HasPrefix(envKey, keyPrefix) {
|
||||
result = appendEnv(result, envKey, envValue)
|
||||
}
|
||||
}
|
||||
|
||||
if len(result) > 0 {
|
||||
return result
|
||||
}
|
||||
} else if value, ok := environment[key]; ok {
|
||||
return appendEnv([]string{}, key, value)
|
||||
}
|
||||
}
|
||||
|
||||
return []string{}
|
||||
}
|
||||
|
||||
func (c *ConfigEnvironment) SetConfig(cfg *config.CloudConfig) {
|
||||
c.cfg = cfg
|
||||
}
|
||||
|
||||
func (c *ConfigEnvironment) Lookup(key, serviceName string, serviceConfig *composeConfig.ServiceConfig) []string {
|
||||
fullKey := fmt.Sprintf("%s/%s", serviceName, key)
|
||||
return lookupKeys(c.cfg, fullKey, key)
|
||||
}
|
Reference in New Issue
Block a user