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