8
8
from argparse import ArgumentParser
9
9
10
10
from version import VERSION
11
+ import utils
11
12
12
13
# Subcommands list that are currently supported, if any new subcommand has to
13
14
# be implemeted add argument to this list and implement `validate` and `run`
18
19
"storage-list" ,
19
20
"storage-remove" ,
20
21
"logs" ,
21
- "healinfo" ,
22
+ "healinfo"
22
23
]
23
24
24
-
25
25
def get_args ():
26
26
"""Argument Parser"""
27
27
parser = ArgumentParser ()
@@ -39,9 +39,54 @@ def get_args():
39
39
return parser .parse_args ()
40
40
41
41
42
+ def get_all_kadalu_pods ():
43
+ """ List of all pods in kadalu namespace """
44
+
45
+ try :
46
+ cmd = ["kubectl" , "get" , "pods" , "-nkadalu" , "-oname" ]
47
+ resp = utils .execute (cmd )
48
+ # Remove empty lines(pod-names) from command response
49
+ pods = resp .stdout .split ()
50
+ return pods
51
+ except utils .CommandError as err :
52
+ utils .command_error (cmd , err .stderr )
53
+ return None
54
+
55
+
56
+ def get_kadalu_version_in_pod (pod ):
57
+ """ Get kadalu version from pods inside kadalu-namespace by exec """
58
+
59
+ try :
60
+
61
+ cmd = ["kubectl" , "exec" , "-nkadalu" , pod , "--" , "bash" ,
62
+ "-c" , "echo $KADALU_VERSION" ]
63
+
64
+ if "nodeplugin" in pod or "provisioner" in pod :
65
+ version_container = "kadalu-nodeplugin"
66
+ if "provisioner" in pod :
67
+ version_container = "kadalu-provisioner"
68
+ cmd .insert (3 , "-c" )
69
+ cmd .insert (4 , version_container )
70
+
71
+ version_resp = utils .execute (cmd )
72
+ version = version_resp .stdout .strip ()
73
+
74
+ return version
75
+
76
+ except utils .CommandError as err :
77
+ utils .command_error (cmd , err .stderr )
78
+ return None
79
+
80
+
42
81
def show_version ():
43
82
"""Show version information"""
44
- print ("kubectl-kadalu %s" % VERSION )
83
+ print ("kubectl-kadalu plugin: %s" % VERSION )
84
+ pods = get_all_kadalu_pods ()
85
+ if pods :
86
+ print ("kadalu pod(s) versions" )
87
+ for pod in pods :
88
+ version = get_kadalu_version_in_pod (pod )
89
+ print ("%s: %s" % (pod , version ))
45
90
46
91
47
92
def version_set_args (name , parser ):
0 commit comments