Skip to content

Commit 4b7a384

Browse files
Merge pull request #942 from ecordell/csv-packageserver
Remove package server subscription
2 parents af9b90d + 38012d8 commit 4b7a384

21 files changed

+198
-459
lines changed

cmd/olm/cleanup.go

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package main
2+
3+
import (
4+
"time"
5+
6+
"github.com/sirupsen/logrus"
7+
"k8s.io/apimachinery/pkg/api/errors"
8+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
"k8s.io/apimachinery/pkg/util/wait"
10+
11+
"github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned"
12+
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
13+
)
14+
15+
const (
16+
pollInterval = 1 * time.Second
17+
pollDuration = 5 * time.Minute
18+
)
19+
20+
type checkResourceFunc func() error
21+
type deleteResourceFunc func() error
22+
23+
func cleanup(logger *logrus.Logger, c operatorclient.ClientInterface, crc versioned.Interface) {
24+
if err := waitForDelete(checkCatalogSource(crc, "olm-operators"), deleteCatalogSource(crc, "olm-operators")); err != nil {
25+
logger.WithError(err).Fatal("couldn't clean previous release")
26+
}
27+
28+
if err := waitForDelete(checkConfigMap(c, "olm-operators"), deleteConfigMap(c, "olm-operators")); err != nil {
29+
logger.WithError(err).Fatal("couldn't clean previous release")
30+
}
31+
32+
if err := waitForDelete(checkSubscription(crc, "packageserver"), deleteSubscription(crc, "packageserver")); err != nil {
33+
logger.WithError(err).Fatal("couldn't clean previous release")
34+
}
35+
36+
if err := waitForDelete(checkClusterServiceVersion(crc, "packageserver.v0.10.0"), deleteClusterServiceVersion(crc, "packageserver.v0.10.0")); err != nil {
37+
logger.WithError(err).Fatal("couldn't clean previous release")
38+
}
39+
40+
if err := waitForDelete(checkClusterServiceVersion(crc, "packageserver.v0.9.0"), deleteClusterServiceVersion(crc, "packageserver.v0.9.0")); err != nil {
41+
logger.WithError(err).Fatal("couldn't clean previous release")
42+
}
43+
}
44+
45+
func waitForDelete(checkResource checkResourceFunc, deleteResource deleteResourceFunc) error {
46+
if err := checkResource(); err != nil && errors.IsNotFound(err) {
47+
return nil
48+
}
49+
if err := deleteResource(); err != nil {
50+
return err
51+
}
52+
var err error
53+
err = wait.Poll(pollInterval, pollDuration, func() (bool, error) {
54+
err := checkResource()
55+
if errors.IsNotFound(err) {
56+
return true, nil
57+
}
58+
if err != nil {
59+
return false, err
60+
}
61+
return false, nil
62+
})
63+
64+
return err
65+
}
66+
67+
func checkClusterServiceVersion(crc versioned.Interface, name string) checkResourceFunc {
68+
return func() error {
69+
_, err := crc.OperatorsV1alpha1().ClusterServiceVersions(*namespace).Get(name, metav1.GetOptions{})
70+
return err
71+
}
72+
}
73+
74+
func deleteClusterServiceVersion(crc versioned.Interface, name string) deleteResourceFunc {
75+
return func() error {
76+
return crc.OperatorsV1alpha1().ClusterServiceVersions(*namespace).Delete(name, metav1.NewDeleteOptions(0))
77+
}
78+
}
79+
80+
func checkSubscription(crc versioned.Interface, name string) checkResourceFunc {
81+
return func() error {
82+
_, err := crc.OperatorsV1alpha1().Subscriptions(*namespace).Get(name, metav1.GetOptions{})
83+
return err
84+
}
85+
}
86+
87+
func deleteSubscription(crc versioned.Interface, name string) deleteResourceFunc {
88+
return func() error {
89+
return crc.OperatorsV1alpha1().Subscriptions(*namespace).Delete(name, metav1.NewDeleteOptions(0))
90+
}
91+
}
92+
93+
func checkConfigMap(c operatorclient.ClientInterface, name string) checkResourceFunc {
94+
return func() error {
95+
_, err := c.KubernetesInterface().CoreV1().ConfigMaps(*namespace).Get(name, metav1.GetOptions{})
96+
return err
97+
}
98+
}
99+
100+
func deleteConfigMap(c operatorclient.ClientInterface, name string) deleteResourceFunc {
101+
return func() error {
102+
return c.KubernetesInterface().CoreV1().ConfigMaps(*namespace).Delete(name, metav1.NewDeleteOptions(0))
103+
}
104+
}
105+
106+
func checkCatalogSource(crc versioned.Interface, name string) checkResourceFunc {
107+
return func() error {
108+
_, err := crc.OperatorsV1alpha1().CatalogSources(*namespace).Get(name, metav1.GetOptions{})
109+
return err
110+
}
111+
}
112+
113+
func deleteCatalogSource(crc versioned.Interface, name string) deleteResourceFunc {
114+
return func() error {
115+
return crc.OperatorsV1alpha1().CatalogSources(*namespace).Delete(name, metav1.NewDeleteOptions(0))
116+
}
117+
}

cmd/olm/main.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ var (
6363

6464
profiling = flag.Bool(
6565
"profiling", false, "serve profiling data (on port 8080)")
66+
67+
namespace = flag.String(
68+
"namespace", "", "namespace where cleanup runs")
6669
)
6770

6871
func init() {
@@ -165,6 +168,8 @@ func main() {
165168
log.Fatalf("error configuring client: %s", err.Error())
166169
}
167170

171+
cleanup(logger, opClient, crClient)
172+
168173
// Create a new instance of the operator.
169174
op, err := olm.NewOperator(
170175
ctx,
@@ -176,7 +181,8 @@ func main() {
176181
olm.WithRestConfig(config),
177182
)
178183
if err != nil {
179-
log.Fatalf("error configuring operator: %s", err.Error())
184+
log.WithError(err).Fatalf("error configuring operator")
185+
return
180186
}
181187

182188
op.Run(ctx)

deploy/chart/templates/0000_50_olm_07-olm-operator.deployment.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ spec:
2626
command:
2727
- /bin/olm
2828
args:
29+
- -namespace
30+
- ${OPERATOR_NAMESPACE}
2931
{{- if .Values.watchedNamespaces }}
3032
- -watchedNamespaces
3133
- {{ .Values.watchedNamespaces }}

deploy/chart/templates/0000_50_olm_11-olm-operators.configmap.yaml

Lines changed: 0 additions & 11 deletions
This file was deleted.

deploy/chart/templates/0000_50_olm_12-olm-operators.catalogsource.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.

deploy/chart/templates/0000_50_olm_14-packageserver.subscription.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
{{ if and .Values.installType (eq .Values.installType "ocp") }}
21
{{- include "packageserver.clusterserviceversion" . }}
3-
{{- end }}

deploy/chart/templates/0000_50_olm_16-packageserver.deployment.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

deploy/chart/templates/_packageserver.clusterserviceversion.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
apiVersion: operators.coreos.com/v1alpha1
33
kind: ClusterServiceVersion
44
metadata:
5-
name: packageserver.v{{ .Chart.Version }}
5+
name: packageserver
66
namespace: {{ .Values.namespace }}
77
labels:
8+
olm.version: {{ .Chart.Version }}
89
{{- if .Values.writePackageServerStatusName }}
910
olm.clusteroperator.name: {{ .Values.writePackageServerStatusName }}
1011
{{- end }}
@@ -34,7 +35,7 @@ spec:
3435
strategy: deployment
3536
spec:
3637
clusterPermissions:
37-
- serviceAccountName: packageserver
38+
- serviceAccountName: olm-operator-serviceaccount
3839
rules:
3940
- apiGroups:
4041
- authorization.k8s.io

0 commit comments

Comments
 (0)