Skip to content
This repository has been archived by the owner on Apr 8, 2022. It is now read-only.

Watch PersistentVolumeClaim too #159

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions cmd/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,13 @@ var resourceConfigCmd = &cobra.Command{
logrus.Fatal("pv", err)
}

b, err = cmd.Flags().GetBool("pvc")
if err == nil {
conf.Resource.PersistentVolumeClaim = b
} else {
logrus.Fatal("pvc", err)
}

b, err = cmd.Flags().GetBool("ds")
if err == nil {
conf.Resource.DaemonSet = b
Expand Down Expand Up @@ -132,6 +139,7 @@ func init() {
resourceConfigCmd.Flags().Bool("rs", false, "watch for replicasets")
resourceConfigCmd.Flags().Bool("ns", false, "watch for namespaces")
resourceConfigCmd.Flags().Bool("pv", false, "watch for persistent volumes")
resourceConfigCmd.Flags().Bool("pvc", false, "watch for persistent volumes claim")
resourceConfigCmd.Flags().Bool("jobs", false, "watch for jobs")
resourceConfigCmd.Flags().Bool("ds", false, "watch for daemonsets")
resourceConfigCmd.Flags().Bool("secret", false, "watch for plain secrets")
Expand Down
4 changes: 4 additions & 0 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ type Resource struct {
Pod bool `json:"po"`
Job bool `json:"job"`
PersistentVolume bool `json:"pv"`
PersistentVolumeClaim bool `json:"pvc"`
Namespace bool `json:"ns"`
Secret bool `json:"secret"`
ConfigMap bool `json:"configmap"`
Expand Down Expand Up @@ -171,6 +172,9 @@ func (c *Config) CheckMissingResourceEnvvars() {
if !c.Resource.PersistentVolume && os.Getenv("KW_PERSISTENT_VOLUME") == "true" {
c.Resource.PersistentVolume = true
}
if !c.Resource.PersistentVolumeClaim && os.Getenv("KW_PERSISTENT_VOLUME_CLAIM") == "true" {
c.Resource.PersistentVolumeClaim = true
}
if !c.Resource.Secret && os.Getenv("KW_SECRET") == "true" {
c.Resource.Secret = true
}
Expand Down
22 changes: 22 additions & 0 deletions pkg/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,28 @@ func Start(conf *config.Config, eventHandler handlers.Handler) {
go c.Run(stopCh)
}

if conf.Resource.PersistentVolumeClaim {
informer := cache.NewSharedIndexInformer(
&cache.ListWatch{
ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) {
return kubeClient.CoreV1().PersistentVolumeClaims(meta_v1.NamespaceAll).List(options)
},
WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) {
return kubeClient.CoreV1().PersistentVolumeClaims(meta_v1.NamespaceAll).Watch(options)
},
},
&api_v1.PersistentVolumeClaim{},
0, //Skip resync
cache.Indexers{},
)

c := newResourceController(kubeClient, eventHandler, informer, "persistent volume claim")
stopCh := make(chan struct{})
defer close(stopCh)

go c.Run(stopCh)
}

if conf.Resource.Secret {
informer := cache.NewSharedIndexInformer(
&cache.ListWatch{
Expand Down
2 changes: 2 additions & 0 deletions pkg/event/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ func New(obj interface{}, action string) Event {
kind = "ingress"
case *api_v1.PersistentVolume:
kind = "persistent volume"
case *api_v1.PersistentVolumeClaim:
kind = "persistent volume claim"
case *api_v1.Pod:
kind = "pod"
host = object.Spec.NodeName
Expand Down
4 changes: 3 additions & 1 deletion pkg/utils/k8sutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
apps_v1 "k8s.io/api/apps/v1"
batch_v1 "k8s.io/api/batch/v1"
api_v1 "k8s.io/api/core/v1"
ext_v1beta1 "k8s.io/api/extensions/v1beta1"
ext_v1beta1 "k8s.io/api/extensions/v1beta1"
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
Expand Down Expand Up @@ -71,6 +71,8 @@ func GetObjectMetaData(obj interface{}) meta_v1.ObjectMeta {
objectMeta = object.ObjectMeta
case *api_v1.PersistentVolume:
objectMeta = object.ObjectMeta
case *api_v1.PersistentVolumeClaim:
objectMeta = object.ObjectMeta
case *api_v1.Namespace:
objectMeta = object.ObjectMeta
case *api_v1.Secret:
Expand Down