From 3a191e77775ff9830b903fa63f29e22113945acd Mon Sep 17 00:00:00 2001 From: Nicholas Yancey Date: Thu, 25 Jun 2026 15:37:38 -0400 Subject: [PATCH 1/4] docs for OADP 1.4 --- README.md | 1 + docs/OADP-1.4.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 docs/OADP-1.4.md diff --git a/README.md b/README.md index cde82ba0b..84ba55677 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ make install VELERO_NAMESPACE=custom # Use specific namespace (no detection) | Branch | OADP line | Notes | |--------|-----------|--------| +| [`oadp-1.4`](docs/OADP-1.4.md) | OADP 1.4 / OCP 4.17–4.18 | Dependency backport from `oadp-1.5`; see [developer doc](docs/OADP-1.4.md) | | [`oadp-1.5`](docs/OADP-1.5.md) | OADP 1.5 / OCP 4.19–4.21 | Dependency backport from `oadp-1.6`; see [developer doc](docs/OADP-1.5.md) | | `oadp-1.6` | OADP 1.6 / OCP 4.22+ | Current Velero 1.18 line | | `oadp-dev` | Next / development | Integration branch | diff --git a/docs/OADP-1.4.md b/docs/OADP-1.4.md new file mode 100644 index 000000000..b43233bfe --- /dev/null +++ b/docs/OADP-1.4.md @@ -0,0 +1,117 @@ +# OADP CLI — `oadp-1.4` branch + +Developer guide for the **OADP 1.4 release line** of `migtools/oadp-cli`. + +## Purpose + +Branch **`oadp-1.4`** builds the kubectl plugin (`kubectl oadp`) and the **download server** (`Containerfile.download`) against the same dependency stack as **OADP Operator 1.4** (Velero 1.14, `oadp-non-admin` oadp-1.4, k8s v0.29.x, etc.). + +It is branched from **`oadp-1.5`** with **dependency and version-string changes only**. No CLI commands were removed for this backport. + +| OpenShift (typical) | OADP operator | oadp-cli branch | +|---------------------|---------------|-----------------| +| 4.17 – 4.18 | 1.4 | **`oadp-1.4`** | +| 4.19 – 4.21 | 1.5 | **`oadp-1.5`** | +| 4.22+ | 1.6 | **`oadp-1.6`** | + +Reference: [OADP PARTNERS.md](https://github.com/openshift/oadp-operator/blob/oadp-dev/PARTNERS.md) + +## `oadp-1.4` vs `oadp-1.5` + +### Code changes + +| File | Change | +|------|--------| +| `go.mod` / `go.sum` | Downgrade module pins to OADP 1.4 line | +| `Makefile` | `VERSION ?= oadp-1.4` | +| `Containerfile.download` | `OADP_VERSION=oadp-1.4` | + +### Dependency comparison + +| Component | `oadp-1.4` (this branch) | `oadp-1.5` | +|-----------|---------------------------|------------| +| **Velero module** | `v1.14.1-rc.1` | `v1.16.0` | +| **openshift/velero replace** | `…20260526…ea5de9549ff4` (oadp-1.4 tip) | `…20260526…87a03c3d2c32` (oadp-1.5 tip) | +| **controller-runtime** | `v0.17.2` | `v0.19.3` | +| **k8s.io/client-go** (direct) | `v0.29.0` | `v0.33.11` | +| **k8s.io/api / apimachinery** | `v0.29.2` | `v0.33.11` | +| **oadp-non-admin** | `30487177ef60` (oadp-1.4) | `aad3132759e1` (oadp-1.5) | +| **openshift/oadp-operator replace** | `…20260618…c10a22a15a36` (oadp-1.4 tip) | not pinned in go.mod (via `oadp-non-admin`) | +| **kopia replace** | `github.com/project-velero/kopia` | removed | +| **Go** | `1.25.8` | `1.25.8` | +| **Version string** | `oadp-1.4` | `oadp-1.5` | + +### CLI features: same as `oadp-1.5` + +The plugin on **`oadp-1.4`** exposes the **same commands** as **`oadp-1.5`**, including: + +- Admin Velero commands (`backup`, `restore`, `schedule`, …) +- `nonadmin` (NAB / NAR) +- `nabsl-request` +- `must-gather`, `setup`, `client`, `completion` + +`oadp-non-admin` `api/v1alpha1` types (including `NonAdminDownloadRequest`) are present on both the oadp-1.4 and oadp-1.5 branches; no CLI code paths were cut for this downport. + +### OADP product differences (platform, not oadp-cli-only) + +Use **OADP 1.4 operator** on the cluster with this CLI. OADP **1.5+** adds platform changes this branch does **not** target, for example: + +- **Velero 1.16+** (vs 1.14 on 1.4) +- **k8s v0.31+** on the operator line (vs v0.29.x on 1.4) +- OCP **4.19+** requires OADP **1.5+** (1.4 is for OCP 4.17–4.18) +- Features and CRDs added after the 1.4 operator line + +See [OADP operator wiki](https://github.com/openshift/oadp-operator/wiki/Latest-OADP-product-release-updates) and release notes for product-level detail. + +## Build and test + +```bash +git checkout oadp-1.4 +make build +make install ASSUME_DEFAULT=true +kubectl oadp version +``` + +Run the full dev test suite: + +```bash +# If nonadmin=true in config.json, admin-command tests fail. +kubectl oadp client config set nonadmin=false + +make test +make lint # optional +``` + +Local image build: + +```bash +podman build -f Containerfile.download -t oadp-cli-oadp-1.4:local . +``` + +## Branch workflow + +| Branch | Use | +|--------|-----| +| **`oadp-1.4`** | OADP 1.4 releases, OCP 4.17–4.18 | +| **`oadp-1.5`** | OADP 1.5 releases, OCP 4.19–4.21 | +| **`oadp-1.6`** | OADP 1.6 releases, OCP 4.22+ | +| **`oadp-dev`** | Development / next release | + +Bugfixes for 1.4: branch from **`oadp-1.4`**, cherry-pick forward to **`oadp-1.5`** / **`oadp-1.6`** / **`oadp-dev`** as maintainers direct. + +## Related repos + +| Repo | Branch | Role | +|------|--------|------| +| [openshift/oadp-operator](https://github.com/openshift/oadp-operator) | `oadp-1.4` | Operator, Velero, DPA | +| [migtools/oadp-non-admin](https://github.com/migtools/oadp-non-admin) | `oadp-1.4` | NAB CRDs / controllers | +| **migtools/oadp-cli** | **`oadp-1.4`** | This plugin + download server | + +## Downstream delivery (OADP 1.4) + +After this branch merges, **`oadp/oadp-cli-binaries-rhel9`** still needs the same downstream wiring as OADP 1.5: + +1. **`openshift-eng/ocp-build-data`** @ `oadp-1.4` — add `oadp-cli-binaries-rhel9` build config +2. **`openshift/oadp-operator`** @ `oadp-1.4` — add image to bundle `image-references` + +Konflux stage/prod advisories (`oadp-advisory-stage-1-4` / `oadp-advisory-prod-1-4`) may need a rebuild after those land. From 023f9256b3486b5649553736abeb81b289a5a434 Mon Sep 17 00:00:00 2001 From: Nicholas Yancey Date: Tue, 30 Jun 2026 14:51:08 -0400 Subject: [PATCH 2/4] Update README and OADP-1.4 doc to reflect admin-only on 1.4 --- README.md | 12 ++++++----- docs/OADP-1.4.md | 55 ++++++++++++++++++------------------------------ 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 84ba55677..d527ee92b 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,11 @@ [![Release](https://github.com/migtools/oadp-cli/actions/workflows/release.yml/badge.svg)](https://github.com/migtools/oadp-cli/actions/workflows/release.yml) [![Multi-Arch Binary Push to Quay.io](https://github.com/migtools/oadp-cli/actions/workflows/quay_binaries_push.yml/badge.svg)](https://github.com/migtools/oadp-cli/actions/workflows/quay_binaries_push.yml) -A kubectl plugin for OpenShift API for Data Protection (OADP) that provides both administrative and non-administrative backup operations. +A kubectl plugin for OpenShift API for Data Protection (OADP) that provides cluster-admin backup and restore operations. -> **What it does**: Extends OADP functionality with a unified CLI that supports both cluster-wide Velero operations (admin) and namespace-scoped self-service operations (non-admin users). +> **What it does**: Extends OADP functionality with a unified CLI for cluster-wide Velero operations (backup, restore, schedule, BSL management) on OpenShift clusters running OADP 1.4. +> +> **Note (oadp-1.4 branch):** Non-admin / self-service commands (`oc oadp nonadmin …`) are not available on this branch. The OADP 1.4 operator does not ship the non-admin controller. Use OADP 1.5+ for non-admin support. ## Installation @@ -22,7 +24,7 @@ source ~/.zshrc # or ~/.bashrc # OR restart your terminal # Test the installation -kubectl oadp --help +oc oadp --help # Alternative: System-wide install (requires sudo) make install-system @@ -49,7 +51,7 @@ make install VELERO_NAMESPACE=custom # Use specific namespace (no detection) **Built with:** - [Cobra](https://github.com/spf13/cobra) - CLI framework - [Velero client libraries](https://github.com/vmware-tanzu/velero) - Core backup functionality -- [OADP NonAdmin APIs](https://github.com/migtools/oadp-non-admin) - NonAdminBackup CRD support +- [OADP Operator](https://github.com/openshift/oadp-operator) - Operator providing Velero and backup infrastructure **Dependencies:** - OADP Operator installed in cluster @@ -59,4 +61,4 @@ make install VELERO_NAMESPACE=custom # Use specific namespace (no detection) Apache License 2.0 - see [LICENSE](LICENSE) file. -Integrates with Apache 2.0 licensed projects: [Velero](https://github.com/vmware-tanzu/velero), [OADP](https://github.com/openshift/oadp-operator), [Kubernetes](https://github.com/kubernetes/kubernetes). \ No newline at end of file +Integrates with Apache 2.0 licensed projects: [Velero](https://github.com/vmware-tanzu/velero), [OADP](https://github.com/openshift/oadp-operator), [Kubernetes](https://github.com/kubernetes/kubernetes). diff --git a/docs/OADP-1.4.md b/docs/OADP-1.4.md index b43233bfe..f3ee77505 100644 --- a/docs/OADP-1.4.md +++ b/docs/OADP-1.4.md @@ -4,9 +4,7 @@ Developer guide for the **OADP 1.4 release line** of `migtools/oadp-cli`. ## Purpose -Branch **`oadp-1.4`** builds the kubectl plugin (`kubectl oadp`) and the **download server** (`Containerfile.download`) against the same dependency stack as **OADP Operator 1.4** (Velero 1.14, `oadp-non-admin` oadp-1.4, k8s v0.29.x, etc.). - -It is branched from **`oadp-1.5`** with **dependency and version-string changes only**. No CLI commands were removed for this backport. +Branch **`oadp-1.4`** builds the kubectl plugin (`kubectl oadp`) and the **download server** (`Containerfile.download`) against the same dependency stack as **OADP Operator 1.4** (Velero 1.14, k8s v0.29.x). | OpenShift (typical) | OADP operator | oadp-cli branch | |---------------------|---------------|-----------------| @@ -16,53 +14,46 @@ It is branched from **`oadp-1.5`** with **dependency and version-string changes Reference: [OADP PARTNERS.md](https://github.com/openshift/oadp-operator/blob/oadp-dev/PARTNERS.md) +## Non-admin commands not included + +**OADP 1.4 does not ship the non-admin controller.** +The `RELATED_IMAGE_NON_ADMIN_CONTROLLER` image is absent from the 1.4 operator and the NAC controller requires OADP operator 1.5 or later. + +As a result, this CLI branch does not include nonadmin commands. +Use **OADP 1.5** or later for namespace-scoped self-service backup and restore. + +## CLI features on `oadp-1.4` + +- Admin Velero commands: `backup`, `restore`, `schedule`, `backup-location`, `snapshot-location`, `get`, `describe`, `delete`, `create` +- `must-gather`, `setup`, `client`, `completion` + ## `oadp-1.4` vs `oadp-1.5` ### Code changes | File | Change | |------|--------| -| `go.mod` / `go.sum` | Downgrade module pins to OADP 1.4 line | +| `go.mod` / `go.sum` | OADP 1.4 dependency pins; `oadp-non-admin` removed | +| `cmd/non-admin/` | Removed (not available in 1.4) | +| `cmd/nabsl-request/` | Removed (not available in 1.4) | +| `cmd/shared/download.go` | Removed (was for non-admin download requests) | | `Makefile` | `VERSION ?= oadp-1.4` | | `Containerfile.download` | `OADP_VERSION=oadp-1.4` | ### Dependency comparison -| Component | `oadp-1.4` (this branch) | `oadp-1.5` | +| Component | `oadp-1.4` | `oadp-1.5` | |-----------|---------------------------|------------| | **Velero module** | `v1.14.1-rc.1` | `v1.16.0` | | **openshift/velero replace** | `…20260526…ea5de9549ff4` (oadp-1.4 tip) | `…20260526…87a03c3d2c32` (oadp-1.5 tip) | | **controller-runtime** | `v0.17.2` | `v0.19.3` | | **k8s.io/client-go** (direct) | `v0.29.0` | `v0.33.11` | | **k8s.io/api / apimachinery** | `v0.29.2` | `v0.33.11` | -| **oadp-non-admin** | `30487177ef60` (oadp-1.4) | `aad3132759e1` (oadp-1.5) | -| **openshift/oadp-operator replace** | `…20260618…c10a22a15a36` (oadp-1.4 tip) | not pinned in go.mod (via `oadp-non-admin`) | -| **kopia replace** | `github.com/project-velero/kopia` | removed | +| **oadp-non-admin** | removed | `aad3132759e1` (oadp-1.5) | +| **kopia replace** | `github.com/project-velero/kopia` | Inherited from oadp-non-admin @ oadp-1.5 | | **Go** | `1.25.8` | `1.25.8` | | **Version string** | `oadp-1.4` | `oadp-1.5` | -### CLI features: same as `oadp-1.5` - -The plugin on **`oadp-1.4`** exposes the **same commands** as **`oadp-1.5`**, including: - -- Admin Velero commands (`backup`, `restore`, `schedule`, …) -- `nonadmin` (NAB / NAR) -- `nabsl-request` -- `must-gather`, `setup`, `client`, `completion` - -`oadp-non-admin` `api/v1alpha1` types (including `NonAdminDownloadRequest`) are present on both the oadp-1.4 and oadp-1.5 branches; no CLI code paths were cut for this downport. - -### OADP product differences (platform, not oadp-cli-only) - -Use **OADP 1.4 operator** on the cluster with this CLI. OADP **1.5+** adds platform changes this branch does **not** target, for example: - -- **Velero 1.16+** (vs 1.14 on 1.4) -- **k8s v0.31+** on the operator line (vs v0.29.x on 1.4) -- OCP **4.19+** requires OADP **1.5+** (1.4 is for OCP 4.17–4.18) -- Features and CRDs added after the 1.4 operator line - -See [OADP operator wiki](https://github.com/openshift/oadp-operator/wiki/Latest-OADP-product-release-updates) and release notes for product-level detail. - ## Build and test ```bash @@ -75,9 +66,6 @@ kubectl oadp version Run the full dev test suite: ```bash -# If nonadmin=true in config.json, admin-command tests fail. -kubectl oadp client config set nonadmin=false - make test make lint # optional ``` @@ -104,7 +92,6 @@ Bugfixes for 1.4: branch from **`oadp-1.4`**, cherry-pick forward to **`oadp-1.5 | Repo | Branch | Role | |------|--------|------| | [openshift/oadp-operator](https://github.com/openshift/oadp-operator) | `oadp-1.4` | Operator, Velero, DPA | -| [migtools/oadp-non-admin](https://github.com/migtools/oadp-non-admin) | `oadp-1.4` | NAB CRDs / controllers | | **migtools/oadp-cli** | **`oadp-1.4`** | This plugin + download server | ## Downstream delivery (OADP 1.4) From f0daa26689d5412c0c79dfc25b4eaba5ac163d62 Mon Sep 17 00:00:00 2001 From: Nicholas Yancey Date: Wed, 1 Jul 2026 12:39:14 -0400 Subject: [PATCH 3/4] fix: use absolute URL for oadp-1.5 doc link (file does not exist on oadp-1.4 branch) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d527ee92b..06b44b45e 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ make install VELERO_NAMESPACE=custom # Use specific namespace (no detection) | Branch | OADP line | Notes | |--------|-----------|--------| | [`oadp-1.4`](docs/OADP-1.4.md) | OADP 1.4 / OCP 4.17–4.18 | Dependency backport from `oadp-1.5`; see [developer doc](docs/OADP-1.4.md) | -| [`oadp-1.5`](docs/OADP-1.5.md) | OADP 1.5 / OCP 4.19–4.21 | Dependency backport from `oadp-1.6`; see [developer doc](docs/OADP-1.5.md) | +| [`oadp-1.5`](https://github.com/migtools/oadp-cli/blob/oadp-1.5/docs/OADP-1.5.md) | OADP 1.5 / OCP 4.19–4.21 | Dependency backport from `oadp-1.6`; see [developer doc](https://github.com/migtools/oadp-cli/blob/oadp-1.5/docs/OADP-1.5.md) | | `oadp-1.6` | OADP 1.6 / OCP 4.22+ | Current Velero 1.18 line | | `oadp-dev` | Next / development | Integration branch | From 810fda2b83f5f00b2ae0b13b5a39634d7146a6d4 Mon Sep 17 00:00:00 2001 From: Nicholas Yancey Date: Wed, 1 Jul 2026 12:52:22 -0400 Subject: [PATCH 4/4] OADP-1.4.md removed unnesssary end part --- docs/OADP-1.4.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/docs/OADP-1.4.md b/docs/OADP-1.4.md index f3ee77505..caa3c34b5 100644 --- a/docs/OADP-1.4.md +++ b/docs/OADP-1.4.md @@ -93,12 +93,3 @@ Bugfixes for 1.4: branch from **`oadp-1.4`**, cherry-pick forward to **`oadp-1.5 |------|--------|------| | [openshift/oadp-operator](https://github.com/openshift/oadp-operator) | `oadp-1.4` | Operator, Velero, DPA | | **migtools/oadp-cli** | **`oadp-1.4`** | This plugin + download server | - -## Downstream delivery (OADP 1.4) - -After this branch merges, **`oadp/oadp-cli-binaries-rhel9`** still needs the same downstream wiring as OADP 1.5: - -1. **`openshift-eng/ocp-build-data`** @ `oadp-1.4` — add `oadp-cli-binaries-rhel9` build config -2. **`openshift/oadp-operator`** @ `oadp-1.4` — add image to bundle `image-references` - -Konflux stage/prod advisories (`oadp-advisory-stage-1-4` / `oadp-advisory-prod-1-4`) may need a rebuild after those land.