aboutsummaryrefslogtreecommitdiff
path: root/pkg/k8s/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/k8s/client.go')
-rw-r--r--pkg/k8s/client.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/pkg/k8s/client.go b/pkg/k8s/client.go
new file mode 100644
index 0000000..8861d0a
--- /dev/null
+++ b/pkg/k8s/client.go
@@ -0,0 +1,42 @@
+package k8s
+
+import (
+ "context"
+ "time"
+
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/client-go/kubernetes"
+ "k8s.io/client-go/rest"
+)
+
+func NewInCluster() (*kubernetes.Clientset, error) {
+ //creates the in-cluster config
+ config, err := rest.InClusterConfig()
+ if err != nil {
+ panic(err.Error())
+ }
+
+ // creates the clientset
+ clientset, err := kubernetes.NewForConfig(config)
+ if err != nil {
+ panic(err.Error())
+ }
+ return clientset, nil
+}
+
+func GetVolumeCapacity(volumeId string) (int64, error) {
+ client, err := NewInCluster()
+ if err != nil {
+ return 0, err
+ }
+ ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
+ defer cancel()
+
+ if volume, err := client.CoreV1().PersistentVolumes().Get(ctx, volumeId, metav1.GetOptions{}); err != nil {
+ return 0, err
+ } else {
+ storage := volume.Spec.Capacity.Storage()
+ capacity, _ := storage.AsInt64()
+ return capacity, nil
+ }
+}