Add -c for clean_templates

Add a new option to process-templates.py that will clean the working
template directory of any generated template files.

Change-Id: I7283d25260c1501964c240c89dd4f658d5c14a3b
This commit is contained in:
James Slagle 2017-12-05 15:56:43 -05:00
parent 410027d64f
commit 34b7a81f07
1 changed files with 66 additions and 2 deletions

View File

@ -42,6 +42,10 @@ def parse_opts(argv):
parser.add_argument('-o', '--output-dir', metavar='OUTPUT_DIR',
help="""Output dir for all the templates""",
default='')
parser.add_argument('-c', '--clean',
action='store_true',
help=("""clean the templates dir by deleting """
"""generated templates"""))
opts = parser.parse_args(argv[1:])
return opts
@ -220,10 +224,70 @@ def process_templates(template_path, role_data_path, output_dir,
else:
print('Unexpected argument %s' % template_path)
def clean_templates(base_path, role_data_path, network_data_path):
def delete(f):
if os.path.exists(f):
print("Deleting %s" % f)
os.unlink(f)
for root, dirs, files in os.walk(base_path):
for f in files:
if f.endswith('.j2.yaml'):
rendered_path = os.path.join(
root, '%s.yaml' % f.split('.j2.yaml')[0])
delete(rendered_path)
with open(network_data_path) as network_data_file:
network_data = yaml.safe_load(network_data_file)
for network in network_data:
network_path = os.path.join(
'network', '%s.yaml' % network['name_lower'])
network_from_pool_path = os.path.join(
'network', '%s_from_pool.yaml' % network['name_lower'])
network_v6_path = os.path.join(
'network', '%s_v6.yaml' % network['name_lower'])
network_from_pool_v6_path = os.path.join(
'network', '%s_from_pool_v6.yaml' % network['name_lower'])
ports_path = os.path.join(
'network', 'ports', '%s.yaml' % network['name_lower'])
ports_from_pool_path = os.path.join(
'network', 'ports', '%s_from_pool.yaml' % network['name_lower'])
ports_v6_path = os.path.join(
'network', 'ports', '%s_v6.yaml' % network['name_lower'])
ports_from_pool_v6_path = os.path.join(
'network', 'ports', '%s_from_pool_v6.yaml' % network['name_lower'])
delete(network_path)
delete(network_from_pool_path)
delete(network_v6_path)
delete(network_from_pool_v6_path)
delete(ports_path)
delete(ports_from_pool_path)
delete(ports_v6_path)
delete(ports_from_pool_v6_path)
with open(role_data_path) as role_data_file:
role_data = yaml.safe_load(role_data_file)
for role in role_data:
role_path = os.path.join(
'puppet', '%s-role.yaml' % role['name'].lower())
host_config_and_reboot_path = os.path.join(
'extraconfig', 'pre_network',
'%s-host_config_and_reboot.yaml' % role['name'].lower())
delete(role_path)
delete(host_config_and_reboot_path)
opts = parse_opts(sys.argv)
role_data_path = os.path.join(opts.base_path, opts.roles_data)
network_data_path = os.path.join(opts.base_path, opts.network_data)
process_templates(opts.base_path, role_data_path, opts.output_dir,
network_data_path, (not opts.safe))
if opts.clean:
clean_templates(opts.base_path, role_data_path, network_data_path)
else:
process_templates(opts.base_path, role_data_path, opts.output_dir,
network_data_path, (not opts.safe))