Skip to content

Discussion : Project preheat command #836

@Sypher845

Description

@Sypher845

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

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions