Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
GÉANT Service Orchestrator
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
GÉANT Orchestration and Automation Team
GAP
GÉANT Service Orchestrator
Merge requests
!286
Add Edge Port, GÉANT IP and IAS products
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Add Edge Port, GÉANT IP and IAS products
feature/add-geant-ip
into
develop
Overview
6
Commits
68
Pipelines
19
Changes
3
Merged
Karel van Klink
requested to merge
feature/add-geant-ip
into
develop
7 months ago
Overview
3
Commits
68
Pipelines
19
Changes
3
Expand
This includes workflows, tests, migrations, etc.
0
0
Merge request reports
Viewing commit
bcd63bc4
Prev
Next
Show latest version
3 files
+
168
−
0
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
3
Search (e.g. *.vue) (Ctrl+P)
Verified
bcd63bc4
Add EdgePort product block and product type.
· bcd63bc4
Neda Moeini
authored
9 months ago
gso/products/product_blocks/edge_port.py
0 → 100644
+
136
−
0
Options
"""
Edge port product block.
Edge port sets the boundary between Geant network and an external entity that could also be a different technological
domain still managed by GEANT. In other words, an Edge port determines where the network ends.
"""
from
typing
import
Annotated
from
annotated_types
import
Len
from
orchestrator.domain.base
import
ProductBlockModel
,
T
from
orchestrator.types
import
SubscriptionLifecycle
,
strEnum
from
pydantic
import
AfterValidator
from
pydantic_forms.validators
import
validate_unique_list
from
typing_extensions
import
Doc
from
gso.products.product_blocks.iptrunk
import
PhysicalPortCapacity
from
gso.products.product_blocks.router
import
RouterBlockInactive
LAGMemberList
=
Annotated
[
list
[
T
],
AfterValidator
(
validate_unique_list
),
Len
(
min_length
=
0
),
Doc
(
"
A list of :term:`LAG` member interfaces.
"
)
]
class
EdgePortInterfaceBlockInactive
(
ProductBlockModel
,
lifecycle
=
[
SubscriptionLifecycle
.
INITIAL
],
product_block_name
=
"
EdgePortInterfaceBlock
"
,
):
"""
An inactive edge port interface that
'
s currently inactive.
"""
interface_name
:
str
|
None
=
None
interface_description
:
str
|
None
=
None
class
EdgePortInterfaceBlockProvisioning
(
EdgePortInterfaceBlockInactive
,
lifecycle
=
[
SubscriptionLifecycle
.
PROVISIONING
]
):
"""
An IP trunk interface that is being provisioned.
"""
interface_name
:
str
interface_description
:
str
|
None
=
None
class
EdgePortInterfaceBlock
(
EdgePortInterfaceBlockProvisioning
,
lifecycle
=
[
SubscriptionLifecycle
.
ACTIVE
]):
"""
An active edge port interface.
"""
interface_name
:
str
interface_description
:
str
|
None
=
None
class
EncapsulationType
(
strEnum
):
"""
Enum representing different Ethernet encapsulation service options.
Null supports a single service on the port.
Dot1Q supports multiple services for one customer or services for multiple customers.
QinQ expands VLAN space by double-tagging frames.
"""
DOT1Q
=
"
dot1q
"
QINQ
=
"
qinq
"
NULL
=
"
null
"
class
EdgePortType
(
strEnum
):
"""
Types of edge ports.
"""
CUSTOMER
=
"
CUSTOMER
"
INFRASTRUCTURE
=
"
INFRASTRUCTURE
"
PRIVATE
=
"
PRIVATE
"
PUBLIC
=
"
PUBLIC
"
RE_INTERCONNECT
=
"
RE_INTERCONNECT
"
class
EdgePortBlockInactive
(
ProductBlockModel
,
lifecycle
=
[
SubscriptionLifecycle
.
INITIAL
],
product_block_name
=
"
EdgePortBlock
"
):
"""
An edge port that
'
s currently inactive. See :class:`EdgePortBlock`.
"""
node
:
RouterBlockInactive
edge_port_name
:
str
enable_lacp
:
bool
edge_port_encapsulation
:
EncapsulationType
=
EncapsulationType
.
DOT1Q
edge_port_mac_address
:
str
|
None
=
None
edge_port_member_speed
:
PhysicalPortCapacity
edge_port_minimum_links
:
int
|
None
=
None
edge_port_type
:
EdgePortType
edge_port_ignore_if_down
:
bool
=
False
edge_port_geant_ga_id
:
str
|
None
=
None
edge_port_ae_iface
:
str
|
None
=
None
edge_port_ae_members
:
LAGMemberList
[
EdgePortInterfaceBlockInactive
]
class
EdgePortBlockProvisioning
(
EdgePortBlockInactive
,
lifecycle
=
[
SubscriptionLifecycle
.
PROVISIONING
]):
"""
An edge port that
'
s being provisioned. See :class:`EdgePortBlock`.
"""
node
:
RouterBlockInactive
edge_port_name
:
str
edge_port_enable_lacp
:
bool
edge_port_encapsulation
:
EncapsulationType
=
EncapsulationType
.
DOT1Q
edge_port_mac_address
:
str
|
None
=
None
edge_port_member_speed
:
PhysicalPortCapacity
edge_port_minimum_links
:
int
|
None
=
None
edge_port_type
:
EdgePortType
edge_port_ignore_if_down
:
bool
=
False
edge_port_geant_ga_id
:
str
|
None
=
None
edge_port_ae_iface
:
str
|
None
=
None
edge_port_ae_members
:
LAGMemberList
[
EdgePortInterfaceBlockProvisioning
]
# type: ignore[assignment]
class
EdgePortBlock
(
EdgePortBlockProvisioning
,
lifecycle
=
[
SubscriptionLifecycle
.
ACTIVE
]):
"""
An edge port that
'
s currently deployed in the network.
"""
#: The router that this edge port is connected to.
node
:
RouterBlockInactive
#: The name of the edge port.
edge_port_name
:
str
#: Indicates whether LACP (Link Aggregation Control Protocol) is enabled for this edge port.
edge_port_enable_lacp
:
bool
#: The type of encapsulation used on this edge port, by default DOT1Q.
edge_port_encapsulation
:
EncapsulationType
=
EncapsulationType
.
DOT1Q
#: The MAC address assigned to this edge port, if applicable.
edge_port_mac_address
:
str
|
None
=
None
#: The speed capacity of each member in the physical port.
edge_port_member_speed
:
PhysicalPortCapacity
#: The minimum number of links required for this edge port.
edge_port_minimum_links
:
int
|
None
=
None
#: The type of edge port (e.g., access, trunk).
edge_port_type
:
EdgePortType
#: If set to True, the edge port will be ignored if it is down.
edge_port_ignore_if_down
:
bool
=
False
#: The GEANT GA ID associated with this edge port, if any.
edge_port_geant_ga_id
:
str
|
None
=
None
#: The interface name for the aggregated Ethernet (AE) interface, if applicable.
edge_port_ae_iface
:
str
|
None
=
None
#: A list of LAG members associated with this edge port.
edge_port_ae_members
:
LAGMemberList
[
EdgePortInterfaceBlock
]
# type: ignore[assignment]
Loading