Add script that can merge a new kube config file to the current one
This commit is contained in:
parent
630ba1b4e1
commit
c02c464161
1 changed files with 55 additions and 0 deletions
55
scripts/kube-config-append
Executable file
55
scripts/kube-config-append
Executable file
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import yaml
|
||||
import os
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Get kubeconfig")
|
||||
parser.add_argument("--file", help="File to be added to kubeconfig", required=True)
|
||||
parser.add_argument("--name", help="Name of the cluster", required=True)
|
||||
args = parser.parse_args()
|
||||
new_file = args.file
|
||||
name = args.name
|
||||
kube_config_dir = os.path.join(os.environ["HOME"], ".kube")
|
||||
kube_config_file = os.path.join(kube_config_dir, "config")
|
||||
current_config = {}
|
||||
new_config = {}
|
||||
if not os.path.isdir(kube_config_dir):
|
||||
os.mkdir(kube_config_dir)
|
||||
if os.path.isfile(kube_config_file):
|
||||
with open(kube_config_file, "r") as f:
|
||||
current_config = yaml.safe_load(f)
|
||||
|
||||
if "clusters" not in current_config:
|
||||
current_config["clusters"] = []
|
||||
if "contexts" not in current_config:
|
||||
current_config["contexts"] = []
|
||||
if "users" not in current_config:
|
||||
current_config["users"] = []
|
||||
if new_file == "-":
|
||||
new_config = yaml.safe_load(sys.stdin.read())
|
||||
elif os.path.isfile(new_file):
|
||||
with open(new_file, "r") as f:
|
||||
new_config = yaml.safe_load(f)
|
||||
else:
|
||||
raise Exception(f"Invalid file: {new_file}")
|
||||
if "clusters" in new_config:
|
||||
new_config["clusters"][0]["name"] = name
|
||||
current_config["clusters"] += new_config["clusters"]
|
||||
if "contexts" in new_config:
|
||||
new_config["contexts"][0]["name"] = name
|
||||
new_config["contexts"][0]["context"]["cluster"] = name
|
||||
new_config["contexts"][0]["context"]["user"] = name
|
||||
current_config["contexts"] += new_config["contexts"]
|
||||
if "users" in new_config:
|
||||
new_config["users"][0]["name"] = name
|
||||
current_config["users"] += new_config["users"]
|
||||
with open(kube_config_file, "w") as f:
|
||||
yaml.dump(current_config, f)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Reference in a new issue