@@ -3,18 +3,27 @@ package main
33import (
44 "fmt"
55 "k8s.io/api/apps/v1"
6+ v1core "k8s.io/api/core/v1"
67 "k8s.io/apimachinery/pkg/fields"
78 "k8s.io/apimachinery/pkg/runtime"
89 "k8s.io/apimachinery/pkg/util/wait"
10+ "k8s.io/client-go/rest"
911 "k8s.io/client-go/tools/cache"
1012 "k8s.io/kubernetes/pkg/apis/core"
1113 "log"
1214 "path/filepath"
13- "reflect"
1415)
1516
1617func WatchList (resource string , resourceType runtime.Object ) cache.Controller {
17- watchlist := cache .NewListWatchFromClient (clientset .AppsV1 ().RESTClient (), resource , core .NamespaceAll , fields .Everything ())
18+ var restInterface rest.Interface
19+ switch resourceType .(type ) {
20+ default :
21+ restInterface = clientset .AppsV1 ().RESTClient ()
22+ case * v1core.Service , * v1core.Secret , * v1core.ConfigMap :
23+ restInterface = clientset .CoreV1 ().RESTClient ()
24+
25+ }
26+ watchlist := cache .NewListWatchFromClient (restInterface , resource , core .NamespaceAll , fields .Everything ())
1827 _ , controller := cache .NewInformer (
1928 watchlist ,
2029 resourceType ,
@@ -42,9 +51,11 @@ func WatchApis() {
4251 go WatchList ("relicasets" , & v1.ReplicaSet {}).Run (wait .NeverStop )
4352 }
4453
45- // Only get Secrets, Config Maps, Services, Ingress only if its added
54+ // Only get Secrets, Config Maps, Services only if store_all is set
4655 if deck_config .STORE_ALL == true {
47- // TODO
56+ go WatchList (string (v1core .ResourceServices ), & v1core.Service {}).Run (wait .NeverStop )
57+ go WatchList ("secrets" , & v1core.Secret {}).Run (wait .NeverStop )
58+ go WatchList (string (v1core .ResourceConfigMaps ), & v1core.ConfigMap {}).Run (wait .NeverStop )
4859 }
4960
5061 // IDK if I need all these
@@ -60,13 +71,19 @@ func getResourceInfo(obj interface{}) (string, string, string) {
6071 default :
6172 log .Panic ("unknown type in deletion" )
6273 case * v1.DaemonSet :
63- return val .Name , "daemonset " , val .Namespace
74+ return val .Name , "DaemonSet " , val .Namespace
6475 case * v1.StatefulSet :
65- return val .Name , "statefulset " , val .Namespace
76+ return val .Name , "StatefulSet " , val .Namespace
6677 case * v1.Deployment :
67- return val .Name , "deployment " , val .Namespace
78+ return val .Name , "Deployment " , val .Namespace
6879 case * v1.ReplicaSet :
69- return val .Name , "replicaset" , val .Namespace
80+ return val .Name , "ReplicaSet" , val .Namespace
81+ case * v1core.Service :
82+ return val .Name , "Service" , val .Namespace
83+ case * v1core.Secret :
84+ return val .Name , "Secret" , val .Namespace
85+ case * v1core.ConfigMap :
86+ return val .Name , "ConfigMap" , val .Namespace
7087 }
7188 return "" , "" , ""
7289}
@@ -82,64 +99,13 @@ func ResourceDeleted(obj interface{}) {
8299}
83100
84101func ResourceAdded (obj interface {}) {
85- switch val := obj .(type ) {
86- default :
87- log .Panic ("Unknown Type: " )
88- log .Println (val )
89- return
90- case * v1.Deployment :
91- log .Println ("Deployment Added " + val .Name )
92- namespacePath := filepath .Join (createPath , val .Namespace )
93- SaveDeploy (* val , namespacePath )
94- case * v1.ReplicaSet :
95- if deck_config .UseReplicaSets == true {
96- namespacePath := filepath .Join (createPath , val .Namespace )
97- SaveRS (* val , namespacePath )
98- }
99- case * v1.DaemonSet :
100- log .Println ("DaemonSet Added " + val .Name )
101- namespacePath := filepath .Join (createPath , val .Namespace )
102- SaveDS (* val , namespacePath )
103- case * v1.StatefulSet :
104- log .Println ("Satefulset Added " + val .Name )
105- namespacePath := filepath .Join (createPath , val .Namespace )
106- SaveSS (* val , namespacePath )
107- }
102+ log .Println ("Resource Added" )
103+ SaveResource (obj )
108104}
109105
110106func ResourceUpdated (old interface {}, obj interface {}) {
111107 // Because syncs also call updatefunc we will need to do this
112108 // create kctl deployment struct
113-
114- switch val := obj .(type ) {
115- default :
116- log .Panic ("Unknown Type: " )
117- log .Println (val )
118- return
119- case * v1.Deployment :
120- if reflect .DeepEqual (old , obj ) == false {
121- log .Println ("Deployment Updated " + val .Name )
122- namespacePath := filepath .Join (createPath , val .Namespace )
123- SaveDeploy (* val , namespacePath )
124- }
125- case * v1.ReplicaSet :
126- if deck_config .UseReplicaSets == true {
127- if reflect .DeepEqual (old , obj ) == false {
128- namespacePath := filepath .Join (createPath , val .Namespace )
129- SaveRS (* val , namespacePath )
130- }
131- }
132- case * v1.DaemonSet :
133- if reflect .DeepEqual (obj , old ) == false {
134- log .Println ("Daemonset Updated " + val .Name )
135- namespacePath := filepath .Join (createPath , val .Namespace )
136- SaveDS (* val , namespacePath )
137- }
138- case * v1.StatefulSet :
139- if reflect .DeepEqual (old , obj ) == false {
140- log .Println ("Statefulset Updated " + val .Name )
141- namespacePath := filepath .Join (createPath , val .Namespace )
142- SaveSS (* val , namespacePath )
143- }
144- }
109+ log .Println ("Resource Updated" )
110+ SaveResource (obj )
145111}
0 commit comments