Skip to content

Commit 3787874

Browse files
Merge pull request #2010 from joelanford/fix/dep-resources
Bug 1926893: only override deployment resources when explicitly defined in subscription config
2 parents fd0ce87 + 8120b5e commit 3787874

File tree

41 files changed

+1140
-485
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1140
-485
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ run-console-local:
266266
uninstall:
267267
@echo Uninstalling OLM:
268268
- kubectl delete -f deploy/upstream/quickstart/crds.yaml
269-
- kubectl delete -f deploy/upstream/quickstart/olm.yam
269+
- kubectl delete -f deploy/upstream/quickstart/olm.yaml
270270
- kubectl delete catalogsources.operators.coreos.com
271271
- kubectl delete clusterserviceversions.operators.coreos.com
272272
- kubectl delete installplans.operators.coreos.com

go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ require (
2626
github.com/onsi/gomega v1.10.2
2727
github.com/openshift/api v0.0.0-20200331152225-585af27e34fd
2828
github.com/openshift/client-go v0.0.0-20200326155132-2a6cd50aedd0
29-
github.com/operator-framework/api v0.5.1
29+
github.com/operator-framework/api v0.6.0
3030
github.com/operator-framework/operator-registry v1.13.6
3131
github.com/otiai10/copy v1.2.0
3232
github.com/pkg/errors v0.9.1
@@ -41,18 +41,18 @@ require (
4141
google.golang.org/grpc v1.30.0
4242
gopkg.in/yaml.v2 v2.3.0
4343
helm.sh/helm/v3 v3.1.0-rc.1.0.20201215141456-e71d38b414eb
44-
k8s.io/api v0.20.0
45-
k8s.io/apiextensions-apiserver v0.20.0
46-
k8s.io/apimachinery v0.20.0
47-
k8s.io/apiserver v0.20.0
48-
k8s.io/client-go v0.20.0
49-
k8s.io/code-generator v0.20.0
50-
k8s.io/component-base v0.20.0
44+
k8s.io/api v0.20.1
45+
k8s.io/apiextensions-apiserver v0.20.1
46+
k8s.io/apimachinery v0.20.1
47+
k8s.io/apiserver v0.20.1
48+
k8s.io/client-go v0.20.1
49+
k8s.io/code-generator v0.20.1
50+
k8s.io/component-base v0.20.1
5151
k8s.io/klog v1.0.0
5252
k8s.io/kube-aggregator v0.20.0
5353
k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd
5454
rsc.io/letsencrypt v0.0.3 // indirect
55-
sigs.k8s.io/controller-runtime v0.7.0
55+
sigs.k8s.io/controller-runtime v0.8.0
5656
sigs.k8s.io/controller-tools v0.4.1
5757
sigs.k8s.io/kind v0.7.0
5858
)

go.sum

Lines changed: 16 additions & 30 deletions
Large diffs are not rendered by default.

pkg/controller/operators/olm/overrides/config.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type operatorConfig struct {
1616
logger *logrus.Logger
1717
}
1818

19-
func (o *operatorConfig) GetConfigOverrides(ownerCSV ownerutil.Owner) (envVarOverrides []corev1.EnvVar, volumeOverrides []corev1.Volume, volumeMountOverrides []corev1.VolumeMount, tolerationOverrides []corev1.Toleration, resourcesOverride corev1.ResourceRequirements, nodeSelectorOverride map[string]string, err error) {
19+
func (o *operatorConfig) GetConfigOverrides(ownerCSV ownerutil.Owner) (envVarOverrides []corev1.EnvVar, volumeOverrides []corev1.Volume, volumeMountOverrides []corev1.VolumeMount, tolerationOverrides []corev1.Toleration, resourcesOverride *corev1.ResourceRequirements, nodeSelectorOverride map[string]string, err error) {
2020
list, listErr := o.lister.OperatorsV1alpha1().SubscriptionLister().Subscriptions(ownerCSV.GetNamespace()).List(labels.Everything())
2121
if listErr != nil {
2222
err = fmt.Errorf("failed to list subscription namespace=%s - %v", ownerCSV.GetNamespace(), listErr)
@@ -29,6 +29,11 @@ func (o *operatorConfig) GetConfigOverrides(ownerCSV ownerutil.Owner) (envVarOve
2929
return
3030
}
3131

32+
if owner.Spec.Config == nil {
33+
// No overrides
34+
return
35+
}
36+
3237
envVarOverrides = owner.Spec.Config.Env
3338
volumeOverrides = owner.Spec.Config.Volumes
3439
volumeMountOverrides = owner.Spec.Config.VolumeMounts

pkg/controller/operators/olm/overrides/inject/inject.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,18 @@ func findToleration(tolerations []corev1.Toleration, toleration corev1.Toleratio
194194
// into given podSpec
195195
//
196196
// If podSpec already defines Resources, it will be overwritten
197-
func InjectResourcesIntoDeployment(podSpec *corev1.PodSpec, resources corev1.ResourceRequirements) error {
197+
func InjectResourcesIntoDeployment(podSpec *corev1.PodSpec, resources *corev1.ResourceRequirements) error {
198198
if podSpec == nil {
199199
return errors.New("no pod spec provided")
200200
}
201201

202+
if resources == nil {
203+
return nil
204+
}
205+
202206
for i := range podSpec.Containers {
203207
container := &podSpec.Containers[i]
204-
container.Resources = resources
208+
container.Resources = *resources
205209
}
206210

207211
return nil

pkg/controller/operators/olm/overrides/inject/inject_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -631,25 +631,25 @@ func TestInjectResourcesIntoDeployment(t *testing.T) {
631631
tests := []struct {
632632
name string
633633
podSpec *corev1.PodSpec
634-
resources corev1.ResourceRequirements
634+
resources *corev1.ResourceRequirements
635635
expected *corev1.PodSpec
636636
}{
637637
{
638-
// PodSpec has one container and empty resources
639-
// Expected: Resources will remain empty
640-
name: "WithEmptyResources",
638+
// PodSpec has one container and existing resources
639+
// Expected: PodSpec resources will remain untouched
640+
name: "WithNilResources",
641641
podSpec: &corev1.PodSpec{
642642
Containers: []corev1.Container{
643643
corev1.Container{
644-
Resources: corev1.ResourceRequirements{},
644+
Resources: defaultResources,
645645
},
646646
},
647647
},
648-
resources: corev1.ResourceRequirements{},
648+
resources: nil,
649649
expected: &corev1.PodSpec{
650650
Containers: []corev1.Container{
651651
corev1.Container{
652-
Resources: corev1.ResourceRequirements{},
652+
Resources: defaultResources,
653653
},
654654
},
655655
},
@@ -665,7 +665,7 @@ func TestInjectResourcesIntoDeployment(t *testing.T) {
665665
},
666666
},
667667
},
668-
resources: defaultResources,
668+
resources: &defaultResources,
669669
expected: &corev1.PodSpec{
670670
Containers: []corev1.Container{
671671
corev1.Container{
@@ -686,7 +686,7 @@ func TestInjectResourcesIntoDeployment(t *testing.T) {
686686
},
687687
},
688688
},
689-
resources: corev1.ResourceRequirements{},
689+
resources: &corev1.ResourceRequirements{},
690690
expected: &corev1.PodSpec{
691691
Containers: []corev1.Container{
692692
corev1.Container{

test/e2e/subscription_e2e_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,7 +1190,7 @@ var _ = Describe("Subscription", func() {
11901190
Operator: corev1.TolerationOpEqual,
11911191
},
11921192
}
1193-
podResources := corev1.ResourceRequirements{
1193+
podResources := &corev1.ResourceRequirements{
11941194
Limits: corev1.ResourceList{
11951195
corev1.ResourceCPU: resource.MustParse("100m"),
11961196
},
@@ -1200,7 +1200,7 @@ var _ = Describe("Subscription", func() {
12001200
},
12011201
}
12021202

1203-
podConfig := v1alpha1.SubscriptionConfig{
1203+
podConfig := &v1alpha1.SubscriptionConfig{
12041204
Env: podEnv,
12051205
Volumes: podVolumes,
12061206
VolumeMounts: podVolumeMounts,
@@ -1259,7 +1259,7 @@ var _ = Describe("Subscription", func() {
12591259
"foo": "bar",
12601260
}
12611261

1262-
podConfig := v1alpha1.SubscriptionConfig{
1262+
podConfig := &v1alpha1.SubscriptionConfig{
12631263
NodeSelector: podNodeSelector,
12641264
}
12651265

@@ -2510,7 +2510,7 @@ func checkDeploymentHasPodConfigNodeSelector(t GinkgoTInterface, client operator
25102510
return nil
25112511
}
25122512

2513-
func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclient.ClientInterface, csv *v1alpha1.ClusterServiceVersion, envVar []corev1.EnvVar, volumes []corev1.Volume, volumeMounts []corev1.VolumeMount, tolerations []corev1.Toleration, resources corev1.ResourceRequirements) {
2513+
func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclient.ClientInterface, csv *v1alpha1.ClusterServiceVersion, envVar []corev1.EnvVar, volumes []corev1.Volume, volumeMounts []corev1.VolumeMount, tolerations []corev1.Toleration, resources *corev1.ResourceRequirements) {
25142514
resolver := install.StrategyResolver{}
25152515

25162516
strategy, err := resolver.UnmarshalStrategy(csv.Spec.InstallStrategy)
@@ -2571,10 +2571,10 @@ func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclie
25712571
return
25722572
}
25732573

2574-
findResources := func(existingResource corev1.ResourceRequirements, podResource corev1.ResourceRequirements) (foundResource *corev1.ResourceRequirements, found bool) {
2574+
findResources := func(existingResource *corev1.ResourceRequirements, podResource *corev1.ResourceRequirements) (foundResource *corev1.ResourceRequirements, found bool) {
25752575
if reflect.DeepEqual(existingResource, podResource) {
25762576
found = true
2577-
foundResource = &podResource
2577+
foundResource = podResource
25782578
}
25792579

25802580
return
@@ -2595,10 +2595,10 @@ func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclie
25952595
require.Equalf(t, v.MountPath, existing.MountPath, "VolumeMount MountPath does not match %s=%s", v.Name, v.MountPath)
25962596
}
25972597

2598-
existing, found := findResources(container.Resources, resources)
2598+
existing, found := findResources(&container.Resources, resources)
25992599
require.Truef(t, found, "Resources not injected. Resource=%v", resources)
26002600
require.NotNil(t, existing)
2601-
require.Equalf(t, *existing, resources, "Resource=%v does not match expected Resource=%v", existing, resources)
2601+
require.Equalf(t, existing, resources, "Resource=%v does not match expected Resource=%v", existing, resources)
26022602
}
26032603

26042604
for _, deploymentSpec := range strategyDetailsDeployment.DeploymentSpecs {

vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorconditions.yaml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/api/crds/zz_defs.go

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/api/pkg/operators/v1/operatorcondition_types.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/subscription_types.go

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/api/pkg/operators/v1alpha1/zz_generated.deepcopy.go

Lines changed: 10 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/api/pkg/validation/errors/error.go

Lines changed: 0 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/api/pkg/validation/internal/operatorhub.go

Lines changed: 9 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)