make net_config_override of undercloud.conf work with yaml

On setting net_config_override parameter, the undercloud uses
a JSON or YAML format template to configure the networking
with os-net-config and ignores the network parameters set in
undercloud.conf. We can use this parameter when we want to
configure bonding or add an option to the interface.

This patch will allow net_config_override to work with a json
or a yaml as an input.

Closes-Bug: #1927090
Change-Id: I5f5cec5a1622be4983b4d0db392453d1c489fa40
(cherry picked from commit 253bd6e7db)
(cherry picked from commit 06a82e0ebf)
This commit is contained in:
Srinivas Atmakuri 2021-05-04 17:15:32 +05:30 committed by Steve Baker
parent f7e5eb12b2
commit 0f1c96f11f
2 changed files with 4 additions and 4 deletions

View File

@ -132,7 +132,7 @@ class StandaloneConfig(BaseConfig):
help=_(
'Path to network config override template. '
'Relative paths get computed inside of $HOME. '
'Must be in the json format. '
'Must be in the json or yaml format. '
'Its content overrides anything in t-h-t '
'<role>NetConfigOverride. The processed '
'template is then passed in Heat via the '

View File

@ -15,12 +15,12 @@
"""Plugin action implementation"""
import json
import logging
import netaddr
import os
import shutil
import sys
import yaml
from cryptography import x509
@ -809,9 +809,9 @@ def prepare_undercloud_deploy(upgrade=False, no_validations=True,
os.path.split(data_file)[-1]).render(context).replace(
"'", '"').replace('&quot;', '"')
try:
net_config_json = json.loads(net_config_str)
net_config_json = yaml.safe_load(net_config_str)
except ValueError:
net_config_json = json.loads("{%s}" % net_config_str)
net_config_json = yaml.safe_load("{%s}" % net_config_str)
if 'network_config' not in net_config_json:
msg = ('Unsupported data format in net_config_override '