import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/typed/apps/v1beta2"
autoscalingv1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1"
"k8s.io/client-go/rest"
"k8s.io/client-go/util/retry"
)
var clientset *kubernetes.Clientset
var deploymentsClient v1beta2.DeploymentInterface
func kubeInit() {
config, _ := rest.InClusterConfig()
clientset, _ = kubernetes.NewForConfig(config)
deploymentsClient = clientset.AppsV1beta2().Deployments(kubeNamespace)
}
func getNumWorkers() int {
deployment, _ := deploymentsClient.Get("my-workers", metav1.GetOptions{})
return int(*deployment.Spec.Replicas)
}
func setNumWorkers(numWorkers int) error {
return retry.RetryOnConflict(retry.DefaultRetry, func() error {
deployment, err := deploymentsClient.Get("my-workers", metav1.GetOptions{})
if err != nil {
return err
}
wrapper := int32(numWorkers)
deployment.Spec.Replicas = &wrapper
_, err = deploymentsClient.Update(deployment)
return err
})
}