Skip to content

[Feature]: Add support for VlanRanges to NSISTP product #54

@tvdven

Description

@tvdven

Summary

Add support for VlanRanges to example-orchestrator so that VLAN in different formats and not only VLANs as integers, e.g:

# These are all equivalent
VlanRanges("4,10-12,11-14")
VlanRanges("4,  ,11 - 14, 10-  12")
VlanRanges("4,10-14")
VlanRanges([4, 10, 11, 12, 13, 14])
VlanRanges([[4], [10,12], [11,14]])
VlanRanges([(4, 4), (10, 14)])

The CustomVlanRanges class can be used for this (See PR #53). This is based on the VlanRanges from the nwastdlib but avoid pydantic forms conflict with SURF specific orchestrator-ui components.

  • In SAP product block, change resource type vlan (int) to vlans (VlanRanges)
  • Add VlanRanges to NetBox ingregration
  • Add support for VlanRanges to L2VPN
  • Add support for for VlanRanges to NSISTP
  • Replace the @step("Delete subscription from OSS/BSS") with a @step("Remove VLANs from IMS") that actually removes the VLAN's from NetBox
  • Remove unnecessary class PortTag, the example orchestrator only support regular physical ports
  • Ensure that the orchestrator-ui library used in example orchestrator does not contain components which call SURF endpoints. E.g.
@classmethod
    def __get_pydantic_json_schema__(cls, core_schema_: CoreSchema, handler: GetJsonSchemaHandler) -> JsonSchemaValue:
        json_schema = handler(core_schema_)
        json_schema_resolved = handler.resolve_ref_schema(json_schema)
        schema_override = {
            "type": "string",
            "format": "vlan", # based on this frontend renders a component which calls SURF endpoints
            "pattern": VLAN_RANGE_JSON_SCHEMA_REGEX,
            "examples": ["345", "20-23,45,50-100"],
        }
        return json_schema_resolved | schema_override

The "format": "vlan", key-value pair in schema-override ensures that the surfPydanticComponentMatcher in the orchestrator-ui library calls the following SURF endpoint: 'surf/subscriptions/dropdown-options';

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions