blob: 4dea365157b4495449396a3448939b10715a5a74 [file] [log] [blame]
tosca_definitions_version: tosca_simple_yaml_1_0
description: Setup CORD-related services -- vOLT, vCPE, vBNG.
imports:
- custom_types/xos.yaml
topology_template:
node_templates:
# CORD Services
service_volt:
type: tosca.nodes.Service
requirements:
- vsg_tenant:
node: service_vsg
relationship: tosca.relationships.TenantOfService
- lan_network:
node: lan_network
relationship: tosca.relationships.UsesNetwork
- wan_network:
node: wan_network
relationship: tosca.relationships.UsesNetwork
properties:
view_url: /admin/cord/voltservice/$id$/
kind: vOLT
# set a pool of addresses that we can hand out for the VSG Wan.
public_addresses:
type: tosca.nodes.AddressPool
properties:
addresses: 10.123.0.0/24 10.124.0.0/24
service_vsg:
type: tosca.nodes.VSGService
requirements:
- vbng_tenant:
node: service_vbng
relationship: tosca.relationships.TenantOfService
properties:
view_url: /admin/cord/vsgservice/$id$/
backend_network_label: hpc_client
public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
private_key_fn: /opt/xos/synchronizers/vcpe/vcpe_private_key
# node_label: label_vsg
artifacts:
pubkey: /opt/xos/synchronizers/vcpe/vcpe_public_key
service_vbng:
type: tosca.nodes.VBNGService
properties:
view_url: /admin/cord/vbngservice/$id$/
# if unspecified, vbng observer will look for an ONOSApp Tenant and
# generate a URL from its IP address
# vbng_url: http://10.11.10.24:8181/onos/virtualbng/
service_ONOS_vBNG:
type: tosca.nodes.ONOSService
requirements:
properties:
kind: onos
view_url: /admin/onos/onosservice/$id$/
public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
artifacts:
pubkey: /opt/xos/synchronizers/onos/onos_key.pub
#
# To actually bring up the vBNG app
# - Set up the dataplane using the ansible script
# - Log into the vBNG ONOS and run 'devices' to get switch dpID
# - Change the dpID values in vBNG ONOS app in XOS GUI
# - (Synchronizer should copy the files to ONOS container immediately)
# - Log into service_ONOS_vBNG VM and restart ONOS Docker container
# (Should roll this step into a Synchronizer)
#f
vBNG_ONOS_app:
type: tosca.nodes.ONOSvBNGApp
requirements:
- onos_tenant:
node: service_ONOS_vBNG
relationship: tosca.relationships.TenantOfService
- vbng_service:
node: service_vbng
relationship: tosca.relationships.UsedByService
properties:
dependencies: org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd
config_network-cfg.json: >
{
"ports" : {
"of:0000000000000001/1" : {
"interfaces" : [
{
"ips" : [ "10.0.1.253/24" ],
"mac" : "00:00:00:00:00:99"
}
]
},
"of:0000000000000001/2" : {
"interfaces" : [
{
"ips" : [ "10.254.0.2/24" ],
"mac" : "00:00:00:00:00:98"
}
]
}
}
}
config_virtualbng.json: { get_artifact: [ SELF, virtualbng_json, LOCAL_FILE] }
artifacts:
virtualbng_json: /root/setup/virtualbng.json
service_ONOS_vOLT:
type: tosca.nodes.ONOSService
requirements:
properties:
kind: onos
view_url: /admin/onos/onosservice/$id$/
public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
rest_onos/v1/network/configuration/: >
{
"devices" : {
"of:0000000000000001" : {
"accessDevice" : {
"uplink" : "2",
"vlan" : "222",
"defaultVlan" : "1"
},
"basic" : {
"driver" : "pmc-olt"
}
}
}
}
artifacts:
pubkey: /opt/xos/synchronizers/onos/onos_key.pub
vOLT_ONOS_app:
type: tosca.nodes.ONOSvOLTApp
requirements:
- onos_tenant:
node: service_ONOS_vOLT
relationship: tosca.relationships.TenantOfService
- volt_service:
node: service_volt
relationship: tosca.relationships.UsedByService
properties:
install_dependencies: onos-ext-notifier-1.0-SNAPSHOT.oar, onos-ext-volt-event-publisher-1.0-SNAPSHOT.oar
dependencies: org.onosproject.openflow-base, org.onosproject.olt, org.ciena.onos.ext_notifier, org.ciena.onos.volt_event_publisher
component_config: >
{
"org.ciena.onos.ext_notifier.KafkaNotificationBridge":{
"rabbit.user": "<rabbit_user>",
"rabbit.password": "<rabbit_password>",
"rabbit.host": "<rabbit_host>",
"publish.kafka": "false",
"publish.rabbit": "true",
"volt.events.rabbit.topic": "notifications.info",
"volt.events.rabbit.exchange": "voltlistener",
"volt.events.opaque.info": "{project_id: <keystone_tenant_id>, user_id: <keystone_user_id>}",
"publish.volt.events": "true"
}
}
# config_network-cfg.json: >
# {
# "devices" : {
# "of:0000000000000001" : {
# "accessDevice" : {
# "uplink" : "2",
# "vlan" : "222",
# "defaultVlan" : "1"
# },
# "basic" : {
# "driver" : "default"
# }
# }
# }
# }
# Network templates
Private:
type: tosca.nodes.NetworkTemplate
Public network hack:
type: tosca.nodes.NetworkTemplate
properties:
visibility: private
translation: NAT
shared_network_name: tun0-net
# Networks required by the CORD setup
lan_network:
type: tosca.nodes.network.Network
properties:
ip_version: 4
requirements:
- network_template:
node: Private
relationship: tosca.relationships.UsesNetworkTemplate
- owner:
node: mysite_vsg
relationship: tosca.relationships.MemberOfSlice
- connection:
node: mysite_vsg
relationship: tosca.relationships.ConnectsToSlice
- connection:
node: mysite_vsg
relationship: tosca.relationships.ConnectsToSlice
wan_network:
type: tosca.nodes.network.Network
properties:
ip_version: 4
requirements:
- network_template:
node: Private
relationship: tosca.relationships.UsesNetworkTemplate
- owner:
node: mysite_vsg
relationship: tosca.relationships.MemberOfSlice
- connection:
node: mysite_vsg
relationship: tosca.relationships.ConnectsToSlice
- connection:
node: mysite_vsg
relationship: tosca.relationships.ConnectsToSlice
Private-Direct:
type: tosca.nodes.NetworkTemplate
properties:
access: direct
Private-Indirect:
type: tosca.nodes.NetworkTemplate
properties:
access: indirect
subscriber_network:
type: tosca.nodes.network.Network
properties:
ip_version: 4
requirements:
- network_template:
node: Private
relationship: tosca.relationships.UsesNetworkTemplate
- owner:
node: mysite_volt
relationship: tosca.relationships.MemberOfSlice
- connection:
node: mysite_volt
relationship: tosca.relationships.ConnectsToSlice
- connection:
node: mysite_clients
relationship: tosca.relationships.ConnectsToSlice
public_network:
type: tosca.nodes.network.Network
properties:
requirements:
- network_template:
node: Public network hack
relationship: tosca.relationships.UsesNetworkTemplate
- owner:
node: mysite_vbng
relationship: tosca.relationships.MemberOfSlice
- connection:
node: mysite_vbng
relationship: tosca.relationships.ConnectsToSlice
mysite:
type: tosca.nodes.Site
label_vsg:
type: tosca.nodes.NodeLabel
# CORD Slices
mysite_vsg:
description: vSG Controller Slice
type: tosca.nodes.Slice
requirements:
- vsg_service:
node: service_vsg
relationship: tosca.relationships.MemberOfService
- site:
node: mysite
relationship: tosca.relationships.MemberOfSite
- vsg_docker_image:
node: docker-vsg
relationship: tosca.relationships.UsesImage
# properties:
# default_isolation: container
mysite_onos_vbng:
description: ONOS Controller Slice for vBNG
type: tosca.nodes.Slice
requirements:
- ONOS:
node: service_ONOS_vBNG
relationship: tosca.relationships.MemberOfService
- site:
node: mysite
relationship: tosca.relationships.MemberOfSite
mysite_onos_volt:
description: ONOS Controller Slice for vOLT
type: tosca.nodes.Slice
requirements:
- ONOS:
node: service_ONOS_vOLT
relationship: tosca.relationships.MemberOfService
- site:
node: mysite
relationship: tosca.relationships.MemberOfSite
mysite_vbng:
description: slice running OVS controlled by vBNG
type: tosca.nodes.Slice
requirements:
- site:
node: mysite
relationship: tosca.relationships.MemberOfSite
mysite_volt:
description: OVS controlled by vOLT
type: tosca.nodes.Slice
requirements:
- site:
node: mysite
relationship: tosca.relationships.MemberOfSite
mysite_clients:
description: slice for clients at the subscriber
type: tosca.nodes.Slice
requirements:
- site:
node: mysite
relationship: tosca.relationships.MemberOfSite
# Virtual machines
onos_app_1:
type: tosca.nodes.Compute
capabilities:
# Host container properties
host:
properties:
num_cpus: 1
disk_size: 10 GB
mem_size: 4 MB
# Guest Operating System properties
os:
properties:
# host Operating System image properties
architecture: x86_64
type: linux
distribution: Ubuntu
version: 14.10
requirements:
- slice:
node: mysite_onos_vbng
relationship: tosca.relationships.MemberOfSlice
onos_app_2:
type: tosca.nodes.Compute
capabilities:
# Host container properties
host:
properties:
num_cpus: 1
disk_size: 10 GB
mem_size: 4 MB
# Guest Operating System properties
os:
properties:
# host Operating System image properties
architecture: x86_64
type: linux
distribution: Ubuntu
version: 14.10
requirements:
- slice:
node: mysite_onos_volt
relationship: tosca.relationships.MemberOfSlice
# VM for running the OVS controlled by vBNG
ovs_vbng:
type: tosca.nodes.Compute
capabilities:
# Host container properties
host:
properties:
num_cpus: 1
disk_size: 10 GB
mem_size: 4 MB
# Guest Operating System properties
os:
properties:
# host Operating System image properties
architecture: x86_64
type: linux
distribution: ubuntu
version: 14.04
requirements:
- slice:
node: mysite_vbng
relationship: tosca.relationships.MemberOfSlice
# VM for running the OVS controlled by vOLT
ovs_volt:
type: tosca.nodes.Compute
capabilities:
# Host container properties
host:
properties:
num_cpus: 1
disk_size: 10 GB
mem_size: 4 MB
# Guest Operating System properties
os:
properties:
# host Operating System image properties
architecture: x86_64
type: linux
distribution: ubuntu
version: 14.04
requirements:
- slice:
node: mysite_volt
relationship: tosca.relationships.MemberOfSlice
# A subscriber client VM
client1:
type: tosca.nodes.Compute
capabilities:
# Host container properties
host:
properties:
num_cpus: 1
disk_size: 10 GB
mem_size: 4 MB
# Guest Operating System properties
os:
properties:
# host Operating System image properties
architecture: x86_64
type: linux
distribution: ubuntu
version: 14.04
requirements:
- slice:
node: mysite_clients
relationship: tosca.relationships.MemberOfSlice
# docker image for vsg containers
docker-vsg:
# TODO: need to attach this to mydeployment
type: tosca.nodes.Image
properties:
kind: container
container_format: na
disk_format: na
path: andybavier/docker-vcpe
tag: develop
# Let's add a user who can be administrator of the household
johndoe@myhouse.com:
type: tosca.nodes.User
properties:
password: letmein
firstname: john
lastname: doe
requirements:
- site:
node: mysite
relationship: tosca.relationships.MemberOfSite
# A subscriber
My House:
type: tosca.nodes.CORDSubscriber
properties:
service_specific_id: 123
firewall_enable: false
cdn_enable: false
url_filter_enable: false
url_filter_level: R
requirements:
- house_admin:
node: johndoe@myhouse.com
relationship: tosca.relationships.AdminPrivilege
Mom's PC:
type: tosca.nodes.CORDUser
properties:
mac: 01:02:03:04:05:06
level: PG_13
requirements:
- household:
node: My House
relationship: tosca.relationships.SubscriberDevice
Dad's PC:
type: tosca.nodes.CORDUser
properties:
mac: 90:E2:BA:82:F9:75
level: PG_13
requirements:
- household:
node: My House
relationship: tosca.relationships.SubscriberDevice
Jack's Laptop:
type: tosca.nodes.CORDUser
properties:
mac: 68:5B:35:9D:91:D5
level: PG_13
requirements:
- household:
node: My House
relationship: tosca.relationships.SubscriberDevice
Jill's Laptop:
type: tosca.nodes.CORDUser
properties:
mac: 34:36:3B:C9:B6:A6
level: PG_13
requirements:
- household:
node: My House
relationship: tosca.relationships.SubscriberDevice
My Volt:
type: tosca.nodes.VOLTTenant
properties:
service_specific_id: 123
s_tag: 222
c_tag: 432
requirements:
- provider_service:
node: service_volt
relationship: tosca.relationships.MemberOfService
- subscriber:
node: My House
relationship: tosca.relationships.BelongsToSubscriber