goharbor / goharbor/harbor-cli

[feature]: Add missing tag policy CLI coverage (retention commands + immutable update)

Open
#798 2 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Go
Stars
163
Forks
211
Avg merge
1m
Merged PRs (30d)
1

Description

## Problem
What problem does this feature solve?
Describe the limitation or pain point you are facing.

The CLI currently has partial project policy coverage under `harbor tag`:
- Immutable rules support create/list/delete but miss update.
- Retention policy workflows are not exposed under `harbor tag`.

This creates a functional gap between CLI and Harbor policy capabilities and reduces operator efficiency for policy operations.

## Proposed Solution
Describe the feature or behavior you would like to see.

Add the missing policy capabilities directly under `harbor tag` with default interactive-first behavior and with flag support.

### Commands that will be available
- `harbor tag immutable update [PROJECT_NAME]`
- `harbor tag retention metadata`
- `harbor tag retention get [PROJECT_NAME]`
- `harbor tag retention create -f `
- `harbor tag retention update [PROJECT_NAME] -f `
- `harbor tag retention delete [PROJECT_NAME]`
- `harbor tag retention run [PROJECT_NAME] [--dry-run]`
- `harbor tag retention executions list [PROJECT_NAME]`
- `harbor tag retention executions stop [PROJECT_NAME]`
- `harbor tag retention tasks list [PROJECT_NAME]`
- `harbor tag retention tasks log [PROJECT_NAME]`

### Issue Tracker
| Id | Issue | PR |
|---|---|---|
| 1 | Immutable | #802 |
| 2 | Retention Create| #564 |
| 3 | Retention List | #564 |
| 4 | Retention Run | |
| 5 | Retention Update | |
| 6 | Retention Delete | #564 |
| 7 | Retention Executions | |
| 8 | Retention Tasks | #954 |

### Expected behavior
- Keep `tag` namespace (no new top-level policy namespace).
- Support non-interactive execution through flags (`--retention-id`, `--execution-id`, `--task-id`, `--file`).
- Default to interactive selectors when IDs/project names are not explicitly provided.

## Alternatives Considered
Have you considered any alternative approaches or workarounds?
path.

## Additional Context
Add any other context, examples, or references here.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.