summaryrefslogtreecommitdiffstats
path: root/clover/clovisor/clovisor_main.go
diff options
context:
space:
mode:
Diffstat (limited to 'clover/clovisor/clovisor_main.go')
-rw-r--r--clover/clovisor/clovisor_main.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/clover/clovisor/clovisor_main.go b/clover/clovisor/clovisor_main.go
new file mode 100644
index 0000000..46b1780
--- /dev/null
+++ b/clover/clovisor/clovisor_main.go
@@ -0,0 +1,58 @@
+// Copyright (c) Authors of Clover
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Apache License, Version 2.0
+// which accompanies this distribution, and is available at
+// http://www.apache.org/licenses/LICENSE-2.0
+
+package main
+
+import (
+ "fmt"
+ "os"
+ "os/signal"
+ "syscall"
+
+ clovisor "./libclovisor"
+)
+
+var podMonitoringMap map[string]*clovisor.ClovisorBCC
+
+func main() {
+ node_name := os.Getenv("MY_NODE_NAME")
+
+ podMonitoringMap = make(map[string]*clovisor.ClovisorBCC)
+
+ clovisor_k8s_client, err := clovisor.K8s_client_init(node_name)
+ if err != nil {
+ fmt.Printf("Clovisor to Kubernetes connectivity failed: %v\n", err)
+ return
+ }
+ fmt.Printf("Clovisor got k8s client succeed\n")
+
+ monitoring_info_map, err := clovisor_k8s_client.Get_monitoring_info(node_name)
+ if err != nil {
+ fmt.Printf("Clovisor getting monitoring info failed: %v\n", err)
+ return
+ }
+ fmt.Printf("Clovisor get monitoring info succeed: %v\n", monitoring_info_map)
+
+ for pod := range monitoring_info_map {
+ podMon, err := clovisor.ClovisorNewPodInit(clovisor_k8s_client, pod,
+ monitoring_info_map[pod])
+ if err != nil {
+ fmt.Printf("Clovisor monitoring pod %s failed: %v\n", pod, err)
+ continue
+ }
+ podMonitoringMap[pod] = podMon
+ }
+
+ sig := make(chan os.Signal, 1)
+ signal.Notify(sig, os.Interrupt, os.Kill, syscall.SIGTERM)
+ <-sig
+ for pod := range podMonitoringMap {
+ fmt.Printf("Send stop pod to pod %v\n", pod)
+ podMonitoringMap[pod].StopPod()
+ }
+}
+