cloudfoundry-incubator/eirini

View on GitHub
k8s/lrp_client.go

Summary

Maintainability
A
1 hr
Test Coverage
F
0%
package k8s

import (
    "context"

    "code.cloudfoundry.org/eirini/api"
    "code.cloudfoundry.org/eirini/k8s/stset"
    "code.cloudfoundry.org/lager"
    appsv1 "k8s.io/api/apps/v1"
    corev1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

type PodClient interface {
    GetAll(ctx context.Context) ([]corev1.Pod, error)
    GetByLRPIdentifier(ctx context.Context, id api.LRPIdentifier) ([]corev1.Pod, error)
    Delete(ctx context.Context, namespace, name string) error
}

type PodDisruptionBudgetClient interface {
    Update(ctx context.Context, stset *appsv1.StatefulSet, lrp *api.LRP) error
}

type StatefulSetClient interface {
    Create(ctx context.Context, namespace string, statefulSet *appsv1.StatefulSet) (*appsv1.StatefulSet, error)
    Update(ctx context.Context, namespace string, statefulSet *appsv1.StatefulSet) (*appsv1.StatefulSet, error)
    Delete(ctx context.Context, namespace string, name string) error
    GetBySourceType(ctx context.Context, sourceType string) ([]appsv1.StatefulSet, error)
    GetByLRPIdentifier(ctx context.Context, id api.LRPIdentifier) ([]appsv1.StatefulSet, error)
}

type SecretsClient interface {
    Create(ctx context.Context, namespace string, secret *corev1.Secret) (*corev1.Secret, error)
    Delete(ctx context.Context, namespace string, name string) error
    SetOwner(ctx context.Context, secret *corev1.Secret, owner metav1.Object) (*corev1.Secret, error)
}

type EventsClient interface {
    GetByPod(ctx context.Context, pod corev1.Pod) ([]corev1.Event, error)
}

type LRPClient struct {
    stset.Desirer
    stset.Lister
    stset.Stopper
    stset.Updater
    stset.Getter
}

func NewLRPClient(
    logger lager.Logger,
    secrets SecretsClient,
    statefulSets StatefulSetClient,
    pods PodClient,
    pdbClient PodDisruptionBudgetClient,
    events EventsClient,
    lrpToStatefulSetConverter stset.LRPToStatefulSetConverter,
    statefulSetToLRPConverter stset.StatefulSetToLRPConverter,
) *LRPClient {
    return &LRPClient{
        Desirer: stset.NewDesirer(logger, secrets, statefulSets, lrpToStatefulSetConverter, pdbClient),
        Lister:  stset.NewLister(logger, statefulSets, statefulSetToLRPConverter),
        Stopper: stset.NewStopper(logger, statefulSets, statefulSets, pods),
        Updater: stset.NewUpdater(logger, statefulSets, statefulSets, pdbClient),
        Getter:  stset.NewGetter(logger, statefulSets, pods, events, statefulSetToLRPConverter),
    }
}