Skip to content
Snippets Groups Projects
Commit b05d0db4 authored by Jan Vykopal's avatar Jan Vykopal
Browse files

Merge branch...

Merge branch '36-add-optional-parameter-for-path-to-provisioning-directory-provided-by-user' into 'master'

Resolve "Add optional parameter for path to provisioning directory provided by user"

Closes #36

See merge request cs4eu/sandbox-creator!8
parents ba7d67c6 5a301c48
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)
......
...@@ -24,11 +24,15 @@ def parse_input_args(): ...@@ -24,11 +24,15 @@ def parse_input_args():
parser.add_argument("--border_router", parser.add_argument("--border_router",
help="creates a border router with connection to " help="creates a border router with connection to "
"all routers", action="store_true") "all routers", action="store_true")
parser.add_argument("--provisioning_dir",
help="path to directory with user provisioning files",
action="store")
args = parser.parse_args() args = parser.parse_args()
input_file_name = args.definition_file input_file_name = args.definition_file
flags["ansible_local"] = args.ansible_local flags["ansible_local"] = args.ansible_local
flags["verbose_ansible"] = args.verbose_ansible flags["verbose_ansible"] = args.verbose_ansible
flags["border_router"] = args.border_router flags["border_router"] = args.border_router
flags["provisioning_dir"] = args.provisioning_dir
return input_file_name, flags return input_file_name, flags
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