CORD-2385 Move profile-specific configuration to R-CORD repo
Change-Id: I54dfcb973dd623da33c4b67053003f2cffc21fbf
diff --git a/templates/addressmanager-service.yaml.j2 b/templates/addressmanager-service.yaml.j2
new file mode 100644
index 0000000..aae46f2
--- /dev/null
+++ b/templates/addressmanager-service.yaml.j2
@@ -0,0 +1,58 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+# Only used by BASE-CORD
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: TOSCA for bootstrapping Address Manager service
+
+imports:
+ - custom_types/addressmanagerservice.yaml
+ - custom_types/addresspool.yaml
+
+topology_template:
+ node_templates:
+
+ addresses_vsg:
+ type: tosca.nodes.AddressPool
+ properties:
+ name: addresses_vsg
+ addresses: 10.7.1.0/24
+ gateway_ip: 10.7.1.1
+ gateway_mac: a4:23:05:06:01:01
+ requirements:
+ - service:
+ node: service#addressmanager
+ relationship: tosca.relationships.BelongsToOne
+
+ addresses_public:
+ type: tosca.nodes.AddressPool
+ properties:
+ name: addresses_public
+ addresses: 10.8.1.0/24
+ gateway_ip: 10.8.1.1
+ gateway_mac: a4:23:05:06:01:01
+ requirements:
+ - service:
+ node: service#addressmanager
+ relationship: tosca.relationships.BelongsToOne
+
+ service#addressmanager:
+ type: tosca.nodes.AddressManagerService
+ properties:
+ name: addressmanager
diff --git a/templates/cdn-content.yaml.j2 b/templates/cdn-content.yaml.j2
new file mode 100644
index 0000000..dff1f91
--- /dev/null
+++ b/templates/cdn-content.yaml.j2
@@ -0,0 +1,242 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Hypercache CDN Content
+
+imports:
+ - custom_types/xos.yaml
+ - custom_types/cdn.yaml
+
+topology_template:
+ node_templates:
+ HyperCache:
+ type: tosca.nodes.CDNService
+ properties:
+ # HyperCache service must already exist before running this recipe
+ no-create: true
+ no-delete: true
+ no-update: true
+
+ # Setup the CDN Service Provider
+
+ main_service_provider:
+ type: tosca.nodes.ServiceProvider
+ requirements:
+ - hpc_service:
+ node: HyperCache
+ relationship: tosca.relationships.MemberOfService
+
+ # Wall Street Journal Content Provider
+
+ wsj_content:
+ type: tosca.nodes.ContentProvider
+ requirements:
+ - service_provider:
+ node: main_service_provider
+ relationship: tosca.relationships.MemberOfServiceProvider
+
+ www.wsj.com:
+ type: tosca.nodes.CDNPrefix
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+ - default_origin_server:
+ node: http_www.wsj.com
+ relationship: tosca.relationships.DefaultOriginServer
+
+ si.wsj.net:
+ type: tosca.nodes.CDNPrefix
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+ - default_origin_server:
+ node: http_si.wsj.net
+ relationship: tosca.relationships.DefaultOriginServer
+
+ s.wsj.net:
+ type: tosca.nodes.CDNPrefix
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+ - default_origin_server:
+ node: http_s.wsj.net
+ relationship: tosca.relationships.DefaultOriginServer
+
+ ore.wsj.net:
+ type: tosca.nodes.CDNPrefix
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+ - default_origin_server:
+ node: http_ore.wsj.net
+ relationship: tosca.relationships.DefaultOriginServer
+
+ http_www.wsj.com:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ http_si.wsj.net:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ http_s.wsj.net:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ http_ore.wsj.net:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: wsj_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ # ON.Lab content provider
+
+ on_lab_content:
+ type: tosca.nodes.ContentProvider
+ requirements:
+ - service_provider:
+ node: main_service_provider
+ relationship: tosca.relationships.MemberOfServiceProvider
+
+ # Create CDN prefix onlab.vicci.org
+ onlab.vicci.org:
+ type: tosca.nodes.CDNPrefix
+ requirements:
+ - content_provider:
+ node: on_lab_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ http_onos-videos.s3.amazonaws.com:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: on_lab_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ # Create origin server s3-us-west-1.amazonaws.com
+ http_s3-us-west-1.amazonaws.com:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: on_lab_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ # Create origin server s3.amazonaws.com
+ http_s3.amazonaws.com:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: on_lab_content
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ # Test Content Provider
+
+ testcp2:
+ type: tosca.nodes.ContentProvider
+ requirements:
+ - service_provider:
+ node: main_service_provider
+ relationship: tosca.relationships.MemberOfServiceProvider
+
+ http_www.cs.arizona.edu:
+ type: tosca.nodes.OriginServer
+ requirements:
+ - content_provider:
+ node: testcp2
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ test-cdn.opencloud.us:
+ type: tosca.nodes.CDNPrefix
+ requirements:
+ - content_provider:
+ node: testcp2
+ relationship: tosca.relationships.MemberOfContentProvider
+
+ - default_origin_server:
+ node: http_www.cs.arizona.edu
+ relationship: tosca.relationships.DefaultOriginServer
+
+ # Health Checks
+
+ healthcheck_dns_onlab.vicci.org:
+ type: tosca.nodes.HpcHealthCheck
+ requirements:
+ - hpc_service:
+ node: HyperCache
+ relationship: tosca.relationships.MemberOfService
+ properties:
+ kind: dns
+ resource_name: onlab.vicci.org
+
+ healthcheck_dns_test-cdn.opencloud.us:
+ type: tosca.nodes.HpcHealthCheck
+ requirements:
+ - hpc_service:
+ node: HyperCache
+ relationship: tosca.relationships.MemberOfService
+ properties:
+ kind: dns
+ resource_name: test-cdn.opencloud.us
+
+ healthcheck_http_test-cdn-index:
+ type: tosca.nodes.HpcHealthCheck
+ requirements:
+ - hpc_service:
+ node: HyperCache
+ relationship: tosca.relationships.MemberOfService
+ properties:
+ kind: http
+ resource_name: test-cdn.opencloud.us:/
+ result_contains: Lowenthal
+
+ healthcheck_http_onlab_onos_image:
+ type: tosca.nodes.HpcHealthCheck
+ requirements:
+ - hpc_service:
+ node: HyperCache
+ relationship: tosca.relationships.MemberOfService
+ properties:
+ kind: http
+ resource_name: onlab.vicci.org:/onos/vm/onos-tutorial-1.1.0r220-ovf.zip
+
+ healthcheck_http_onlab_mininet_image:
+ type: tosca.nodes.HpcHealthCheck
+ requirements:
+ - hpc_service:
+ node: HyperCache
+ relationship: tosca.relationships.MemberOfService
+ properties:
+ kind: http
+ resource_name: onlab.vicci.org:/mininet-vm/mininet-2.1.0-130919-ubuntu-13.04-server-amd64-ovf.zip
+
diff --git a/templates/cord-services.yaml.j2 b/templates/cord-services.yaml.j2
new file mode 100644
index 0000000..0fb5171
--- /dev/null
+++ b/templates/cord-services.yaml.j2
@@ -0,0 +1,367 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Just enough Tosca to get the vSG slice running on the CORD POD, created by platform-install
+
+imports:
+ - custom_types/addressmanagerservice.yaml
+ - custom_types/addresspool.yaml
+ - custom_types/image.yaml
+ - custom_types/network.yaml
+ - custom_types/networkslice.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/nodelabel.yaml
+ - custom_types/onosapp.yaml
+ - custom_types/onosservice.yaml
+ - custom_types/site.yaml
+ - custom_types/service.yaml
+ - custom_types/servicedependency.yaml
+ - custom_types/serviceinstanceattribute.yaml
+ - custom_types/serviceinstancelink.yaml
+ - custom_types/slice.yaml
+ - custom_types/voltservice.yaml
+ - custom_types/vrouterservice.yaml
+ - custom_types/vsgservice.yaml
+ - custom_types/vtrservice.yaml
+
+topology_template:
+ node_templates:
+
+ {{ site_name }}:
+ type: tosca.nodes.Site
+ properties:
+ name: {{ site_name }}
+ must-exist: true
+
+ image#vsg-1.1:
+ type: tosca.nodes.Image
+ properties:
+ name: vsg-1.1
+
+# management networks, fully created in management-net.yaml
+ management:
+ type: tosca.nodes.Network
+ properties:
+ name: management
+ must-exist: true
+
+{% if use_management_hosts %}
+ management_hosts:
+ type: tosca.nodes.Network
+ properties:
+ must-exist: true
+{% endif %}
+
+ service#rcord:
+ type: tosca.nodes.Service
+ properties:
+ name: rcord
+
+ rcord_volt:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
+ requirements:
+ - subscriber_service:
+ node: service#rcord
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
+ node: service#volt
+ relationship: tosca.relationships.BelongsToOne
+
+# ONOS_CORD, fully created in vtn.yaml
+ service#ONOS_CORD:
+ type: tosca.nodes.ONOSService
+ properties:
+ name: ONOS_CORD
+ must-exist: true
+
+# ONOS_Fabric, fully created in fabric.yaml
+ service#ONOS_Fabric:
+ type: tosca.nodes.ONOSService
+ properties:
+ name: ONOS_Fabric
+ must-exist: true
+
+# CORD Services
+ service#vtr:
+ type: tosca.nodes.VTRService
+ properties:
+ name: vtr
+ kind: rcord
+
+ service#volt:
+ type: tosca.nodes.VOLTService
+ properties:
+ name: volt
+ kind: rcord
+ public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/volt_rsa.pub') }}
+ private_key_fn: /opt/xos/services/volt/keys/volt_rsa
+
+ volt_vsg:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
+ requirements:
+ - subscriber_service:
+ node: service#volt
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
+ node: service#vsg
+ relationship: tosca.relationships.BelongsToOne
+
+ addresses_vsg:
+ type: tosca.nodes.AddressPool
+ properties:
+ name: addresses_vsg
+ addresses: 10.7.1.0/24
+ gateway_ip: 10.7.1.1
+ gateway_mac: a4:23:05:06:01:01
+ requirements:
+ - service:
+ node: service#addressmanager
+ relationship: tosca.relationships.BelongsToOne
+
+ addresses_public:
+ type: tosca.nodes.AddressPool
+ properties:
+ name: addresses_public
+ addresses: 10.8.1.0/24
+ gateway_ip: 10.8.1.1
+ gateway_mac: a4:23:05:06:01:01
+ requirements:
+ - service:
+ node: service#addressmanager
+ relationship: tosca.relationships.BelongsToOne
+
+ label_vsg:
+ type: tosca.nodes.NodeLabel
+ properties:
+ name: label_vsg
+
+ service#vsg:
+ type: tosca.nodes.VSGService
+ properties:
+ name: vsg
+ # backend_network_label: hpc_client # what is this? can we drop it?
+ public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/vsg_rsa.pub') }}
+ private_key_fn: /opt/xos/services/vsg/keys/vsg_rsa
+ # node_label: label_vsg
+
+ vsg_vrouter:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
+ requirements:
+ - subscriber_service:
+ node: service#vsg
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
+ node: service#vrouter
+ relationship: tosca.relationships.BelongsToOne
+
+ vsg_addressmanager:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
+ requirements:
+ - subscriber_service:
+ node: service#vsg
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
+ node: service#addressmanager
+ relationship: tosca.relationships.BelongsToOne
+
+ service#addressmanager:
+ type: tosca.nodes.AddressManagerService
+ properties:
+ name: addressmanager
+
+ service#vrouter:
+ type: tosca.nodes.VRouterService
+ properties:
+ name: vrouter
+ rest_hostname: onos-fabric.{{ site_suffix }}
+ rest_port: 8181
+ rest_user: onos
+ rest_pass: rocks
+
+ vRouter_ONOS_app:
+ type: tosca.nodes.ONOSApp
+ requirements:
+ - owner:
+ node: service#ONOS_Fabric
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: vRouter_ONOS_app
+ dependencies: org.onosproject.fpm
+
+ vRouter_ONOS_app_autogenerate:
+ type: tosca.nodes.ServiceInstanceAttribute
+ requirements:
+ - service_instance:
+ node: vRouter_ONOS_app
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: autogenerate
+ value: vrouter-network-cfg
+
+ vRouter_ONOS_app_ONOS_CORD:
+ type: tosca.nodes.ServiceInstanceLink
+ requirements:
+ - provider_service_instance:
+ node: vRouter_ONOS_app
+ relationship: tosca.relationships.BelongsToOne
+ - subscriber_service:
+ node: service#vrouter
+ relationship: tosca.relationships.BelongsToOne
+
+ template#vsg:
+ type: tosca.nodes.NetworkTemplate
+ properties:
+ name: vsg
+ visibility: private
+ translation: none
+ vtn_kind: VSG
+
+ # Networks required by the CORD setup
+ {{ site_name }}_vsg-access:
+ type: tosca.nodes.Network
+ properties:
+ name: {{ site_name }}_vsg-access
+ # ip_version: 4
+ requirements:
+ - template:
+ node: template#vsg
+ relationship: tosca.relationships.BelongsToOne
+ - owner:
+ node: {{ site_name }}_vsg
+ relationship: tosca.relationships.BelongsToOne
+
+ networkslice#{{ site_name }}_vsg-access_to_{{ site_name }}_vsg:
+ type: tosca.nodes.NetworkSlice
+ requirements:
+ - network:
+ node: {{ site_name }}_vsg-access
+ relationship: tosca.relationships.BelongsToOne
+ - slice:
+ node: {{ site_name }}_vsg
+ relationship: tosca.relationships.BelongsToOne
+
+ # CORD Slices
+ {{ site_name }}_vsg:
+ description: vSG Controller Slice
+ type: tosca.nodes.Slice
+ properties:
+ network: noauto
+ name: {{ site_name }}_vsg
+ requirements:
+ - service:
+ node: service#vsg
+ relationship: tosca.relationships.BelongsToOne
+ - site:
+ node: {{ site_name }}
+ relationship: tosca.relationships.BelongsToOne
+ - default_image:
+ node: image#vsg-1.1
+ relationship: tosca.relationships.BelongsToOne
+
+ networkslice#management_to_{{ site_name }}_vsg:
+ type: tosca.nodes.NetworkSlice
+ requirements:
+ - network:
+ node: management
+ relationship: tosca.relationships.BelongsToOne
+ - slice:
+ node: {{ site_name }}_vsg
+ relationship: tosca.relationships.BelongsToOne
+
+{% if use_management_hosts %}
+ networkslice#management_hosts_to_{{ site_name }}_vsg:
+ type: tosca.nodes.NetworkSlice
+ requirements:
+ - network:
+ node: management_hosts
+ relationship: tosca.relationships.BelongsToOne
+ - slice:
+ node: {{ site_name }}_vsg
+ relationship: tosca.relationships.BelongsToOne
+{% endif %}
+
+ # TODO: migrate interfaces when we'll start using them
+ # in#lanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: in
+
+ # out#lanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: out
+
+ # in#wanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: in
+
+ # out#wanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: out
+
+ # volt_lanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#volt
+ # relationship: tosca.relationships.MemberOfService
+ # - interface:
+ # node: out#lanside
+ # relationship: tosca.relationships.IsType
+
+ # vsg_lanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#vsg
+ # relationship: tosca.relationships.MemberOfService
+ # - interface:
+ # node: in#lanside
+ # relationship: tosca.relationships.IsType
+
+ # vsg_wanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#vsg
+ # relationship: tosca.relationships.MemberOfService
+ # - interface:
+ # node: out#wanside
+ # relationship: tosca.relationships.IsType
+
+ # addressmanager_wanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#addressmanager
+ # relationship: tosca.relationships.MemberOfService
+ # - interface:
+ # node: in#wanside
+ # relationship: tosca.relationships.IsType
\ No newline at end of file
diff --git a/templates/fabric-network-cfg.json.j2 b/templates/fabric-network-cfg.json.j2
new file mode 100644
index 0000000..853c7e9
--- /dev/null
+++ b/templates/fabric-network-cfg.json.j2
@@ -0,0 +1,19 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+{}
\ No newline at end of file
diff --git a/templates/fabric-service.yaml.j2 b/templates/fabric-service.yaml.j2
new file mode 100644
index 0000000..e28d5ea
--- /dev/null
+++ b/templates/fabric-service.yaml.j2
@@ -0,0 +1,78 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+ - custom_types/onosservice.yaml
+ - custom_types/serviceattribute.yaml
+ - custom_types/fabricservice.yaml
+ - custom_types/onosapp.yaml
+ - custom_types/serviceinstancelink.yaml
+
+description: fabric services, generated by platform-install
+
+topology_template:
+ node_templates:
+
+ service#ONOS_Fabric:
+ type: tosca.nodes.ONOSService
+ properties:
+ name: ONOS_Fabric
+ kind: platform
+ no_container: true
+ rest_hostname: onos-fabric.{{ site_suffix }}
+
+ serviceattribute#fabric_network_cfg_json:
+ type: tosca.nodes.ServiceAttribute
+ requirements:
+ - service:
+ node: service#ONOS_Fabric
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: fabric_network_cfg_json
+ value: {{ fabric_network_cfg_json }}
+
+ service#fabric:
+ type: tosca.nodes.FabricService
+ properties:
+ name: fabric
+ kind: platform
+
+
+
+ Fabric_ONOS_app:
+ type: tosca.nodes.ONOSApp
+ requirements:
+ - owner:
+ node: service#ONOS_Fabric
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: Fabric_ONOS_app
+ dependencies: org.onosproject.drivers, org.onosproject.openflow, org.onosproject.netcfghostprovider, org.onosproject.segmentrouting
+
+ Fabric_ONOS_app_ONOS_Fabric:
+ type: tosca.nodes.ServiceInstanceLink
+ requirements:
+ - provider_service_instance:
+ node: Fabric_ONOS_app
+ relationship: tosca.relationships.BelongsToOne
+ - subscriber_service:
+ node: service#fabric
+ relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/management-net.yaml.j2 b/templates/management-net.yaml.j2
new file mode 100644
index 0000000..9c7b03c
--- /dev/null
+++ b/templates/management-net.yaml.j2
@@ -0,0 +1,97 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+ - custom_types/networktemplate.yaml
+ - custom_types/network.yaml
+ - custom_types/slice.yaml
+ - custom_types/site.yaml
+
+description: management network config, generated by platform-install
+
+topology_template:
+ node_templates:
+
+# site, fully created in deployment.yaml
+ {{ site_name }}:
+ type: tosca.nodes.Site
+ properties:
+ name: {{ site_name }}
+
+# management network
+ management_template:
+ type: tosca.nodes.NetworkTemplate
+ properties:
+ name: management_template
+ visibility: private
+ translation: none
+ vtn_kind: MANAGEMENT_LOCAL
+
+ management:
+ type: tosca.nodes.Network
+ properties:
+ name: management
+ # ip_version: 4
+ subnet: {{ management_network_cidr }}
+ permit_all_slices: true
+ requirements:
+ - template:
+ node: management_template
+ relationship: tosca.relationships.BelongsToOne
+ - owner:
+ node: slice#{{ site_name }}_management
+ relationship: tosca.relationships.BelongsToOne
+
+{% if use_management_hosts %}
+ management_hosts_template:
+ type: tosca.nodes.NetworkTemplate
+ properties:
+ name: management_hosts_template
+ visibility: private
+ translation: none
+ vtn_kind: MANAGEMENT_HOST
+
+ management_hosts:
+ type: tosca.nodes.Network
+ properties:
+ # ip_version: 4
+ subnet: {{ management_hosts_net_cidr }}
+ start_ip: {{ management_hosts_net_range_xos_low }}
+ end_ip: {{ management_hosts_net_range_xos_high }}
+ requirements:
+ - template:
+ node: management_hosts_template
+ relationship: tosca.relationships.BelongsToOne
+ - owner:
+ node: slice#{{ site_name }}_management
+ relationship: tosca.relationships.BelongsToOne
+{% endif %}
+
+ slice#{{ site_name }}_management:
+ description: This slice exists solely to own the management network
+ type: tosca.nodes.Slice
+ properties:
+ network: noauto
+ name: {{ site_name }}_management
+ requirements:
+ - site:
+ node: {{ site_name }}
+ relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/public-net.yaml.j2 b/templates/public-net.yaml.j2
new file mode 100644
index 0000000..610c58b
--- /dev/null
+++ b/templates/public-net.yaml.j2
@@ -0,0 +1,117 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+ - custom_types/addresspool.yaml
+ - custom_types/addressmanagerservice.yaml
+ - custom_types/addressmanagerserviceinstance.yaml
+ - custom_types/network.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/serviceinstance.yaml
+ - custom_types/serviceinstancelink.yaml
+ - custom_types/site.yaml
+ - custom_types/slice.yaml
+
+description: public network config, generated by platform-install
+
+topology_template:
+ node_templates:
+
+# site, fully created in deployment.yaml
+ {{ site_name }}:
+ type: tosca.nodes.Site
+ properties:
+ name: {{ site_name }}
+ must-exist: true
+
+
+
+# Address Manager service, fully created in cord-service.yaml
+ service#addressmanager:
+ type: tosca.nodes.AddressManagerService
+ properties:
+ name: addressmanager
+ must-exist: true
+
+# public network
+
+ public_template:
+ type: tosca.nodes.NetworkTemplate
+ properties:
+ name: public_template
+ visibility: public
+ translation: none
+ vtn_kind: PUBLIC
+
+ public:
+ type: tosca.nodes.Network
+ properties:
+ name: public
+ permit_all_slices: true
+ subnet: 10.8.1.0/24 # NOTE same as AddressPool#addresses_public
+ # ip_version: 4
+ requirements:
+ - template:
+ node: public_template
+ relationship: tosca.relationships.BelongsToOne
+ - owner:
+ node: {{ site_name }}_public
+ relationship: tosca.relationships.BelongsToOne
+
+ # Created in cord-services.yaml.j2
+ addresses_public:
+ type: tosca.nodes.AddressPool
+ properties:
+ name: addresses_public
+ must-exist: true
+
+ AddressManagerServiceInstancePublicNetwork:
+ type: tosca.nodes.AddressManagerServiceInstance
+ requirements:
+ - owner:
+ node: service#addressmanager
+ relationship: tosca.relationships.BelongsToOne
+ - address_pool:
+ node: addresses_public
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: AM_public_net
+
+ public_to_address_manager:
+ type: tosca.nodes.ServiceInstanceLink
+ requirements:
+ - provider_service_instance:
+ node: AddressManagerServiceInstancePublicNetwork
+ relationship: tosca.relationships.BelongsToOne
+ - subscriber_network:
+ node: public
+ relationship: tosca.relationships.BelongsToOne
+
+ {{ site_name }}_public:
+ description: This slice exists solely to own the public network
+ type: tosca.nodes.Slice
+ properties:
+ network: noauto
+ name: {{ site_name }}_public
+ requirements:
+ - site:
+ node: {{ site_name }}
+ relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/service-graph-constraints.yaml.j2 b/templates/service-graph-constraints.yaml.j2
new file mode 100644
index 0000000..00fbc4a
--- /dev/null
+++ b/templates/service-graph-constraints.yaml.j2
@@ -0,0 +1,14 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+ - custom_types/servicegraphconstraint.yaml
+
+description: Constraints on the Services position in the graph
+
+topology_template:
+ node_templates:
+
+ constraints:
+ type: tosca.nodes.ServiceGraphConstraint
+ properties:
+ constraints: '{{ xos_gui_service_graph_constraints }}'
diff --git a/templates/vsg-net.yaml.j2 b/templates/vsg-net.yaml.j2
new file mode 100644
index 0000000..9bcf397
--- /dev/null
+++ b/templates/vsg-net.yaml.j2
@@ -0,0 +1,54 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+ - custom_types/network.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/slice.yaml
+ - custom_types/site.yaml
+
+description: vsg network config, generated by platform-install
+
+topology_template:
+ node_templates:
+
+# site, fully created in deployment.yaml
+ {{ site_name }}:
+ type: tosca.nodes.Site
+ properties:
+ name: {{ site_name }}
+ must-exist: true
+
+# vsg network
+ vsg_template:
+ type: tosca.nodes.NetworkTemplate
+ properties:
+ name: vsg_template
+ visibility: private
+ translation: none
+ vtn_kind: VSG
+
+ vsg_network:
+ type: tosca.nodes.Network
+ properties:
+ name: vsg_network
+ subnet: 101.0.0.0/24
+ requirements:
+ - template:
+ node: vsg_template
+ relationship: tosca.relationships.BelongsToOne
+ - owner:
+ node: {{ site_name }}_vsg
+ relationship: tosca.relationships.BelongsToOne
+
+ {{ site_name }}_vsg:
+ description: This slice exists solely to own the private network
+ type: tosca.nodes.Slice
+ properties:
+ name: {{ site_name }}_vsg
+ network: noauto
+ requirements:
+ - site:
+ node: {{ site_name }}
+ relationship: tosca.relationships.BelongsToOne
+
+
diff --git a/templates/vtn-service.yaml.j2 b/templates/vtn-service.yaml.j2
new file mode 100644
index 0000000..6a2dbd6
--- /dev/null
+++ b/templates/vtn-service.yaml.j2
@@ -0,0 +1,90 @@
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+ - custom_types/onosapp.yaml
+ - custom_types/onosservice.yaml
+ - custom_types/serviceinstanceattribute.yaml
+ - custom_types/serviceinstancelink.yaml
+ - custom_types/vtnservice.yaml
+
+description: Configures the VTN ONOS service
+
+topology_template:
+ node_templates:
+
+ service#ONOS_CORD:
+ type: tosca.nodes.ONOSService
+ properties:
+ name: ONOS_CORD
+ kind: platform
+ no_container: true
+ rest_hostname: onos-cord.{{ site_suffix }}
+ rest_port: 8182
+
+ service#vtn:
+ type: tosca.nodes.VTNService
+ properties:
+ name: vtn
+ kind: platform
+ view_url: /admin/vtn/vtnservice/$id$/
+ privateGatewayMac: 00:00:00:00:00:01
+ localManagementIp: {{ management_network_ip }}
+ ovsdbPort: 6641
+ sshUser: root
+ sshKeyFile: /root/node_key
+ sshPort: 22
+ xosEndpoint: xos-chameleon.{{ site_suffix }}:{{ xos_chameleon_port }}
+ xosUser: {{ xos_admin_user }}
+ xosPassword: {{ xos_admin_pass }}
+ vtnAPIVersion: 2
+ controllerPort: onos-cord.{{ site_suffix }}:6654
+ resync: false
+
+ VTN_ONOS_app:
+ type: tosca.nodes.ONOSApp
+ requirements:
+ - owner:
+ node: service#ONOS_CORD
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: VTN_ONOS_app
+ install_dependencies: {{ onos_mavenrepo_url }}/repository/org/opencord/cord-config/{{ cord_config_app_version }}/cord-config-{{ cord_config_app_version }}.oar, {{ onos_mavenrepo_url }}/repository/org/opencord/vtn/{{ cord_vtn_app_version }}/vtn-{{ cord_vtn_app_version }}.oar
+ dependencies: org.onosproject.drivers, org.onosproject.drivers.ovsdb, org.onosproject.openflow-base, org.onosproject.ovsdb-base, org.onosproject.dhcp
+ # autogenerate: vtn-network-cfg
+
+ VTN_ONOS_app_autogenerate:
+ type: tosca.nodes.ServiceInstanceAttribute
+ requirements:
+ - service_instance:
+ node: VTN_ONOS_app
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: autogenerate
+ value: vtn-network-cfg
+
+ VTN_ONOS_app_VTN_Service:
+ type: tosca.nodes.ServiceInstanceLink
+ requirements:
+ - provider_service_instance:
+ node: VTN_ONOS_app
+ relationship: tosca.relationships.BelongsToOne
+ - subscriber_service:
+ node: service#vtn
+ relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/xos-gui-extensions.yml.j2 b/templates/xos-gui-extensions.yml.j2
new file mode 100644
index 0000000..f10c695
--- /dev/null
+++ b/templates/xos-gui-extensions.yml.j2
@@ -0,0 +1,37 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Persist xos-sample-gui-extension
+
+imports:
+ - custom_types/xosguiextension.yaml
+
+topology_template:
+ node_templates:
+
+ # UI Extension
+{% for ext in enabled_gui_extensions %}
+ {{ext.name}}:
+ type: tosca.nodes.XOSGuiExtension
+ properties:
+ name: {{ext.name}}
+ files: /xos/extensions/{{ext.name}}/vendor.js, /xos/extensions/{{ext.name}}/app.js {% if ext.extra_files is defined %}{% for file in ext.extra_files%}, /xos/extensions/{{ext.name}}/{{file}} {% endfor %}{% endif %}
+
+{% endfor %}