From e6bde0c894b46d3c3e8ded8501a372ffb4c602c0 Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Wed, 4 Sep 2024 14:39:25 +0200 Subject: [PATCH 01/13] chore: Add article about limiting the number of running workspaces across the cluster and concealing editors Signed-off-by: Anatolii Bazko --- antora.yml | 2 + .../pages/concealing-editors-definitions.adoc | 99 +++++++++++++++++++ .../pages/configuring-a-user-namespace.adoc | 2 +- .../pages/configuring-dashboard.adoc | 2 + .../configuring-workspaces-globally.adoc | 2 + ...that-all-users-can-run-simultaneously.adoc | 37 +++++++ .../pages/devfile-introduction.adoc | 6 +- 7 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 modules/administration-guide/pages/concealing-editors-definitions.adoc create mode 100644 modules/administration-guide/pages/limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously.adoc diff --git a/antora.yml b/antora.yml index c9b271a1c3..b3aae01e02 100644 --- a/antora.yml +++ b/antora.yml @@ -87,6 +87,7 @@ asciidoc: prod-operator-index: registry.access.redhat.com/redhat/community-operator-index:v{ocp4-ver} prod-operator-package-name: eclipse-che prod-operator: che-operator + prod-operator-subscription: eclipse-che prod-prev-short: Che prod-prev-id-short: che prod-prev-ver: "previous minor version" @@ -109,6 +110,7 @@ asciidoc: rh-os-local: Red Hat OpenShift Local theia-endpoint-image: eclipse/che-theia-endpoint-runtime:next editor-definition-samples-link: link:https://github.com/eclipse-che/che-operator/tree/main/editors-definitions[Editors definitions samples] + devfile-api-version: 2.3.0 ext: collector: - run: diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc new file mode 100644 index 0000000000..76c817981e --- /dev/null +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -0,0 +1,99 @@ +:_content-type: PROCEDURE +:description: Concealing editors definitions +:keywords: administration guide, concealing, dashboard, editors +:navtitle: Concealing editors definitions +:page-aliases: installation-guide:concealing-editors-definitions.adoc + +[id="concealing-editors-definitions"] += Concealing editors definitions + +Learn how to conceal {prod-short} editor definitions. + +.Prerequisites + +* An active `{orch-cli}` session with administrative permissions to the {orch-name} cluster. See {orch-cli-link}. + +.Procedure + +. Find out the namespace where the {prod-short} Operator is deployed: ++ +[source,shell,subs="+attributes"] +---- +OPERATOR_NAMESPACE=$({orch-cli} get pods -l app.kubernetes.io/component={prod-operator} -o jsonpath={".items[0].metadata.namespace"} --all-namespaces) +---- + +. Find out the available editors definitions: ++ +[source,shell,subs="+attributes"] +---- +{orch-cli} exec -n ${OPERATOR_NAMESPACE} deploy/{prod-operator} -- ls /tmp/editors-definitions +---- +The output should look similar to the following: ++ +[source] +---- +che-code-insiders.yaml +che-code-latest.yaml +che-idea-latest.yaml +che-idea-next.yaml +che-idea-server-latest.yaml +che-idea-server-next.yaml +---- + +. Choose an editor definition to conceal. +For example, to conceal the `che-idea-next.yaml` editor definition, set the editor definition file name: ++ +[source,shell,subs="+attributes"] +---- +CHE_EDITOR_CONCEAL_FILE_NAME=che-idea-next.yaml +---- + +. Define the ConfigMap name for the concealed editor definition: ++ +[source,shell,subs="+attributes"] +---- +CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-${CHE_EDITOR_CONCEAL_FILE_NAME} +---- + +. Create a ConfigMap: ++ +[source,shell,subs="+attributes"] +---- +{orch-cli} create configmap ${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME} \ + --namespace ${OPERATOR_NAMESPACE} \ + --from-literal=${CHE_EDITOR_CONCEAL_FILE_NAME}="" +---- + +. Find out the resource to patch. If the {prod-short} Operator is deployed using a Subscription, set the resource to patch to the Subscription. Otherwise, set the resource to patch to the Deployment: ++ +[source,shell,subs="+attributes"] +---- +K8S_RESOURCE="deployment/{prod-operator}" +VOLUMES="/spec/template/spec/volumes/-" +VOLUME_MOUNTS="/spec/template/spec/containers/0/volumeMounts/-" + +SUBSCRIPTION_EXISTS=$({orch-cli} get subscription {prod-operator-subscription} --namespace ${OPERATOR_NAMESPACE} --no-headers 2>/dev/null || true) +if [ -n "${SUBSCRIPTION_EXISTS}" ]; then + K8S_RESOURCE="subscription/{prod-operator-subscription}" + VOLUMES="/spec/config/volumes/-" + VOLUME_MOUNTS="/spec/config/volumeMounts/-" +fi + +---- + +. Patch resource to mount empty file instead of the editor definition file: ++ +[source,shell,subs="+attributes"] +---- +{orch-cli} patch ${RESOURCE_TO_PATCH} \ + --namespace ${OPERATOR_NAMESPACE} \ + --type "json" \ + --patch '[{"op":"add","path":"'${VOLUMES}'","value":{"name":"'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", "configMap": {"name": "'${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME}'"}}}, {"op":"add","path":"'${VOLUME_MOUNTS}'","value":{"name": "'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", "subPath":"'${CHE_EDITOR_CONCEAL_FILE_NAME}'","mountPath": "/tmp/editors-definitions/'${CHE_EDITOR_CONCEAL_FILE_NAME}'"}}]' +---- + +.Additional resources + +* xref:configuring-editors-definitions.adoc[] + +* {editor-definition-samples-link} + diff --git a/modules/administration-guide/pages/configuring-a-user-namespace.adoc b/modules/administration-guide/pages/configuring-a-user-namespace.adoc index a535baa616..7a6e79f565 100644 --- a/modules/administration-guide/pages/configuring-a-user-namespace.adoc +++ b/modules/administration-guide/pages/configuring-a-user-namespace.adoc @@ -103,7 +103,7 @@ stringData: ---- NOTE: Run `update-ca-trust` command on workspace startup to import certificates. It can be achieved manually or by adding this command to a `postStart` event in a devfile. -See the link:https://devfile.io/docs/2.2.2/adding-event-bindings#post-start-object[Adding event bindings in a devfile]. +See the link:https://devfile.io/docs/{devfile-api-version}/adding-event-bindings#post-start-object[Adding event bindings in a devfile]. ==== + .Mounting environment variables to a user workspace: diff --git a/modules/administration-guide/pages/configuring-dashboard.adoc b/modules/administration-guide/pages/configuring-dashboard.adoc index 4501089ebe..fe8f35395b 100644 --- a/modules/administration-guide/pages/configuring-dashboard.adoc +++ b/modules/administration-guide/pages/configuring-dashboard.adoc @@ -11,5 +11,7 @@ * xref:configuring-editors-definitions.adoc[] +* xref:concealing-editors-definitions.adoc[] + * xref:customizing-openshift-che-consolelink-icon.adoc[] diff --git a/modules/administration-guide/pages/configuring-workspaces-globally.adoc b/modules/administration-guide/pages/configuring-workspaces-globally.adoc index f0f106ca01..87fedd87a8 100644 --- a/modules/administration-guide/pages/configuring-workspaces-globally.adoc +++ b/modules/administration-guide/pages/configuring-workspaces-globally.adoc @@ -13,6 +13,8 @@ This section describes how an administrator can configure workspaces globally. * xref:enabling-users-to-run-multiple-workspaces-simultaneously.adoc[] +* xref:limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously.adoc[] + * xref:deploying-che-with-support-for-git-repositories-with-self-signed-certificates.adoc[] * xref:configuring-workspaces-nodeselector.adoc[] diff --git a/modules/administration-guide/pages/limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously.adoc b/modules/administration-guide/pages/limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously.adoc new file mode 100644 index 0000000000..5367744706 --- /dev/null +++ b/modules/administration-guide/pages/limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously.adoc @@ -0,0 +1,37 @@ +:_content-type: PROCEDURE +:description: Limiting the number of workspaces that all users can run simultaneously +:keywords: administration guide, number, workspaces +:navtitle: Limiting the number of workspaces that all users can run simultaneously +:page-aliases: + +[id="limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously"] += Limiting the number of workspaces that all users can run simultaneously + +By default, all users can run unlimited number of workspaces. You can limit the number of workspaces that all users can run simultaneously. This configuration is part of the `CheCluster` Custom Resource: + +[source,yaml,subs="+quotes"] +---- +spec: + devEnvironments: + maxNumberOfRunningWorkspacesPerCluster: ____#<1> + +---- +<1> The maximum number of concurrently running workspaces across the entire Kubernetes cluster. +This applies to all users in the system. If the value is set to -1, it means there is +no limit on the number of running workspaces. + +.Procedure + +. Configure the `maxNumberOfRunningWorkspacesPerCluster`: ++ +[source,subs="+quotes,attributes"] +---- +{orch-cli} patch checluster/{prod-checluster} -n {prod-namespace} \ +--type='merge' -p \ +'{"spec":{"devEnvironments":{"maxNumberOfRunningWorkspacesPerCluster": ____}}}'# <1> +---- +<1> Your choice of the `____` value. + +.Additional resources + +* xref:using-the-cli-to-configure-the-checluster-custom-resource.adoc[] diff --git a/modules/end-user-guide/pages/devfile-introduction.adoc b/modules/end-user-guide/pages/devfile-introduction.adoc index 07956a2be5..366022bbcd 100644 --- a/modules/end-user-guide/pages/devfile-introduction.adoc +++ b/modules/end-user-guide/pages/devfile-introduction.adoc @@ -26,8 +26,8 @@ link:https://registry.devfile.io/viewer[{Devfile Registry] contains ready-to-use .Additional resources -* link:https://devfile.io/docs/2.2.2/what-is-a-devfile[What is a devfile] -* link:https://devfile.io/docs/2.2.0/benefits-of-devfile[Benefits of devfile] -* link:https://devfile.io/docs/2.2.2/overview[Devfile customization overview] +* link:https://devfile.io/docs/{devfile-api-version}/what-is-a-devfile[What is a devfile] +* link:https://devfile.io/docs/{devfile-api-version}/benefits-of-devfile[Benefits of devfile] +* link:https://devfile.io/docs/{devfile-api-version}/overview[Devfile customization overview] * link:https://devfile.io/[Devfile.io] * link:https://che.eclipseprojects.io/2024/02/05/@mario.loriedo-cde-customization.html[Customizing Cloud Development Environments] From e1387f1c5f93837e3fd530bd7d1c2f99145dbfbf Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Wed, 4 Sep 2024 16:30:18 +0200 Subject: [PATCH 02/13] fixup Signed-off-by: Anatolii Bazko --- modules/administration-guide/nav.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/administration-guide/nav.adoc b/modules/administration-guide/nav.adoc index 178883f29f..f1dfdc4cff 100644 --- a/modules/administration-guide/nav.adoc +++ b/modules/administration-guide/nav.adoc @@ -42,6 +42,7 @@ *** xref:configuring-machine-autoscaling.adoc[] ** xref:configuring-workspaces-globally.adoc[] *** xref:limiting-the-number-of-workspaces-that-a-user-can-keep.adoc[] +*** xref:limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously.adoc[] *** xref:enabling-users-to-run-multiple-workspaces-simultaneously.adoc[] *** xref:deploying-che-with-support-for-git-repositories-with-self-signed-certificates.adoc[] *** xref:configuring-workspaces-nodeselector.adoc[] @@ -74,6 +75,7 @@ ** xref:configuring-dashboard.adoc[] *** xref:configuring-getting-started-samples.adoc[] *** xref:configuring-editors-definitions.adoc[] +*** xref:concealing-editors-definitions.adoc[] *** xref:customizing-openshift-che-consolelink-icon.adoc[] ** xref:managing-identities-and-authorizations.adoc[] *** xref:configuring-oauth-for-git-providers.adoc[] From d392e34b3f003c9d8257c6196727e11865407454 Mon Sep 17 00:00:00 2001 From: Jana Vrbkova Date: Wed, 4 Sep 2024 19:06:41 +0200 Subject: [PATCH 03/13] Update concealing-editors-definitions.adoc --- .../pages/concealing-editors-definitions.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 76c817981e..891ca62d75 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -2,7 +2,7 @@ :description: Concealing editors definitions :keywords: administration guide, concealing, dashboard, editors :navtitle: Concealing editors definitions -:page-aliases: installation-guide:concealing-editors-definitions.adoc +//:page-aliases: installation-guide:concealing-editors-definitions.adoc [id="concealing-editors-definitions"] = Concealing editors definitions From 7d10e773bf467cd5bf55a9a51bc3cff9b74189f6 Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Thu, 5 Sep 2024 14:33:20 +0200 Subject: [PATCH 04/13] fixup Signed-off-by: Anatolii Bazko --- .../pages/concealing-editors-definitions.adoc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 891ca62d75..4c44468daf 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -17,14 +17,14 @@ Learn how to conceal {prod-short} editor definitions. . Find out the namespace where the {prod-short} Operator is deployed: + -[source,shell,subs="+attributes"] +[source,subs="+attributes"] ---- OPERATOR_NAMESPACE=$({orch-cli} get pods -l app.kubernetes.io/component={prod-operator} -o jsonpath={".items[0].metadata.namespace"} --all-namespaces) ---- . Find out the available editors definitions: + -[source,shell,subs="+attributes"] +[source,subs="+attributes"] ---- {orch-cli} exec -n ${OPERATOR_NAMESPACE} deploy/{prod-operator} -- ls /tmp/editors-definitions ---- @@ -43,21 +43,21 @@ che-idea-server-next.yaml . Choose an editor definition to conceal. For example, to conceal the `che-idea-next.yaml` editor definition, set the editor definition file name: + -[source,shell,subs="+attributes"] +[source,subs="+attributes"] ---- CHE_EDITOR_CONCEAL_FILE_NAME=che-idea-next.yaml ---- . Define the ConfigMap name for the concealed editor definition: + -[source,shell,subs="+attributes"] +[source,subs="+attributes"] ---- CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-${CHE_EDITOR_CONCEAL_FILE_NAME} ---- . Create a ConfigMap: + -[source,shell,subs="+attributes"] +[source,subs="+attributes"] ---- {orch-cli} create configmap ${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME} \ --namespace ${OPERATOR_NAMESPACE} \ @@ -66,7 +66,7 @@ CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-${CHE_EDITOR_CONCEAL_FILE_NAME} . Find out the resource to patch. If the {prod-short} Operator is deployed using a Subscription, set the resource to patch to the Subscription. Otherwise, set the resource to patch to the Deployment: + -[source,shell,subs="+attributes"] +[source,subs="+attributes"] ---- K8S_RESOURCE="deployment/{prod-operator}" VOLUMES="/spec/template/spec/volumes/-" @@ -83,7 +83,7 @@ fi . Patch resource to mount empty file instead of the editor definition file: + -[source,shell,subs="+attributes"] +[source,subs="+attributes"] ---- {orch-cli} patch ${RESOURCE_TO_PATCH} \ --namespace ${OPERATOR_NAMESPACE} \ From ec76f7f607630caeedef0806015557e08fdd5956 Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Fri, 6 Sep 2024 14:46:08 +0200 Subject: [PATCH 05/13] fixups Signed-off-by: Anatolii Bazko --- modules/administration-guide/nav.adoc | 1 + .../pages/concealing-editors-definitions.adoc | 115 ++++++++++++++---- .../pages/configuring-dashboard.adoc | 2 + ...configuring-default-editor-definition.adoc | 42 +++++++ .../configuring-editors-definitions.adoc | 4 +- .../configuring-workspaces-globally.adoc | 4 +- 6 files changed, 142 insertions(+), 26 deletions(-) create mode 100644 modules/administration-guide/pages/configuring-default-editor-definition.adoc diff --git a/modules/administration-guide/nav.adoc b/modules/administration-guide/nav.adoc index f1dfdc4cff..fdd47148f2 100644 --- a/modules/administration-guide/nav.adoc +++ b/modules/administration-guide/nav.adoc @@ -75,6 +75,7 @@ ** xref:configuring-dashboard.adoc[] *** xref:configuring-getting-started-samples.adoc[] *** xref:configuring-editors-definitions.adoc[] +*** xref:configuring-default-editor-definition.adoc[] *** xref:concealing-editors-definitions.adoc[] *** xref:customizing-openshift-che-consolelink-icon.adoc[] ** xref:managing-identities-and-authorizations.adoc[] diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 4c44468daf..08ad7e2558 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -2,12 +2,11 @@ :description: Concealing editors definitions :keywords: administration guide, concealing, dashboard, editors :navtitle: Concealing editors definitions -//:page-aliases: installation-guide:concealing-editors-definitions.adoc [id="concealing-editors-definitions"] = Concealing editors definitions -Learn how to conceal {prod-short} editor definitions. +Learn how to conceal {prod-short} editor definitions. It can be useful when you want to hide some of the editors from the Dashboard UI, e.g. IntelliJ and have only Code OSS. .Prerequisites @@ -36,8 +35,6 @@ che-code-insiders.yaml che-code-latest.yaml che-idea-latest.yaml che-idea-next.yaml -che-idea-server-latest.yaml -che-idea-server-next.yaml ---- . Choose an editor definition to conceal. @@ -55,7 +52,7 @@ CHE_EDITOR_CONCEAL_FILE_NAME=che-idea-next.yaml CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-${CHE_EDITOR_CONCEAL_FILE_NAME} ---- -. Create a ConfigMap: +. Create the ConfigMap: + [source,subs="+attributes"] ---- @@ -64,36 +61,110 @@ CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-${CHE_EDITOR_CONCEAL_FILE_NAME} --from-literal=${CHE_EDITOR_CONCEAL_FILE_NAME}="" ---- -. Find out the resource to patch. If the {prod-short} Operator is deployed using a Subscription, set the resource to patch to the Subscription. Otherwise, set the resource to patch to the Deployment: +. Find out the Operator subscription namespace if it exists: + [source,subs="+attributes"] ---- -K8S_RESOURCE="deployment/{prod-operator}" -VOLUMES="/spec/template/spec/volumes/-" -VOLUME_MOUNTS="/spec/template/spec/containers/0/volumeMounts/-" - -SUBSCRIPTION_EXISTS=$({orch-cli} get subscription {prod-operator-subscription} --namespace ${OPERATOR_NAMESPACE} --no-headers 2>/dev/null || true) -if [ -n "${SUBSCRIPTION_EXISTS}" ]; then - K8S_RESOURCE="subscription/{prod-operator-subscription}" - VOLUMES="/spec/config/volumes/-" - VOLUME_MOUNTS="/spec/config/volumeMounts/-" -fi - +SUBSCRIPTION_NAMESPACE=$({orch-cli} get subscription \ + --all-namespaces \ + --field-selector=metadata.name={prod-operator-subscription} \ + --output jsonpath='{.items[0].metadata.namespace}' 2>/dev/null +) ---- -. Patch resource to mount empty file instead of the editor definition file: +. Patch the {kubernetes} resource to mount the ConfigMap with the concealed editor definition. The resource to patch depends on the existence of the Operator subscription. If the subscription exists, then the subscription should be patched, otherwise the Operator deployment: + [source,subs="+attributes"] ---- -{orch-cli} patch ${RESOURCE_TO_PATCH} \ - --namespace ${OPERATOR_NAMESPACE} \ - --type "json" \ - --patch '[{"op":"add","path":"'${VOLUMES}'","value":{"name":"'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", "configMap": {"name": "'${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME}'"}}}, {"op":"add","path":"'${VOLUME_MOUNTS}'","value":{"name": "'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", "subPath":"'${CHE_EDITOR_CONCEAL_FILE_NAME}'","mountPath": "/tmp/editors-definitions/'${CHE_EDITOR_CONCEAL_FILE_NAME}'"}}]' +if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then + if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace ${SUBSCRIPTION_NAMESPACE} --output jsonpath='{.spec.config}') == "" ]]; then + {orch-cli} patch subscription {prod-operator-subscription} \ + --namespace ${SUBSCRIPTION_NAMESPACE} \ + --type json \ + --patch '[{ + "op":"add", + "path":"/spec/config", + "value": {} + }]' + fi + + if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace ${SUBSCRIPTION_NAMESPACE} --output jsonpath='{.spec.config.volumes}') == "" ]]; then + {orch-cli} patch subscription {prod-operator-subscription} \ + --namespace ${SUBSCRIPTION_NAMESPACE} \ + --type json \ + --patch '[{ + "op":"add", + "path":"/spec/config/volumes", + "value": [] + }]' + fi + + if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace ${SUBSCRIPTION_NAMESPACE} --output jsonpath='{.spec.config.volumeMounts}') == "" ]]; then + {orch-cli} patch subscription {prod-operator-subscription} \ + --namespace ${SUBSCRIPTION_NAMESPACE} \ + --type json \ + --patch '[{ + "op":"add", + "path":"/spec/config/volumeMounts", + "value": [] + }]' + fi + + {orch-cli} patch subscription {prod-operator-subscription} \ + --namespace ${SUBSCRIPTION_NAMESPACE} \ + --type json \ + --patch '[{ + "op":"add", + "path":"/spec/config/volumes/-", + "value": { + "name":"'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", + "configMap": { + "name": "'${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME}'" + } + } + }, + { + "op":"add", + "path":"/spec/config/volumeMounts/-", + "value":{ + "name": "'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", + "subPath":"'${CHE_EDITOR_CONCEAL_FILE_NAME}'", + "mountPath": "/tmp/editors-definitions/'${CHE_EDITOR_CONCEAL_FILE_NAME}'" + } + }]' +else + {orch-cli} patch deployment {prod-operator} \ + --namespace ${OPERATOR_NAMESPACE} \ + --type json \ + --patch '[{ + "op":"add", + "path":"/spec/template/spec/volumes/-", + "value": { + "name":"'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", + "configMap": { + "name": "'${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME}'" + } + } + }, + { + "op":"add", + "path":"/spec/template/spec/containers/0/volumeMounts/-", + "value":{ + "name": "'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", + "subPath":"'${CHE_EDITOR_CONCEAL_FILE_NAME}'", + "mountPath": "/tmp/editors-definitions/'${CHE_EDITOR_CONCEAL_FILE_NAME}'" + } + } +]' +fi ---- + .Additional resources * xref:configuring-editors-definitions.adoc[] +* xref:configuring-default-editor-definition.adoc[] + * {editor-definition-samples-link} diff --git a/modules/administration-guide/pages/configuring-dashboard.adoc b/modules/administration-guide/pages/configuring-dashboard.adoc index fe8f35395b..766a19bc75 100644 --- a/modules/administration-guide/pages/configuring-dashboard.adoc +++ b/modules/administration-guide/pages/configuring-dashboard.adoc @@ -11,6 +11,8 @@ * xref:configuring-editors-definitions.adoc[] +* xref:configuring-default-editor-definition.adoc[] + * xref:concealing-editors-definitions.adoc[] * xref:customizing-openshift-che-consolelink-icon.adoc[] diff --git a/modules/administration-guide/pages/configuring-default-editor-definition.adoc b/modules/administration-guide/pages/configuring-default-editor-definition.adoc new file mode 100644 index 0000000000..84e0c4e536 --- /dev/null +++ b/modules/administration-guide/pages/configuring-default-editor-definition.adoc @@ -0,0 +1,42 @@ +:_content-type: PROCEDURE +:description: Configuring default editor +:keywords: administration guide, dashboard, editors +:navtitle: Configuring default editor definition + +[id="configuring-default-editor-definition"] += Configuring default editor definition + +Learn how to configure {prod-short} default editor definition. + +.Prerequisites + +* An active `{orch-cli}` session with administrative permissions to the {orch-name} cluster. See {orch-cli-link}. + +.Procedure + +. Find out available editors: ++ +[source,subs="+quotes,+attributes"] +---- +{orch-cli} exec deploy/{prod-id-short}-dashboard -n {prod-namespace} -- curl http://localhost:8080/dashboard/api/editors +---- + +. Configure the `defaultEditor`: ++ +[source,subs="+quotes,+attributes"] +---- +{orch-cli} patch checluster/{prod-checluster} \ + --namespace {prod-namespace} \ + --type='merge' \ + -p '{"spec":{"devEnvironments":{"defaultEditor": "____"}}}'# <1> +---- +<1> The default editor to workspace create with. It could be a plugin ID or a URI. The plugin ID must have `publisher/name/version` format. The URI must start from `http://` or `https://`. + +.Additional resources + +* xref:configuring-editors-definitions.adoc[] + +* xref:concealing-editors-definitions.adoc[] + +* {editor-definition-samples-link} + diff --git a/modules/administration-guide/pages/configuring-editors-definitions.adoc b/modules/administration-guide/pages/configuring-editors-definitions.adoc index 5b7769fa74..bf4121fc8b 100644 --- a/modules/administration-guide/pages/configuring-editors-definitions.adoc +++ b/modules/administration-guide/pages/configuring-editors-definitions.adoc @@ -179,13 +179,13 @@ commands: The editor definition is also served by the {prod-short} dashboard API from the following URL: -`pass:c,a,q[{prod-url}]/dashboard/api/editors/devfile?che-editor=____` +`pass:c,a,q[{prod-url}]/dashboard/api/editors` For the example from xref:configuring-editors-definitions.adoc[], the editor definition can be retrieved by accessing the following URL: `pass:c,a,q[{prod-url}]/dashboard/api/editors/devfile?che-editor=publisher/editor-name/version` -TIP: When retrieving the editor definition from within the {orch-name} cluster, the {prod-short} dashboard API can be accessed via the dashboard service: `pass:c,a,q[http://{prod-id-short}-dashboard.{prod-namespace}.svc.cluster.local:8080]/dashboard/api/editors/devfile?che-editor=____` +TIP: When retrieving the editor definition from within the {orch-name} cluster, the {prod-short} dashboard API can be accessed via the dashboard service: `pass:c,a,q[http://{prod-id-short}-dashboard.{prod-namespace}.svc.cluster.local:8080]/dashboard/api/editors` .Additional resources diff --git a/modules/administration-guide/pages/configuring-workspaces-globally.adoc b/modules/administration-guide/pages/configuring-workspaces-globally.adoc index 87fedd87a8..fcb760898d 100644 --- a/modules/administration-guide/pages/configuring-workspaces-globally.adoc +++ b/modules/administration-guide/pages/configuring-workspaces-globally.adoc @@ -11,10 +11,10 @@ This section describes how an administrator can configure workspaces globally. * xref:limiting-the-number-of-workspaces-that-a-user-can-keep.adoc[] -* xref:enabling-users-to-run-multiple-workspaces-simultaneously.adoc[] - * xref:limiting-the-number-of-workspaces-that-all-users-can-run-simultaneously.adoc[] +* xref:enabling-users-to-run-multiple-workspaces-simultaneously.adoc[] + * xref:deploying-che-with-support-for-git-repositories-with-self-signed-certificates.adoc[] * xref:configuring-workspaces-nodeselector.adoc[] From b9c7d82b982533142eee7f623f14dca7cb5bb91a Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Tue, 10 Sep 2024 12:43:57 +0200 Subject: [PATCH 06/13] fixup Signed-off-by: Anatolii Bazko --- .../pages/concealing-editors-definitions.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 08ad7e2558..94e0ca1e41 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -49,7 +49,7 @@ CHE_EDITOR_CONCEAL_FILE_NAME=che-idea-next.yaml + [source,subs="+attributes"] ---- -CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-${CHE_EDITOR_CONCEAL_FILE_NAME} +CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-$CHE_EDITOR_CONCEAL_FILE_NAME ---- . Create the ConfigMap: @@ -58,7 +58,7 @@ CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-${CHE_EDITOR_CONCEAL_FILE_NAME} ---- {orch-cli} create configmap ${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME} \ --namespace ${OPERATOR_NAMESPACE} \ - --from-literal=${CHE_EDITOR_CONCEAL_FILE_NAME}="" + --from-literal=$CHE_EDITOR_CONCEAL_FILE_NAME="" ---- . Find out the Operator subscription namespace if it exists: @@ -128,8 +128,8 @@ if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then "path":"/spec/config/volumeMounts/-", "value":{ "name": "'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", - "subPath":"'${CHE_EDITOR_CONCEAL_FILE_NAME}'", - "mountPath": "/tmp/editors-definitions/'${CHE_EDITOR_CONCEAL_FILE_NAME}'" + "subPath":"'$CHE_EDITOR_CONCEAL_FILE_NAME'", + "mountPath": "/tmp/editors-definitions/'$CHE_EDITOR_CONCEAL_FILE_NAME'" } }]' else From 8754776522edc302b86b4c3ad48bba95fddc00fc Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Tue, 10 Sep 2024 12:48:39 +0200 Subject: [PATCH 07/13] fixup Signed-off-by: Anatolii Bazko --- .../pages/concealing-editors-definitions.adoc | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 94e0ca1e41..06674c01dd 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -25,7 +25,7 @@ OPERATOR_NAMESPACE=$({orch-cli} get pods -l app.kubernetes.io/component={prod-op + [source,subs="+attributes"] ---- -{orch-cli} exec -n ${OPERATOR_NAMESPACE} deploy/{prod-operator} -- ls /tmp/editors-definitions +{orch-cli} exec -n $OPERATOR_NAMESPACE deploy/{prod-operator} -- ls /tmp/editors-definitions ---- The output should look similar to the following: + @@ -56,8 +56,8 @@ CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-$CHE_EDITOR_CONCEAL_FILE_NAME + [source,subs="+attributes"] ---- -{orch-cli} create configmap ${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME} \ - --namespace ${OPERATOR_NAMESPACE} \ +{orch-cli} create configmap $CHE_EDITOR_CONCEAL_CONFIGMAP_NAME \ + --namespace $OPERATOR_NAMESPACE \ --from-literal=$CHE_EDITOR_CONCEAL_FILE_NAME="" ---- @@ -76,10 +76,10 @@ SUBSCRIPTION_NAMESPACE=$({orch-cli} get subscription \ + [source,subs="+attributes"] ---- -if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then - if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace ${SUBSCRIPTION_NAMESPACE} --output jsonpath='{.spec.config}') == "" ]]; then +if [[ -n $SUBSCRIPTION_NAMESPACE ]]; then + if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace $SUBSCRIPTION_NAMESPACE --output jsonpath='{.spec.config}') == "" ]]; then {orch-cli} patch subscription {prod-operator-subscription} \ - --namespace ${SUBSCRIPTION_NAMESPACE} \ + --namespace $SUBSCRIPTION_NAMESPACE \ --type json \ --patch '[{ "op":"add", @@ -88,9 +88,9 @@ if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then }]' fi - if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace ${SUBSCRIPTION_NAMESPACE} --output jsonpath='{.spec.config.volumes}') == "" ]]; then + if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace $SUBSCRIPTION_NAMESPACE --output jsonpath='{.spec.config.volumes}') == "" ]]; then {orch-cli} patch subscription {prod-operator-subscription} \ - --namespace ${SUBSCRIPTION_NAMESPACE} \ + --namespace $SUBSCRIPTION_NAMESPACE \ --type json \ --patch '[{ "op":"add", @@ -99,9 +99,9 @@ if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then }]' fi - if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace ${SUBSCRIPTION_NAMESPACE} --output jsonpath='{.spec.config.volumeMounts}') == "" ]]; then + if [[ $({orch-cli} get subscription {prod-operator-subscription} --namespace $SUBSCRIPTION_NAMESPACE --output jsonpath='{.spec.config.volumeMounts}') == "" ]]; then {orch-cli} patch subscription {prod-operator-subscription} \ - --namespace ${SUBSCRIPTION_NAMESPACE} \ + --namespace $SUBSCRIPTION_NAMESPACE \ --type json \ --patch '[{ "op":"add", @@ -111,7 +111,7 @@ if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then fi {orch-cli} patch subscription {prod-operator-subscription} \ - --namespace ${SUBSCRIPTION_NAMESPACE} \ + --namespace $SUBSCRIPTION_NAMESPACE \ --type json \ --patch '[{ "op":"add", @@ -119,7 +119,7 @@ if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then "value": { "name":"'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", "configMap": { - "name": "'${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME}'" + "name": "'$CHE_EDITOR_CONCEAL_CONFIGMAP_NAME'" } } }, @@ -134,7 +134,7 @@ if [[ -n ${SUBSCRIPTION_NAMESPACE} ]]; then }]' else {orch-cli} patch deployment {prod-operator} \ - --namespace ${OPERATOR_NAMESPACE} \ + --namespace $OPERATOR_NAMESPACE \ --type json \ --patch '[{ "op":"add", @@ -142,7 +142,7 @@ else "value": { "name":"'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", "configMap": { - "name": "'${CHE_EDITOR_CONCEAL_CONFIGMAP_NAME}'" + "name": "'$CHE_EDITOR_CONCEAL_CONFIGMAP_NAME'" } } }, @@ -151,8 +151,8 @@ else "path":"/spec/template/spec/containers/0/volumeMounts/-", "value":{ "name": "'$(echo ${CHE_EDITOR_CONCEAL_FILE_NAME%.*})'", - "subPath":"'${CHE_EDITOR_CONCEAL_FILE_NAME}'", - "mountPath": "/tmp/editors-definitions/'${CHE_EDITOR_CONCEAL_FILE_NAME}'" + "subPath":"'$CHE_EDITOR_CONCEAL_FILE_NAME'", + "mountPath": "/tmp/editors-definitions/'$CHE_EDITOR_CONCEAL_FILE_NAME'" } } ]' From de4ab0f8328c072d81edb8fd90665a747a4ef935 Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Tue, 10 Sep 2024 13:53:57 +0200 Subject: [PATCH 08/13] fixup Signed-off-by: Anatolii Bazko --- .../pages/concealing-editors-definitions.adoc | 6 ++++-- .../pages/configuring-default-editor-definition.adoc | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 06674c01dd..ed6b9de5e0 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -12,6 +12,8 @@ Learn how to conceal {prod-short} editor definitions. It can be useful when you * An active `{orch-cli}` session with administrative permissions to the {orch-name} cluster. See {orch-cli-link}. +* `jq`. See link:https://stedolan.github.io/jq/download/[Downloading `jq`]. + .Procedure . Find out the namespace where the {prod-short} Operator is deployed: @@ -21,7 +23,7 @@ Learn how to conceal {prod-short} editor definitions. It can be useful when you OPERATOR_NAMESPACE=$({orch-cli} get pods -l app.kubernetes.io/component={prod-operator} -o jsonpath={".items[0].metadata.namespace"} --all-namespaces) ---- -. Find out the available editors definitions: +. Find out the available editors definitions files: + [source,subs="+attributes"] ---- @@ -72,7 +74,7 @@ SUBSCRIPTION_NAMESPACE=$({orch-cli} get subscription \ ) ---- -. Patch the {kubernetes} resource to mount the ConfigMap with the concealed editor definition. The resource to patch depends on the existence of the Operator subscription. If the subscription exists, then the subscription should be patched, otherwise the Operator deployment: +. Patch the {kubernetes} resource to mount the ConfigMap with the empty editor definition. The resource to patch depends on the existence of the Operator subscription. If the subscription exists, then the subscription should be patched, otherwise the Operator deployment: + [source,subs="+attributes"] ---- diff --git a/modules/administration-guide/pages/configuring-default-editor-definition.adoc b/modules/administration-guide/pages/configuring-default-editor-definition.adoc index 84e0c4e536..2d45db5416 100644 --- a/modules/administration-guide/pages/configuring-default-editor-definition.adoc +++ b/modules/administration-guide/pages/configuring-default-editor-definition.adoc @@ -12,13 +12,16 @@ Learn how to configure {prod-short} default editor definition. * An active `{orch-cli}` session with administrative permissions to the {orch-name} cluster. See {orch-cli-link}. +* `jq`. See link:https://stedolan.github.io/jq/download/[Downloading `jq`]. + .Procedure -. Find out available editors: +. Find out available editors IDs: + [source,subs="+quotes,+attributes"] ---- -{orch-cli} exec deploy/{prod-id-short}-dashboard -n {prod-namespace} -- curl http://localhost:8080/dashboard/api/editors +{orch-cli} exec deploy/{prod-id-short}-dashboard -n {prod-namespace} \ + -- curl -s http://localhost:8080/dashboard/api/editors | jq -r '.[] | "\(.metadata.attributes.publisher)/\(.metadata.name)/\(.metadata.attributes.version)"' ---- . Configure the `defaultEditor`: @@ -30,7 +33,7 @@ Learn how to configure {prod-short} default editor definition. --type='merge' \ -p '{"spec":{"devEnvironments":{"defaultEditor": "____"}}}'# <1> ---- -<1> The default editor to workspace create with. It could be a plugin ID or a URI. The plugin ID must have `publisher/name/version` format. The URI must start from `http://` or `https://`. +<1> The default editor for creating a workspace can be specified using either a plugin ID or a URI. The plugin ID should follow the format: `publisher/name/version`. See available editors IDs in the first step. .Additional resources From 3d109b8d70e294921207f17c5cab97067bab64ba Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Wed, 11 Sep 2024 12:38:02 +0200 Subject: [PATCH 09/13] Update modules/administration-guide/pages/concealing-editors-definitions.adoc Co-authored-by: Jana Vrbkova --- .../pages/concealing-editors-definitions.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index ed6b9de5e0..27ae8ad923 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -6,7 +6,7 @@ [id="concealing-editors-definitions"] = Concealing editors definitions -Learn how to conceal {prod-short} editor definitions. It can be useful when you want to hide some of the editors from the Dashboard UI, e.g. IntelliJ and have only Code OSS. +Learn how to conceal {prod-short} editor definitions. This is useful when you want to hide selected editors from the Dashboard UI, e.g. hide the IntelliJ IDEA Ultimate and have only Visual Studio Code - Open Source visible. .Prerequisites From 425202d305352e0a103090fc4e0e503f19dda29e Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Wed, 11 Sep 2024 12:38:08 +0200 Subject: [PATCH 10/13] Update modules/administration-guide/pages/concealing-editors-definitions.adoc Co-authored-by: Jana Vrbkova --- .../pages/concealing-editors-definitions.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 27ae8ad923..3f2735a79c 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -29,7 +29,7 @@ OPERATOR_NAMESPACE=$({orch-cli} get pods -l app.kubernetes.io/component={prod-op ---- {orch-cli} exec -n $OPERATOR_NAMESPACE deploy/{prod-operator} -- ls /tmp/editors-definitions ---- -The output should look similar to the following: +The output should look similar to the following example: + [source] ---- From 72135b0682acccd6bca8b00640f5d2f290bcf954 Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Wed, 11 Sep 2024 12:38:13 +0200 Subject: [PATCH 11/13] Update modules/administration-guide/pages/concealing-editors-definitions.adoc Co-authored-by: Jana Vrbkova --- .../pages/concealing-editors-definitions.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 3f2735a79c..18ee6a747f 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -63,7 +63,7 @@ CHE_EDITOR_CONCEAL_CONFIGMAP_NAME=che-conceal-$CHE_EDITOR_CONCEAL_FILE_NAME --from-literal=$CHE_EDITOR_CONCEAL_FILE_NAME="" ---- -. Find out the Operator subscription namespace if it exists: +. Find out the Operator subscription namespace (if it exists): + [source,subs="+attributes"] ---- From d9081d21ced18db4677c97d0d08f1a347ee5a7fd Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Wed, 11 Sep 2024 12:38:19 +0200 Subject: [PATCH 12/13] Update modules/administration-guide/pages/concealing-editors-definitions.adoc Co-authored-by: Jana Vrbkova --- .../pages/concealing-editors-definitions.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/administration-guide/pages/concealing-editors-definitions.adoc b/modules/administration-guide/pages/concealing-editors-definitions.adoc index 18ee6a747f..da49fc692a 100644 --- a/modules/administration-guide/pages/concealing-editors-definitions.adoc +++ b/modules/administration-guide/pages/concealing-editors-definitions.adoc @@ -74,7 +74,7 @@ SUBSCRIPTION_NAMESPACE=$({orch-cli} get subscription \ ) ---- -. Patch the {kubernetes} resource to mount the ConfigMap with the empty editor definition. The resource to patch depends on the existence of the Operator subscription. If the subscription exists, then the subscription should be patched, otherwise the Operator deployment: +. Patch the {kubernetes} resource to mount the ConfigMap with the empty editor definition. The resource to patch depends on the existence of the Operator subscription. If the subscription exists, then the subscription should be patched. If not, patch the Operator deployment: + [source,subs="+attributes"] ---- From ac526c5547b79b2c65b9d6300e2eb071c4111295 Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Wed, 11 Sep 2024 12:38:23 +0200 Subject: [PATCH 13/13] Update modules/administration-guide/pages/configuring-default-editor-definition.adoc Co-authored-by: Jana Vrbkova --- .../pages/configuring-default-editor-definition.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/administration-guide/pages/configuring-default-editor-definition.adoc b/modules/administration-guide/pages/configuring-default-editor-definition.adoc index 2d45db5416..e12ac79991 100644 --- a/modules/administration-guide/pages/configuring-default-editor-definition.adoc +++ b/modules/administration-guide/pages/configuring-default-editor-definition.adoc @@ -16,7 +16,7 @@ Learn how to configure {prod-short} default editor definition. .Procedure -. Find out available editors IDs: +. Find out the IDs of the available editors: + [source,subs="+quotes,+attributes"] ----