-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathvnet.py
More file actions
82 lines (75 loc) · 2.59 KB
/
vnet.py
File metadata and controls
82 lines (75 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import pydantic_eda.apps.services.v1alpha1.models as service
def virtualnetwork(ns: str, id: int) -> service.VirtualNetwork:
router = service.VirtualNetworkSpecRouter(
name=f"vnet-router-{id}",
spec=service.VirtualNetworkSpecRouterSpec(
eviPool="evi-pool",
tunnelIndexPool="tunnel-index-pool",
type="EVPNVXLAN",
vniPool="vni-pool",
),
)
bd = service.VirtualNetworkSpecBridgeDomain(
name=f"vnet-bridge-domain-{id}",
spec=service.VirtualNetworkSpecBridgeDomainSpec(
eviPool="evi-pool",
tunnelIndexPool="tunnel-index-pool",
type="EVPNVXLAN",
vniPool="vni-pool",
),
)
vlan = service.VirtualNetworkSpecVlan(
name=f"vnet-vlan-{id}",
spec=service.VirtualNetworkSpecVlanSpec(
bridgeDomain=bd.name,
interfaceSelector=["edge-type=compute"],
uplink=service.VirtualNetworkSpecVlanSpecUplink(uplinkVLANID="pool"),
vlanID=str(300 + id),
),
)
irb = service.VirtualNetworkSpecIrbInterface(
name=f"vnet-irb-{id}",
spec=service.VirtualNetworkSpecIrbInterfaceSpec(
bridgeDomain=bd.name,
hostRoutePopulate=service.VirtualNetworkSpecIrbInterfaceSpecHostRoutePopulate(
dynamic=True, static=True
),
ipAddresses=[
service.VirtualNetworkSpecIrbInterfaceSpecIpAddress(
ipv4Address=service.VirtualNetworkSpecIrbInterfaceSpecIpAddressIpv4Address(
ipPrefix="10.30.0.1/24", primary=True
)
),
service.VirtualNetworkSpecIrbInterfaceSpecIpAddress(
ipv6Address=service.VirtualNetworkSpecIrbInterfaceSpecIpAddressIpv6Address(
ipPrefix="fd00:fdfd:0:3000::1/64", primary=True
)
),
],
router=router.name,
),
)
vnet = service.VirtualNetwork(
apiVersion="services.eda.nokia.com/v1alpha1",
kind="VirtualNetwork",
metadata=service.VirtualNetworkMetadata(
name=f"vnet-api-example-{id}",
namespace=ns,
labels={"role": "pydantic-example"},
),
spec=service.VirtualNetworkSpec(
routers=[
router,
],
bridgeDomains=[
bd,
],
vlans=[
vlan,
],
irbInterfaces=[
irb,
],
),
)
return vnet