Skip to content

Commit 1588106

Browse files
Merge pull request #85686 from michaelryanpeter/osdocs-12811-catalogd-opm-render
OSDOCS#12811: [OLMv1] Replace port-forwarding cmd w/ `opm render`
2 parents db0e7e0 + 97cf4d3 commit 1588106

File tree

4 files changed

+141
-164
lines changed

4 files changed

+141
-164
lines changed

modules/olmv1-catalog-queries.adoc

Lines changed: 59 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,33 @@
77
[id="olmv1-catalog-queries_{context}"]
88
= Common catalog queries
99

10-
You can query catalogs by using the `jq` CLI tool.
10+
You can query catalogs by using the `opm` and `jq` CLI tools. The following tables show common catalog queries that you can use when installing, updating, and managing the lifecycle of extensions.
11+
12+
.Command syntax
13+
[source,terminal]
14+
----
15+
$ opm render <catalog_registry_url>:<tag> | <jq_request>
16+
----
17+
where:
18+
19+
`catalog_registry_url`:: Specifies the URL of the catalog registry, such as `registry.redhat.io/redhat/redhat-operator-index`.
20+
`tag`:: Specifies the tag or version of the catalog, such as `v{product-version}` or `latest`.
21+
`jq_request`:: Specifies the query you want to run on the catalog.
22+
23+
.Example command
24+
[%collapsible]
25+
====
26+
[source,terminal,subs=attributes+]
27+
----
28+
$ opm render \
29+
registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
30+
| jq -cs '[.[] | select(.schema == "olm.bundle" and (.properties[] \
31+
| select(.type == "olm.csv.metadata").value.installModes[] \
32+
| select(.type == "AllNamespaces" and .supported == true)) \
33+
and .spec.webhookdefinitions == null) \
34+
| .package] | unique[]'
35+
----
36+
====
1137

1238
// https://docs.asciidoctor.org/asciidoc/latest/tables/format-cell-content/#a-operator
1339
// https://docs.asciidoctor.org/asciidoc/latest/tables/data-format/#escape-the-cell-separator
@@ -20,38 +46,37 @@ You can query catalogs by using the `jq` CLI tool.
2046
a|
2147
[source,terminal]
2248
----
23-
$ jq -s '.[] \| select( .schema == "olm.package") \| \
24-
.name' <catalog_name>.json
49+
$ opm render <catalog_registry_url>:<tag> \
50+
\| jq -s '.[] \| select( .schema == "olm.package")
2551
----
2652

2753
|Packages that support `AllNamespaces` install mode and do not use webhooks
2854
a|
2955
[source,terminal]
3056
----
31-
$ jq -c 'select(.schema == "olm.bundle") \| \
32-
{"package":.package, "version":.properties[] \| \
33-
select(.type == "olm.bundle.object").value.data \| \
34-
@base64d \| fromjson \| \
35-
select(.kind == "ClusterServiceVersion" and (.spec.installModes[] \| \
36-
select(.type == "AllNamespaces" and .supported == true) != null) \
37-
and .spec.webhookdefinitions == null).spec.version}' \
38-
<catalog_name>.json
57+
$ opm render <catalog_registry_url>:<tag> \
58+
\| jq -cs '[.[] \| select(.schema == "olm.bundle" and (.properties[] \
59+
\| select(.type == "olm.csv.metadata").value.installModes[] \
60+
\| select(.type == "AllNamespaces" and .supported == true)) \
61+
and .spec.webhookdefinitions == null) \
62+
\| .package] \| unique[]'
3963
----
4064

4165
|Package metadata
4266
a|
4367
[source,terminal]
4468
----
45-
$ jq -s '.[] \| select( .schema == "olm.package") \| \
46-
select( .name == "<package_name>")' <catalog_name>.json
69+
$ opm render <catalog_registry_url>:<tag> \
70+
\| jq -s '.[] \| select( .schema == "olm.package") \
71+
\| select( .name == "<package_name>")'
4772
----
4873

4974
|Catalog blobs in a package
5075
a|
5176
[source,terminal]
5277
----
53-
$ jq -s '.[] \| select( .package == "<package_name>")' \
54-
<catalog_name>.json
78+
$ opm render <catalog_registry_url>:<tag> \
79+
\| jq -s '.[] \| select( .package == "<package_name>")'
5580
----
5681

5782
|===
@@ -65,19 +90,20 @@ $ jq -s '.[] \| select( .package == "<package_name>")' \
6590
a|
6691
[source,terminal]
6792
----
68-
$ jq -s '.[] \| select( .schema == "olm.channel" ) \| \
69-
select( .package == "<package_name>") \| .name' \
70-
<catalog_name>.json
93+
$ opm render <catalog_registry_url>:<tag> \
94+
\| jq -s '.[] \| select( .schema == "olm.channel" ) \
95+
\| select( .package == "<package_name>") \| .name'
7196
----
7297

7398
|Versions in a channel
7499
a|
75100
[source,terminal]
76101
----
77-
$ jq -s '.[] \| select( .package == "<package_name>" ) \| \
78-
select( .schema == "olm.channel" ) \| \
79-
select( .name == "<channel_name>" ) \| \
80-
.entries \| .[] \| .name' <catalog_name>.json
102+
$ opm render <catalog_registry_url>:<tag> \
103+
\| jq -s '.[] \| select( .package == "<package_name>" ) \
104+
\| select( .schema == "olm.channel" ) \
105+
\| select( .name == "<channel_name>" ) .entries \
106+
\| .[] \| .name'
81107
----
82108

83109
a|
@@ -86,10 +112,10 @@ a|
86112
a|
87113
[source,terminal]
88114
----
89-
$ jq -s '.[] \| select( .schema == "olm.channel" ) \| \
90-
select ( .name == "<channel>") \| \
91-
select( .package == "<package_name>")' \
92-
<catalog_name>.json
115+
$ opm render <catalog_registry_url>:<tag> \
116+
\| jq -s '.[] \| select( .schema == "olm.channel" ) \
117+
\| select ( .name == "<channel_name>") \
118+
\| select( .package == "<package_name>")'
93119
----
94120

95121
|===
@@ -103,9 +129,9 @@ $ jq -s '.[] \| select( .schema == "olm.channel" ) \| \
103129
a|
104130
[source,terminal]
105131
----
106-
$ jq -s '.[] \| select( .schema == "olm.bundle" ) \| \
107-
select( .package == "<package_name>") \| .name' \
108-
<catalog_name>.json
132+
$ opm render <catalog_registry_url>:<tag> \
133+
\| jq -s '.[] \| select( .schema == "olm.bundle" ) \
134+
\| select( .package == "<package_name>") \| .name'
109135
----
110136

111137
a|
@@ -114,10 +140,10 @@ a|
114140
a|
115141
[source,terminal]
116142
----
117-
$ jq -s '.[] \| select( .schema == "olm.bundle" ) \| \
118-
select ( .name == "<bundle_name>") \| \
119-
select( .package == "<package_name>")' \
120-
<catalog_name>.json
143+
$ opm render <catalog_registry_url>:<tag> \
144+
\| jq -s '.[] \| select( .schema == "olm.bundle" ) \
145+
\| select ( .name == "<bundle_name>") \
146+
\| select( .package == "<package_name>")'
121147
----
122148

123149
|===

modules/olmv1-finding-operators-to-install.adoc

Lines changed: 45 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -7,62 +7,44 @@
77
[id="olmv1-finding-operators-to-install_{context}"]
88
= Finding Operators to install from a catalog
99

10-
After you add a catalog to your cluster, you can query the catalog to find Operators and extensions to install. Before you can query catalogs, you must port forward the catalog server service.
10+
After you add a catalog to your cluster, you can query the catalog to find Operators and extensions to install.
11+
12+
include::snippets/olmv1-on-cluster-catalog-queries.adoc[]
1113

1214
.Prerequisites
1315

1416
* You have added a catalog to your cluster.
1517
* You have installed the `jq` CLI tool.
18+
* You have installed the `opm` CLI tool.
1619

1720
.Procedure
1821

19-
. Port forward the catalog server service in the `openshift-catalogd` namespace by running the following command:
20-
+
21-
[source,terminal]
22-
----
23-
$ oc -n openshift-catalogd port-forward svc/catalogd-catalogserver 8080:443
24-
----
25-
26-
. In a new terminal window or tab, download the catalog's JSON file locally by running the following command:
27-
+
28-
[source,terminal]
29-
----
30-
$ curl -L -k https://localhost:8080/catalogs/<catalog_name>/all.json \
31-
-C - -o /<path>/<catalog_name>.json
32-
----
22+
. To return a list of extensions that support the `AllNamespaces` install mode and do not use webhooks, enter the following command:
3323
+
34-
.Example command
35-
[%collapsible]
36-
====
3724
[source,terminal]
3825
----
39-
$ curl -L -k https://localhost:8080/catalogs/redhat-operators/all.json \
40-
-C - -o /home/username/catalogs/rhoc.json
26+
$ opm render <catalog_registry_url>:<tag> \
27+
| jq -cs '[.[] | select(.schema == "olm.bundle" \
28+
and (.properties[] | select(.type == "olm.csv.metadata").value.installModes[] \
29+
| select(.type == "AllNamespaces" and .supported == true)) \
30+
and .spec.webhookdefinitions == null) | .package] | unique[]'
4131
----
42-
====
32+
where:
4333

44-
. Run one of the following commands to return a list of Operators and extensions in a catalog.
45-
+
46-
[IMPORTANT]
47-
====
48-
include::snippets/olmv1-tp-extension-support.adoc[]
49-
====
50-
+
51-
* Get a list of all the Operators and extensions from the local catalog file by running the following command:
52-
+
53-
[source,terminal]
54-
----
55-
$ jq -s '.[] | select(.schema == "olm.package") | .name' \
56-
/<path>/<filename>.json
57-
----
34+
`catalog_registry_url`:: Specifies the URL of the catalog registry, such as `registry.redhat.io/redhat/redhat-operator-index`.
35+
`tag`:: Specifies the tag or version of the catalog, such as `v{product-version}` or `latest`.
5836
+
5937
.Example command
6038
[%collapsible]
6139
====
62-
[source,terminal]
40+
[source,terminal,subs=attributes+]
6341
----
64-
$ jq -s '.[] | select(.schema == "olm.package") | .name' \
65-
/home/username/catalogs/rhoc.json
42+
$ opm render \
43+
registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
44+
| jq -cs '[.[] | select(.schema == "olm.bundle" \
45+
and (.properties[] | select(.type == "olm.csv.metadata").value.installModes[] \
46+
| select(.type == "AllNamespaces" and .supported == true)) \
47+
and .spec.webhookdefinitions == null) | .package] | unique[]'
6648
----
6749
====
6850
+
@@ -71,82 +53,48 @@ $ jq -s '.[] | select(.schema == "olm.package") | .name' \
7153
====
7254
[source,text]
7355
----
74-
NAME AGE
7556
"3scale-operator"
76-
"advanced-cluster-management"
7757
"amq-broker-rhel8"
7858
"amq-online"
7959
"amq-streams"
80-
"amq7-interconnect-operator"
60+
"amq-streams-console"
8161
"ansible-automation-platform-operator"
8262
"ansible-cloud-addons-operator"
8363
"apicast-operator"
84-
"aws-efs-csi-driver-operator"
64+
"authorino-operator"
8565
"aws-load-balancer-operator"
86-
"bamoe-businessautomation-operator"
8766
"bamoe-kogito-operator"
88-
"bare-metal-event-relay"
89-
"businessautomation-operator"
90-
...
91-
----
92-
====
93-
+
94-
* Get list of packages that support `AllNamespaces` install mode and do not use webhooks from the local catalog file by running the following command:
95-
+
96-
[source,terminal]
97-
----
98-
$ jq -c 'select(.schema == "olm.bundle") | \
99-
{"package":.package, "version":.properties[] | \
100-
select(.type == "olm.bundle.object").value.data | @base64d | fromjson | \
101-
select(.kind == "ClusterServiceVersion" and (.spec.installModes[] | \
102-
select(.type == "AllNamespaces" and .supported == true) != null) \
103-
and .spec.webhookdefinitions == null).spec.version}' \
104-
/<path>/<catalog_name>.json
105-
----
106-
+
107-
.Example output
108-
[%collapsible]
109-
====
110-
[source,text]
111-
----
112-
{"package":"3scale-operator","version":"0.10.0-mas"}
113-
{"package":"3scale-operator","version":"0.10.5"}
114-
{"package":"3scale-operator","version":"0.11.0-mas"}
115-
{"package":"3scale-operator","version":"0.11.1-mas"}
116-
{"package":"3scale-operator","version":"0.11.2-mas"}
117-
{"package":"3scale-operator","version":"0.11.3-mas"}
118-
{"package":"3scale-operator","version":"0.11.5-mas"}
119-
{"package":"3scale-operator","version":"0.11.6-mas"}
120-
{"package":"3scale-operator","version":"0.11.7-mas"}
121-
{"package":"3scale-operator","version":"0.11.8-mas"}
122-
{"package":"amq-broker-rhel8","version":"7.10.0-opr-1"}
123-
{"package":"amq-broker-rhel8","version":"7.10.0-opr-2"}
124-
{"package":"amq-broker-rhel8","version":"7.10.0-opr-3"}
125-
{"package":"amq-broker-rhel8","version":"7.10.0-opr-4"}
126-
{"package":"amq-broker-rhel8","version":"7.10.1-opr-1"}
127-
{"package":"amq-broker-rhel8","version":"7.10.1-opr-2"}
128-
{"package":"amq-broker-rhel8","version":"7.10.2-opr-1"}
129-
{"package":"amq-broker-rhel8","version":"7.10.2-opr-2"}
67+
"cephcsi-operator"
68+
"cincinnati-operator"
69+
"cluster-logging"
70+
"cluster-observability-operator"
71+
"compliance-operator"
72+
"container-security-operator"
73+
"cryostat-operator"
74+
"datagrid"
75+
"devspaces"
13076
...
13177
----
13278
====
13379

134-
. Inspect the contents of an Operator or extension's metadata by running the following command:
80+
. Inspect the contents of an extension's metadata by running the following command:
13581
+
13682
[source,terminal]
13783
----
138-
$ jq -s '.[] | select( .schema == "olm.package") | \
139-
select( .name == "<package_name>")' /<path>/<catalog_name>.json
84+
$ opm render <catalog_registry_url>:<tag> \
85+
| jq -s '.[] | select( .schema == "olm.package") \
86+
| select( .name == "<package_name>")'
14087
----
14188
+
14289
.Example command
14390
[%collapsible]
14491
====
145-
[source,terminal]
92+
[source,terminal,subs=attributes+]
14693
----
147-
$ jq -s '.[] | select( .schema == "olm.package") | \
148-
select( .name == "openshift-pipelines-operator-rh")' \
149-
/home/username/rhoc.json
94+
$ opm render \
95+
registry.redhat.io/redhat/redhat-operator-index:v{product-version} \
96+
| jq -s '.[] | select( .schema == "olm.package") \
97+
| select( .name == "openshift-pipelines-operator-rh")'
15098
----
15199
====
152100
+
@@ -156,13 +104,13 @@ $ jq -s '.[] | select( .schema == "olm.package") | \
156104
[source,text]
157105
----
158106
{
159-
"defaultChannel": "stable",
107+
"schema": "olm.package",
108+
"name": "openshift-pipelines-operator-rh",
109+
"defaultChannel": "latest",
160110
"icon": {
161-
"base64data": "PHN2ZyB4bWxu..."
111+
"base64data": "iVBORw0KGgoAAAANSUhE...",
162112
"mediatype": "image/png"
163-
},
164-
"name": "openshift-pipelines-operator-rh",
165-
"schema": "olm.package"
113+
}
166114
}
167115
----
168116
====

0 commit comments

Comments
 (0)