mirror of
https://github.com/containers/podman.git
synced 2025-06-22 09:58:10 +08:00
Fix TODO in parse/net.go
Fix up the parseEnv function to differentiate between a label and env when parsing. Don't do a system lookup when parsing labels. [NO NEW TESTS NEEDED] Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
This commit is contained in:
@ -18,6 +18,8 @@ import (
|
|||||||
const (
|
const (
|
||||||
Protocol_TCP Protocol = 0
|
Protocol_TCP Protocol = 0
|
||||||
Protocol_UDP Protocol = 1
|
Protocol_UDP Protocol = 1
|
||||||
|
LabelType string = "label"
|
||||||
|
ENVType string = "env"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Protocol int32
|
type Protocol int32
|
||||||
@ -89,9 +91,7 @@ func GetAllLabels(labelFile, inputLabels []string) (map[string]string, error) {
|
|||||||
// There's an argument that we SHOULD be doing that parsing for
|
// There's an argument that we SHOULD be doing that parsing for
|
||||||
// all environment variables, even those sourced from files, but
|
// all environment variables, even those sourced from files, but
|
||||||
// that would require a substantial rework.
|
// that would require a substantial rework.
|
||||||
if err := parseEnvFile(labels, file); err != nil {
|
if err := parseEnvOrLabelFile(labels, file, LabelType); err != nil {
|
||||||
// FIXME: parseEnvFile is using parseEnv, so we need to add extra
|
|
||||||
// logic for labels.
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ func GetAllLabels(labelFile, inputLabels []string) (map[string]string, error) {
|
|||||||
return labels, nil
|
return labels, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseEnv(env map[string]string, line string) error {
|
func parseEnvOrLabel(env map[string]string, line, configType string) error {
|
||||||
data := strings.SplitN(line, "=", 2)
|
data := strings.SplitN(line, "=", 2)
|
||||||
|
|
||||||
// catch invalid variables such as "=" or "=A"
|
// catch invalid variables such as "=" or "=A"
|
||||||
@ -137,7 +137,7 @@ func parseEnv(env map[string]string, line string) error {
|
|||||||
env[part[0]] = part[1]
|
env[part[0]] = part[1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else if configType == ENVType {
|
||||||
// if only a pass-through variable is given, clean it up.
|
// if only a pass-through variable is given, clean it up.
|
||||||
if val, ok := os.LookupEnv(name); ok {
|
if val, ok := os.LookupEnv(name); ok {
|
||||||
env[name] = val
|
env[name] = val
|
||||||
@ -147,8 +147,9 @@ func parseEnv(env map[string]string, line string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseEnvFile reads a file with environment variables enumerated by lines
|
// parseEnvOrLabelFile reads a file with environment variables enumerated by lines
|
||||||
func parseEnvFile(env map[string]string, filename string) error {
|
// configType should be set to either "label" or "env" based on what type is being parsed
|
||||||
|
func parseEnvOrLabelFile(envOrLabel map[string]string, filename, configType string) error {
|
||||||
fh, err := os.Open(filename)
|
fh, err := os.Open(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -161,7 +162,7 @@ func parseEnvFile(env map[string]string, filename string) error {
|
|||||||
line := strings.TrimLeft(scanner.Text(), whiteSpaces)
|
line := strings.TrimLeft(scanner.Text(), whiteSpaces)
|
||||||
// line is not empty, and not starting with '#'
|
// line is not empty, and not starting with '#'
|
||||||
if len(line) > 0 && !strings.HasPrefix(line, "#") {
|
if len(line) > 0 && !strings.HasPrefix(line, "#") {
|
||||||
if err := parseEnv(env, line); err != nil {
|
if err := parseEnvOrLabel(envOrLabel, line, configType); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user