Demo copy of the orchestration system for GARR optical transport network
Features β’ Architecture β’ Usage β’ Resources
Important
This is an unmaintained copy of GARR's Workflow Orchestrator, updated occasionally to share with the research and education community. This code works only within the open-source framework Orchestrator Core, as explained here. If you are new to the framework, start with the example-orchestrator repository to become familiar with the project structure.
The GARR Workflow Orchestrator (WFO) is a comprehensive service lifecycle management platform designed for the Italian Research and Education Network (GARR). Built on top of the orchestrator-core framework, it provides automated provisioning, modification, validation, and termination of optical transport services across GARR's national backbone network.
- Manages optical network infrastructure: Sites (PoPs), optical devices (transponders, ROADMs), fiber links, and spectrum allocation
- Provisions end-to-end services: 100GbE and 400GbE Ethernet connections across Italy's research network
- Automates device configuration: Interfaces with optical equipment via TL1, NETCONF, and RESTCONF
- Maintains network inventory: Synchronizes with NetBox DCIM/IPAM
- Ensures service quality: Validates configurations and detects drift
Traditional network administration relies on manual processes, CLI commands, and fragmented tooling, leading to errors, inconsistencies, and slow service delivery. WFO provides:
- Structured workflows with input validation and error handling
- Centralized state management tracking every resource and subscription
- Audit trails for compliance and troubleshooting
- API-driven automation enabling integration with OSS/BSS systems
- Self-service capabilities (when integrated with portals)
This project contains business logic that is heavily customized for GARR's optical network. You can use this as a reference to build your own Orchestrator. Another implementation to take inspiration from is that of GEANT.
- π Full Lifecycle Management - Create, modify, validate, and terminate network services
- π State Reconciliation - Detect and remediate configuration drift
- ποΈ PostgreSQL Backend - Reliable, auditable data persistence
- β‘ Async Task Execution - Celery-based workflow processing
- π Multi-Vendor Support - Clients for the network devices are written directly in Python, eliminating the need for external configuration managers while reducing complexity
- Domain-Driven Design: Product blocks model real network components with lifecycle states
- Declarative Workflows: Step-by-step functions with clear inputs/outputs
- Idempotency: Steps designed to be safely retried
- Separation of Concerns: Products, workflows, and external services are decoupled
- Event Sourcing: Process steps logged for audit and debugging
WFO manages six core product types representing optical network resources:
| Product | Description | Key Attributes |
|---|---|---|
| Partner | Network partners and customers | Name, organization details |
| PoP | Points of Presence (sites) | Name, location (lat/lon), address, NetBox sync |
| Optical Device | Transponders, ROADMs, amplifiers | Device type, vendor (Infinera), location, management IP, ports |
| Optical Fiber | Physical fiber connections | Endpoints (devices/sites), fiber type, length, loss budget |
| Product | Description | Key Attributes |
|---|---|---|
| Optical Spectrum | Frequency channels on fibers | Center frequency, bandwidth, modulation, optical path routing |
| Optical Digital Service | End-to-end Ethernet connectivity | Service type (100GbE/400GbE), client ports, transport channels, flow/client IDs |
garr/
βββ auth/ # OAuth2/OIDC authentication
βββ cli/ # Custom CLI commands
βββ migrations/ # Alembic database migrations
β βββ versions/schema/ # Schema migration files
βββ products/ # Domain models
β βββ product_blocks/ # Reusable building blocks
β βββ product_types/ # Product definitions
β βββ services/ # Business logic layer
β βββ shared/ # Shared types and utilities
βββ schedules/ # Scheduled task definitions
βββ services/ # External integrations
β βββ infinera/ # Optical device clients
β β βββ core/ # TNMS client
β β βββ flexils/ # FlexILS TL1 client
β β βββ g30/ # G30 RESTCONF client
β β βββ g42/ # G42 RESTCONF client
β βββ netbox.py # NetBox DCIM/IPAM client
β βββ processes.py # Process management utilities
βββ templates/ # YAML templates for products (deprecated)
βββ utils/ # Helper functions and custom types
βββ workflows/ # Workflow implementations
β βββ optical_device/ # Device workflows
β βββ optical_fiber/ # Fiber workflows
β βββ optical_spectrum/ # Spectrum workflows
β βββ optical_digital_service/ # Service workflows
β βββ partner/ # Partner workflows
β βββ pop/ # PoP workflows
β βββ tasks/ # System tasks
βββ main.py # Application entry point
βββ settings.py # Configuration
βββ pyproject.toml # Project metadata and dependencies
βββ README.md # This file
Copyright Β© 2025 GARR - Consortium for the Italian Research and Education Network
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License. You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
See the LICENSE file for full license text.
- GARR: For sponsoring and driving requirements
- Orchestrator Core Community: For the excellent foundation framework
- Contributors: Matteo Colantonio for the backend development and Filippo Landini for the deployment
Made with β€οΈ by the GARR Optical Network Engineering and DevOps Teams
