Skip to content

Commit 7eccf53

Browse files
authored
packagemanifests: do not list deprecated channel entries (#2905)
Signed-off-by: Joe Lanford <[email protected]> Signed-off-by: Joe Lanford <[email protected]>
1 parent 4da774f commit 7eccf53

File tree

5 files changed

+211
-0
lines changed

5 files changed

+211
-0
lines changed

pkg/package-server/provider/registry.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/blang/semver/v4"
1414
operatorsv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1"
1515
"github.com/operator-framework/operator-registry/pkg/api"
16+
orregistry "github.com/operator-framework/operator-registry/pkg/registry"
1617
"github.com/sirupsen/logrus"
1718
"google.golang.org/grpc"
1819
"google.golang.org/grpc/connectivity"
@@ -285,6 +286,7 @@ func (p *RegistryProvider) refreshCache(ctx context.Context, client *registryCli
285286
}
286287

287288
bundles := map[string]map[string][]operators.ChannelEntry{}
289+
288290
for {
289291
bundle, err := bundleStream.Recv()
290292
if err == io.EOF {
@@ -294,6 +296,9 @@ func (p *RegistryProvider) refreshCache(ctx context.Context, client *registryCli
294296
logger.WithField("err", err.Error()).Warnf("error getting bundle data")
295297
break
296298
}
299+
if isDeprecated(bundle) {
300+
continue
301+
}
297302
if _, ok := bundles[bundle.PackageName]; !ok {
298303
bundles[bundle.PackageName] = map[string][]operators.ChannelEntry{}
299304
}
@@ -374,6 +379,15 @@ func (p *RegistryProvider) refreshCache(ctx context.Context, client *registryCli
374379
return p.gcPackages(key, added)
375380
}
376381

382+
func isDeprecated(b *api.Bundle) bool {
383+
for _, p := range b.Properties {
384+
if p.Type == orregistry.DeprecatedType {
385+
return true
386+
}
387+
}
388+
return false
389+
}
390+
377391
func (p *RegistryProvider) gcPackages(key registry.CatalogKey, keep map[string]struct{}) error {
378392
logger := logrus.WithFields(logrus.Fields{
379393
"action": "gc cache",

pkg/package-server/provider/registry_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ func server() {
6565
if err := loader.Populate(); err != nil {
6666
logrus.Fatal(err)
6767
}
68+
const bundlePath = "localhost:5000/etcdoperator:v0.6.0"
69+
if _, err := db.Exec(`UPDATE operatorbundle SET bundlePath=? WHERE name="etcdoperator.v0.6.0"`, bundlePath); err != nil {
70+
logrus.Fatal(err)
71+
}
72+
load.DeprecateBundle(bundlePath)
6873
if err := db.Close(); err != nil {
6974
logrus.Fatal(err)
7075
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: etcdclusters.etcd.database.coreos.com
5+
spec:
6+
group: etcd.database.coreos.com
7+
version: v1beta2
8+
scope: Namespaced
9+
names:
10+
plural: etcdclusters
11+
singular: etcdcluster
12+
kind: EtcdCluster
13+
listKind: EtcdClusterList
14+
shortNames:
15+
- etcdclus
16+
- etcd
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
#! validate-crd: ./deploy/chart/templates/03-clusterserviceversion.crd.yaml
2+
#! parse-kind: ClusterServiceVersion
3+
apiVersion: operators.coreos.com/v1alpha1
4+
kind: ClusterServiceVersion
5+
metadata:
6+
name: etcdoperator.v0.6.0
7+
namespace: placeholder
8+
annotations:
9+
tectonic-visibility: ocs
10+
spec:
11+
displayName: etcd
12+
description: |
13+
etcd is a distributed key value store that provides a reliable way to store data across a cluster of machines. It’s open-source and available on GitHub. etcd gracefully handles leader elections during network partitions and will tolerate machine failure, including the leader. Your applications can read and write data into etcd.
14+
A simple use-case is to store database connection details or feature flags within etcd as key value pairs. These values can be watched, allowing your app to reconfigure itself when they change. Advanced uses take advantage of the consistency guarantees to implement database leader elections or do distributed locking across a cluster of workers.
15+
16+
_The etcd Open Cloud Service is Public Alpha. The goal before Beta is to fully implement backup features._
17+
18+
### Reading and writing to etcd
19+
20+
Communicate with etcd though its command line utility `etcdctl` or with the API using the automatically generated Kubernetes Service.
21+
22+
[Read the complete guide to using the etcd Open Cloud Service](https://coreos.com/tectonic/docs/latest/alm/etcd-ocs.html)
23+
24+
### Supported Features
25+
**High availability**
26+
Multiple instances of etcd are networked together and secured. Individual failures or networking issues are transparently handled to keep your cluster up and running.
27+
**Automated updates**
28+
Rolling out a new etcd version works like all Kubernetes rolling updates. Simply declare the desired version, and the etcd service starts a safe rolling update to the new version automatically.
29+
**Backups included**
30+
Coming soon, the ability to schedule backups to happen on or off cluster.
31+
keywords: ['etcd', 'key value', 'database', 'coreos', 'open source']
32+
version: 0.6.0
33+
maturity: alpha
34+
maintainers:
35+
- name: CoreOS, Inc
36+
37+
38+
provider:
39+
name: CoreOS, Inc
40+
labels:
41+
alm-status-descriptors: etcdoperator.v0.6.0
42+
alm-owner-etcd: etcdoperator
43+
operated-by: etcdoperator
44+
selector:
45+
matchLabels:
46+
alm-owner-etcd: etcdoperator
47+
operated-by: etcdoperator
48+
links:
49+
- name: Blog
50+
url: https://coreos.com/etcd
51+
- name: Documentation
52+
url: https://coreos.com/operators/etcd/docs/latest/
53+
- name: etcd Operator Source Code
54+
url: https://github.com/coreos/etcd-operator
55+
56+
icon:
57+
- base64data: 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
58+
mediatype: image/png
59+
install:
60+
strategy: deployment
61+
spec:
62+
permissions:
63+
- serviceAccountName: etcd-operator
64+
rules:
65+
- apiGroups:
66+
- etcd.database.coreos.com
67+
resources:
68+
- etcdclusters
69+
verbs:
70+
- "*"
71+
- apiGroups:
72+
- storage.k8s.io
73+
resources:
74+
- storageclasses
75+
verbs:
76+
- "*"
77+
- apiGroups:
78+
- ""
79+
resources:
80+
- pods
81+
- services
82+
- endpoints
83+
- persistentvolumeclaims
84+
- events
85+
verbs:
86+
- "*"
87+
- apiGroups:
88+
- apps
89+
resources:
90+
- deployments
91+
verbs:
92+
- "*"
93+
- apiGroups:
94+
- ""
95+
resources:
96+
- secrets
97+
verbs:
98+
- get
99+
deployments:
100+
- name: etcd-operator
101+
spec:
102+
replicas: 1
103+
selector:
104+
matchLabels:
105+
name: etcd-operator-alm-owned
106+
template:
107+
metadata:
108+
name: etcd-operator-alm-owned
109+
labels:
110+
name: etcd-operator-alm-owned
111+
spec:
112+
serviceAccountName: etcd-operator
113+
containers:
114+
- name: etcd-operator
115+
command:
116+
- etcd-operator
117+
- --create-crd=false
118+
image: quay.io/coreos/etcd-operator@sha256:bd944a211eaf8f31da5e6d69e8541e7cada8f16a9f7a5a570b22478997819943
119+
env:
120+
- name: MY_POD_NAMESPACE
121+
valueFrom:
122+
fieldRef:
123+
fieldPath: metadata.namespace
124+
- name: MY_POD_NAME
125+
valueFrom:
126+
fieldRef:
127+
fieldPath: metadata.name
128+
customresourcedefinitions:
129+
owned:
130+
- name: etcdclusters.etcd.database.coreos.com
131+
version: v1beta2
132+
kind: EtcdCluster
133+
displayName: etcd Cluster
134+
description: Represents a cluster of etcd nodes.
135+
resources:
136+
- kind: Service
137+
version: v1
138+
- kind: Pod
139+
version: v1
140+
specDescriptors:
141+
- description: The desired number of member Pods for the etcd cluster.
142+
displayName: Size
143+
path: size
144+
x-descriptors:
145+
- 'urn:alm:descriptor:com.tectonic.ui:podCount'
146+
statusDescriptors:
147+
- description: The status of each of the member Pods for the etcd cluster.
148+
displayName: Member Status
149+
path: members
150+
x-descriptors:
151+
- 'urn:alm:descriptor:com.tectonic.ui:podStatuses'
152+
- description: The service at which the running etcd cluster can be accessed.
153+
displayName: Service
154+
path: service
155+
x-descriptors:
156+
- 'urn:alm:descriptor:io.kubernetes:Service'
157+
- description: The current size of the etcd cluster.
158+
displayName: Cluster Size
159+
path: size
160+
- description: The current version of the etcd cluster.
161+
displayName: Current Version
162+
path: currentVersion
163+
- description: 'The target version of the etcd cluster, after upgrading.'
164+
displayName: Target Version
165+
path: targetVersion
166+
- description: The current status of the etcd cluster.
167+
displayName: Status
168+
path: phase
169+
x-descriptors:
170+
- 'urn:alm:descriptor:io.kubernetes.phase'
171+
- description: Explanation for the current status of the cluster.
172+
displayName: Status Details
173+
path: reason
174+
x-descriptors:
175+
- 'urn:alm:descriptor:io.kubernetes.phase:reason'

pkg/package-server/provider/testdata/manifests/etcd/0.6.1/etcdoperator.clusterserviceversion.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ spec:
3131
keywords: ['etcd', 'key value', 'database', 'coreos', 'open source']
3232
version: 0.6.1
3333
maturity: alpha
34+
replaces: etcdoperator.v0.6.0
3435
maintainers:
3536
- name: CoreOS, Inc
3637

0 commit comments

Comments
 (0)