Skip to content

Commit 82674c5

Browse files
Add "-x" or "--clustername" flag to input cluster name when generating kubeconfig files (#1423)
1 parent b7aa80f commit 82674c5

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ For testing purposes you can create a [minikube](https://minikube.sigs.k8s.io/do
8484
source venv/bin/activate
8585
pip3 install -r requirements.txt
8686
apiserver=`kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}'`
87-
python3 provider-kubeconfig.py -s $apiserver create $KUBEPLUS_NS
87+
python3 provider-kubeconfig.py -s $apiserver -x <cluster_name> create $KUBEPLUS_NS
8888
deactivate
8989
```
9090

provider-kubeconfig.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ def run_command(self, cmd):
7171
#print(err)
7272
return out, err
7373

74-
def _create_kubecfg_file(self, sa, namespace, filename, token, ca, server, kubeconfig):
74+
def _create_kubecfg_file(self, sa, namespace, filename, token, ca, server, kubeconfig, cluster_name=None):
7575
#print("Creating kubecfg file")
7676
top_level_dict = {}
7777
top_level_dict["apiVersion"] = "v1"
7878
top_level_dict["kind"] = "Config"
7979

80-
contextName = sa
80+
contextName = cluster_name if cluster_name else sa
8181

8282
usersList = []
8383
usertoken = {}
@@ -98,12 +98,12 @@ def _create_kubecfg_file(self, sa, namespace, filename, token, ca, server, kubec
9898

9999
clusterInfo = {}
100100
clusterInfo["cluster"] = cluster_details
101-
clusterInfo["name"] = sa
101+
clusterInfo["name"] = cluster_name if cluster_name else sa
102102
clustersList.append(clusterInfo)
103103
top_level_dict["clusters"] = clustersList
104104

105105
context_details = {}
106-
context_details["cluster"] = sa
106+
context_details["cluster"] = cluster_name if cluster_name else sa
107107
context_details["user"] = sa
108108
context_details["namespace"] = namespace
109109
contextInfo = {}
@@ -705,7 +705,7 @@ def _create_secret(self, sa, namespace, kubeconfig):
705705
sys.exit()
706706
return out
707707

708-
def _extract_kubeconfig(self, sa, namespace, filename, serverip='', kubecfg=''):
708+
def _extract_kubeconfig(self, sa, namespace, filename, serverip='', kubecfg='', cluster_name=None):
709709
#print("Extracting kubeconfig")
710710
secretName = sa
711711
tokenFound = False
@@ -755,10 +755,10 @@ def _extract_kubeconfig(self, sa, namespace, filename, serverip='', kubecfg=''):
755755
else:
756756
server = api_server_ip
757757
#print("Kube API Server:" + server)
758-
self._create_kubecfg_file(sa, namespace, filename, token, ca_cert, server, kubeconfig)
758+
self._create_kubecfg_file(sa, namespace, filename, token, ca_cert, server, kubeconfig, cluster_name)
759759

760760

761-
def _generate_kubeconfig(self, sa, namespace, filename, api_server_ip='', kubeconfig=''):
761+
def _generate_kubeconfig(self, sa, namespace, filename, api_server_ip='', kubeconfig='', cluster_name=None):
762762
cmdprefix = ""
763763
cmd = " kubectl create sa " + sa + " -n " + namespace + kubeconfig
764764
cmdToRun = cmdprefix + " " + cmd
@@ -778,7 +778,7 @@ def _generate_kubeconfig(self, sa, namespace, filename, api_server_ip='', kubeco
778778

779779
# Moving from here
780780
#print("Got secret token")
781-
self._extract_kubeconfig(sa, namespace, filename, serverip=api_server_ip, kubecfg=kubeconfig)
781+
self._extract_kubeconfig(sa, namespace, filename, serverip=api_server_ip, kubecfg=kubeconfig, cluster_name=cluster_name)
782782

783783

784784
if __name__ == '__main__':
@@ -798,6 +798,9 @@ def _generate_kubeconfig(self, sa, namespace, filename, api_server_ip='', kubeco
798798
parser.add_argument("-f", "--filename", help='''This flag is used to specify the
799799
output file name in which generated provider kubeconfig will be store
800800
(The default value is kubeplus-saas-provider.json)''')
801+
parser.add_argument("-x", "--clustername", help='''This flag is used to specify the name of the cluster.
802+
This name will be used in setting the value of the context attribute, along with the cluster name,
803+
in the generated kubeconfig file.''')
801804
permission_help = "permissions file - use with update command.\n"
802805
permission_help = permission_help + "Should be a JSON file with the following structure:\n"
803806
permission_help = permission_help + "{perms:{<apiGroup1>:[{resource1|resource/resourceName::<resourceName>: [verb1, verb2, ...]}, {resource2: [..]}], {<apiGroup2>:[...]}}}"
@@ -826,6 +829,11 @@ def _generate_kubeconfig(self, sa, namespace, filename, api_server_ip='', kubeco
826829
#print("Permission file:" + pargs.permissionfile)
827830
permission_file = pargs.permissionfile
828831

832+
cluster_name = ''
833+
if pargs.clustername:
834+
#print("Cluster name:" + pargs.clustername)
835+
cluster_name = pargs.clustername
836+
829837
if action == 'update' and permission_file == '':
830838
print("Permission file missing. Please provide permission file.")
831839
print(permission_help)
@@ -858,11 +866,11 @@ def _generate_kubeconfig(self, sa, namespace, filename, api_server_ip='', kubeco
858866

859867
# 1. Generate Provider kubeconfig
860868
if sa == "kubeplus-saas-provider":
861-
kubeconfigGenerator._generate_kubeconfig(sa, namespace, filename, api_server_ip=api_s_ip, kubeconfig=kubeconfigString)
869+
kubeconfigGenerator._generate_kubeconfig(sa, namespace, filename, api_server_ip=api_s_ip, kubeconfig=kubeconfigString, cluster_name=cluster_name)
862870
kubeconfigGenerator._apply_rbac(sa, namespace, entity='provider', kubeconfig=kubeconfigString)
863871
print("Provider kubeconfig created: " + filename)
864872
else:
865-
kubeconfigGenerator._generate_kubeconfig(sa, namespace, filename, api_server_ip=api_s_ip, kubeconfig=kubeconfigString)
873+
kubeconfigGenerator._generate_kubeconfig(sa, namespace, filename, api_server_ip=api_s_ip, kubeconfig=kubeconfigString, cluster_name=cluster_name)
866874
kubeconfigGenerator._apply_rbac(sa, namespace, entity='consumer', kubeconfig=kubeconfigString)
867875
print("Consumer kubeconfig created: " + filename)
868876

0 commit comments

Comments
 (0)