Skip to content

Commit d355584

Browse files
committed
Merge pull request #68 from ethernetdan/endpoints
Now displays LoadBalancer endpoints while deploying
2 parents 46393c7 + ed9f6a3 commit d355584

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

pkg/deploy/cluster.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ func (c *KubeCluster) Deploy(dep *Deployment, update bool) error {
8686
}
8787
}
8888

89+
printLoadBalancers(c.client, dep.services)
90+
8991
// deployed successfully
9092
return nil
9193
}
@@ -285,3 +287,48 @@ func copyImmutables(src, dst KubeObject) {
285287
dst.Spec.ClusterIP = src.Spec.ClusterIP
286288
}
287289
}
290+
291+
func printLoadBalancers(client *kubecli.Client, services []*kube.Service) {
292+
if len(services) == 0 {
293+
return
294+
}
295+
296+
first := true
297+
completed := map[string]bool{}
298+
299+
// checks when we've seen every service
300+
done := func () bool {
301+
for _, s := range services {
302+
if s.Spec.Type == kube.ServiceTypeLoadBalancer && !completed[s.Name] {
303+
return false
304+
}
305+
}
306+
return true
307+
}
308+
309+
for {
310+
if done() {
311+
return
312+
}
313+
314+
if first {
315+
fmt.Println("Waiting for load balancer deployment...")
316+
first = false
317+
}
318+
319+
for _, s := range services {
320+
if s.Spec.Type == kube.ServiceTypeLoadBalancer && !completed[s.Name] {
321+
clusterVers, err := client.Services(s.Namespace).Get(s.Name)
322+
if err != nil {
323+
fmt.Printf("Error getting service `%s`: %v\n", s.Name, err)
324+
}
325+
326+
loadBalancers := clusterVers.Status.LoadBalancer.Ingress
327+
if len (loadBalancers) == 1 {
328+
completed[s.Name] = true
329+
fmt.Printf("Service '%s/%s' available at: \t%s\n", s.Namespace, s.Name,loadBalancers[0].IP)
330+
}
331+
}
332+
}
333+
}
334+
}

0 commit comments

Comments
 (0)