What it does?
Harbor supports P2P (Peer-to-Peer) preheat distribution using engines like Dragonfly or Kraken. Users can create preheat policies under a project to preload container images into a P2P network before they are needed. The preheat command allows users to manage preheat policies, monitor executions, and inspect tasks from the terminal.
Since preheat is project-scoped, all commands live under harbor project preheat.
Proposed Approach
The following is a proposed structure for the command.
| Command |
What it does |
harbor project preheat policy list |
List all preheat policies under a project |
harbor project preheat policy create |
Create a new preheat policy |
harbor project preheat policy view |
View details of a preheat policy |
harbor project preheat policy update |
Update an existing preheat policy |
harbor project preheat policy delete |
Delete a preheat policy |
harbor project preheat policy run |
Trigger a preheat policy manually |
harbor project preheat execution list |
List executions of a preheat policy |
harbor project preheat execution view |
View details of a specific execution |
harbor project preheat execution stop |
Stop a running execution |
harbor project preheat task list |
List tasks for a preheat execution |
harbor project preheat task log |
Get the log of a specific task |
harbor project preheat policy command
harbor project preheat policy list [projectName] : list all preheat policies under a project.
Flags: --page, --page-size, --query, --sort
Output:
sypher@sypher845:~/Projects/harbor-cli$ ./harbor project preheat policy list
┌──────────────────────────────────────────────────────────────────────────────┐
│ ID Name Provide… Provider Na… Enabled Description │
│ ──────────────────────────────────────────────────────────────────────────── │
│ 1 test1 9 edge-basic Ena… test1 │
│ 3 Udfgdg 18 kraken-loca… Ena… zxczx │
│ 2 vfcbc 9 edge-basic Dis… bcvb │
└──────────────────────────────────────────────────────────────────────────────┘
harbor project preheat policy create [projectName] [policyName] : create a new preheat policy under a project. Using flags or TUI.
Flags: --description, --provider, --enable, --filters, --trigger
Output:
Preheat policy 'my-policy' created in project 'my-project'
harbor project preheat policy view [projectName] [policyName] : view details of a preheat policy
Output:
sypher@sypher845:~/Projects/harbor-cli$ ./harbor project preheat policy view
┌──────────────────────────────────────────────────────────────────────────────┐
│ ID Name Provide… Provider Na… Enabled Description │
│ ──────────────────────────────────────────────────────────────────────────── │
│ 1 test1 9 edge-basic Ena… test1 │
└──────────────────────────────────────────────────────────────────────────────┘
harbor project preheat policy update [projectName] [policyName] : update fields of an existing preheat policy.
Flags: --name, --description, --provider, --enable, --filters, --trigger
Output:
Preheat policy 'my-policy' updated in project 'my-project'
harbor project preheat policy delete [projectName] [policyName] : delete a preheat policy from a project
Output:
Preheat policy 'my-policy' deleted from project 'my-project'
harbor project preheat policy run [projectName] [policyName] : trigger a preheat policy manually. This creates a new execution for the policy.
Output:
Preheat policy 'my-policy' triggered in project 'my-project'
harbor project preheat execution command
harbor project preheat execution list [projectName] [policyName] : list all executions for a preheat policy
Flags: --page, --page-size, --query, --sort
Output:
┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ Execution ID Status Trigger Vendor Start Time End Time │
│ ───────────────────────────────────────────────────────────────────────────────────────────── │
│ 45 Error Manual P2P_PREHEAT Apr 24, 2026 1:30 AM Apr 24, 2026 1:30 AM │
│ 44 Success Manual P2P_PREHEAT Apr 23, 2026 9:15 PM Apr 23, 2026 9:16 PM │
└───────────────────────────────────────────────────────────────────────────────────────────────┘
harbor project preheat execution view [projectName] [policyName] [executionID] : view details of a specific execution
Output:
┌───────────────────────────────────────────────────────────────────────────────────────────────┐
│ Execution ID Status Trigger Vendor Start Time End Time │
│ ───────────────────────────────────────────────────────────────────────────────────────────── │
│ 45 Error Manual P2P_PREHEAT Apr 24, 2026 1:30 AM Apr 24, 2026 1:30 AM │
└───────────────────────────────────────────────────────────────────────────────────────────────┘
harbor project preheat execution stop [projectName] [policyName] [executionID] : stop a running preheat execution
Output:
Preheat execution '123' stopped for policy 'my-policy' in project 'my-project'
harbor project preheat task command
harbor project preheat task list [projectName] [policyName] [executionID] : list all tasks for a preheat execution. Tasks represent individual artifacts being preheated.
Flags: --page, --page-size, --query, --sort
harbor project preheat task log [projectName] [policyName] [executionID] [taskID] : get the log output of a specific preheat task
Will refine more while implementing. Please have a look and suggest any required changes in the structure of the command.
What it does?
Harbor supports P2P (Peer-to-Peer) preheat distribution using engines like Dragonfly or Kraken. Users can create preheat policies under a project to preload container images into a P2P network before they are needed. The preheat command allows users to manage preheat policies, monitor executions, and inspect tasks from the terminal.
Since preheat is project-scoped, all commands live under
harbor project preheat.Proposed Approach
The following is a proposed structure for the command.
Commands
harbor project preheat policy listharbor project preheat policy createharbor project preheat policy viewharbor project preheat policy updateharbor project preheat policy deleteharbor project preheat policy runharbor project preheat execution listharbor project preheat execution viewharbor project preheat execution stopharbor project preheat task listharbor project preheat task logharbor project preheat policycommandharbor project preheat policy list [projectName]: list all preheat policies under a project.Flags:
--page,--page-size,--query,--sortOutput:
harbor project preheat policy create [projectName] [policyName]: create a new preheat policy under a project. Using flags or TUI.Flags:
--description,--provider,--enable,--filters,--triggerOutput:
harbor project preheat policy view [projectName] [policyName]: view details of a preheat policyOutput:
harbor project preheat policy update [projectName] [policyName]: update fields of an existing preheat policy.Flags:
--name,--description,--provider,--enable,--filters,--triggerOutput:
harbor project preheat policy delete [projectName] [policyName]: delete a preheat policy from a projectOutput:
harbor project preheat policy run [projectName] [policyName]: trigger a preheat policy manually. This creates a new execution for the policy.Output:
harbor project preheat executioncommandharbor project preheat execution list [projectName] [policyName]: list all executions for a preheat policyFlags:
--page,--page-size,--query,--sortOutput:
harbor project preheat execution view [projectName] [policyName] [executionID]: view details of a specific executionOutput:
harbor project preheat execution stop [projectName] [policyName] [executionID]: stop a running preheat executionOutput:
harbor project preheat taskcommandharbor project preheat task list [projectName] [policyName] [executionID]: list all tasks for a preheat execution. Tasks represent individual artifacts being preheated.Flags:
--page,--page-size,--query,--sortharbor project preheat task log [projectName] [policyName] [executionID] [taskID]: get the log output of a specific preheat taskWill refine more while implementing. Please have a look and suggest any required changes in the structure of the command.