9
9
"os"
10
10
"sort"
11
11
"sync"
12
+ "time"
12
13
13
14
v1 "k8s.io/api/core/v1"
14
15
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -41,6 +42,7 @@ type PodResult struct {
41
42
podName string
42
43
output string
43
44
err error
45
+ elapsed time.Duration
44
46
}
45
47
46
48
type ByPodName []PodResult
@@ -114,11 +116,18 @@ func main() {
114
116
115
117
for _ , result := range results {
116
118
if result .err != nil {
117
- fmt .Printf ("Error executing command on pod %s: %v\n %s" , result .podName , err , result .output )
119
+ fmt .Printf ("%sPod %s - %s\n %sError executing command: %v\n %s" ,
120
+ colorize (divColor , divText ),
121
+ colorize (podNameColor , result .podName ),
122
+ result .elapsed .String (),
123
+ colorize (divColor , divText ),
124
+ err ,
125
+ result .output )
118
126
} else {
119
- fmt .Printf ("%sPod %s\n %s%s" ,
127
+ fmt .Printf ("%sPod %s - %s \n %s%s" ,
120
128
colorize (divColor , divText ),
121
129
colorize (podNameColor , result .podName ),
130
+ result .elapsed .String (),
122
131
colorize (divColor , divText ),
123
132
result .output )
124
133
}
@@ -130,6 +139,7 @@ func colorize(colorCode ColorCode, text string) string {
130
139
}
131
140
132
141
func execCommand (config * rest.Config , clientset * kubernetes.Clientset , pod v1.Pod , container string , command []string ) PodResult {
142
+ start := time .Now ()
133
143
req := clientset .CoreV1 ().RESTClient ().Post ().
134
144
Resource ("pods" ).
135
145
Name (pod .Name ).
@@ -144,7 +154,7 @@ func execCommand(config *rest.Config, clientset *kubernetes.Clientset, pod v1.Po
144
154
145
155
exec , err := remotecommand .NewSPDYExecutor (config , "POST" , req .URL ())
146
156
if err != nil {
147
- return PodResult {pod .Name , "" , err }
157
+ return PodResult {pod .Name , "" , err , time . Since ( start ) }
148
158
}
149
159
150
160
var stdout , stderr bytes.Buffer
@@ -154,12 +164,12 @@ func execCommand(config *rest.Config, clientset *kubernetes.Clientset, pod v1.Po
154
164
})
155
165
156
166
if err != nil {
157
- return PodResult {pod .Name , "" , err }
167
+ return PodResult {pod .Name , "" , err , time . Since ( start ) }
158
168
}
159
169
160
170
if stderr .Len () > 0 {
161
- return PodResult {pod .Name , stdout .String (), fmt .Errorf ("stderr: %s" , stderr .String ())}
171
+ return PodResult {pod .Name , stdout .String (), fmt .Errorf ("stderr: %s" , stderr .String ()), time . Since ( start ) }
162
172
}
163
173
164
- return PodResult {pod .Name , stdout .String (), nil }
174
+ return PodResult {pod .Name , stdout .String (), nil , time . Since ( start ) }
165
175
}
0 commit comments