import sys import ruamel.yaml import ruamel.yaml.util import os for path, currentDirectory, files in os.walk("./"): for file in files: if file.endswith(".yaml"): filepath = os.path.join(path, file) if filepath != "./meta.yaml": with open(filepath, 'r') as yaml_str: result = ruamel.yaml.round_trip_load( yaml_str, preserve_quotes=True) indent = 2 block_seq_indent = None dump = False for item in result['testbed']['items']: if item["type"] == "TIDB_CLUSTER": if item["spec"]["version"] != '{{meta.parameters.base_image_version}}': continue for component_name in ["pd", "tidb", "tikv", "ticdc", "tiflash", "pump"]: if component_name not in item["spec"]: continue component_version_name = component_name if component_name == "pump": component_version_name = "binlog" component = item["spec"][component_name] if "version" in component and component["version"] != '{{meta.parameters.' + component_version_name + '_component_version}}': continue else: dump = True component["version"] = '{{meta.parameters.' + \ component_version_name + '_component_version}}' if dump: with open(filepath, 'w') as fp: ruamel.yaml.round_trip_dump(result, fp, indent=indent, line_break=0, block_seq_indent=block_seq_indent)