def get_config()

in source/eksfedctl/create_action.py [0:0]


def get_config(args):
    config = types.SimpleNamespace()
    config.bastion = get_instance_metadata()
    config_yaml = {"metadata": {}}
    config_spec = {"metadata": {}}

    # 1. Default template
    root_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")
    default_yaml_path = os.path.join(root_path, "default.yaml")
    default_yaml = load_yaml(default_yaml_path)
    default_spec = default_yaml["spec"]
    del default_yaml["spec"]
    config_yaml = {**config_yaml, **default_yaml}
    config_spec = {**config_spec, **default_spec}

    # 2. User-provided template
    if args.file:
        # Remove default nodeGroups and managedNodeGroups form the config
        if "managedNodeGroups" in config_spec:
            del config_spec["managedNodeGroups"]
        if "nodeGroups" in config_spec:
            del config_spec["nodeGroups"]

        user_yaml = load_yaml(args.file)
        validate_user_yaml(user_yaml)

        if "spec" in user_yaml:
            user_spec = user_yaml["spec"]
            del user_yaml["spec"]
            config_spec = {**config_spec, **user_spec}

        config_yaml = {**config_yaml, **user_yaml}

    # 3. Command-line arguments
    if args.name:
        config_yaml["metadata"]["name"] = args.name
    if args.regions:
        config_yaml["metadata"]["regions"] = args.regions

    if "name" not in config_yaml["metadata"] or not config_yaml["metadata"]["name"]:
        config_yaml["metadata"]["name"] = f"eksfed-{uuid.uuid4().hex[0:6]}"

    if "regions" not in config_yaml["metadata"]:
        config_yaml["metadata"]["regions"] = []

    config.yaml = config_yaml
    config.spec = config_spec

    return config