Skip to content
Snippets Groups Projects
Commit da4a0354 authored by Attila Farkas's avatar Attila Farkas
Browse files

copy user ansible files if the user provide them

parent 999d1d42
No related branches found
No related tags found
1 merge request!8Resolve "Add optional parameter for path to provisioning directory provided by user"
...@@ -18,7 +18,7 @@ device_definitions = open_yaml(INPUT_FILE_NAME) ...@@ -18,7 +18,7 @@ device_definitions = open_yaml(INPUT_FILE_NAME)
validate_device_definitions(device_definitions) validate_device_definitions(device_definitions)
preprocess(device_definitions, FLAGS) preprocess(device_definitions, FLAGS)
prepare_directories(device_definitions) prepare_directories(device_definitions, FLAGS)
generate_vagrantfile(device_definitions, FLAGS) generate_vagrantfile(device_definitions, FLAGS)
generate_playbooks(device_definitions, FLAGS) generate_playbooks(device_definitions, FLAGS)
......
"""Contain functions for ansible file generation.""" """Contain functions for ansible file generation."""
from modules.file_manager import generate_file, copy_template_file from modules.file_manager import generate_file, copy_template_file,\
copy_user_provisioning_dir
from modules.ansible_vars_generator import generate_ansible_vars from modules.ansible_vars_generator import generate_ansible_vars
from conf.border_router import BORDER_ROUTER_NAME from conf.border_router import BORDER_ROUTER_NAME
...@@ -27,8 +28,9 @@ def _create_config_playbooks(input_definitions, flags): ...@@ -27,8 +28,9 @@ def _create_config_playbooks(input_definitions, flags):
device["name"] + "/tasks/main.yml") device["name"] + "/tasks/main.yml")
def _create_user_playbooks(input_definitions): def _generate_user_playbooks(input_definitions):
"""Generate template playbooks and roles for users.""" """Generate example user playbooks."""
copy_template_file("playbook", "provisioning/playbook.yml") copy_template_file("playbook", "provisioning/playbook.yml")
if input_definitions["hosts"]: if input_definitions["hosts"]:
copy_template_file("user_hosts", copy_template_file("user_hosts",
...@@ -48,6 +50,15 @@ def _create_user_playbooks(input_definitions): ...@@ -48,6 +50,15 @@ def _create_user_playbooks(input_definitions):
"/tasks/main.yml", router_name=router["name"]) "/tasks/main.yml", router_name=router["name"])
def _create_user_playbooks(input_definitions, flags):
"""Copy or generate template playbooks and roles for users."""
if "provisioning_dir" in flags and flags["provisioning_dir"]:
copy_user_provisioning_dir(flags["provisioning_dir"])
else:
_generate_user_playbooks(input_definitions)
def generate_playbooks(input_definitions, flags): def generate_playbooks(input_definitions, flags):
"""Generate ansible vars and playbooks. """Generate ansible vars and playbooks.
...@@ -56,4 +67,4 @@ def generate_playbooks(input_definitions, flags): ...@@ -56,4 +67,4 @@ def generate_playbooks(input_definitions, flags):
""" """
generate_ansible_vars(input_definitions, flags) generate_ansible_vars(input_definitions, flags)
_create_config_playbooks(input_definitions, flags) _create_config_playbooks(input_definitions, flags)
_create_user_playbooks(input_definitions) _create_user_playbooks(input_definitions, flags)
...@@ -81,7 +81,7 @@ def _load_template(template_name): ...@@ -81,7 +81,7 @@ def _load_template(template_name):
def _copy_directory(source, destination): def _copy_directory(source, destination):
"""Copy directory recursively form templates dir to the destination.""" """Copy directory recursively form templates dir to the destination."""
try: try:
shutil.copytree("./templates/" + source, destination) shutil.copytree(source, destination)
except OSError: except OSError:
cleanup_and_exit("Could not copy directory " + str(source) + ".") cleanup_and_exit("Could not copy directory " + str(source) + ".")
...@@ -124,7 +124,7 @@ def _create_provisioning_directories(directory, device_definitions): ...@@ -124,7 +124,7 @@ def _create_provisioning_directories(directory, device_definitions):
cleanup_and_exit("Could not create directories for provisioning.") cleanup_and_exit("Could not create directories for provisioning.")
def prepare_directories(device_definitions): def prepare_directories(device_definitions, flags):
"""Prepare the necessary directory structure.""" """Prepare the necessary directory structure."""
_remove_sandbox() _remove_sandbox()
...@@ -135,14 +135,20 @@ def prepare_directories(device_definitions): ...@@ -135,14 +135,20 @@ def prepare_directories(device_definitions):
".") ".")
_create_provisioning_directories("base_provisioning", device_definitions) _create_provisioning_directories("base_provisioning", device_definitions)
_create_provisioning_directories("provisioning", device_definitions) if "provisioning_dir" not in flags or not flags["provisioning_dir"]:
_create_provisioning_directories("provisioning", device_definitions)
_copy_directory("interface", OUTPUT_DIRECTORY + _copy_directory("./templates/interface", OUTPUT_DIRECTORY +
"/base_provisioning/roles/interface") "/base_provisioning/roles/interface")
_copy_directory("common", OUTPUT_DIRECTORY + _copy_directory("./templates/common", OUTPUT_DIRECTORY +
"/base_provisioning/roles/common") "/base_provisioning/roles/common")
def copy_user_provisioning_dir(path):
"""Copy provisioning files provided by the user to the correct dir."""
_copy_directory(path, OUTPUT_DIRECTORY + "/provisioning")
def _remove_sandbox(): def _remove_sandbox():
"""Remove the existing sandbox.""" """Remove the existing sandbox."""
shutil.rmtree(OUTPUT_DIRECTORY, True) shutil.rmtree(OUTPUT_DIRECTORY, True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment