fix handling of config options that share the same prefix

container_config:
      - "lxc.network.ipv4.gateway=auto"
      - "lxc.network.ipv4=192.0.2.1"

might try to override lxc.network.ipv4.gateway in the second entry as both
start with "lxc.network.ipv4".
use a regular expression to find a line that contains (optional) whitespace
and an = after the key.

Signed-off-by: Evgeni Golov <evgeni@golov.de>
reviewable/pr18780/r1
Evgeni Golov 9 years ago
parent c03e77a63a
commit 8db3a63983

@ -424,6 +424,8 @@ lxc_container:
sample: True sample: True
""" """
import re
try: try:
import lxc import lxc
except ImportError: except ImportError:
@ -748,9 +750,10 @@ class LxcContainerManagement(object):
key = key.strip() key = key.strip()
value = value.strip() value = value.strip()
new_entry = '%s = %s\n' % (key, value) new_entry = '%s = %s\n' % (key, value)
keyre = re.compile(r'%s(\s+)?=' % key)
for option_line in container_config: for option_line in container_config:
# Look for key in config # Look for key in config
if option_line.startswith(key): if keyre.match(option_line):
_, _value = option_line.split('=', 1) _, _value = option_line.split('=', 1)
config_value = ' '.join(_value.split()) config_value = ' '.join(_value.split())
line_index = container_config.index(option_line) line_index = container_config.index(option_line)

Loading…
Cancel
Save