Esempio n. 1
0
def dump(node, data):
    d_dump = {"deploy": []}
    d_depend = []
    for d_yml in data:
        pre_yml = {
            d_yml["name"]: {
                "template": d_yml["template"],
                "node": node
            }
        }
        for k, v in d_yml.items():
            if k not in ["name", "template", "stack", "parent"]:
                if not utils.check_key(pre_yml[d_yml["name"]], "parameters"):
                    pre_yml[d_yml["name"]]["parameters"] = {k: v}
                else:
                    pre_yml[d_yml["name"]]["parameters"].update({k: v})

        if not utils.check_key(d_dump, d_yml["stack"]):
            d_dump[d_yml["stack"]] = pre_yml
        else:
            d_dump[d_yml["stack"]].update(pre_yml)

        if d_yml["parent"]:
            d_depend.append({"key": d_yml["parent"], "val": d_yml["name"]})
        else:
            if len(d_depend) > 0:
                for k_depend in d_depend:
                    pre_yml[d_yml["name"]]["parameters"].update(
                        {k_depend["key"]: k_depend["val"]})

        d_dump["deploy"].append("{}.{}".format(d_yml["stack"], d_yml["name"]))
    return d_dump
Esempio n. 2
0
def initialize(node, manifest_fie):
    if not node:
        node = "pve"
    init = list()
    utils.log_info("Initialization....")
    key = utils.do_deploy_dir(manifest_fie)

    for stack in utils.initdir(key):
        for project in key["stack"][stack]:
            try:
                parameters = key["data"][stack][project]["parameters"]
            except:
                parameters = None

            dest = "{}/{}/{}".format(key["deploy_dir"], stack, project)
            utils.log_info("Build {} {} template".format(project, stack))
            utils.log_info("Done...")
            """ Stack init dict """
            stack_init = {}
            stack_init["dir"] = dest
            stack_init["project"] = project
            stack_init["stack"] = stack
            stack_init["node"] = node
            stack_init["template"] = key["data"][stack][project]['template']
            stack_init["env_file"] = False

            if not utils.check_folder(dest):
                utils.create_folder(dest)

            if parameters:
                utils.log_info("Create {} {} environment file".format(
                    project, stack))
                data_path = {"parameters": parameters}
                utils.yaml_create(data_path, "{}/env.yml".format(dest))
                utils.log_info("Done...")
                stack_init["env_file"] = "{}/env.yml".format(dest)

            init.append(stack_init)
    """ Reformat squences deploy """
    if utils.check_key(key["data"], "deploy"):
        if len(key["data"]["deploy"]) > 0:
            set_sequence = list()
            for deploy in key["data"]["deploy"]:
                set_deploy = deploy.split(".")
                set_stack = set_deploy[0]
                set_project = set_deploy[1]
                set_sequence.append([
                    new_init for new_init in init
                    if (new_init["stack"] == set_stack) and (
                        new_init["project"] == set_project)
                ][0])
            init = set_sequence
    utils.yaml_create(init, "{}/deploy.yml".format(key["deploy_dir"]))
    return init
Esempio n. 3
0
def setup_form(node, stack, project, parent=None):
    init = {
        "form": [{
            "type": "TitleText",
            "name": "Name",
            "key": "name"
        }],
        "depend": [],
        "number": [],
        "stack": stack,
        "project": project,
        "parent": parent
    }

    if parent:
        init["parent"] = parent

    repo = utils.repodata()[stack][project]
    if utils.check_key(repo, "parameters"):
        param = repo["parameters"]
        param_index = utils.get_index(param)
        for index in param_index:
            prop = param[index]
            if not utils.check_key(prop, "default"):
                if not utils.check_key(prop, "dependences"):
                    init["form"].append({
                        "type": "TitleText",
                        "name": prop["label"],
                        "key": index
                    })
                    if prop["type"] == "number":
                        init["number"].append(index)
                else:
                    depend = prop["dependences"]
                    if depend.split(":")[0] == "func":
                        func_name = depend.split(":")[1]
                        init["form"].append({
                            "type":
                            "TitleSelectOne",
                            "name":
                            prop["label"],
                            "key":
                            index,
                            "scroll_exit":
                            True,
                            "values":
                            globals()[func_name](node, "local"),
                            "max_height":
                            7,
                            "value": [
                                0,
                            ]
                        })
                    if depend.split(":")[0] == "repo":
                        repo_name = depend.split(":")[1]
                        init["depend"].append({
                            "name": prop["label"],
                            "key": index,
                            "repo": repo_name
                        })
    return init