ocean icon indicating copy to clipboard operation
ocean copied to clipboard

Integration[Harbor]: initial integration

Open Jaysins opened this issue 3 weeks ago • 2 comments

User description

Description

What - Harbor integration

Why - To ingests container-registry data into Port’s catalog so platform and security teams can visualize images, projects, users, and relationships across their software supply chain.

How - ocean sail

Type of change

Please leave one option from the following and delete the rest:

  • [ ] New Integration (non-breaking change which adds a new integration)

All tests should be run against the port production environment(using a testing org).

Core testing checklist

  • [ ] Integration able to create all default resources from scratch
  • [ ] Resync finishes successfully
  • [ ] Resync able to create entities
  • [ ] Resync able to update entities
  • [ ] Resync able to detect and delete entities
  • [ ] Scheduled resync able to abort existing resync and start a new one
  • [ ] Tested with at least 2 integrations from scratch
  • [ ] Tested with Kafka and Polling event listeners
  • [ ] Tested deletion of entities that don't pass the selector

Integration testing checklist

  • [ ] Integration able to create all default resources from scratch
  • [ ] Completed a full resync from a freshly installed integration and it completed successfully
  • [ ] Resync able to create entities
  • [ ] Resync able to update entities
  • [ ] Resync able to detect and delete entities
  • [ ] Resync finishes successfully
  • [ ] If new resource kind is added or updated in the integration, add example raw data, mapping and expected result to the examples folder in the integration directory.
  • [ ] If resource kind is updated, run the integration with the example data and check if the expected result is achieved
  • [ ] If new resource kind is added or updated, validate that live-events for that resource are working as expected
  • [ ] Docs PR link here

Preflight checklist

  • [ ] Handled rate limiting
  • [ ] Handled pagination
  • [ ] Implemented the code in async
  • [ ] Support Multi account

Screenshots

Include screenshots from your environment showing how the resources of the integration will look.

API Documentation

Provide links to the API documentation used for this integration.


PR Type

Enhancement


Description

  • Initial Harbor container registry integration for Port Ocean

  • Supports syncing projects, users, repositories, and artifacts

  • Real-time webhook support for artifact lifecycle events

  • Comprehensive filtering, pagination, and rate limiting


Diagram Walkthrough

flowchart LR
  HarborAPI["Harbor API v2.0"]
  Client["HarborClient<br/>Async HTTP Client"]
  Resync["Resync Handlers<br/>Projects/Users/Repos/Artifacts"]
  Webhooks["Webhook Processor<br/>Artifact Events"]
  Port["Port Ocean<br/>Catalog"]
  
  HarborAPI -->|"Pagination<br/>Rate Limiting"| Client
  Client -->|"Fetch Resources"| Resync
  Client -->|"Fetch Details"| Webhooks
  Resync -->|"Sync Data"| Port
  Webhooks -->|"Real-time Updates"| Port

File Walkthrough

Relevant files
Enhancement
6 files
client.py
Harbor API client with async pagination                                   
+585/-0 
initialize_client.py
Harbor client factory initialization                                         
+31/-0   
integration.py
Resource selectors and integration configuration                 
+135/-0 
kinds.py
Object kind enumerations for resources                                     
+8/-0     
main.py
Resync handlers and webhook setup orchestration                   
+254/-0 
artifact_webhook_processor.py
Webhook event processing for artifacts                                     
+195/-0 
Configuration changes
8 files
constants.py
Configuration constants for client behavior                           
+11/-0   
.dockerignore
Docker build exclusion patterns                                                   
+94/-0   
blueprints.json
Port blueprints for four resource types                                   
+255/-0 
port-app-config.yml
Default resource mappings and selectors                                   
+100/-0 
spec.yaml
Integration specification and configuration schema             
+38/-0   
Dockerfile
Multi-stage Docker build configuration                                     
+70/-0   
Makefile
Development and testing automation targets                             
+97/-0   
poetry.toml
Poetry virtual environment configuration                                 
+3/-0     
Miscellaneous
1 files
debug.py
Debug entry point for local testing                                           
+4/-0     
Tests
3 files
conftest.py
Test fixtures and mock data setup                                               
+233/-0 
test_client.py
Client functionality and pagination tests                               
+256/-0 
test_webhook_processor.py
Webhook processor event handling tests                                     
+203/-0 
Documentation
4 files
.env.example
Environment variables template                                                     
+13/-0   
CHANGELOG.md
Release notes for version 0.1.0                                                   
+53/-0   
CONTRIBUTING.md
Contribution guidelines and setup instructions                     
+7/-0     
README.md
Comprehensive integration documentation                                   
+584/-0 
Dependencies
1 files
pyproject.toml
Project dependencies and development tools                             
+115/-0 
Additional files
2 files
__init__.py [link]   
__init__.py [link]   

Jaysins avatar Nov 02 '25 07:11 Jaysins