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
!259
Draft: Edge Port(Demarcation Point)
Code
Review changes
Check out branch
Download
Patches
Plain diff
Closed
Draft: Edge Port(Demarcation Point)
feature/NAT-404-demarcation-point
into
develop
Overview
0
Commits
11
Pipelines
5
Changes
3
Closed
Neda Moeini
requested to merge
feature/NAT-404-demarcation-point
into
develop
9 months ago
Overview
0
Commits
11
Pipelines
5
Changes
3
Expand
0
0
Merge request reports
Compare
develop
version 4
dd1cfa03
9 months ago
version 3
5da8d57f
9 months ago
version 2
f8723407
9 months ago
version 1
5459d8e1
9 months ago
develop (base)
and
version 2
latest version
62acf84b
11 commits,
9 months ago
version 4
dd1cfa03
3 commits,
9 months ago
version 3
5da8d57f
2 commits,
9 months ago
version 2
f8723407
2 commits,
9 months ago
version 1
5459d8e1
1 commit,
9 months ago
3 files
+
164
−
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)
gso/products/product_blocks/edge_port.py
0 → 100644
+
132
−
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_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_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. In our case, this is the name of the LAG interface.
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
#: A list of LAG members associated with this edge port.
edge_port_ae_members
:
LAGMemberList
[
EdgePortInterfaceBlock
]
# type: ignore[assignment]
Loading