Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 05ef277

Browse files
committedJun 7, 2021
improve code coverage
Signed-off-by: Joe Lanford <[email protected]>
1 parent eaa4f8b commit 05ef277

File tree

3 files changed

+203
-0
lines changed

3 files changed

+203
-0
lines changed
 

‎internal/declcfg/load_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,11 @@ func TestLoadDir(t *testing.T) {
171171
{Type: "olm.gvk", Value: json.RawMessage(`{"group":"etcd.database.coreos.com","kind":"EtcdCluster","version":"v1beta2"}`)},
172172
{Type: "olm.channel", Value: json.RawMessage(`{"name":"alpha"}`)},
173173
{Type: "olm.skipRange", Value: json.RawMessage(`"<0.6.1"`)},
174+
{Type: "olm.bundle.object", Value: json.RawMessage(`{"ref":"etcdoperator.v0.6.1.clusterserviceversion.yaml"}`)},
174175
},
175176
RelatedImages: []RelatedImage{{Name: "etcdv0.6.1", Image: "quay.io/coreos/etcd-operator@sha256:bd944a211eaf8f31da5e6d69e8541e7cada8f16a9f7a5a570b22478997819943"}},
177+
Objects: []string{string(mustLoadFile(t, "testdata/valid/etcdoperator.v0.6.1.clusterserviceversion.yaml"))},
178+
CsvJSON: string(mustLoadFile(t, "testdata/valid/etcdoperator.v0.6.1.clusterserviceversion.yaml")),
176179
},
177180
{
178181
Schema: "olm.bundle",
@@ -262,3 +265,10 @@ func TestLoadDir(t *testing.T) {
262265
})
263266
}
264267
}
268+
269+
func mustLoadFile(t *testing.T, path string) []byte {
270+
t.Helper()
271+
data, err := os.ReadFile(path)
272+
require.NoError(t, err)
273+
return data
274+
}

‎internal/declcfg/testdata/valid/etcd.yaml

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

0 commit comments

Comments
 (0)
Please sign in to comment.