Skip to content

Releases: CESNET/cesnet_service_path_plugin

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