a0d3c5e7967150e78c6e56e1dad42bb8f0966953
1 # -*- coding: utf-8 -*-
3 # Copyright 2019 Atos - CoE Telco NFV Team
6 # Contributors: Oscar Luis Peral, Atos
8 # Licensed under the Apache License, Version 2.0 (the "License"); you may
9 # not use this file except in compliance with the License. You may obtain
10 # a copy of the License at
12 # http://www.apache.org/licenses/LICENSE-2.0
14 # Unless required by applicable law or agreed to in writing, software
15 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17 # License for the specific language governing permissions and limitations
20 # For those usages not covered by the Apache License, Version 2.0 please
21 # contact with: <oscarluis.peral@atos.net>
23 # Neither the name of Atos nor the names of its
24 # contributors may be used to endorse or promote products derived from
25 # this software without specific prior written permission.
27 # This work has been performed in the context of Arista Telefonica OSM PoC.
31 class AristaSDNConfigLet
:
32 _configLet_SRIOV
= """
37 switchport trunk group {service}{vlan_id}
41 def _get_sriov(self
, uuid
, interface
, vlan_id
, s_type
, index
):
42 return self
._configLet
_SRIOV
.format(uuid
=uuid
, interface
=interface
, service
=s_type
, vlan_id
=vlan_id
)
44 def getElan_sriov(self
, uuid
, interface
, vlan_id
, index
):
45 return self
._get
_sriov
(uuid
, interface
, vlan_id
, "ELAN", index
)
47 def getEline_sriov(self
, uuid
, interface
, vlan_id
, index
):
48 return self
._get
_sriov
(uuid
, interface
, vlan_id
, "ELINE", index
)
50 _configLet_PASSTROUGH
= """
54 switchport mode dot1q-tunnel
55 switchport access vlan {vlan_id}
59 def _get_passthrough(self
, uuid
, interface
, vlan_id
, s_type
, index
):
60 return self
._configLet
_PASSTROUGH
.format(uuid
=uuid
, interface
=interface
, vlan_id
=vlan_id
)
62 def getElan_passthrough(self
, uuid
, interface
, vlan_id
, index
):
63 return self
._get
_passthrough
(uuid
, interface
, vlan_id
, "ELAN", index
)
65 def getEline_passthrough(self
, uuid
, interface
, vlan_id
, index
):
66 return self
._get
_passthrough
(uuid
, interface
, vlan_id
, "ELINE", index
)
70 !! service: {service} {vlan} {uuid}
72 trunk group {service}{vlan}
76 VXLAN vlan {vlan} vni {vni}
80 def _get_vlan(self
, uuid
, vlan_id
, vni_id
, s_type
):
81 return self
._configLet
_VLAN
.format(service
=s_type
, vlan
=vlan_id
, uuid
=uuid
, vni
=vni_id
)
83 def getElan_vlan(self
, uuid
, vlan_id
, vni_id
):
84 return self
._get
_vlan
(uuid
, vlan_id
, vni_id
, "ELAN")
86 def getEline_vlan(self
, uuid
, vlan_id
, vni_id
):
87 return self
._get
_vlan
(uuid
, vlan_id
, vni_id
, "ELINE")
94 route-target both {vni}:{vni}
99 def _get_bgp(self
, uuid
, vlan_id
, vni_id
, loopback0
, bgp
, s_type
):
100 return self
._configLet
_BGP
.format(uuid
=uuid
, bgp
=bgp
, vlan
=vlan_id
, loopback
=loopback0
, vni
=vni_id
)
102 def getElan_bgp(self
, uuid
, vlan_id
, vni_id
, loopback0
, bgp
):
103 return self
._get
_bgp
(uuid
, vlan_id
, vni_id
, loopback0
, bgp
, "ELAN")
105 def getEline_bgp(self
, uuid
, vlan_id
, vni_id
, loopback0
, bgp
):
106 return self
._get
_bgp
(uuid
, vlan_id
, vni_id
, loopback0
, bgp
, "ELINE")