Skip to content

Releases: CESNET/cesnet_service_path_plugin

v5.2.2

12 Nov 11:57

Choose a tag to compare

Release v5.2.2

This release introduces an improved topology visualization layout that is now adaptive and scalable, especially for more complex service paths.

What's Changed

  • Improved Topology Visualization: The layout algorithm for topology visualization has been enhanced to be adaptive. It now dynamically adjusts the spacing of nodes based on the complexity of the service path, such as the number of sites and circuits. This results in a clearer and more organized visualization for complex topologies.

Full Changelog: v5.2.1...v5.2.2

v5.2.1

12 Nov 10:28

Choose a tag to compare

[5.2.1] - 2025-11-07

Added

  • Topology Visualization: Interactive network topology visualization using Cytoscape.js

    • Visual representation of segment connections and circuit terminations
    • Multi-topology support for service paths with multiple segments
    • Automatic topology generation for both segments and service paths
    • Clean NetBox Blue styled visualization with gradients and shadows
    • Interactive topology viewer with hover tooltips showing node details
    • Topology visualization integrated into segment and service path detail views
    • Topology visualization added to circuit detail pages showing related segments/service paths
    • Toggle between multiple topologies when segment belongs to multiple service paths
  • Commitment End Date Tracking: Enhanced financial commitment monitoring

    • Automatic calculation of commitment end date based on install date and commitment period
    • Color-coded commitment status indicators:
      • Red: More than 30 days until end
      • Orange: Within 30 days of end
      • Green: Commitment period has ended
      • Gray: No commitment period set
    • Interactive tooltips showing days remaining until commitment end
    • Visual feedback for commitment periods that have ended
    • Commitment end date displayed in segment detail view with badge styling
    • GraphQL API support for commitment end dates with ISO format

Changed

  • Circuit Extensions Refactoring: Improved code organization

    • Renamed CircuitKomoraSegmentExtension to CircuitSegmentExtension for better naming consistency
    • Enhanced circuit detail view with topology visualization support
    • Better separation of concerns in template content extensions
    • Circuit pages now show topology visualizations for associated segments
  • Currency Field Enhancement: Made charge_currency field required

    • Removed default currency value to ensure explicit currency selection
    • Migration 0031 updates currency field constraints
    • Currency must now be explicitly set when creating financial information
    • Prevents accidental use of default currency when not intended
  • Table Improvements: Enhanced data presentation

    • Circuit column in SegmentCircuitMappingTable now orders by CID instead of name
    • Improved ordering logic for better data organization and searchability
  • Version Update: Updated to version 5.2.1 in pyproject.toml

Fixed

  • Added missing python-dateutil dependency to pyproject.toml for date calculations
  • Improved commitment end date calculation with proper timezone handling using django.utils.timezone
  • Enhanced tooltip rendering with proper Bootstrap integration
  • Fixed tooltip data attributes for proper display of commitment information

Technical Details

  • New utility module utils_topology.py with TopologyBuilder class for generating network graphs
  • Cytoscape.js (v3.28.1) integration for advanced graph visualization
  • Reusable topology visualization templates
  • Support for multiple topologies on single page with tab switching functionality
  • Topology data stored as JSON and rendered client-side for performance
  • Color-coding system for commitment status based on time remaining (30-day threshold)
  • New GraphQL field resolver for commitment_end_date with ISO format output
  • Template extensions now check for service path membership to generate appropriate topologies

Migration Notes

  • Migration 0031: Updates charge_currency field to remove default value - requires explicit currency selection
  • New Dependencies: Added python-dateutil for relativedelta calculations in commitment period tracking
  • Template Updates: New topology visualization templates require Cytoscape.js CDN (included automatically)
  • API Changes: GraphQL API now includes commitment_end_date field in SegmentFinancialInfoType

Upgrade Instructions

  1. Run migrations: python manage.py migrate cesnet_service_path_plugin
  2. Install new dependency: pip install python-dateutil (or upgrade plugin package)
  3. Update existing financial records to set currency explicitly if using default
  4. Refresh browser cache to load new topology visualization assets

Full Changelog: 5.2.0...v5.2.1

v5.2.0

29 Oct 09:42

Choose a tag to compare

CESNET Service Path Plugin – Release Notes for v5.2.0

Highlights

v5.2.0 introduces a major new feature: Financial Information Management for segments, multi-currency support, API/UI enhancements, improved permission controls, and better plugin configuration. This release also includes documentation and dependency updates, streamlines segment/provider fields, and adds robust integration tests.


Added

Financial Information Management

  • New SegmentFinancialInfo model: Track segment costs, monthly charges, non-recurring charges, and commitment periods.
  • Multi-currency support: Configurable currency list and default currency (CZK, EUR, USD, etc.).
  • Automatic cost calculations: Total commitment cost, total cost including setup.
  • Permission-based access: Financial info only visible to users with view permission.
  • Integrated with UI & REST API: Financial info shown on segment detail pages and included in API responses.
  • Dedicated API endpoint: /api/plugins/cesnet-service-path-plugin/segment-financial-info/
  • GraphQL support: Query segment financial info with permission checks.

Plugin Configuration and Metadata

  • Configurable currency list: Specify available currencies and default in plugin settings.
  • Example configuration in README.
  • Added netbox-plugin.yaml: Official plugin registry metadata and compatibility matrix.

UI/UX

  • Financial info card on segment detail: Permission-aware display and quick add/edit/delete actions.
  • "Generate Circuit" button: One-click creation of circuits from segment data, auto-filled form fields.
  • Quick action buttons: Add/Import shortcuts for segments, paths, mappings, circuits.

Development & Testing

  • Integration tests: For financial info API and type-specific segment data.
  • Sample .env for tests.
  • Python requirement updated to >=3.10.

🔄 Changed

Segment Model: Location Fields Now Optional

  • location_a & location_b are now optional for segments.
    • You can create segments without specifying these locations.
    • If provided, locations must belong to their respective sites.
    • API, forms, and documentation updated to reflect this change.

API, Serialization & Permissions

  • Segment serializer: Now includes financial_info field, with permission-aware inclusion.
  • Improved error handling: Detailed logging, better file upload error separation.
  • Cleaner code: Removed unused fields (provider_segment_name, provider_segment_contract).
  • Permission system: Fine-grained control for add/change/delete/view of financial info.

UI & Documentation

  • README: Expanded with financial info details, installation/config, Docker instructions.
  • File path references corrected: Configuration files and plugin paths.
  • Compatibility badge: NetBox 4.4 support highlighted.
  • Bulk operations: Bulk edit/import/delete for segments and mappings.

Development Dependencies

  • Unpinned dev dependencies: More flexibility for pip, black, pytest, etc.
  • License classifier: Now Apache 2.0.

⚙️ Technical Details

  • Financial info uses one-to-one relation with Segment.
  • Currency choices loaded from plugin config.
  • Financial data is optional per segment.
  • API serializers use method fields for conditional inclusion.
  • Redirect-based views for better UX.

🚨 Migration Notes

  • New model: SegmentFinancialInfo table created.
  • Permissions: Four new Django permissions for financial info.
  • Configuration: Optionally add currency config to plugin settings.
  • API change: Segment API includes financial_info (null if missing or no permission).
  • location_a/location_b: These fields are now optional in the database and API.

🧹 Removed/Deprecated

  • Removed provider_segment_contract and provider_segment_name fields from Segment.
  • API examples, documentation, and GraphQL types updated to reflect removal.

📚 Documentation & Examples

  • Step-by-step installation, Docker setup, currency config, and troubleshooting guides updated.
  • API and GraphQL usage examples for segments with financial info.
  • Segment creation API:
    • Required fields: name, status, provider, site_a, site_b
    • Optional: location_a, location_b

🧪 Testing

  • New integration tests for:
    • Creating, updating, deleting, and viewing segment financial info via API.
    • Verifying financial info appears in segment API responses.
    • Segment type-specific data validation and migration between types.

📝 Contributors

Special thanks to all contributors and testers for feedback and code reviews.


For a detailed changelog and migration instructions, see CHANGELOG.md and the expanded README.md.

v5.1.2

01 Oct 11:35

Choose a tag to compare

Release Notes – v5.1.2

Changes Since v5.1.1

  • Template Update:
    The HTML template segment_edit.html has been revised:

    • The block previously named title now uses head for improved HTML structure and extension compatibility.
    • The stylesheet and JavaScript for the segment form are now included inside the head block.
    • Ensures proper extension of parent templates with {{ block.super }} at the correct place.
  • Version Bump:

    • The project version in pyproject.toml updated from 5.1.1 to 5.1.2.

Summary

This release improves the template structure for editing segments, ensuring styles and scripts load correctly and enhancing maintainability for further customizations.


Full Changelog: v5.1.1...v5.1.2

v5.1.1

01 Oct 07:40

Choose a tag to compare

Release Notes for CESNET Service Path Plugin v5.1.1 (from v5.0.4)

Highlights

🚀 Major Features

  • Segment Type System

    • Segments now support explicit types: Dark Fiber, Optical Spectrum, Ethernet Service.
    • New segment_type field and dynamic, type-specific technical data stored as JSON.
    • Dynamic form fields and validation for each segment type.
    • Smart numeric filtering with operators (>, <, >=, <=, ranges).
    • GraphQL API supports type-specific data filtering (has_type_specific_data).
  • Enhanced Map Visualization

    • Map coloring and legend based on segment type, status, or provider.
    • Multiple background map layers (OpenStreetMap, satellite, topographic, CartoDB).
    • Improved overlapping segment visualization and selection.
  • Advanced Filtering System

    • Smart numeric filters for technical fields.
    • Type-specific filters (fiber type, connector type, modulation format, etc.).
    • Boolean parsing and improved search for segment type and technical fields.

🛠 Improvements

  • Segment form preserves type-specific field values when changing type.
  • Updated segment table to display segment type.
  • API serializers and GraphQL types now include segment type and type-specific data.
  • Unified segment serializers, removed redundancy.

🐞 Bug Fixes

  • Fixed form rendering for type-specific fields.
  • Improved value preservation when editing segment types.
  • Resolved edge cases in smart numeric filtering.
  • Enhanced JSON serialization for Decimal types.
  • Fixed dynamic field visibility issues.

⚡ Technical/Documentation

  • New CSS/JS for dynamic segment form fields.
  • Documentation updates with sample maps and GraphQL examples (docs/graphQL_examples.md).
  • Added Apache 2.0 license badge.
  • Updated pyproject.toml with repository info.
  • Migration: New fields added to Segment model (segment_type, type_specific_data).

Migration Notes

  • 🗄 Database migration required: New fields for segment type and type-specific data.
  • ⚠️ Existing installations will have default values for new fields.
  • No breaking changes expected for core APIs, but segment editing and filtering are now much richer.

For Developers

  • New model: models/segment_types.py with choices and schemas for validation.
  • New template, CSS, and JS for dynamic form rendering.
  • GraphQL API expanded for segment type and advanced filtering.
  • Example queries and mutation samples in docs/graphQL_examples.md.

Full Changelog

See CHANGELOG.md for detailed changes.


Upgrade Recommendation:
Run migrations after upgrading. Review segment forms and filtering options for new features.


Release Versions:

  • v5.1.0 (2025-09-23): Segment type system, advanced filtering, improved map visualization.
  • v5.0.3 (2025-08-29): Critical bugfix for saving tags (many-to-many).
  • v5.0.2 (2025-08-21): Documentation and licensing improvements.

Compatibility:
NetBox 4.4+ (see README for compatibility matrix).


Full Changelog: v5.0.4...v5.1.1

v5.0.4

12 Sep 08:33

Choose a tag to compare

Changes Made

Added v5.0.4 Release Notes (2025-09-12)

  • Enhanced Map Visualization: Documents the major improvements to segment map display including:
    • Dual color schemes (status-based and provider-based color coding)
    • Enhanced overlay segment selection with improved click algorithm
    • Better visual differentiation for overlapping segments
  • API Improvements: Covers streamlined segment serialization changes:
    • Consolidation of SegmentListSerializer functionality into SegmentSerializer
    • Enhanced support for path file uploads
    • Improved API response consistency and performance
  • Bug Fixes: Documents map interaction improvements and rendering performance optimizations

Added v5.0.3 Release Notes (2025-08-29)

  • Forms Fix: Documents the important SegmentForm fix that added save_m2m() call to properly save tags
  • Resolves tag persistence issues in segment creation and editing

Full Changelog: v5.0.3...v5.0.4

5.0.3

29 Aug 06:14

Choose a tag to compare

Added

  • Geographic Path Visualization: Complete interactive map system with Leaflet

    • Multiple tile layer support (OpenStreetMap, satellite, topographic, CartoDB variants)
    • Individual segment map views with path geometry display
    • Comprehensive segments map view with filtering support
    • Overlapping segment detection and selection interface
    • Status-based color coding for visual segment identification
  • Path Data Management: Full support for geographic path data

    • KML, KMZ, and GeoJSON file format support
    • Enhanced KMZ processing with multi-layer extraction
    • Automatic 3D to 2D coordinate conversion
    • Path geometry validation and error reporting
    • Automatic path length calculation using projected coordinates
    • Path data export as GeoJSON files
  • Advanced Map Features:

    • Interactive controls (pan, zoom, fit-to-bounds)
    • Fallback visualization with straight lines when path data unavailable
    • Site markers for segment endpoints
    • Detailed segment information panels
    • Path data availability indicators
    • Responsive map controls and layer switching
  • Enhanced Data Model:

    • path_geometry field for storing MultiLineString geometries
    • path_length_km field with automatic calculation
    • path_source_format field tracking data origin
    • path_notes field for additional metadata
    • Geographic helper methods for coordinate handling
  • UI/UX Improvements:

    • Template extensions for Circuits, Providers, Sites, Locations, and Tenants
    • Custom table columns showing path data availability
    • Date status indicators with visual progress bars
    • Enhanced filtering including geographic data availability
    • Improved navigation with map view integration
  • API Enhancements:

    • Separate serializers for list and detail views (performance optimization)
    • Geographic data endpoints for map visualization
    • GeoJSON export capabilities
    • Path bounds and coordinate data in API responses
    • Enhanced filtering on geographic fields
  • GraphQL Support:

    • Complete GraphQL schema with geographic field support
    • Custom scalar types for path bounds and coordinates
    • Lazy-loaded relationship fields for performance
    • Geographic data queries and filtering

Changed

  • Breaking: Upgraded to Django 5.2.3 with GeoDjango support
  • Breaking: Added PostGIS dependency for geographic features
  • Breaking: Modified database schema to include geographic fields
  • Improved segment form with path data upload capability
  • Enhanced segment detail view with geographic information
  • Updated table layouts with new path-related columns
  • Refactored status choices to use configurable ChoiceSet system
  • Improved error handling for geographic data processing

Fixed

  • Resolved migration conflicts during table renaming process
  • Fixed segment validation to properly handle location-site relationships
  • Improved date validation with better error messaging
  • Enhanced KMZ file processing for complex archive structures
  • Fixed coordinate system handling for accurate length calculations

Technical Details

  • Added geopandas, fiona, and shapely as core dependencies
  • Implemented comprehensive GIS utility functions
  • Added extensive JavaScript map handling with modular design
  • Created reusable template components for map functionality
  • Enhanced error handling and logging for geographic operations
  • Implemented proper geometric validation and sanitization

Migration Notes

  • Database Migration Required: New geographic fields require PostGIS
  • Dependency Installation: Geographic libraries (GDAL, GEOS, PROJ) required
  • Configuration Updates: May need GeoDjango configuration updates
  • Data Migration: Existing installations will have empty path geometry fields

Full Changelog: v4.3.0...v5.0.3