Skip to content

Commit fd42910

Browse files
Merge pull request #365 from perdasilva/magic_catalog_update
noqe: Update magic catalog for psa changes (#2842)
2 parents e41024e + a0659a6 commit fd42910

File tree

4 files changed

+150
-3
lines changed

4 files changed

+150
-3
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package olm
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/operator-framework/api/pkg/operators/v1alpha1"
8+
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
9+
"github.com/sirupsen/logrus"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
)
12+
13+
const labelSyncerLabelKey = ""
14+
15+
func NewCSVLabelSyncerLabeler(client operatorclient.ClientInterface, logger *logrus.Logger) *CSVLabelSyncerLabeler {
16+
return &CSVLabelSyncerLabeler{
17+
client: client,
18+
logger: logger,
19+
}
20+
}
21+
22+
type CSVLabelSyncerLabeler struct {
23+
client operatorclient.ClientInterface
24+
logger *logrus.Logger
25+
}
26+
27+
func (c *CSVLabelSyncerLabeler) OnAddOrUpdate(csv *v1alpha1.ClusterServiceVersion) error {
28+
// ignore copied csvs
29+
if csv.IsCopied() {
30+
return nil
31+
}
32+
33+
// ignore csv updates
34+
if csv.Status.LastTransitionTime != nil {
35+
return nil
36+
}
37+
38+
namespace, err := c.client.KubernetesInterface().CoreV1().Namespaces().Get(context.Background(), csv.GetNamespace(), metav1.GetOptions{})
39+
if err != nil {
40+
return fmt.Errorf("error getting csv namespace (%s) for label sync'er labeling", csv.GetNamespace())
41+
}
42+
43+
// add label sync'er label if it does not exist
44+
if _, ok := namespace.Labels[labelSyncerLabelKey]; !ok {
45+
nsCopy := namespace.DeepCopy()
46+
nsCopy.Labels[labelSyncerLabelKey] = "true"
47+
if _, err := c.client.KubernetesInterface().CoreV1().Namespaces().Update(context.Background(), namespace, metav1.UpdateOptions{}); err != nil {
48+
return fmt.Errorf("error updating csv namespace (%s) with label sync'er label", nsCopy.GetNamespace())
49+
}
50+
51+
if c.logger != nil {
52+
c.logger.Printf("[CSV LABEL] applied %s=true label to namespace %s", labelSyncerLabelKey, nsCopy.GetNamespace())
53+
}
54+
}
55+
56+
return nil
57+
}
58+
59+
func (c *CSVLabelSyncerLabeler) OnDelete(_ *v1alpha1.ClusterServiceVersion) error {
60+
return nil
61+
}

staging/operator-lifecycle-manager/test/e2e/magic_catalog.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1212
utilerrors "k8s.io/apimachinery/pkg/util/errors"
1313
"k8s.io/apimachinery/pkg/util/intstr"
14+
"k8s.io/utils/pointer"
1415
k8scontrollerclient "sigs.k8s.io/controller-runtime/pkg/client"
1516
)
1617

@@ -259,15 +260,18 @@ func (c *MagicCatalog) makeCatalogSourcePod() *corev1.Pod {
259260
volumeMountName string = "fbc-catalog"
260261
)
261262

262-
readOnlyRootFilesystem := false
263-
264263
return &corev1.Pod{
265264
ObjectMeta: metav1.ObjectMeta{
266265
Name: c.podName,
267266
Namespace: c.namespace,
268267
Labels: c.makeCatalogSourcePodLabels(),
269268
},
270269
Spec: corev1.PodSpec{
270+
SecurityContext: &corev1.PodSecurityContext{
271+
SeccompProfile: &corev1.SeccompProfile{
272+
Type: corev1.SeccompProfileTypeRuntimeDefault,
273+
},
274+
},
271275
Containers: []corev1.Container{
272276
{
273277
Name: "catalog",
@@ -304,7 +308,13 @@ func (c *MagicCatalog) makeCatalogSourcePod() *corev1.Pod {
304308
},
305309
},
306310
SecurityContext: &corev1.SecurityContext{
307-
ReadOnlyRootFilesystem: &readOnlyRootFilesystem,
311+
ReadOnlyRootFilesystem: pointer.Bool(false),
312+
AllowPrivilegeEscalation: pointer.Bool(false),
313+
Capabilities: &corev1.Capabilities{
314+
Drop: []corev1.Capability{"ALL"},
315+
},
316+
RunAsNonRoot: pointer.Bool(true),
317+
RunAsUser: pointer.Int64(1001),
308318
},
309319
ImagePullPolicy: corev1.PullAlways,
310320
TerminationMessagePolicy: corev1.TerminationMessageFallbackToLogsOnError,

staging/operator-lifecycle-manager/test/e2e/skopeo.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os/exec"
77

88
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
9+
"k8s.io/utils/pointer"
910

1011
corev1 "k8s.io/api/core/v1"
1112
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -81,11 +82,25 @@ func createSkopeoPod(client operatorclient.ClientInterface, args []string, names
8182
Labels: map[string]string{"name": skopeo},
8283
},
8384
Spec: corev1.PodSpec{
85+
SecurityContext: &corev1.PodSecurityContext{
86+
SeccompProfile: &corev1.SeccompProfile{
87+
Type: corev1.SeccompProfileTypeRuntimeDefault,
88+
},
89+
},
8490
Containers: []corev1.Container{
8591
{
8692
Name: skopeo,
8793
Image: skopeoImage,
8894
Args: args,
95+
SecurityContext: &corev1.SecurityContext{
96+
ReadOnlyRootFilesystem: pointer.Bool(false),
97+
AllowPrivilegeEscalation: pointer.Bool(false),
98+
Capabilities: &corev1.Capabilities{
99+
Drop: []corev1.Capability{"ALL"},
100+
},
101+
RunAsNonRoot: pointer.Bool(true),
102+
RunAsUser: pointer.Int64(1001),
103+
},
89104
},
90105
},
91106
RestartPolicy: corev1.RestartPolicyNever,

vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/downstream_csv_labeler.go

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

0 commit comments

Comments
 (0)