-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdigsinet-srl.yml
157 lines (139 loc) · 3.92 KB
/
digsinet-srl.yml
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# name of the topology
name: digsinet
topology:
# currently only containerlab type is supported
# type can later be used to create siblings in different tools, controllers will then possibly need to create the sibling and start these tools
type: containerlab
file: ./digsinet-srl.clab.yml
# interval to check the topology and siblings for changes in seconds
interval: 1
create_sibling_timeout: 60
# interfaces and apps running for the main topology
realnet:
apps:
# interfaces to monitor real net for changes and/or topology updates
interfaces:
gnmi:
nodes: "srl(.*)"
datatype: "config"
paths:
- "openconfig:interfaces/interface[name=Ethernet1]"
# TODO implement per-path config of datatype and other gNMI options
#path: "openconfig:interfaces/interface[name=Ethernet1]"
#datetype: "config"
# TODO currently unimplemented:
# TODO currently unimplemented:
strip:
- "openconfig:interfaces/interface[name=Management0]"
# siblings of the topology to be created
siblings:
# each sibling is a separate containerlab topology and should have a descriptive name
continuous_integration:
# topology-adaption section allows to modify the topology of the sibling
topology-adjustments:
node-remove: "srl2"
node-add:
srl3:
kind: srl
image: ghcr.io/nokia/srlinux
#link-remove:
# - endpoints: ["ceos1:eth1", "ceos2:eth1"]
link-add:
- endpoints: ["srl1:eth1", "srl3:eth1"]
# assign interfaces to be monitored for changes and used for topology updates
interfaces:
gnmi:
# gnmi section allows to sync the sibling with the main topology using gNMI
nodes: "srl(.*)"
datatype: "config"
# TODO currently unimplemented:
paths:
- "openconfig:interfaces/interface[name=Ethernet1]"
# TODO currently unimplemented:
strip:
- "openconfig:interfaces/interface[name=Management0]"
# assign a controller to the sibling
controller: "ci"
# specify if the sibling should be started automatically
autostart: true
security:
topology-adjustments:
node-remove: "(.*)rl2"
node-add:
afl:
kind: linux
image: alpine:latest
link-add:
- endpoints: ["srl1:eth1", "afl:eth1"]
interfaces:
gnmi:
nodes: "srl1"
datatype: "config"
# TODO currently unimplemented:
paths:
- "openconfig:interfaces/interface[name=Ethernet1]"
# TODO currently unimplemented:
strip:
- "openconfig:interfaces/interface[name=Management0]"
controller: "sec"
autostart: true
traffic_engineering:
topology-adjustments:
# TODO currently unimplemented:
collapse:
endpoint: "srl2:eth1"
replace-with-node:
name: "collapsed-net-1"
kind: linux
image: pynetlab/ubuntuping:latest
interfaces:
gnmi:
nodes: "srl1"
datatype: "config"
# TODO currently unimplemented:
paths:
- "openconfig:interfaces/interface[name=Ethernet1]"
# TODO currently unimplemented:
strip:
- "openconfig:interfaces/interface[name=Management0]"
controller: "te"
autostart: false
controllers:
ci:
module: "controllers.ci"
builder: "containerlab"
interfaces:
- gnmi
apps:
- ci
sec:
module: "controllers.sec"
builder: "containerlab"
interfaces:
- gnmi
apps:
- sec
- hello_world
te:
module: "controllers.te"
builder: "containerlab"
interfaces:
- gnmi
apps:
- hello_world
builders:
containerlab:
module: "builders.containerlab"
interfaces:
gnmi:
module: "interfaces.gnmi"
port: 6030
username: "admin"
password: "admin"
apps:
hello_world:
module: "apps.hello_world"
ci:
module: "apps.ci"
sec:
module: "apps.sec"