blob: bd5fcc7835c5f3c8b4367297fc84b81938476dda [file] [log] [blame]
{#
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/xos.yaml
- custom_types/vtr.yaml
topology_template:
node_templates:
# site, image, fully created in deployment.yaml
{{ site_name }}:
type: tosca.nodes.Site
image#vsg-1.1:
type: tosca.nodes.Image
# management networks, fully created in management-net.yaml
management:
type: tosca.nodes.network.Network.XOS
properties:
no-create: true
no-delete: true
no-update: true
{% if use_management_hosts %}
management_hosts:
type: tosca.nodes.network.Network.XOS
properties:
no-create: true
no-delete: true
no-update: true
{% endif %}
service#rcord:
type: tosca.nodes.Service
# ONOS_CORD, fully created in vtn.yaml
service#ONOS_CORD:
type: tosca.nodes.ONOSService
properties:
no-delete: true
no-create: true
no-update: true
# ONOS_Fabric, fully created in fabric.yaml
service#ONOS_Fabric:
type: tosca.nodes.ONOSService
properties:
no-delete: true
no-create: true
no-update: true
# CORD Services
service#vtr:
type: tosca.nodes.VTRService
properties:
view_url: /admin/vtr/vtrservice/$id$/
kind: vTR
replaces: service_vtr
service#volt:
type: tosca.nodes.VOLTService
requirements:
- vsg_tenant:
node: service#vsg
relationship: tosca.relationships.TenantOfService
properties:
view_url: /admin/volt/voltservice/$id$/
kind: vOLT
replaces: service_volt
public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
private_key_fn: /opt/xos/services/volt/keys/volt_rsa
artifacts:
pubkey: /opt/cord_profile/key_import/volt_rsa.pub
addresses_vsg:
type: tosca.nodes.AddressPool
properties:
addresses: 10.7.1.128/26
gateway_ip: 10.7.1.129
gateway_mac: a4:23:05:06:01:01
addresses_public:
type: tosca.nodes.AddressPool
properties:
addresses: 10.7.1.192/26
gateway_ip: 10.7.1.193
gateway_mac: a4:23:05:06:01:01
label_vsg:
type: tosca.nodes.NodeLabel
service#vsg:
type: tosca.nodes.VSGService
requirements:
- vrouter_tenant:
node: service#vrouter
relationship: tosca.relationships.TenantOfService
properties:
view_url: /admin/vsg/vsgservice/$id$/
backend_network_label: hpc_client
public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
private_key_fn: /opt/xos/services/vsg/keys/vsg_rsa
# node_label: label_vsg
replaces: service_vsg
artifacts:
pubkey: /opt/cord_profile/key_import/vsg_rsa.pub
service#vrouter:
type: tosca.nodes.VRouterService
properties:
view_url: /admin/vrouter/vrouterservice/$id$/
replaces: service_vrouter
requirements:
- addresses_vsg:
node: addresses_vsg
relationship: tosca.relationships.ProvidesAddresses
- addresses_public:
node: addresses_public
relationship: tosca.relationships.ProvidesAddresses
vRouter_ONOS_app:
type: tosca.nodes.ONOSvRouterApp
requirements:
- onos_tenant:
node: service#ONOS_Fabric
relationship: tosca.relationships.TenantOfService
- vrouter_service:
node: service#vrouter
relationship: tosca.relationships.UsedByService
properties:
dependencies: org.onosproject.fpm
autogenerate: vrouter-network-cfg
template#vsg:
type: tosca.nodes.NetworkTemplate
properties:
visibility: private
translation: none
vtn_kind: VSG
# Networks required by the CORD setup
{{ site_name }}_vsg-access:
type: tosca.nodes.network.Network
properties:
ip_version: 4
requirements:
- network_template:
node: template#vsg
relationship: tosca.relationships.UsesNetworkTemplate
- owner:
node: {{ site_name }}_vsg
relationship: tosca.relationships.MemberOfSlice
- connection:
node: {{ site_name }}_vsg
relationship: tosca.relationships.ConnectsToSlice
# CORD Slices
{{ site_name }}_vsg:
description: vSG Controller Slice
type: tosca.nodes.Slice
properties:
network: noauto
requirements:
- vsg_service:
node: service#vsg
relationship: tosca.relationships.MemberOfService
- site:
node: {{ site_name }}
relationship: tosca.relationships.MemberOfSite
- management:
node: management
relationship: tosca.relationships.ConnectsToNetwork
{% if use_management_hosts %}
- management_hosts:
node: management_hosts
relationship: tosca.relationships.ConnectsToNetwork
{% endif %}
- image:
node: image#vsg-1.1
relationship: tosca.relationships.DefaultImage
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
vrouter_wanside:
type: tosca.nodes.ServiceInterface
requirements:
- service:
node: service#vrouter
relationship: tosca.relationships.MemberOfService
- interface:
node: in#wanside
relationship: tosca.relationships.IsType