Skip to content

feat(docs): actualize about backups#434

Open
androndo wants to merge 1 commit intomainfrom
feat/backups-rework
Open

feat(docs): actualize about backups#434
androndo wants to merge 1 commit intomainfrom
feat/backups-rework

Conversation

@androndo
Copy link
Contributor

@androndo androndo commented Feb 27, 2026

Now we have separated docs for ops and users

Summary by CodeRabbit

  • New Features

    • Added public backup resources: BackupJob and Plan for tenant-driven backup operations.
    • Introduced tenant-facing status/inspect commands for BackupJobs, Plans and Velero backups.
  • Documentation

    • Streamlined backup-and-recovery docs with tenant-focused workflows, concise commands, and clear prerequisites.
    • Added Velero administration guide covering storage credential and backup storage configuration for operators.
    • Removed prior schedule-based examples in favor of Plan/BackupJob-based examples.

@netlify
Copy link

netlify bot commented Feb 27, 2026

Deploy Preview for cozystack ready!

Name Link
🔨 Latest commit 1a28ce2
🔍 Latest deploy log https://app.netlify.com/projects/cozystack/deploys/69a59725907b390008b03b32
😎 Deploy Preview https://deploy-preview-434--cozystack.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

Split backup docs into tenant-facing guidance that uses new public resources (BackupJob, Plan) and a separate administrator guide that documents Velero configuration, storage credential setup, and BackupStorageLocation/VolumeSnapshotLocation resources.

Changes

Cohort / File(s) Summary
Tenant-facing backup docs
content/en/docs/v1/kubernetes/backup-and-recovery.md
Rewrote for tenant workflows: removed Velero‑centric setup and manual secret/YAML steps; introduced public resources (BackupJob, Plan), commands to list/inspect BackupClasses, concise create/status commands, and standardized namespace references.
Administrator Velero configuration
content/en/docs/v1/operations/services/velero-backup-configuration.md
New admin guide: Velero prerequisites, S3 credential Secret example, BackupStorageLocation and VolumeSnapshotLocation manifests, BackupClass and reusable strategy templates, apply/verify commands, and restore/run instructions for admins.

Sequence Diagram(s)

sequenceDiagram
    participant Tenant as Tenant (kubectl)
    participant API as Kubernetes API (backups.cozystack.io)
    participant Controller as BackupController (operator)
    participant Velero as Velero (cozy-velero)
    participant Store as Object Storage

    Tenant->>API: create `BackupJob` / `Plan`
    API-->>Controller: deliver resource event
    Controller->>Velero: create Velero Backup CR / trigger snapshot
    Velero->>Store: upload backup data
    Velero-->>Controller: report backup status
    Controller-->>API: update `BackupJob` / `Plan` status
    Tenant->>API: kubectl get/describe `BackupJob` / `Plan`
Loading

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I nibbled through docs, made workflows clear,

BackupJobs planted, Plans drawing near.
Admins tune Velero, storage set right,
Tenants trigger saves through the night.
A hop, a note — your data sleeps tight.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'actualize about backups' is vague and uses non-descriptive language that doesn't convey meaningful information about the substantial changes made to the backup documentation. Revise the title to be more specific and descriptive, such as 'docs: separate backup documentation for operators and users' or 'docs: reorganize backup guides into operator and user-focused docs'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/backups-rework

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the documentation related to backup and recovery within Cozystack. The primary goal is to improve clarity and relevance for different user personas by separating administrator-level Velero configuration details from tenant-level backup creation and management instructions. This ensures that both administrators and end-users can quickly find the information pertinent to their roles, streamlining the process of managing backups.

Highlights

  • Documentation Restructuring: The backup and recovery documentation has been split into two distinct guides, one for tenant users and another for cluster administrators, to provide more targeted information.
  • Tenant User Backup Workflows: The backup-and-recovery.md guide now focuses on how tenant users can create one-off backups using BackupJob and scheduled backups using BackupPlan Custom Resources.
  • Administrator Backup Configuration: A new guide, velero-backup-configuration.md, has been introduced to detail the setup of Velero storage, backup strategies, and BackupClasses for cluster administrators.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • content/en/docs/v1/kubernetes/backup-and-recovery.md
    • Updated the description to reflect the focus on BackupJobs and BackupPlans for tenant users.
    • Removed detailed sections on setting up S3 credentials, BackupStorageLocation, and VolumeSnapshotLocation.
    • Replaced manual Velero Backup and Schedule instructions with examples for BackupJob and BackupPlan CRDs.
    • Simplified the restore section, directing users to administrator-level documentation for complex restore scenarios.
    • Adjusted prerequisites to align with tenant user responsibilities.
  • content/en/docs/v1/operations/services/velero-backup-configuration.md
    • Added a new document dedicated to cluster administrators for configuring Velero backup infrastructure.
    • Included instructions for setting up S3 credentials, BackupStorageLocation, and VolumeSnapshotLocation.
    • Provided guidance on defining backup strategies and creating BackupClasses.
    • Explained how tenant users leverage these configurations.
Activity
  • No human activity (comments, reviews) was detected in this pull request.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request refactors the backup documentation by splitting it into a user-facing guide (backup-and-recovery.md) and an administrator guide (velero-backup-configuration.md). The changes are well-structured and make the documentation clearer for both audiences. I've added a couple of minor suggestions to improve the consistency of kubectl commands used in the examples.

@androndo androndo force-pushed the feat/backups-rework branch 10 times, most recently from c2a1f15 to b8c6f0f Compare March 2, 2026 13:10
@androndo androndo marked this pull request as ready for review March 2, 2026 13:11
@androndo androndo requested review from kvaps and lllamnyp as code owners March 2, 2026 13:11
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (1)
content/en/docs/v1/operations/services/velero-backup-configuration.md (1)

18-18: Polish unclear sentences to avoid operator confusion.

A few lines are grammatically unclear and hard to execute literally (Line 18, Line 148-150, Line 158).

Suggested wording cleanup
-- S3-compatible storage: if you want store backups in Cozy you need enable SeaweedFS and create a Bucket or can use another external S3 service.
+- S3-compatible storage: to store backups in Cozy, enable SeaweedFS and create a Bucket, or use an external S3-compatible service.

-Template context for substitutions in template spec will be resolved according defined Parameters in BackupClass and desired ApplicationRef defined in BackupJob / Plan.
+Template substitutions in `spec.template` are resolved from `parameters` in `BackupClass` and `applicationRef` in `BackupJob`/`Plan`.

-Don't forget apply it into management cluster:
+Apply it to the management cluster:

-A **BackupClass** binds a strategy to applications, you can define some Parameters
+A **BackupClass** binds a strategy to applications and allows defining parameters.

Also applies to: 148-150, 158-158

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md` at
line 18, The sentence "S3-compatible storage: if you want store backups in Cozy
you need enable SeaweedFS and create a Bucket or can use another external S3
service." (and similar unclear lines around 148-150 and 158) is grammatically
incorrect and ambiguous; rephrase these sentences for clarity and consistent
style: explicitly mention the requirement to enable SeaweedFS and create a
bucket when choosing Cozy as the S3-compatible backend, or state that an
external S3 service is an alternative, and make verbs and articles correct
(e.g., "If you want to store backups in Cozy, enable SeaweedFS and create a
bucket; alternatively, use an external S3-compatible service."). Locate the
problematic text by searching for the exact sentence fragment above and the
nearby lines referenced and replace them with clear, imperative instructions and
parallel structure.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@content/en/docs/v1/kubernetes/backup-and-recovery.md`:
- Around line 32-36: Replace the malformed apologetic sentence "Let's apologize
that you see something like" with a direct instruction that tells the user what
to look for and to confirm the Velero class exists; specifically, change that
sentence to something like "You should see output similar to the
following—confirm the velero class is present:" and retain the example table
showing "NAME   AGE" with "velero  14m" so readers know what to verify.
- Around line 49-64: The manifest shows BackupJob created with "namespace:
tenant-root" but subsequent commands use "-n cozy-velero", causing a mismatch;
update the example so the BackupJob namespace and the kubectl commands match
(either change the manifest's namespace to "cozy-velero" or change the kubectl
commands to use "-n tenant-root")—look for the BackupJob resource definition and
the example commands (kubectl get backupjobs -n cozy-velero and kubectl describe
backupjob my-manual-backup -n cozy-velero) and make them consistent.
- Around line 72-99: The header and text inconsistently use "BackupPlan" while
the manifest uses kind: Plan and the kubectl commands are wrong; update the
heading "Create scheduled backups (BackupPlan)" to "Create scheduled backups
(Plan)", change the sentence "Use a **BackupPlan** to run backups..." to "Use a
**Plan** to run backups...", and replace any `kubectl describe backupplan`
occurrences with `kubectl describe plan my-backup-plan` so the documentation and
the manifest (`kind: Plan`, metadata.name: my-backup-plan) are consistent.

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md`:
- Line 200: Fix the malformed Markdown link for Velero CLI by removing the extra
closing bracket in the text "[Velero
CLI]](https://velero.io/docs/v1.17/basic-install/#install-the-cli)" so it
becomes "[Velero
CLI](https://velero.io/docs/v1.17/basic-install/#install-the-cli)"; locate the
occurrence of the string "[Velero CLI]]" in the document and update it to a
single closing bracket to restore proper Markdown link syntax.
- Around line 179-181: Fix the typos in the BackupClass example: correct the
resource kind value from "VirtialMachine" to "VirtualMachine" (the
application.kind field in the example) and rename the parameter key
"backupStoragelocationName" to "backupStorageLocationName" so it matches the
template key used earlier and allows proper template substitution.

---

Nitpick comments:
In `@content/en/docs/v1/operations/services/velero-backup-configuration.md`:
- Line 18: The sentence "S3-compatible storage: if you want store backups in
Cozy you need enable SeaweedFS and create a Bucket or can use another external
S3 service." (and similar unclear lines around 148-150 and 158) is grammatically
incorrect and ambiguous; rephrase these sentences for clarity and consistent
style: explicitly mention the requirement to enable SeaweedFS and create a
bucket when choosing Cozy as the S3-compatible backend, or state that an
external S3 service is an alternative, and make verbs and articles correct
(e.g., "If you want to store backups in Cozy, enable SeaweedFS and create a
bucket; alternatively, use an external S3-compatible service."). Locate the
problematic text by searching for the exact sentence fragment above and the
nearby lines referenced and replace them with clear, imperative instructions and
parallel structure.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2f69169 and b8c6f0f.

📒 Files selected for processing (2)
  • content/en/docs/v1/kubernetes/backup-and-recovery.md
  • content/en/docs/v1/operations/services/velero-backup-configuration.md

@androndo androndo force-pushed the feat/backups-rework branch 2 times, most recently from a26dcfe to ab2ebd4 Compare March 2, 2026 13:17
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (5)
content/en/docs/v1/kubernetes/backup-and-recovery.md (5)

49-49: ⚠️ Potential issue | 🟠 Major

Fix namespace mismatch between BackupJob and status commands.

The BackupJob is created in tenant-root (line 49) but the status commands query cozy-velero (lines 62-63). Users will encounter "not found" errors. This was previously flagged but remains unresolved.

🔧 Suggested fix (standardize namespace)
 kubectl apply -f backupjob.yaml
-kubectl get backupjobs -n cozy-velero
-kubectl describe backupjob my-manual-backup -n cozy-velero
+kubectl get backupjobs -n tenant-root
+kubectl describe backupjob my-manual-backup -n tenant-root

Also applies to: 62-63

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` at line 49, The
namespace used to create the BackupJob ("tenant-root") does not match the
namespace used in the status commands ("cozy-velero"); update the status command
examples to use the same namespace as the BackupJob (tenant-root) or change the
BackupJob namespace to cozy-velero so both are identical—search for "BackupJob"
and the status command examples (kubectl get backup/… and kubectl describe
backup/…) in the document and make their namespace argument consistent (use
tenant-root or cozy-velero) across lines referencing the job and status checks.

32-36: ⚠️ Potential issue | 🟡 Minor

Replace malformed sentence with clear instruction.

The sentence "Let's apologize that you see something like" is grammatically incorrect and unprofessional. This was previously flagged but remains unresolved.

📝 Suggested fix
-Let's apologize that you see something like and we will use this velero class in the next steps:
+You should see output similar to this; we'll use the `velero` class in the next steps:
-```                        
+```bash
 NAME                   AGE
 velero                 14m     
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @content/en/docs/v1/kubernetes/backup-and-recovery.md around lines 32 - 36,
Replace the malformed sentence "Let's apologize that you see something like"
with a clear instruction and a properly formatted bash code block showing the
expected Velero class output; update the surrounding text to say something like
"You should see output similar to the following:" and then include the fenced
bash block that displays the NAME/AGE table (the lines starting with "NAME
AGE" and "velero 14m") so the example is professional and
readable.


</details>

---

`72-72`: _⚠️ Potential issue_ | _🟠 Major_

**Standardize terminology: use "Plan" consistently, not "BackupPlan".**

The heading (line 72) and description (line 74) reference "BackupPlan" but the manifest uses `kind: Plan` (line 80). The kubectl command on line 98 also uses `backupplan` which won't match the actual resource. This was previously flagged but remains unresolved.




<details>
<summary>🔧 Suggested fix</summary>

```diff
-## 3. Create scheduled backups (BackupPlan)
+## 3. Create scheduled backups (Plan)

-Use a **BackupPlan** to run backups on a schedule (e.g. daily or every 6 hours).
+Use a **Plan** to run backups on a schedule (e.g. daily or every 6 hours).
 kubectl apply -f backupplan.yaml
 kubectl get plans -n cozy-velero
-kubectl describe backupplan my-backup-plan -n cozy-velero
+kubectl describe plan my-backup-plan -n cozy-velero
 kubectl get backups.velero.io -n cozy-velero

Also applies to: 74-74, 98-98

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` at line 72, Heading and
text refer to "BackupPlan" but the manifest uses kind: Plan and the kubectl
command uses the wrong resource name; update the heading "Create scheduled
backups (BackupPlan)" to "Create scheduled backups (Plan)", change any inline
references from "BackupPlan" to "Plan" (including the description that mentions
BackupPlan), and fix the kubectl command to use the correct resource name for
the CRD (e.g., use "plan" or the correct plural "plans" as required by kubectl)
so it matches kind: Plan in the manifest.

105-105: ⚠️ Potential issue | 🟠 Major

Fix kubectl command: use "plan" not "backupplan".

The command uses kubectl describe backupplan but the resource kind is Plan (line 80), so the correct command should be kubectl describe plan.

🔧 Suggested fix
-- **Plans**: `kubectl get plans -n cozy-velero` and `kubectl describe backupplan <name> -n cozy-velero`
+- **Plans**: `kubectl get plans -n cozy-velero` and `kubectl describe plan <name> -n cozy-velero`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` at line 105, The
kubectl command incorrectly uses the resource name "backupplan"; update the
documentation to use the correct resource kind "Plan" by replacing the string
"kubectl describe backupplan <name> -n cozy-velero" with "kubectl describe plan
<name> -n cozy-velero" (the other command "kubectl get plans -n cozy-velero" is
already correct), ensuring the command text in the content matches the resource
kind "Plan".

104-104: ⚠️ Potential issue | 🟠 Major

Align namespace in status commands with BackupJob example.

The BackupJob status commands reference cozy-velero namespace, but the example BackupJob (line 49) was created in tenant-root. For consistency, status commands should match the example namespace.

🔧 Suggested fix
-- **BackupJobs**: `kubectl get backupjobs -n cozy-velero` and `kubectl describe backupjob <name> -n cozy-velero`
+- **BackupJobs**: `kubectl get backupjobs -n tenant-root` and `kubectl describe backupjob <name> -n tenant-root`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` at line 104, The
BackupJob status commands use the wrong namespace; update the two commands
referencing `cozy-velero` to use `tenant-root` so they match the example
BackupJob shown earlier (change `kubectl get backupjobs -n cozy-velero` and
`kubectl describe backupjob <name> -n cozy-velero` to use `-n tenant-root`),
ensuring `BackupJobs` status commands align with the example BackupJob.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@content/en/docs/v1/kubernetes/backup-and-recovery.md`:
- Line 49: The namespace used to create the BackupJob ("tenant-root") does not
match the namespace used in the status commands ("cozy-velero"); update the
status command examples to use the same namespace as the BackupJob (tenant-root)
or change the BackupJob namespace to cozy-velero so both are identical—search
for "BackupJob" and the status command examples (kubectl get backup/… and
kubectl describe backup/…) in the document and make their namespace argument
consistent (use tenant-root or cozy-velero) across lines referencing the job and
status checks.
- Around line 32-36: Replace the malformed sentence "Let's apologize that you
see something like" with a clear instruction and a properly formatted bash code
block showing the expected Velero class output; update the surrounding text to
say something like "You should see output similar to the following:" and then
include the fenced bash block that displays the NAME/AGE table (the lines
starting with "NAME                   AGE" and "velero                 14m") so
the example is professional and readable.
- Line 72: Heading and text refer to "BackupPlan" but the manifest uses kind:
Plan and the kubectl command uses the wrong resource name; update the heading
"Create scheduled backups (BackupPlan)" to "Create scheduled backups (Plan)",
change any inline references from "BackupPlan" to "Plan" (including the
description that mentions BackupPlan), and fix the kubectl command to use the
correct resource name for the CRD (e.g., use "plan" or the correct plural
"plans" as required by kubectl) so it matches kind: Plan in the manifest.
- Line 105: The kubectl command incorrectly uses the resource name "backupplan";
update the documentation to use the correct resource kind "Plan" by replacing
the string "kubectl describe backupplan <name> -n cozy-velero" with "kubectl
describe plan <name> -n cozy-velero" (the other command "kubectl get plans -n
cozy-velero" is already correct), ensuring the command text in the content
matches the resource kind "Plan".
- Line 104: The BackupJob status commands use the wrong namespace; update the
two commands referencing `cozy-velero` to use `tenant-root` so they match the
example BackupJob shown earlier (change `kubectl get backupjobs -n cozy-velero`
and `kubectl describe backupjob <name> -n cozy-velero` to use `-n tenant-root`),
ensuring `BackupJobs` status commands align with the example BackupJob.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b8c6f0f and a26dcfe.

📒 Files selected for processing (2)
  • content/en/docs/v1/kubernetes/backup-and-recovery.md
  • content/en/docs/v1/operations/services/velero-backup-configuration.md
✅ Files skipped from review due to trivial changes (1)
  • content/en/docs/v1/operations/services/velero-backup-configuration.md

@androndo androndo force-pushed the feat/backups-rework branch 4 times, most recently from 95c75b0 to 1d26deb Compare March 2, 2026 13:35
…to ops or users

Signed-off-by: Andrey Kolkov <androndo@gmail.com>
@androndo androndo force-pushed the feat/backups-rework branch from 1d26deb to 1a28ce2 Compare March 2, 2026 13:56
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

♻️ Duplicate comments (1)
content/en/docs/v1/operations/services/velero-backup-configuration.md (1)

179-179: ⚠️ Potential issue | 🟡 Minor

Fix typo: "VirtialMachine" should be "VirtualMachine".

The application.kind value has a typo: "VirtialMachine" instead of "VirtualMachine". This will prevent proper matching with actual VirtualMachine resources.

✏️ Suggested fix
     application:
-      kind: VirtialMachine
+      kind: VirtualMachine
     parameters:
       backupStorageLocationName: default
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md` at
line 179, Replace the misspelled resource kind "VirtialMachine" with the correct
"VirtualMachine" where the application.kind value is set (the line containing
kind: VirtialMachine); update the application.kind value to "VirtualMachine" so
it correctly matches VirtualMachine resources.
🧹 Nitpick comments (4)
content/en/docs/v1/kubernetes/backup-and-recovery.md (4)

10-10: Simplify the sentence structure.

The phrase "Cluster backup strategies" is slightly redundant since the context is already about cluster backups. Consider simplifying to: "Backup strategies and BackupClasses are configured by cluster administrators."

✏️ Suggested revision
-Cluster backup **strategies** and **BackupClasses** are configured by cluster administrators. If your tenant does not have a BackupClass yet, ask your administrator to follow the [Velero Backup Configuration]({{% ref "/docs/v1/operations/services/velero-backup-configuration" %}}) guide to set up storage, strategies, and BackupClasses.
+Backup **strategies** and **BackupClasses** are configured by cluster administrators. If your tenant does not have a BackupClass yet, ask your administrator to follow the [Velero Backup Configuration]({{% ref "/docs/v1/operations/services/velero-backup-configuration" %}}) guide to set up storage, strategies, and BackupClasses.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` at line 10, Replace the
redundant phrase "Cluster backup **strategies** and **BackupClasses**" with the
simplified "Backup **strategies** and **BackupClasses**" in the sentence that
references the Velero Backup Configuration guide (the sentence containing the
link to {% ref "/docs/v1/operations/services/velero-backup-configuration" %}) so
it reads: "Backup **strategies** and **BackupClasses** are configured by cluster
administrators. If your tenant..." ensuring the rest of the link and sentence
remain unchanged.

91-95: Consider removing Velero-specific checks from tenant status commands.

Line 95 refers tenants to "Velero backups: kubectl get backups.velero.io -n tenant-root". This continues the abstraction leak noted in line 88. For a tenant-facing guide that emphasizes BackupJob and Plan usage, the status section should focus on those resources. If Velero backup inspection is needed, explain when and why tenants would check these lower-level resources.

♻️ Suggested revision
 ## 4. Check backup status
 
 - **BackupJobs**: `kubectl get backupjobs -n tenant-root` and `kubectl describe backupjob <name> -n tenant-root`
 - **Plans**: `kubectl get plans -n tenant-root` and `kubectl describe plan <name> -n tenant-root`
-- **Velero backups**: `kubectl get backups.velero.io -n tenant-root`

If you want to retain Velero backup checks, consider adding context:

For advanced troubleshooting, you can also inspect the underlying Velero backup resources:
- **Velero backups**: `kubectl get backups.velero.io -n tenant-root`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` around lines 91 - 95,
Remove or rephrase the Velero-specific check so tenant-facing status steps only
reference BackupJobs and Plans (i.e., the lines mentioning BackupJobs, Plans,
and the Velero command backups.velero.io); either delete the "`kubectl get
backups.velero.io -n tenant-root`" bullet or move it into a short "advanced
troubleshooting" paragraph that explains it's a lower-level, operator-focused
check and when tenants should use it. Ensure the section retains the BackupJobs
and Plan commands (`kubectl get backupjobs -n tenant-root`, `kubectl describe
backupjob <name> -n tenant-root`, `kubectl get plans -n tenant-root`, `kubectl
describe plan <name> -n tenant-root`) as the primary tenant-facing guidance.

14-14: Consider removing implementation details from tenant-facing guide.

This guide is for tenant users who work with the BackupJob and Plan abstractions. Explaining where Velero runs (management vs tenant cluster, cozy-velero namespace) exposes implementation details that tenants don't need to know and may cause confusion. Consider either removing this sentence or simplifying it to just mention that Velero powers the backups under the hood.

♻️ Suggested simplification
-Cozystack uses [Velero](https://velero.io/docs/v1.17/) under the hood. Backups and restores run in the `cozy-velero` namespace (management cluster) or the equivalent namespace in your tenant cluster, depending on your setup.
+Cozystack uses [Velero](https://velero.io/docs/v1.17/) under the hood to perform backups and restores.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` at line 14, Remove or
simplify the tenant-facing implementation detail sentence that reads "Cozystack
uses Velero... `cozy-velero` namespace (management cluster) or the equivalent
namespace in your tenant cluster, depending on your setup." For a tenant guide,
either delete this sentence entirely or replace it with a short note such as
"Backups are powered by Velero under the hood," keeping the rest of the document
unchanged; ensure the change appears in content near the file header where that
sentence is currently located.

88-88: Reconsider exposing Velero CRD in tenant-facing commands.

This guide emphasizes using the BackupJob and Plan abstractions. Having tenants run kubectl get backups.velero.io exposes the underlying Velero implementation and breaks the abstraction layer. Tenants should primarily use kubectl get backupjobs and kubectl get plans to check status. If checking Velero backups is necessary for troubleshooting, consider moving this command to a separate "Advanced" or "Troubleshooting" section with context.

♻️ Alternative: Remove Velero CRD check from basic workflow
 kubectl apply -f plan.yaml
 kubectl get plans -n tenant-root
 kubectl describe plan my-backup-plan -n tenant-root
-kubectl get backups.velero.io -n tenant-root
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` at line 88, The
document exposes the Velero CRD via the command "kubectl get backups.velero.io",
breaking the BackupJob/Plan abstraction; remove or relocate this command so
tenant-facing basic workflow only shows the abstracted commands (use "kubectl
get backupjobs" and "kubectl get plans" instead) and, if retaining the Velero
check for troubleshooting, move "kubectl get backups.velero.io -n tenant-root"
into a new "Advanced/Troubleshooting" section with explanatory context about
when and why to run it; update the text around BackupJob and Plan examples to
reference only the abstracted commands.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@content/en/docs/v1/kubernetes/backup-and-recovery.md`:
- Around line 24-25: The sentence "Check available BackupClass **name**, and use
in the next steps when creating a BackupJob or Plan." is grammatically
incomplete; update the copy to a complete phrase such as "Check the available
BackupClass names, and use them in the next steps when creating a BackupJob or
Plan." or alternatively "Note the BackupClass name, and use it in the next steps
when creating a BackupJob or Plan." Ensure you update the string containing
"BackupClass **name**" so it reads either "BackupClass names" (plural) or
"BackupClass name" (singular) and adjust the following clause to match (use them
vs use it).

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md`:
- Line 150: Update the sentence "Don't forget apply it" to read "Don't forget to
apply it" in the doc; locate the exact phrase "Don't forget apply it" and insert
the missing "to" so the instruction becomes grammatically correct ("Don't forget
to apply it").
- Line 148: Update the sentence "Template context for substitutions in template
spec will be resolved according defined Parameters in BackupClass and desired
ApplicationRef defined in BackupJob / Plan." to read "Template context for
substitutions in template spec will be resolved according to defined Parameters
in BackupClass and desired ApplicationRef defined in BackupJob / Plan." — edit
the exact line in the docs to insert the missing "to" so it reads "according to
defined Parameters".
- Line 18: Fix the typo in the sentence containing "if you want store backups"
by inserting the missing word "to" so it reads "if you want to store backups";
update the sentence in the Velero backup configuration doc where the
S3-compatible storage prerequisite is described (the exact phrase to locate:
"S3-compatible storage: if you want store backups in Cozy you need enable
SeaweedFS and create a Bucket or can use another external S3 service.") and
ensure the corrected sentence reads naturally (e.g., "S3-compatible storage: if
you want to store backups in Cozy you need to enable SeaweedFS and create a
Bucket, or you can use another external S3 service.").
- Line 208: The Velero restore section in
content/en/docs/v1/operations/services/velero-backup-configuration.md
incorrectly points to v0 restore docs; update that section (the "Velero restore"
or restore-related heading) to either include the v1 restore procedures directly
or, if v1 restore docs aren't ready, replace the reference with a clear
temporary note stating that the link points to v0 documentation while v1 restore
documentation is under development and include the v0 link for immediate use;
ensure the restore section text is explicit about the temporary nature and
next-steps (e.g., “v1 restore docs coming soon”) so readers aren’t confused.

---

Duplicate comments:
In `@content/en/docs/v1/operations/services/velero-backup-configuration.md`:
- Line 179: Replace the misspelled resource kind "VirtialMachine" with the
correct "VirtualMachine" where the application.kind value is set (the line
containing kind: VirtialMachine); update the application.kind value to
"VirtualMachine" so it correctly matches VirtualMachine resources.

---

Nitpick comments:
In `@content/en/docs/v1/kubernetes/backup-and-recovery.md`:
- Line 10: Replace the redundant phrase "Cluster backup **strategies** and
**BackupClasses**" with the simplified "Backup **strategies** and
**BackupClasses**" in the sentence that references the Velero Backup
Configuration guide (the sentence containing the link to {% ref
"/docs/v1/operations/services/velero-backup-configuration" %}) so it reads:
"Backup **strategies** and **BackupClasses** are configured by cluster
administrators. If your tenant..." ensuring the rest of the link and sentence
remain unchanged.
- Around line 91-95: Remove or rephrase the Velero-specific check so
tenant-facing status steps only reference BackupJobs and Plans (i.e., the lines
mentioning BackupJobs, Plans, and the Velero command backups.velero.io); either
delete the "`kubectl get backups.velero.io -n tenant-root`" bullet or move it
into a short "advanced troubleshooting" paragraph that explains it's a
lower-level, operator-focused check and when tenants should use it. Ensure the
section retains the BackupJobs and Plan commands (`kubectl get backupjobs -n
tenant-root`, `kubectl describe backupjob <name> -n tenant-root`, `kubectl get
plans -n tenant-root`, `kubectl describe plan <name> -n tenant-root`) as the
primary tenant-facing guidance.
- Line 14: Remove or simplify the tenant-facing implementation detail sentence
that reads "Cozystack uses Velero... `cozy-velero` namespace (management
cluster) or the equivalent namespace in your tenant cluster, depending on your
setup." For a tenant guide, either delete this sentence entirely or replace it
with a short note such as "Backups are powered by Velero under the hood,"
keeping the rest of the document unchanged; ensure the change appears in content
near the file header where that sentence is currently located.
- Line 88: The document exposes the Velero CRD via the command "kubectl get
backups.velero.io", breaking the BackupJob/Plan abstraction; remove or relocate
this command so tenant-facing basic workflow only shows the abstracted commands
(use "kubectl get backupjobs" and "kubectl get plans" instead) and, if retaining
the Velero check for troubleshooting, move "kubectl get backups.velero.io -n
tenant-root" into a new "Advanced/Troubleshooting" section with explanatory
context about when and why to run it; update the text around BackupJob and Plan
examples to reference only the abstracted commands.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a26dcfe and 1a28ce2.

📒 Files selected for processing (2)
  • content/en/docs/v1/kubernetes/backup-and-recovery.md
  • content/en/docs/v1/operations/services/velero-backup-configuration.md

Comment on lines +24 to +25
BackupClasses define where and how backups are stored. You can only use those that administrators have created and made available to you.
Check available BackupClass **name**, and use in the next steps when creating a BackupJob or Plan.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix grammatical issue in instruction.

"Check available BackupClass name" is grammatically incomplete. It should be "Check the available BackupClass names" or "Note the BackupClass name".

✏️ Suggested fix
-BackupClasses define where and how backups are stored. You can only use those that administrators have created and made available to you.
-Check available BackupClass **name**, and use in the next steps when creating a BackupJob or Plan.
+BackupClasses define where and how backups are stored. You can only use those that administrators have created and made available to you.
+Note the BackupClass **name** and use it in the next steps when creating a BackupJob or Plan.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/kubernetes/backup-and-recovery.md` around lines 24 - 25,
The sentence "Check available BackupClass **name**, and use in the next steps
when creating a BackupJob or Plan." is grammatically incomplete; update the copy
to a complete phrase such as "Check the available BackupClass names, and use
them in the next steps when creating a BackupJob or Plan." or alternatively
"Note the BackupClass name, and use it in the next steps when creating a
BackupJob or Plan." Ensure you update the string containing "BackupClass
**name**" so it reads either "BackupClass names" (plural) or "BackupClass name"
(singular) and adjust the following clause to match (use them vs use it).

## Prerequisites

- Administrator access to the Cozystack (management) cluster.
- S3-compatible storage: if you want store backups in Cozy you need enable SeaweedFS and create a Bucket or can use another external S3 service.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix missing "to" in prerequisites.

"if you want store backups" is missing "to". Should be "if you want to store backups".

✏️ Suggested fix
-- S3-compatible storage: if you want store backups in Cozy you need enable SeaweedFS and create a Bucket or can use another external S3 service.
+- S3-compatible storage: if you want to store backups in Cozy, you need to enable SeaweedFS and create a Bucket, or you can use another external S3 service.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- S3-compatible storage: if you want store backups in Cozy you need enable SeaweedFS and create a Bucket or can use another external S3 service.
- S3-compatible storage: if you want to store backups in Cozy, you need to enable SeaweedFS and create a Bucket, or you can use another external S3 service.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md` at
line 18, Fix the typo in the sentence containing "if you want store backups" by
inserting the missing word "to" so it reads "if you want to store backups";
update the sentence in the Velero backup configuration doc where the
S3-compatible storage prerequisite is described (the exact phrase to locate:
"S3-compatible storage: if you want store backups in Cozy you need enable
SeaweedFS and create a Bucket or can use another external S3 service.") and
ensure the corrected sentence reads naturally (e.g., "S3-compatible storage: if
you want to store backups in Cozy you need to enable SeaweedFS and create a
Bucket, or you can use another external S3 service.").

itemOperationTimeout: 24h0m0s
```

Template context for substitutions in template spec will be resolved according defined Parameters in BackupClass and desired ApplicationRef defined in BackupJob / Plan.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix missing "to" in template context explanation.

"according defined Parameters" should be "according to defined Parameters".

✏️ Suggested fix
-Template context for substitutions in template spec will be resolved according defined Parameters in BackupClass and desired ApplicationRef defined in BackupJob / Plan.
+Template context for substitutions in the template spec will be resolved according to the defined Parameters in the BackupClass and the desired ApplicationRef defined in the BackupJob or Plan.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md` at
line 148, Update the sentence "Template context for substitutions in template
spec will be resolved according defined Parameters in BackupClass and desired
ApplicationRef defined in BackupJob / Plan." to read "Template context for
substitutions in template spec will be resolved according to defined Parameters
in BackupClass and desired ApplicationRef defined in BackupJob / Plan." — edit
the exact line in the docs to insert the missing "to" so it reads "according to
defined Parameters".


Template context for substitutions in template spec will be resolved according defined Parameters in BackupClass and desired ApplicationRef defined in BackupJob / Plan.

Don't forget apply it into management cluster:
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix missing "to" in application instruction.

"Don't forget apply it" should be "Don't forget to apply it".

✏️ Suggested fix
-Don't forget apply it into management cluster:
+Don't forget to apply it to the management cluster:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Don't forget apply it into management cluster:
Don't forget to apply it to the management cluster:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md` at
line 150, Update the sentence "Don't forget apply it" to read "Don't forget to
apply it" in the doc; locate the exact phrase "Don't forget apply it" and insert
the missing "to" so the instruction becomes grammatically correct ("Don't forget
to apply it").

```

## 5. Restore from a backup

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, verify the file exists and check the content around line 208
if [ -f "content/en/docs/v1/operations/services/velero-backup-configuration.md" ]; then
  echo "=== File exists. Checking content around line 208 ==="
  wc -l "content/en/docs/v1/operations/services/velero-backup-configuration.md"
  echo ""
  echo "=== Content around line 208 ==="
  sed -n '200,215p' "content/en/docs/v1/operations/services/velero-backup-configuration.md" | cat -n
else
  echo "File not found"
fi

Repository: cozystack/website

Length of output: 754


🏁 Script executed:

# Search for v0 references in v1 operations docs
echo "=== Searching for v0 references in v1 operations directory ==="
rg "v0" content/en/docs/v1/operations/ -C 2

Repository: cozystack/website

Length of output: 3584


🏁 Script executed:

# Check if v1 restore documentation exists
echo "=== Checking for restore-related documentation in v1 ==="
fd -e md 'content/en/docs/v1' | xargs rg -l 'restore|Restore' | grep -v '.png'

Repository: cozystack/website

Length of output: 1784


🏁 Script executed:

# Check the v1 backup-and-recovery.md file
echo "=== Checking v1 kubernetes backup-and-recovery.md ==="
wc -l content/en/docs/v1/kubernetes/backup-and-recovery.md
echo ""
echo "=== Content searching for restore sections ==="
rg -n "restore|Restore" content/en/docs/v1/kubernetes/backup-and-recovery.md -C 3

Repository: cozystack/website

Length of output: 995


🏁 Script executed:

# Also, let's verify the exact line number of the v0 reference
echo "=== Finding exact line number of v0 reference ==="
rg -n "v0/kubernetes/backup-and-recovery" content/en/docs/v1/operations/services/velero-backup-configuration.md

Repository: cozystack/website

Length of output: 351


🏁 Script executed:

cat -n content/en/docs/v1/kubernetes/backup-and-recovery.md

Repository: cozystack/website

Length of output: 3806


🏁 Script executed:

# Also verify the v1 operations velero config file to confirm the exact problematic line
echo "=== Lines 205-215 of velero-backup-configuration.md ==="
sed -n '205,215p' content/en/docs/v1/operations/services/velero-backup-configuration.md | cat -n

Repository: cozystack/website

Length of output: 424


Fix cross-version documentation reference in Velero restore section.

This v1 operations guide references v0 documentation for restore procedures. However, v1 restore documentation is not yet available. Either include restore procedures directly in this guide, or add a note clarifying that this temporary reference points to v0 docs while v1 restore documentation is in development.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/services/velero-backup-configuration.md` at
line 208, The Velero restore section in
content/en/docs/v1/operations/services/velero-backup-configuration.md
incorrectly points to v0 restore docs; update that section (the "Velero restore"
or restore-related heading) to either include the v1 restore procedures directly
or, if v1 restore docs aren't ready, replace the reference with a clear
temporary note stating that the link points to v0 documentation while v1 restore
documentation is under development and include the v0 link for immediate use;
ensure the restore section text is explicit about the temporary nature and
next-steps (e.g., “v1 restore docs coming soon”) so readers aren’t confused.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants