Skip to content

Conversation

@maximiliankolb
Copy link
Contributor

@maximiliankolb maximiliankolb commented Nov 21, 2025

What changes are you introducing?

  • Simplify anchors
  • Split modules by user interface
  • Make DITA compliant
  • Prepare docs to add support for Deb content via follow-up PR

Why are you introducing these changes? (Explanation, links to references, issues, etc.)

preparation to add docs for Katello/katello#11567

Anything else to add? (Considerations, potential downsides, alternative solutions you have explored, etc.)

Contributor checklists

  • I am okay with my commits getting squashed when you merge this PR.
  • I am familiar with the contributing guidelines.

Please cherry-pick my commits into:

  • Foreman 3.17/Katello 4.19
  • Foreman 3.16/Katello 4.18 (Satellite 6.18)
  • Foreman 3.15/Katello 4.17
  • Foreman 3.14/Katello 4.16 (Satellite 6.17; orcharhino 7.4)
  • Foreman 3.13/Katello 4.15 (EL9 only)
  • Foreman 3.12/Katello 4.14 (Satellite 6.16; orcharhino 7.2 on EL9 only; orcharhino 7.3)
  • Foreman 3.11/Katello 4.13 (orcharhino 6.11 on EL8 only; orcharhino 7.0 on EL8+EL9; orcharhino 7.1 with Leapp)
  • Foreman 3.10/Katello 4.12
  • Foreman 3.9/Katello 4.11 (Satellite 6.15; orcharhino 6.8/6.9/6.10)
  • We do not accept PRs for Foreman older than 3.9.

Summary by Sourcery

Reorganize and expand Alternate Content Sources documentation to better distinguish workflows by user interface and content type.

Documentation:

  • Split ACS procedural documentation into separate modules for Web UI and CLI workflows for clearer navigation.
  • Rename and simplify ACS module filenames and anchors to improve consistency and readability.
  • Extend ACS documentation to cover additional content types, including Deb content, within the relevant procedures.

Summary by Sourcery

Reorganize Alternate Content Sources documentation to separate workflows by interface and clarify structure.

Documentation:

  • Split Alternate Content Sources procedures into separate modules for Web UI and CLI workflows for custom, RHUI, and simplified sources.
  • Replace older configuration procedure modules with new, more focused creation and synchronization procedures, including a dedicated Web UI module for syncing Smart Proxies from Red Hat CDN.
  • Add a reference module documenting permissions required to manage Alternate Content Sources and adjust the main assembly and conceptual content to align with the new module structure.

@sourcery-ai
Copy link

sourcery-ai bot commented Nov 21, 2025

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Reworks the Alternate Content Sources (ACS) documentation by splitting procedures into Web UI vs CLI modules, simplifying anchors and filenames, and restructuring content to facilitate future addition of Deb content workflows.

File-Level Changes

Change Details Files
Restructure ACS assembly to reference new UI-specific procedure modules and updated anchors.
  • Update assembly_managing-alternate-content-sources.adoc to include separate Web UI and CLI procedure modules for each ACS type
  • Adjust assembly structure and xrefs to use simplified, consistent anchors for ACS-related topics
  • Prepare assembly for inclusion of Deb content procedures by organizing sections by content type and interface
guides/common/assembly_managing-alternate-content-sources.adoc
Clarify and modernize ACS conceptual documentation.
  • Revise con_managing-alternate-content-sources.adoc to align terminology with new ACS module structure and anchors
  • Ensure conceptual overview cleanly separates ACS types and references new procedure modules
guides/common/modules/con_managing-alternate-content-sources.adoc
Split ACS configuration procedures into Web UI and CLI variants per ACS type with simplified anchors.
  • Replace legacy generic configuration procedures with new ACS creation procedures for custom, RHUI, and simplified ACS via Web UI
  • Introduce corresponding CLI-based procedures for custom, RHUI, and simplified ACS to mirror Web UI workflows
  • Adopt consistent module filenames and IDs emphasizing 'creating-' and '-by-using-web-ui/cli' patterns to simplify linking and reuse
guides/common/modules/proc_creating-custom-alternate-content-sources-by-using-cli.adoc
guides/common/modules/proc_creating-custom-alternate-content-sources-by-using-web-ui.adoc
guides/common/modules/proc_creating-rhui-alternate-content-sources-by-using-cli.adoc
guides/common/modules/proc_creating-rhui-alternate-content-sources-by-using-web-ui.adoc
guides/common/modules/proc_creating-simplified-alternate-content-sources-by-using-cli.adoc
guides/common/modules/proc_creating-simplified-alternate-content-sources-by-using-web-ui.adoc
guides/common/modules/proc_configuring-custom-alternate-content-sources.adoc
guides/common/modules/proc_configuring-rhui-alternate-content-sources.adoc
guides/common/modules/proc_configuring-simplified-alternate-content-sources.adoc
Refine Smart Proxy synchronization and permissions documentation for ACS.
  • Introduce a Web UI-specific procedure module for synchronizing Smart Proxy directly from Red Hat CDN via ACS
  • Remove the older generic Smart Proxy synchronization procedure in favor of the UI-specific variant
  • Add a reference module detailing required permissions for managing ACS to support RBAC-aware documentation and future Deb workflows
guides/common/modules/proc_synchronizing-smart-proxy-directly-from-red-hat-cdn-by-using-web-ui.adoc
guides/common/modules/ref_permissions-required-to-manage-alternate-content-sources.adoc
guides/common/modules/proc_synchronizing-smart-proxy-directly-from-red-hat-cdn.adoc

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@github-actions github-actions bot added Needs tech review Requires a review from the technical perspective Needs style review Requires a review from docs style/grammar perspective Needs testing Requires functional testing labels Nov 21, 2025
@github-actions
Copy link

github-actions bot commented Nov 21, 2025

The PR preview for 70c36e1 is available at theforeman-foreman-documentation-preview-pr-4492.surge.sh

The following output files are affected by this PR:

show diff

show diff as HTML

@maximiliankolb maximiliankolb force-pushed the alternate_content_sources branch from 07dcdf8 to 411e97f Compare November 24, 2025 10:15
@maximiliankolb maximiliankolb marked this pull request as ready for review November 24, 2025 10:18
Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes - here's some feedback:

  • Since you renamed/split several ACS modules, consider keeping the old anchors or adding alias/xref targets so any existing internal or external links to the removed modules continue to resolve correctly.
  • With separate Web UI and CLI procedures that are very similar, it might be worth extracting common prerequisites or conceptual explanations into shared modules to reduce duplication and keep future updates easier.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Since you renamed/split several ACS modules, consider keeping the old anchors or adding alias/xref targets so any existing internal or external links to the removed modules continue to resolve correctly.
- With separate Web UI and CLI procedures that are very similar, it might be worth extracting common prerequisites or conceptual explanations into shared modules to reduce duplication and keep future updates easier.

## Individual Comments

### Comment 1
<location> `guides/common/modules/proc_creating-rhui-alternate-content-sources-by-using-web-ui.adoc:39` </location>
<code_context>
+. If SSL verification is required, enable *Verify SSL* and select the SSL CA certificate.
+. Click *Add*.
+. Navigate to *Content* > *Alternate Content Sources*.
+. Click the vertical ellipsis next to the newly created alternate content source and click *Refresh*.
--- /dev/null
+++ b/guides/common/modules/proc_creating-custom-alternate-content-sources-by-using-web-ui.adoc
</code_context>

<issue_to_address>
**issue (review_instructions):** This Web UI procedure ends after the refresh step without telling users how to verify that the RHUI alternate content source refresh completed successfully.

Please add a brief Verification section (for example, pointing users to Monitor > Tasks or another suitable check) so they can confirm that the ACS creation and refresh completed without errors, consistent with the other ACS procedures that already provide verification steps.

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/modules/proc*.adoc`

**Instructions:**
Verification steps are included where appropriate.

</details>
</issue_to_address>

### Comment 2
<location> `guides/common/modules/proc_synchronizing-smart-proxy-directly-from-red-hat-cdn-by-using-web-ui.adoc:22` </location>
<code_context>
+. Review details and click *Add*.
+. Navigate to *Content* > *Alternate Content Sources*, click the vertical ellipsis next to the newly created alternate content source, and select *Refresh*.
++
+Your {SmartProxyServer} will now download content from Red{nbsp}Hat CDN and not from {ProjectServer}.
--- /dev/null
+++ b/guides/common/modules/ref_permissions-required-to-manage-alternate-content-sources.adoc
</code_context>

<issue_to_address>
**issue (review_instructions):** This synchronization procedure lacks explicit verification steps to confirm that the Smart Proxy is actually downloading content directly from Red Hat CDN after configuration.

Consider adding a Verification section that tells users how to confirm the new behavior (for example, by checking the relevant tasks, logs, or ACS details) so they can be sure the Smart Proxy is now syncing from Red Hat CDN instead of {ProjectServer}.

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/modules/proc*.adoc`

**Instructions:**
Verification steps are included where appropriate.

</details>
</issue_to_address>

### Comment 3
<location> `guides/common/modules/proc_creating-rhui-alternate-content-sources-by-using-cli.adoc:20` </location>
<code_context>
+----
+# rhui-manager repo info --repo_id _My_Repo_ID_
+----
+* Note that the alternate content source paths consist of a base URL appended with the subpaths that you provide.
+For example, if your base URL is `\https://{server-example-com}` and your subpaths are `rhel7/` and `rhel8/`, then both `\https://{server-example-com}/rhel7/` and `\https://{server-example-com}/rhel8/` will be searched.
+
</code_context>

<issue_to_address>
**suggestion (review_instructions):** The phrase "are ... searched" in the following example uses passive voice; consider rewriting it in active voice.

In the next line, "then both `https://{server-example-com}/rhel7/` and `https://{server-example-com}/rhel8/` will be searched" uses passive voice.
To align with the style guide, you could rephrase it to something like: "then the system searches both ..." or "then {Project} searches both ..."

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/*.adoc,guides/common/modules/*.adoc`

**Instructions:**
Avoid passive voice in verbs.

</details>
</issue_to_address>

### Comment 4
<location> `guides/common/modules/proc_creating-custom-alternate-content-sources-by-using-cli.adoc:12` </location>
<code_context>
+----
+# rhui-manager repo info --repo_id _My_Repo_ID_
+----
+* Note that the alternate content source paths consist of a base URL appended with the subpaths that you provide.
+For example, if your base URL is `\https://{server-example-com}` and your subpaths are `rhel7/` and `rhel8/`, then both `\https://{server-example-com}/rhel7/` and `\https://{server-example-com}/rhel8/` will be searched.
+
</code_context>

<issue_to_address>
**suggestion (review_instructions):** The example sentence that follows this line ends with "will be searched," which is passive voice and should be rewritten actively.

Right after this line, the example says that both URLs "will be searched," which is passive.
You could rephrase it as "then the system searches both ..." or "then {Project} searches both ..." to keep the meaning while avoiding passive voice.

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/*.adoc,guides/common/modules/*.adoc`

**Instructions:**
Avoid passive voice in verbs.

</details>
</issue_to_address>

### Comment 5
<location> `guides/common/modules/proc_creating-rhui-alternate-content-sources-by-using-web-ui.adoc:20` </location>
<code_context>
+----
+# rhui-manager repo info --repo_id _My_Repo_ID_
+----
+* Note that the alternate content source paths consist of a base URL appended with the subpaths that you provide.
+For example, if your base URL is `\https://{server-example-com}` and your subpaths are `rhel7/` and `rhel8/`, then both `\https://{server-example-com}/rhel7/` and `\https://{server-example-com}/rhel8/` will be searched.
+
</code_context>

<issue_to_address>
**suggestion (review_instructions):** The subsequent example ends with "will be searched," which is passive voice and should be made active.

The example that follows this line says both URLs "will be searched," which uses passive voice.
Consider changing it to something like "then the system searches both ..." or "then {Project} searches both ..." to comply with the style guidance.

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/*.adoc,guides/common/modules/*.adoc`

**Instructions:**
Avoid passive voice in verbs.

</details>
</issue_to_address>

### Comment 6
<location> `guides/common/modules/proc_creating-rhui-alternate-content-sources-by-using-web-ui.adoc:31` </location>
<code_context>
+Ensure that you pass the repo labels of the desired repositories.
+. In the *Name* field, enter a name for your RHUI ACS.
+. Optional: In the *Description* field, provide a description for the ACS.
+. Select {SmartProxies} to which the alternate content source is to be synchronized.
+. If you require synchronizing content through the HTTP proxy of your {SmartProxies}, select *Use HTTP proxies*.
+. In the *Base URL* field, enter the base URL of the Red{nbsp}Hat Update Infrastructure CDS node.
</code_context>

<issue_to_address>
**suggestion (review_instructions):** "is to be synchronized" is passive; rephrase to use active voice.

To avoid passive voice, you could rewrite this as something like:
- "Select {SmartProxies} that you want to synchronize with this alternate content source."
This keeps the user action clear and uses active voice.

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/*.adoc,guides/common/modules/*.adoc`

**Instructions:**
Avoid passive voice in verbs.

</details>
</issue_to_address>

### Comment 7
<location> `guides/common/modules/proc_creating-custom-alternate-content-sources-by-using-web-ui.adoc:22` </location>
<code_context>
+Ensure that you pass the repo labels of the desired repositories.
+. In the *Name* field, enter a name for your RHUI ACS.
+. Optional: In the *Description* field, provide a description for the ACS.
+. Select {SmartProxies} to which the alternate content source is to be synchronized.
+. If you require synchronizing content through the HTTP proxy of your {SmartProxies}, select *Use HTTP proxies*.
+. In the *Base URL* field, enter the base URL of the Red{nbsp}Hat Update Infrastructure CDS node.
</code_context>

<issue_to_address>
**suggestion (review_instructions):** The construction "is to be synchronized" is passive and should be rewritten in active voice.

You could rephrase this line as, for example:
- "Select {SmartProxies} that you want to synchronize with this alternate content source."
This makes the sentence active and more user-action oriented.

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/*.adoc,guides/common/modules/*.adoc`

**Instructions:**
Avoid passive voice in verbs.

</details>
</issue_to_address>

### Comment 8
<location> `guides/common/modules/proc_creating-simplified-alternate-content-sources-by-using-web-ui.adoc:16` </location>
<code_context>
+Ensure that you pass the repo labels of the desired repositories.
+. In the *Name* field, enter a name for your RHUI ACS.
+. Optional: In the *Description* field, provide a description for the ACS.
+. Select {SmartProxies} to which the alternate content source is to be synchronized.
+. If you require synchronizing content through the HTTP proxy of your {SmartProxies}, select *Use HTTP proxies*.
+. In the *Base URL* field, enter the base URL of the Red{nbsp}Hat Update Infrastructure CDS node.
</code_context>

<issue_to_address>
**suggestion (review_instructions):** The phrase "is to be synchronized" uses passive voice; consider an active formulation.

To avoid passive voice, you could change this to something like:
- "Select {SmartProxies} that you want to synchronize with this alternate content source."
This keeps the focus on the user's action and adheres to the style guidance.

<details>
<summary>Review instructions:</summary>

**Path patterns:** `guides/common/*.adoc,guides/common/modules/*.adoc`

**Instructions:**
Avoid passive voice in verbs.

</details>
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copy link
Contributor

@Lennonka Lennonka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

Suggestions below.

@pr-processor pr-processor bot added Waiting on contributor Requires an action from the author Needs re-review and removed Waiting on contributor Requires an action from the author labels Nov 24, 2025
Copy link
Contributor Author

@maximiliankolb maximiliankolb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I applied all suggestions by Lena. Kindly asking for a re-review.

Copy link
Contributor

@Lennonka Lennonka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✔️ DITA Vale check is clean

Would it be worth considering incorporating those Sourcery suggestions?

Copy link
Contributor Author

@maximiliankolb maximiliankolb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked into the suggestions by Sourcery and reworded modules as suggested.

Copy link
Contributor

@Lennonka Lennonka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few nitpicks. The rest looks good.

@Lennonka Lennonka added style review done No issues from docs style/grammar perspective and removed Needs style review Requires a review from docs style/grammar perspective labels Nov 24, 2025
Checked all anchors locally:

$ rg -i "Managing_Alternate_Content_Sources_"
$ rg -i "Configuring_Custom_Alternate_Content_Sources_"
$ rg -i "Configuring_RHUI_Alternate_Content_Sources_"
$ rg -i "Configuring_Simplified_Alternate_Content_Sources_"
$ rg -i "_Directly_From_Red_Hat_CDN_"
Verified removed anchors for CLI procedures manually:

$ rg -i "cli-configuring-custom-alternate-content-sources_"
$ rg -i "cli-configuring-rhui-alternate-content-sources_"
$ rg -i "cli-configuring-simplified-alternate-content-sources_"
$ rg -i "directory-from-red-hat-cdn"
This is losely based on
"guides/common/modules/ref_permissions-required-to-provision-hosts.adoc".
@maximiliankolb maximiliankolb force-pushed the alternate_content_sources branch from 69c7e1e to 70c36e1 Compare December 12, 2025 12:34
@maximiliankolb
Copy link
Contributor Author

Rebased to HEAD of "master". Still in need of a tiny tech ACK from the Katello Team. Now pinging the person with the second most commits regarding ACS: @ianballou

This is the only section that could use a tech ACK: #4492 (comment)

Copy link
Contributor

@ianballou ianballou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technical ACK, thanks.

@maximiliankolb maximiliankolb added tech review done No issues from the technical perspective and removed Needs tech review Requires a review from the technical perspective Needs testing Requires functional testing labels Dec 15, 2025
@maximiliankolb maximiliankolb merged commit fb72877 into theforeman:master Dec 15, 2025
10 of 11 checks passed
@maximiliankolb maximiliankolb deleted the alternate_content_sources branch December 15, 2025 07:15
maximiliankolb added a commit that referenced this pull request Dec 15, 2025
* Simplify anchors for ACS modules
  Checked all anchors locally:
  $ rg -i "Managing_Alternate_Content_Sources_"
  $ rg -i "Configuring_Custom_Alternate_Content_Sources_"
  $ rg -i "Configuring_RHUI_Alternate_Content_Sources_"
  $ rg -i "Configuring_Simplified_Alternate_Content_Sources_"
  $ rg -i "_Directly_From_Red_Hat_CDN_"
* Split ACS modules by interface
  Verified removed anchors for CLI procedures manually:
  $ rg -i "cli-configuring-custom-alternate-content-sources_"
  $ rg -i "cli-configuring-rhui-alternate-content-sources_"
  $ rg -i "cli-configuring-simplified-alternate-content-sources_"
  $ rg -i "directory-from-red-hat-cdn"
* Reword ACS modules
* Move ACS permissions into separate module
  This is losely based on
  "guides/common/modules/ref_permissions-required-to-provision-hosts.adoc".
* Fix description of ACS content flow for Smart Proxy Servers

(cherry picked from commit fb72877)
maximiliankolb added a commit that referenced this pull request Dec 15, 2025
* Simplify anchors for ACS modules
  Checked all anchors locally:
  $ rg -i "Managing_Alternate_Content_Sources_"
  $ rg -i "Configuring_Custom_Alternate_Content_Sources_"
  $ rg -i "Configuring_RHUI_Alternate_Content_Sources_"
  $ rg -i "Configuring_Simplified_Alternate_Content_Sources_"
  $ rg -i "_Directly_From_Red_Hat_CDN_"
* Split ACS modules by interface
  Verified removed anchors for CLI procedures manually:
  $ rg -i "cli-configuring-custom-alternate-content-sources_"
  $ rg -i "cli-configuring-rhui-alternate-content-sources_"
  $ rg -i "cli-configuring-simplified-alternate-content-sources_"
  $ rg -i "directory-from-red-hat-cdn"
* Reword ACS modules
* Move ACS permissions into separate module
  This is losely based on
  "guides/common/modules/ref_permissions-required-to-provision-hosts.adoc".
* Fix description of ACS content flow for Smart Proxy Servers

(cherry picked from commit fb72877)
@maximiliankolb
Copy link
Contributor Author

Merged to "master" and cherry-picked:
853d618..041afe5 3.17 -> 3.17
7f67955..ecf81a0 3.16 -> 3.16

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

style review done No issues from docs style/grammar perspective tech review done No issues from the technical perspective

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants