github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/controller/operators/olm/overrides/config.go (about)

     1  package overrides
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/operator-framework/api/pkg/operators/v1alpha1"
     7  	"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister"
     8  	"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/ownerutil"
     9  	"github.com/sirupsen/logrus"
    10  	corev1 "k8s.io/api/core/v1"
    11  	"k8s.io/apimachinery/pkg/labels"
    12  )
    13  
    14  type operatorConfig struct {
    15  	lister operatorlister.OperatorLister
    16  	logger *logrus.Logger
    17  }
    18  
    19  func (o *operatorConfig) GetConfigOverrides(ownerCSV ownerutil.Owner) (envVarOverrides []corev1.EnvVar, envFromOverrides []corev1.EnvFromSource, volumeOverrides []corev1.Volume, volumeMountOverrides []corev1.VolumeMount, tolerationOverrides []corev1.Toleration, resourcesOverride *corev1.ResourceRequirements, nodeSelectorOverride map[string]string, affinity *corev1.Affinity, annotations map[string]string, err error) {
    20  	list, listErr := o.lister.OperatorsV1alpha1().SubscriptionLister().Subscriptions(ownerCSV.GetNamespace()).List(labels.Everything())
    21  	if listErr != nil {
    22  		err = fmt.Errorf("failed to list subscription namespace=%s - %v", ownerCSV.GetNamespace(), listErr)
    23  		return
    24  	}
    25  
    26  	owner := findOwner(list, ownerCSV)
    27  	if owner == nil {
    28  		o.logger.Debugf("failed to get the owner subscription csv=%s", ownerCSV.GetName())
    29  		return
    30  	}
    31  
    32  	if owner.Spec.Config == nil {
    33  		// No overrides
    34  		return
    35  	}
    36  
    37  	envVarOverrides = owner.Spec.Config.Env
    38  	envFromOverrides = owner.Spec.Config.EnvFrom
    39  	volumeOverrides = owner.Spec.Config.Volumes
    40  	volumeMountOverrides = owner.Spec.Config.VolumeMounts
    41  	tolerationOverrides = owner.Spec.Config.Tolerations
    42  	resourcesOverride = owner.Spec.Config.Resources
    43  	nodeSelectorOverride = owner.Spec.Config.NodeSelector
    44  	affinity = owner.Spec.Config.Affinity
    45  	annotations = owner.Spec.Config.Annotations
    46  
    47  	return
    48  }
    49  
    50  func findOwner(list []*v1alpha1.Subscription, ownerCSV ownerutil.Owner) *v1alpha1.Subscription {
    51  	for i := range list {
    52  		sub := list[i]
    53  		if sub.Status.InstalledCSV == ownerCSV.GetName() {
    54  			return sub
    55  		}
    56  	}
    57  
    58  	return nil
    59  }