Added Wait on Storage Class

Signed-off-by: Vibhav Bobade <vibhav.bobde@gmail.com>
pull/6212/head
Vibhav Bobade 6 years ago
parent 29d6853659
commit 5c83d6917b

@ -27,6 +27,7 @@ import (
batchv1 "k8s.io/api/batch/v1" batchv1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
extensionsv1beta1 "k8s.io/api/extensions/v1beta1" extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
storagev1 "k8s.io/api/storage/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
@ -114,6 +115,14 @@ func (w *waiter) waitForResources(created ResourceList) error {
if !w.deploymentReady(newReplicaSet, currentDeployment) { if !w.deploymentReady(newReplicaSet, currentDeployment) {
return false, nil return false, nil
} }
case *storagev1.StorageClass:
sc, err := w.c.StorageV1().StorageClasses().Get(value.Name, metav1.GetOptions{})
if err != nil {
return false, err
}
if !w.storageClassReady(sc) {
return false, nil
}
case *corev1.PersistentVolumeClaim: case *corev1.PersistentVolumeClaim:
claim, err := w.c.CoreV1().PersistentVolumeClaims(value.Namespace).Get(value.Name, metav1.GetOptions{}) claim, err := w.c.CoreV1().PersistentVolumeClaims(value.Namespace).Get(value.Name, metav1.GetOptions{})
if err != nil { if err != nil {
@ -155,6 +164,7 @@ func (w *waiter) waitForResources(created ResourceList) error {
ok, err = w.podsReadyForObject(value.Namespace, value) ok, err = w.podsReadyForObject(value.Namespace, value)
case *appsv1.ReplicaSet: case *appsv1.ReplicaSet:
ok, err = w.podsReadyForObject(value.Namespace, value) ok, err = w.podsReadyForObject(value.Namespace, value)
} }
if !ok || err != nil { if !ok || err != nil {
return false, err return false, err
@ -221,6 +231,14 @@ func (w *waiter) volumeReady(v *corev1.PersistentVolumeClaim) bool {
return true return true
} }
func (w *waiter) storageClassReady(sc *storagev1.StorageClass) bool {
if len(sc.Provisioner) <= 0 {
w.log("Provisioner is not allocated: %s/%s", sc.GetNamespace(), sc.GetName())
return false
}
return true
}
func (w *waiter) deploymentReady(rs *appsv1.ReplicaSet, dep *appsv1.Deployment) bool { func (w *waiter) deploymentReady(rs *appsv1.ReplicaSet, dep *appsv1.Deployment) bool {
expectedReady := *dep.Spec.Replicas - deploymentutil.MaxUnavailable(*dep) expectedReady := *dep.Spec.Replicas - deploymentutil.MaxUnavailable(*dep)
if !(rs.Status.ReadyReplicas >= expectedReady) { if !(rs.Status.ReadyReplicas >= expectedReady) {

Loading…
Cancel
Save