blob: fad4bdeec39f39d7025ba1454b8ae9780796c157 [file] [log] [blame]
Zack Williams4a830ed2018-01-18 09:55:27 -07001---
Andy Bavier01685f82017-12-21 14:06:54 -07002{#
3Copyright 2017-present Open Networking Foundation
4
5Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16#}
17
18tosca_definitions_version: tosca_simple_yaml_1_0
19
Zack Williams4a830ed2018-01-18 09:55:27 -070020description: Just enough Tosca to get the vEG slice running on the CORD POD, created by ecord profile
Andy Bavier01685f82017-12-21 14:06:54 -070021
22imports:
23 - custom_types/addressmanagerservice.yaml
24 - custom_types/addresspool.yaml
25 - custom_types/image.yaml
26 - custom_types/network.yaml
27 - custom_types/networkslice.yaml
28 - custom_types/networktemplate.yaml
29 - custom_types/nodelabel.yaml
30 - custom_types/onosapp.yaml
31 - custom_types/onosservice.yaml
32 - custom_types/servicedependency.yaml
33 - custom_types/serviceinstanceattribute.yaml
34 - custom_types/serviceinstancelink.yaml
35 - custom_types/site.yaml
36 - custom_types/slice.yaml
37 - custom_types/vegservice.yaml
38 - custom_types/vrouterservice.yaml
39
40topology_template:
41 node_templates:
42
43# site, image, fully created in deployment.yaml
44 {{ site_name }}:
45 type: tosca.nodes.Site
46 properties:
47 name: {{ site_name }}
48 must-exist: true
49
50 image#vsg-1.1:
51 type: tosca.nodes.Image
52 properties:
53 name: vsg-1.1
54
55# management networks, fully created in management-net.yaml
56 management:
57 type: tosca.nodes.Network
58 properties:
Andy Bavier01685f82017-12-21 14:06:54 -070059 must-exist: true
Zack Williams4a830ed2018-01-18 09:55:27 -070060 name: management
Andy Bavier01685f82017-12-21 14:06:54 -070061
Zack Williams4a830ed2018-01-18 09:55:27 -070062{% if use_vtn_net_management_host %}
63 management_host:
Andy Bavier01685f82017-12-21 14:06:54 -070064 type: tosca.nodes.Network
65 properties:
Zack Williams4a830ed2018-01-18 09:55:27 -070066 name: management_host
Andy Bavier01685f82017-12-21 14:06:54 -070067 must-exist: true
68{% endif %}
69
70# ONOS_CORD, fully created in vtn.yaml
71 service#ONOS_CORD:
72 type: tosca.nodes.ONOSService
73 properties:
74 name: ONOS_CORD
75 must-exist: true
76
77# ONOS_Fabric, fully created in fabric.yaml
78 service#ONOS_Fabric:
79 type: tosca.nodes.ONOSService
80 properties:
81 name: ONOS_Fabric
82 must-exist: true
83
84# CORD Services
Zack Williams4a830ed2018-01-18 09:55:27 -070085
86# Using same addresses as the r-cord VSG
Andy Bavier01685f82017-12-21 14:06:54 -070087 addresses_veg:
88 type: tosca.nodes.AddressPool
89 properties:
90 name: addresses_veg
Zack Williams4a830ed2018-01-18 09:55:27 -070091 addresses: {{ addresspool_vsg_cidr }}
92 gateway_ip: {{ addresspool_vsg_cidr | ipaddr('1') | ipaddr('address') }}
93 gateway_mac: {{ fabric_gateway_hwaddr }}
Andy Bavier01685f82017-12-21 14:06:54 -070094 requirements:
95 - service:
96 node: service#addressmanager
97 relationship: tosca.relationships.BelongsToOne
98
99 addresses_public:
100 type: tosca.nodes.AddressPool
101 properties:
102 name: addresses_public
Zack Williams4a830ed2018-01-18 09:55:27 -0700103 addresses: {{ addresspool_public_cidr }}
104 gateway_ip: {{ addresspool_public_cidr | ipaddr('1') | ipaddr('address') }}
105 gateway_mac: {{ fabric_gateway_hwaddr }}
Andy Bavier01685f82017-12-21 14:06:54 -0700106 requirements:
107 - service:
108 node: service#addressmanager
109 relationship: tosca.relationships.BelongsToOne
110
111 service#addressmanager:
112 type: tosca.nodes.AddressManagerService
113 properties:
114 name: addressmanager
115
116 label_veg:
117 type: tosca.nodes.NodeLabel
118 properties:
119 name: label_veg
120
121 service#veg:
122 type: tosca.nodes.VEGService
123 properties:
124 name: veg
125 public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/veg_rsa.pub') }}
126 private_key_fn: /opt/xos/services/veg/keys/veg_rsa
127 # node_label: label_veg
128
129 veg_vrouter:
130 type: tosca.nodes.ServiceDependency
131 properties:
132 connect_method: None
133 requirements:
134 - subscriber_service:
135 node: service#veg
136 relationship: tosca.relationships.BelongsToOne
137 - provider_service:
138 node: service#vrouter
139 relationship: tosca.relationships.BelongsToOne
140
141 # NOTE are this connected?
142 veg_addressmanager:
143 type: tosca.nodes.ServiceDependency
144 properties:
145 connect_method: None
146 requirements:
147 - subscriber_service:
148 node: service#veg
149 relationship: tosca.relationships.BelongsToOne
150 - provider_service:
151 node: service#addressmanager
152 relationship: tosca.relationships.BelongsToOne
153
154 service#vrouter:
155 type: tosca.nodes.VRouterService
156 properties:
157 name: vrouter
158 rest_hostname: onos-fabric.{{ site_suffix }}
159 rest_port: 8181
160 rest_user: onos
161 rest_pass: rocks
162 # NOTE: shouldn't the addresses be attached to address_manager? I don't think vRouter is used now
163 # requirements:
164 # - addresses_veg:
165 # node: addresses_veg
166 # relationship: tosca.relationships.ProvidesAddresses
167 # - addresses_public:
168 # node: addresses_public
169 # relationship: tosca.relationships.ProvidesAddresses
170
171 vRouter_ONOS_app:
172 type: tosca.nodes.ONOSApp
173 requirements:
174 - owner:
175 node: service#ONOS_Fabric
176 relationship: tosca.relationships.BelongsToOne
177 properties:
178 name: vRouter_ONOS_app
179 dependencies: org.onosproject.fpm
180
181 vRouter_ONOS_app_autogenerate:
182 type: tosca.nodes.ServiceInstanceAttribute
183 requirements:
184 - service_instance:
185 node: vRouter_ONOS_app
186 relationship: tosca.relationships.BelongsToOne
187 properties:
188 name: autogenerate
189 value: vrouter-network-cfg
190
191 vRouter_ONOS_app_ONOS_CORD:
192 type: tosca.nodes.ServiceInstanceLink
193 requirements:
194 - provider_service_instance:
195 node: vRouter_ONOS_app
196 relationship: tosca.relationships.BelongsToOne
197 - subscriber_service:
198 node: service#vrouter
199 relationship: tosca.relationships.BelongsToOne
200
Zack Williams4a830ed2018-01-18 09:55:27 -0700201 veg_template:
Andy Bavier01685f82017-12-21 14:06:54 -0700202 type: tosca.nodes.NetworkTemplate
203 properties:
Zack Williams4a830ed2018-01-18 09:55:27 -0700204 name: veg_template
Andy Bavier01685f82017-12-21 14:06:54 -0700205 visibility: private
206 translation: none
207 vtn_kind: VSG
208
209 # Networks required by the CORD setup
210 {{ site_name }}_veg-access:
211 type: tosca.nodes.Network
212 properties:
213 name: {{ site_name }}_veg-access
214 # ip_version: 4
215 requirements:
216 - template:
Zack Williams4a830ed2018-01-18 09:55:27 -0700217 node: veg_template
Andy Bavier01685f82017-12-21 14:06:54 -0700218 relationship: tosca.relationships.BelongsToOne
219 - owner:
220 node: {{ site_name }}_veg
221 relationship: tosca.relationships.BelongsToOne
222
223 networkslice#{{ site_name }}_veg-access_to_{{ site_name }}_veg:
224 type: tosca.nodes.NetworkSlice
225 requirements:
226 - network:
227 node: {{ site_name }}_veg-access
228 relationship: tosca.relationships.BelongsToOne
229 - slice:
230 node: {{ site_name }}_veg
231 relationship: tosca.relationships.BelongsToOne
232
233 # CORD Slices
234 {{ site_name }}_veg:
235 description: vEG Controller Slice
236 type: tosca.nodes.Slice
237 properties:
238 network: noauto
239 name: {{ site_name }}_veg
240 requirements:
241 - service:
242 node: service#veg
243 relationship: tosca.relationships.BelongsToOne
244 - site:
245 node: {{ site_name }}
246 relationship: tosca.relationships.BelongsToOne
247 - default_image:
248 node: image#vsg-1.1
249 relationship: tosca.relationships.BelongsToOne
250
251 networkslice#management_to_{{ site_name }}_veg:
252 type: tosca.nodes.NetworkSlice
253 requirements:
254 - network:
255 node: management
256 relationship: tosca.relationships.BelongsToOne
257 - slice:
258 node: {{ site_name }}_veg
259 relationship: tosca.relationships.BelongsToOne
260
Zack Williams4a830ed2018-01-18 09:55:27 -0700261{% if use_vtn_net_management_host %}
262 networkslice#management_host_to_{{ site_name }}_veg:
Andy Bavier01685f82017-12-21 14:06:54 -0700263 type: tosca.nodes.NetworkSlice
264 requirements:
265 - network:
Zack Williams4a830ed2018-01-18 09:55:27 -0700266 node: management_host
Andy Bavier01685f82017-12-21 14:06:54 -0700267 relationship: tosca.relationships.BelongsToOne
268 - slice:
269 node: {{ site_name }}_veg
270 relationship: tosca.relationships.BelongsToOne
271{% endif %}
272
273 # TODO: migrate interfaces when we'll start using
274 # in#lanside:
275 # type: tosca.nodes.InterfaceType
276 # properties:
277 # direction: in
278
279 # out#lanside:
280 # type: tosca.nodes.InterfaceType
281 # properties:
282 # direction: out
283
284 # in#wanside:
285 # type: tosca.nodes.InterfaceType
286 # properties:
287 # direction: in
288
289 # out#wanside:
290 # type: tosca.nodes.InterfaceType
291 # properties:
292 # direction: out
293
294 # veg_lanside:
295 # type: tosca.nodes.ServiceInterface
296 # requirements:
297 # - service:
298 # node: service#veg
299 # relationship: tosca.relationships.MemberOfService
300 # - interface:
301 # node: in#lanside
302 # relationship: tosca.relationships.IsType
303
304 # veg_wanside:
305 # type: tosca.nodes.ServiceInterface
306 # requirements:
307 # - service:
308 # node: service#veg
309 # relationship: tosca.relationships.MemberOfService
310 # - interface:
311 # node: out#wanside
312 # relationship: tosca.relationships.IsType
313
314 # addressmanager_wanside:
315 # type: tosca.nodes.ServiceInterface
316 # requirements:
317 # - service:
318 # node: service#addressmanager
319 # relationship: tosca.relationships.MemberOfService
320 # - interface:
321 # node: in#wanside
322 # relationship: tosca.relationships.IsType
323