/
githubmirror
/
origin
Обзор
Документация
Войти
/
githubmirror
/
origin
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
test/extended/util/wait.go
41 строка
1 KB
Tomas Nozicka
Fix cluster quota test to tolerate a new default config map in every namespace
02 дек 2020, 15:24
02 дек 2020, 15:24
abfdb8d
Код
Авторство
О чём код?
package util import ( "context" "fmt" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" corev1client "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/tools/cache" watchtools "k8s.io/client-go/tools/watch" ) func WaitForCMState(ctx context.Context, client corev1client.CoreV1Interface, namespace string, name string, condition func(cm *corev1.ConfigMap) (bool, error)) (*corev1.ConfigMap, error) { fieldSelector := fields.OneTermEqualSelector("metadata.name", name).String() lw := &cache.ListWatch{ ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { options.FieldSelector = fieldSelector return client.ConfigMaps(namespace).List(ctx, options) }, WatchFunc: func(options metav1.ListOptions) (i watch.Interface, e error) { options.FieldSelector = fieldSelector return client.ConfigMaps(namespace).Watch(ctx, options) }, } event, err := watchtools.UntilWithSync(ctx, lw, &corev1.ConfigMap{}, nil, func(event watch.Event) (bool, error) { switch event.Type { case watch.Added, watch.Modified: return condition(event.Object.(*corev1.ConfigMap)) default: return true, fmt.Errorf("unexpected event: %#v", event) } }) if err != nil { return nil, err } return event.Object.(*corev1.ConfigMap), nil }