[CORD-2349] Migrating REM-CORD
Change-Id: Iae573428e3bee89026262055263f24a32dd12183
diff --git a/compute-node-refresh-playbook.yml b/compute-node-refresh-playbook.yml
index c1d82b2..ce9dafd 100644
--- a/compute-node-refresh-playbook.yml
+++ b/compute-node-refresh-playbook.yml
@@ -38,8 +38,7 @@
- include: add-onboard-containers-playbook.yml
- name: Enable compute nodes in XOS
- hosts: xos_ui
- connection: docker
+ hosts: head
roles:
- compute-node-enable
diff --git a/onboard-profile-playbook.yml b/onboard-profile-playbook.yml
index fd0ab58..2711146 100644
--- a/onboard-profile-playbook.yml
+++ b/onboard-profile-playbook.yml
@@ -26,12 +26,6 @@
roles:
- xos-ready
-- name: Apply profile config
- hosts: xos_ui
- connection: docker
- roles:
- - xos-config
-
- name: Include vars
hosts: config
tasks:
@@ -46,3 +40,8 @@
roles:
- xos-config-new-tosca
+- name: Apply profile config
+ hosts: xos_ui
+ connection: docker
+ roles:
+ - xos-config
diff --git a/profile_manifests/base-cord.yml b/profile_manifests/base-cord.yml
index e277eb3..0a20773 100644
--- a/profile_manifests/base-cord.yml
+++ b/profile_manifests/base-cord.yml
@@ -29,7 +29,7 @@
use_maas: True
# XOS config
-xos_tosca_config_templates:
+xos_new_tosca_config_templates:
- vtn-service.yaml
- fabric-service.yaml
- management-net.yaml
diff --git a/profile_manifests/ecord-global.yml b/profile_manifests/ecord-global.yml
index a376471..3f9d329 100644
--- a/profile_manifests/ecord-global.yml
+++ b/profile_manifests/ecord-global.yml
@@ -30,13 +30,11 @@
use_apt_cache: True
# XOS config
-xos_tosca_config_templates:
- - onos-global-service.yaml
- - xos-gui-extensions.yml
- - carrierethernet-global-app.yaml
-
xos_new_tosca_config_templates:
+ - onos-global-service.yaml
+ - carrierethernet-global-app.yaml
- service-graph-constraints.yaml
+ - xos-gui-extensions.yml
xos_other_templates:
diff --git a/profile_manifests/ecord.yml b/profile_manifests/ecord.yml
index 55dcc41..21a2536 100644
--- a/profile_manifests/ecord.yml
+++ b/profile_manifests/ecord.yml
@@ -29,17 +29,15 @@
use_maas: True
# XOS config
-xos_tosca_config_templates:
+xos_new_tosca_config_templates:
- vtn-service.yaml
- fabric-service.yaml
- management-net.yaml
- ecord-services.yaml
- public-net.yaml
- vee-service.yaml
- - xos-gui-extensions.yml
- carrierethernet-local-app.yaml
-
-xos_new_tosca_config_templates:
+ - xos-gui-extensions.yml
- service-graph-constraints.yaml
xos_other_templates:
@@ -257,11 +255,3 @@
- name: "vsg-1.1"
url: "https://github.com/opencord/vsg/releases/download/vms/vsg-1.1.img"
checksum: "sha256:16b0beb6778aed0f5feecb05f8d5750e6c262f98e6011e99ddadf7d46a177b6f"
-
- - name: "ceilometer-trusty-server-multi-nic"
- url: "https://github.com/opencord/platform-install/releases/download/vms/ceilometer-trusty-server-multi-nic.compressed.qcow2"
- checksum: "sha256:b77ef8d692b640568dea13df99fe1dfcb1f4bb4ac05408db9ff77399b34f754f"
-
- - name: "ceilometer-service-trusty-server-multi-nic"
- url: "https://github.com/opencord/platform-install/releases/download/vms/ceilometer-service-trusty-server-multi-nic.compressed.qcow2.20170131"
- checksum: "sha256:f0341e283f0f2cb8f70cd1a6347e0081c9c8492ef34eb6397c657ef824800d4f"
diff --git a/profile_manifests/mcord-ng40.yml b/profile_manifests/mcord-ng40.yml
index 170bd66..d473815 100644
--- a/profile_manifests/mcord-ng40.yml
+++ b/profile_manifests/mcord-ng40.yml
@@ -29,16 +29,13 @@
use_maas: True
# XOS config
-xos_tosca_config_templates:
+xos_new_tosca_config_templates:
- vtn-service.yaml
- fabric-service.yaml
- management-net.yaml
- shared-net.yaml
- wan-net.yaml
- vsg-net.yaml
- - xos-gui-extensions.yml
-
-xos_new_tosca_config_templates:
- s11-net.yaml
- s1u-net.yaml
- nbi-net.yaml
@@ -47,6 +44,7 @@
- sgi-net.yaml
- flat-net.yaml
- mcord-ng40-services.yml
+ - xos-gui-extensions.yml
- service-graph-constraints.yaml
xos_other_templates:
diff --git a/profile_manifests/mcord-spirent.yml b/profile_manifests/mcord-spirent.yml
index 10c2127..00ec35a 100644
--- a/profile_manifests/mcord-spirent.yml
+++ b/profile_manifests/mcord-spirent.yml
@@ -29,7 +29,8 @@
use_maas: True
# XOS config
-xos_tosca_config_templates:
+
+xos_new_tosca_config_templates:
- vtn-service.yaml
- fabric-service.yaml
- management-net.yaml
@@ -37,8 +38,6 @@
- wan-net.yaml
- vsg-net.yaml
- xos-gui-extensions.yml
-
-xos_new_tosca_config_templates:
- s11-net.yaml
- s1u-net.yaml
- nbi-net.yaml
diff --git a/profile_manifests/mcord.yml b/profile_manifests/mcord.yml
index 1c85f86..fb8fdeb 100644
--- a/profile_manifests/mcord.yml
+++ b/profile_manifests/mcord.yml
@@ -29,7 +29,7 @@
use_maas: True
# XOS config
-xos_tosca_config_templates:
+xos_new_tosca_config_templates:
- vtn-service.yaml
- fabric-service.yaml
- management-net.yaml
@@ -37,8 +37,6 @@
- wan-net.yaml
- vsg-net.yaml
- xos-gui-extensions.yml
-
-xos_new_tosca_config_templates:
- s11-net.yaml
- s1u-net.yaml
- s1mme-net.yaml
diff --git a/profile_manifests/rcord.yml b/profile_manifests/rcord.yml
index c7b459d..cfee43c 100644
--- a/profile_manifests/rcord.yml
+++ b/profile_manifests/rcord.yml
@@ -29,17 +29,14 @@
use_maas: True
# XOS config
-xos_tosca_config_templates:
+xos_new_tosca_config_templates:
- vtn-service.yaml
- fabric-service.yaml
- management-net.yaml
- - cord-services.yaml # should unify this with services.yaml.j2 eventually
+ - cord-services.yaml
- public-net.yaml
- - vrouter.yaml
- - xos-gui-extensions.yml
-
-xos_new_tosca_config_templates:
- service-graph-constraints.yaml
+ - xos-gui-extensions.yml
xos_other_templates:
- fabric-network-cfg.json
diff --git a/roles/compute-node-config/templates/openstack-compute-vtn.yaml.j2 b/roles/compute-node-config/templates/openstack-compute-vtn.yaml.j2
index f9c093b..e8eafb0 100644
--- a/roles/compute-node-config/templates/openstack-compute-vtn.yaml.j2
+++ b/roles/compute-node-config/templates/openstack-compute-vtn.yaml.j2
@@ -19,7 +19,9 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/onosservice.yaml
+ - custom_types/node.yaml
+ - custom_types/node.yaml
description: Configures VTN networking for OpenStack compute nodes
@@ -30,18 +32,16 @@
service#ONOS_CORD:
type: tosca.nodes.ONOSService
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: ONOS_CORD
+ must-exist: true
{% if use_fabric %}
# Fabric, fully defined in fabric.yaml
service#ONOS_Fabric:
type: tosca.nodes.ONOSService
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: ONOS_Fabric
+ must-exist: true
{% endif %}
# VTN networking for OpenStack Compute Nodes
@@ -55,8 +55,8 @@
{{ hostvars[node]['ansible_hostname'] }}:
type: tosca.nodes.Node
properties:
- no-delete: true
- no-create: true
+ must-exist: true
+ name: {{ hostvars[node]['ansible_hostname'] }}
bridgeId: of:0000{{ node_interface['macaddress'] | hwaddr('bare') }}
dataPlaneIntf: fabric
dataPlaneIp: {{ ( node_interface['ipv4']['address'] ~ '/' ~ node_interface['ipv4']['netmask'] ) | ipaddr('cidr') }}
diff --git a/roles/compute-node-config/templates/openstack-compute.yaml.j2 b/roles/compute-node-config/templates/openstack-compute.yaml.j2
index 6a77a43..d5340f7 100644
--- a/roles/compute-node-config/templates/openstack-compute.yaml.j2
+++ b/roles/compute-node-config/templates/openstack-compute.yaml.j2
@@ -19,7 +19,10 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/deployment.yaml
+ - custom_types/node.yaml
+ - custom_types/site.yaml
+ - custom_types/sitedeployment.yaml
description: Adds OpenStack compute nodes
@@ -30,16 +33,14 @@
{{ site_name }}:
type: tosca.nodes.Site
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: {{ site_name }}
+ must-exist: true
{{ deployment_type }}:
type: tosca.nodes.Deployment
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: {{ deployment_type }}
+ must-exist: true
# OpenStack compute nodes
{% for node in groups['compute'] %}
@@ -51,13 +52,22 @@
# Compute node: {{ node }}, with interface {{ ansible_ext_if }}
{{ hostvars[node]['ansible_hostname'] }}:
type: tosca.nodes.Node
+ properties:
+ name: {{ hostvars[node]['ansible_hostname'] }}
+ requirements:
+ - site_deployment:
+ node: {{ site_name }}_{{ deployment_type }}
+ relationship: tosca.relationships.BelongsToOne
+
+ {{ site_name }}_{{ deployment_type }}:
+ type: tosca.nodes.SiteDeployment
requirements:
- site:
node: {{ site_name }}
- relationship: tosca.relationships.MemberOfSite
+ relationship: tosca.relationships.BelongsToOne
- deployment:
node: {{ deployment_type }}
- relationship: tosca.relationships.MemberOfDeployment
+ relationship: tosca.relationships.BelongsToOne
{% endif %}
{% endfor %}
diff --git a/roles/compute-node-enable-maas/defaults/main.yml b/roles/compute-node-enable-maas/defaults/main.yml
index 62cedcb..a08b076 100644
--- a/roles/compute-node-enable-maas/defaults/main.yml
+++ b/roles/compute-node-enable-maas/defaults/main.yml
@@ -18,7 +18,11 @@
head_cord_profile_dir: "/opt/cord_profile"
+credentials_dir: "{{ playbook_dir }}/credentials"
xos_admin_user: "xosadmin@opencord.org"
+xos_admin_pass: "{{ lookup('password', credentials_dir ~ '/xosadmin@opencord.org chars=ascii_letters,digits') }}"
+
+
maas_xos_admin_pass: "{{ lookup('file', '/opt/credentials/xosadmin@opencord.org') }}"
-xos_ui_port: 9000
+xos_tosca_url: "http://xos-tosca/xos-tosca"
diff --git a/roles/compute-node-enable-maas/tasks/main.yml b/roles/compute-node-enable-maas/tasks/main.yml
index 5a00ad8..f84315b 100644
--- a/roles/compute-node-enable-maas/tasks/main.yml
+++ b/roles/compute-node-enable-maas/tasks/main.yml
@@ -30,11 +30,14 @@
- openstack-compute-vtn.yaml
- name: Load TOSCA to add OpenStack compute nodes, over REST
- xostosca:
- url: "http://xos.{{ site_suffix }}:{{ xos_ui_port }}/api/utility/tosca/run/"
- user: "{{ xos_admin_user }}"
- password: "{{ maas_xos_admin_pass }}"
- recipe: "{{ lookup('file', '/tmp/' + item ) }}"
+ uri:
+ url: "{{ xos_tosca_url }}/run"
+ method: POST
+ headers:
+ xos-username: "{{ xos_admin_user }}"
+ xos-password: "{{ xos_admin_pass }}"
+ body: "{{ lookup('file', '/tmp/' + item ) }}"
+ status_code: 200
with_items:
- openstack.yaml
- openstack-compute.yaml
@@ -44,11 +47,13 @@
seconds: 20
- name: Load TOSCA to enable VTN on OpenStack compute nodes, over REST
- xostosca:
- url: "http://xos.{{ site_suffix }}:{{ xos_ui_port }}/api/utility/tosca/run/"
- user: "{{ xos_admin_user }}"
- password: "{{ maas_xos_admin_pass }}"
- recipe: "{{ lookup('file', '/tmp/' + item ) }}"
+ uri:
+ url: "{{ xos_tosca_url }}/run"
+ method: POST
+ headers:
+ xos-username: "{{ xos_admin_user }}"
+ xos-password: "{{ xos_admin_pass }}"
+ body: "{{ lookup('file', '/tmp/' + item ) }}"
with_items:
- vtn-service.yaml
- openstack-compute-vtn.yaml
diff --git a/roles/compute-node-enable/defaults/main.yml b/roles/compute-node-enable/defaults/main.yml
index 69af4b6..4123df8 100644
--- a/roles/compute-node-enable/defaults/main.yml
+++ b/roles/compute-node-enable/defaults/main.yml
@@ -17,7 +17,12 @@
---
# compute-node-enable/defaults/main.yml
+xos_tosca_url: "http://xos-tosca/xos-tosca"
+
+head_credentials_dir: "/opt/credentials"
+
head_cord_profile_dir: "/opt/cord_profile"
xos_admin_user: "xosadmin@opencord.org"
+xos_admin_pass: "{{ lookup('password', head_credentials_dir ~ '/xosadmin@opencord.org chars=ascii_letters,digits') }}"
diff --git a/roles/compute-node-enable/tasks/main.yml b/roles/compute-node-enable/tasks/main.yml
index 453b15a..2644671 100644
--- a/roles/compute-node-enable/tasks/main.yml
+++ b/roles/compute-node-enable/tasks/main.yml
@@ -18,7 +18,14 @@
# compute-node-enable/tasks/main.yml
- name: Load TOSCA to add OpenStack compute nodes
- command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} {{ head_cord_profile_dir }}/{{ item }}"
+ uri:
+ url: "{{ xos_tosca_url }}/run"
+ method: POST
+ headers:
+ xos-username: "{{ xos_admin_user }}"
+ xos-password: "{{ xos_admin_pass }}"
+ body: "{{ lookup('file', head_cord_profile_dir + '/' + item ) }}"
+ status_code: 200
with_items:
- openstack.yaml
- openstack-compute.yaml
@@ -30,7 +37,14 @@
seconds: 20
- name: Load TOSCA to enable VTN on OpenStack compute nodes
- command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} {{ head_cord_profile_dir }}/{{ item }}"
+ uri:
+ url: "{{ xos_tosca_url }}/run"
+ method: POST
+ headers:
+ xos-username: "{{ xos_admin_user }}"
+ xos-password: "{{ xos_admin_pass }}"
+ body: "{{ lookup('file', head_cord_profile_dir + '/' + item ) }}"
+ status_code: 200
with_items:
- vtn-service.yaml
- openstack-compute-vtn.yaml
diff --git a/roles/cord-profile/files/disable-onboarding.yaml b/roles/cord-profile/files/disable-onboarding.yaml
deleted file mode 100644
index f3f5b31..0000000
--- a/roles/cord-profile/files/disable-onboarding.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-# 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: Disable builds for the Onboarding synchronizer
-
-imports:
- - custom_types/xos.yaml
-
-topology_template:
- node_templates:
- xos:
- type: tosca.nodes.XOS
- properties:
- no-create: true
- no-delete: true
- enable_build: false
-
diff --git a/roles/cord-profile/files/enable-onboarding.yaml b/roles/cord-profile/files/enable-onboarding.yaml
deleted file mode 100644
index 6f41a4b..0000000
--- a/roles/cord-profile/files/enable-onboarding.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-# 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: Enable builds for the Onboarding synchronizer
-
-imports:
- - custom_types/xos.yaml
-
-topology_template:
- node_templates:
- xos:
- type: tosca.nodes.XOS
- properties:
- no-create: true
- no-delete: true
- enable_build: true
-
diff --git a/roles/cord-profile/files/fixtures.yaml b/roles/cord-profile/files/fixtures.yaml
index f1ff639..4dcda54 100644
--- a/roles/cord-profile/files/fixtures.yaml
+++ b/roles/cord-profile/files/fixtures.yaml
@@ -19,13 +19,21 @@
description: Some basic fixtures
imports:
- - custom_types/xos.yaml
+ - custom_types/deploymentrole.yaml
+ - custom_types/flavor.yaml
+ - custom_types/siterole.yaml
+ - custom_types/slicerole.yaml
+ - custom_types/networkparametertype.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/xos.yaml
topology_template:
node_templates:
xos:
type: tosca.nodes.XOS
+ properties:
+ name: xos
# -----------------------------------------------------------------------------
# Network Parameter Types
@@ -33,21 +41,32 @@
s_tag:
type: tosca.nodes.NetworkParameterType
-
+ properties:
+ name: s_tag
c_tag:
type: tosca.nodes.NetworkParameterType
+ properties:
+ name: c_tag
next_hop:
type: tosca.nodes.NetworkParameterType
+ properties:
+ name: next_hop
device:
type: tosca.nodes.NetworkParameterType
+ properties:
+ name: device
bridge:
type: tosca.nodes.NetworkParameterType
+ properties:
+ name: bridge
neutron_port_name:
type: tosca.nodes.NetworkParameterType
+ properties:
+ name: neutron_port_name
# ----------------------------------------------------------------------------
# Roles
@@ -55,21 +74,33 @@
siterole#admin:
type: tosca.nodes.SiteRole
+ properties:
+ role: admin
siterole#pi:
type: tosca.nodes.SiteRole
+ properties:
+ role: pi
siterole#tech:
type: tosca.nodes.SiteRole
+ properties:
+ role: tech
deploymentrole#admin:
type: tosca.nodes.DeploymentRole
+ properties:
+ role: admin
slicerole#admin:
type: tosca.nodes.SliceRole
+ properties:
+ role: admin
slicerole#access:
type: tosca.nodes.SliceRole
+ properties:
+ role: access
# -----------------------------------------------------------------------------
# Flavors
@@ -77,15 +108,23 @@
m1.small:
type: tosca.nodes.Flavor
+ properties:
+ name: m1.small
m1.medium:
type: tosca.nodes.Flavor
+ properties:
+ name: m1.medium
m1.large:
type: tosca.nodes.Flavor
+ properties:
+ name: m1.large
m1.xlarge:
type: tosca.nodes.Flavor
+ properties:
+ name: m1.xlarge
# -----------------------------------------------------------------------------
# Network Templates
@@ -94,12 +133,14 @@
Private:
type: tosca.nodes.NetworkTemplate
properties:
+ name: Private
visibility: private
translation: none
Public shared IPv4:
type: tosca.nodes.NetworkTemplate
properties:
+ name: Public shared IPv4
visibility: private
translation: NAT
shared_network_name: nat-net
@@ -107,6 +148,7 @@
Public dedicated IPv4:
type: tosca.nodes.NetworkTemplate
properties:
+ name: Public dedicated IPv4
visibility: public
translation: none
shared_network_name: ext-net
diff --git a/roles/cord-profile/tasks/main.yml b/roles/cord-profile/tasks/main.yml
index 92bdbd2..edf811b 100644
--- a/roles/cord-profile/tasks/main.yml
+++ b/roles/cord-profile/tasks/main.yml
@@ -92,8 +92,6 @@
dest: "{{ config_cord_profile_dir }}/{{ item }}"
with_items:
- fixtures.yaml
- - enable-onboarding.yaml
- - disable-onboarding.yaml
- name: Create templated XOS configuration files
template:
diff --git a/roles/cord-profile/templates/addressmanager-service.yaml.j2 b/roles/cord-profile/templates/addressmanager-service.yaml.j2
index c23d423..aae46f2 100644
--- a/roles/cord-profile/templates/addressmanager-service.yaml.j2
+++ b/roles/cord-profile/templates/addressmanager-service.yaml.j2
@@ -15,14 +15,15 @@
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/xos.yaml
- - custom_types/addressmanager.yaml
+ - custom_types/addressmanagerservice.yaml
+ - custom_types/addresspool.yaml
topology_template:
node_templates:
@@ -30,23 +31,28 @@
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
- requirements:
- - addresses_vsg:
- node: addresses_vsg
- relationship: tosca.relationships.ProvidesAddresses
- - addresses_public:
- node: addresses_public
- relationship: tosca.relationships.ProvidesAddresses
+ properties:
+ name: addressmanager
diff --git a/roles/cord-profile/templates/carrierethernet-global-app.yaml.j2 b/roles/cord-profile/templates/carrierethernet-global-app.yaml.j2
index b408f26..d1406fb 100644
--- a/roles/cord-profile/templates/carrierethernet-global-app.yaml.j2
+++ b/roles/cord-profile/templates/carrierethernet-global-app.yaml.j2
@@ -2,24 +2,27 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/onosapp.yaml
+ - custom_types/onosservice.yaml
+ - custom_types/serviceinstanceattribute.yaml
description: carrierethernet-app onboarding, generated by platform-install
topology_template:
node_templates:
+ # ONOS_CORD fully created in onos-global-service.yaml
service#ONOS_CORD:
type: tosca.nodes.ONOSService
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: ONOS_CORD
+ must-exist: true
CarrierEthernet_ONOS_app:
type: tosca.nodes.ONOSApp
- requirements:
- - onos_tenant:
- node: service#ONOS_CORD
- relationship: tosca.relationships.TenantOfService
properties:
+ name: CarrierEthernet_ONOS_app
install_dependencies: {{ onos_mavenrepo_url }}/repository/org/opencord/ce/ce-api/1.1.0-SNAPSHOT/ce-api-1.1.0-SNAPSHOT.oar, {{ onos_mavenrepo_url }}/repository/org/opencord/ce/ecord-global-app/1.1.0-SNAPSHOT/ecord-global-app-1.1.0-SNAPSHOT.oar
+ requirements:
+ - owner:
+ node: service#ONOS_CORD
+ relationship: tosca.relationships.BelongsToOne
diff --git a/roles/cord-profile/templates/carrierethernet-local-app.yaml.j2 b/roles/cord-profile/templates/carrierethernet-local-app.yaml.j2
index b882fb4..70f24aa 100644
--- a/roles/cord-profile/templates/carrierethernet-local-app.yaml.j2
+++ b/roles/cord-profile/templates/carrierethernet-local-app.yaml.j2
@@ -1,36 +1,48 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/onosapp.yaml
+ - custom_types/onosservice.yaml
+ - custom_types/serviceinstanceattribute.yaml
description: carrierethernet-app onboarding, generated by platform-install
topology_template:
node_templates:
+ # ONOS_CORD, fully created in vtn.yaml
service#ONOS_CORD:
type: tosca.nodes.ONOSService
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: ONOS_CORD
+ must-exist: 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
+ name: ONOS_Fabric
+ must-exist: true
CarrierEthernet_ONOS_app:
type: tosca.nodes.ONOSApp
requirements:
- - onos_tenant:
+ - owner:
node: service#ONOS_CORD
- relationship: tosca.relationships.TenantOfService
+ relationship: tosca.relationships.BelongsToOne
properties:
+ name: CarrierEthernet_ONOS_app
install_dependencies: {{ onos_mavenrepo_url }}/repository/org/opencord/ce/ce-api/1.1.0-SNAPSHOT/ce-api-1.1.0-SNAPSHOT.oar, {{ onos_mavenrepo_url }}/repository/org/opencord/ce/bigswitch/1.1.0-SNAPSHOT/bigswitch-1.1.0-SNAPSHOT.oar, {{ onos_mavenrepo_url }}/repository/org/opencord/ce/local-channel/1.1.0-SNAPSHOT/local-channel-1.1.0-SNAPSHOT.oar, {{ onos_mavenrepo_url }}//repository/org/opencord/ce/vee/1.1.0-SNAPSHOT/vee-1.1.0-SNAPSHOT.oar
dependencies: org.onosproject.drivers.microsemi, org.onosproject.cfm
- component_config: >
+
+ CarrierEthernet_ONOS_app_component_config:
+ type: tosca.nodes.ServiceInstanceAttribute
+ requirements:
+ - service_instance:
+ node: CarrierEthernet_ONOS_app
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: component_config
+ value: >
{
"org.onosproject.netconf.ctl.impl.NetconfControllerImpl": {
"netconfConnectTimeout": "120",
@@ -44,12 +56,22 @@
CarrierEthernet_Fabric_ONOS_app:
type: tosca.nodes.ONOSApp
requirements:
- - onos_tenant:
+ - owner:
node: service#ONOS_Fabric
- relationship: tosca.relationships.TenantOfService
+ relationship: tosca.relationships.BelongsToOne
properties:
+ name: CarrierEthernet_Fabric_ONOS_app
install_dependencies: {{ onos_mavenrepo_url }}/repository/org/opencord/ce/ce-api/1.1.0-SNAPSHOT/ce-api-1.1.0-SNAPSHOT.oar, {{ onos_mavenrepo_url }}/repository/org/opencord/ce/bigswitch/1.1.0-SNAPSHOT/bigswitch-1.1.0-SNAPSHOT.oar, {{ onos_mavenrepo_url }}//repository/org/opencord/ce/local-channel/1.1.0-SNAPSHOT/local-channel-1.1.0-SNAPSHOT.oar, {{ onos_mavenrepo_url }}//repository/org/opencord/ce/fabric/1.1.0-SNAPSHOT/fabric-1.1.0-SNAPSHOT.oar
- component_config: >
+
+ CarrierEthernet_Fabric_ONOS_app_component_config:
+ type: tosca.nodes.ServiceInstanceAttribute
+ requirements:
+ - service_instance:
+ node: CarrierEthernet_Fabric_ONOS_app
+ relationship: tosca.relationships.BelongsToOne
+ properties:
+ name: component_config
+ value: >
{
"org.opencord.ce.local.bigswitch.BigSwitchManager": {
"domainId": "{{ carrierethernet_domainid_prefix }}-fabric-onos"
diff --git a/roles/cord-profile/templates/cord-services.yaml.j2 b/roles/cord-profile/templates/cord-services.yaml.j2
index c3138fe..0fb5171 100644
--- a/roles/cord-profile/templates/cord-services.yaml.j2
+++ b/roles/cord-profile/templates/cord-services.yaml.j2
@@ -21,170 +21,249 @@
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
- - custom_types/addressmanager.yaml
+ - 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, image, fully created in deployment.yaml
{{ 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.Network.XOS
+ type: tosca.nodes.Network
properties:
- no-create: true
- no-delete: true
- no-update: true
+ name: management
+ must-exist: true
{% if use_management_hosts %}
management_hosts:
- type: tosca.nodes.network.Network.XOS
+ type: tosca.nodes.Network
properties:
- no-create: true
- no-delete: true
- no-update: true
+ must-exist: true
{% endif %}
service#rcord:
type: tosca.nodes.Service
+ properties:
+ name: rcord
+
+ rcord_volt:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
requirements:
- - rcord_tenant:
+ - subscriber_service:
+ node: service#rcord
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
node: service#volt
- relationship: tosca.relationships.TenantOfService
+ relationship: tosca.relationships.BelongsToOne
# ONOS_CORD, fully created in vtn.yaml
service#ONOS_CORD:
type: tosca.nodes.ONOSService
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: ONOS_CORD
+ must-exist: 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
+ name: ONOS_Fabric
+ must-exist: true
# CORD Services
service#vtr:
type: tosca.nodes.VTRService
properties:
- view_url: /admin/vtr/vtrservice/$id$/
- kind: vTR
- replaces: service_vtr
+ name: vtr
+ kind: rcord
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] }
+ 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
- artifacts:
- pubkey: /opt/cord_profile/key_import/volt_rsa.pub
+
+ 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
- requirements:
- - addressing_tenant:
- node: service#addressmanager
- relationship: tosca.relationships.TenantOfService
- - 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] }
+ 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
- replaces: service_vsg
- artifacts:
- pubkey: /opt/cord_profile/key_import/vsg_rsa.pub
+ # 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
- requirements:
- - addresses_vsg:
- node: addresses_vsg
- relationship: tosca.relationships.ProvidesAddresses
- - addresses_public:
- node: addresses_public
- relationship: tosca.relationships.ProvidesAddresses
+ properties:
+ name: addressmanager
service#vrouter:
type: tosca.nodes.VRouterService
properties:
- view_url: /admin/vrouter/vrouterservice/$id$/
- replaces: service_vrouter
+ name: vrouter
+ rest_hostname: onos-fabric.{{ site_suffix }}
+ rest_port: 8181
+ rest_user: onos
+ rest_pass: rocks
vRouter_ONOS_app:
- type: tosca.nodes.ONOSvRouterApp
+ type: tosca.nodes.ONOSApp
requirements:
- - onos_tenant:
+ - owner:
node: service#ONOS_Fabric
- relationship: tosca.relationships.TenantOfService
- - vrouter_service:
- node: service#vrouter
- relationship: tosca.relationships.UsedByService
+ relationship: tosca.relationships.BelongsToOne
properties:
+ name: vRouter_ONOS_app
dependencies: org.onosproject.fpm
- autogenerate: vrouter-network-cfg
+
+ 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.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
+ name: {{ site_name }}_vsg-access
+ # ip_version: 4
requirements:
- - network_template:
+ - template:
node: template#vsg
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
node: {{ site_name }}_vsg
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: {{ site_name }}_vsg
- relationship: tosca.relationships.ConnectsToSlice
+ 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:
@@ -192,81 +271,97 @@
type: tosca.nodes.Slice
properties:
network: noauto
- requirements:
- - vsg_service:
+ name: {{ site_name }}_vsg
+ requirements:
+ - service:
node: service#vsg
- relationship: tosca.relationships.MemberOfService
+ relationship: tosca.relationships.BelongsToOne
- 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:
+ relationship: tosca.relationships.BelongsToOne
+ - default_image:
node: image#vsg-1.1
- relationship: tosca.relationships.DefaultImage
+ relationship: tosca.relationships.BelongsToOne
- in#lanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: in
+ 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
- out#lanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: out
+{% 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
- in#wanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: in
+ # out#lanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: out
- out#wanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: out
+ # in#wanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: in
- volt_lanside:
- type: tosca.nodes.ServiceInterface
- requirements:
- - service:
- node: service#volt
- relationship: tosca.relationships.MemberOfService
- - interface:
- node: out#lanside
- relationship: tosca.relationships.IsType
+ # out#wanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: out
- vsg_lanside:
- type: tosca.nodes.ServiceInterface
- requirements:
- - service:
- node: service#vsg
- relationship: tosca.relationships.MemberOfService
- - interface:
- node: in#lanside
- relationship: tosca.relationships.IsType
+ # volt_lanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#volt
+ # relationship: tosca.relationships.MemberOfService
+ # - interface:
+ # node: out#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
+ # vsg_lanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#vsg
+ # relationship: tosca.relationships.MemberOfService
+ # - interface:
+ # node: in#lanside
+ # 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
+ # 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/roles/cord-profile/templates/deployment.yaml.j2 b/roles/cord-profile/templates/deployment.yaml.j2
index c572e54..e7cb060 100644
--- a/roles/cord-profile/templates/deployment.yaml.j2
+++ b/roles/cord-profile/templates/deployment.yaml.j2
@@ -19,7 +19,8 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/deployment.yaml
+ - custom_types/flavor.yaml
description: deployment config, generated by platform-install
@@ -31,16 +32,21 @@
{% for flavor in deployment_flavors %}
{{ flavor }}:
type: tosca.nodes.Flavor
-
+ properties:
+ name: {{ flavor }}
+ must-exist: true
{% endfor %}
# Deployment
{{ deployment_type }}:
type: tosca.nodes.Deployment
- requirements:
-{% for flavor in deployment_flavors %}
- - {{ flavor }}:
- node: {{ flavor }}
- relationship: tosca.relationships.SupportsFlavor
+ properties:
+ name: {{ deployment_type }}
+# NOTE look that this are outdated and not used anymore
+# requirements:
+# {% for flavor in deployment_flavors %}
+# - {{ flavor }}:
+# node: {{ flavor }}
+# relationship: tosca.relationships.SupportsFlavor
-{% endfor %}
+# {% endfor %}
diff --git a/roles/cord-profile/templates/ecord-services.yaml.j2 b/roles/cord-profile/templates/ecord-services.yaml.j2
index 7a8ec71..cbdc2bf 100644
--- a/roles/cord-profile/templates/ecord-services.yaml.j2
+++ b/roles/cord-profile/templates/ecord-services.yaml.j2
@@ -19,9 +19,22 @@
description: Just enough Tosca to get the vEG slice running on the CORD POD, created by platform-install
imports:
- - custom_types/xos.yaml
- - custom_types/veg.yaml
- - custom_types/addressmanager.yaml
+ - 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/servicedependency.yaml
+ - custom_types/serviceinstanceattribute.yaml
+ - custom_types/serviceinstancelink.yaml
+ - custom_types/site.yaml
+ - custom_types/slice.yaml
+ - custom_types/vegservice.yaml
+ - custom_types/vrouterservice.yaml
topology_template:
node_templates:
@@ -29,135 +42,189 @@
# site, image, fully created in deployment.yaml
{{ 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.Network.XOS
+ type: tosca.nodes.Network
properties:
- no-create: true
- no-delete: true
- no-update: true
+ name: management
+ must-exist: true
{% if use_management_hosts %}
management_hosts:
- type: tosca.nodes.network.Network.XOS
+ type: tosca.nodes.Network
properties:
- no-create: true
- no-delete: true
- no-update: true
+ must-exist: true
{% endif %}
# ONOS_CORD, fully created in vtn.yaml
service#ONOS_CORD:
type: tosca.nodes.ONOSService
properties:
- no-delete: true
- no-create: true
- no-update: true
+ name: ONOS_CORD
+ must-exist: 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
+ name: ONOS_Fabric
+ must-exist: true
# CORD Services
addresses_veg:
type: tosca.nodes.AddressPool
properties:
+ name: addresses_veg
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
- requirements:
- - addresses_veg:
- node: addresses_veg
- relationship: tosca.relationships.ProvidesAddresses
- - addresses_public:
- node: addresses_public
- relationship: tosca.relationships.ProvidesAddresses
+ properties:
+ name: addressmanager
label_veg:
type: tosca.nodes.NodeLabel
+ properties:
+ name: label_veg
service#veg:
type: tosca.nodes.VEGService
- requirements:
- - vrouter_tenant:
- node: service#vrouter
- relationship: tosca.relationships.TenantOfService
properties:
- view_url: /admin/vEG/vegservice/$id$/
- backend_network_label: hpc_client
- public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
+ name: veg
+ public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/veg_rsa.pub') }}
private_key_fn: /opt/xos/services/veg/keys/veg_rsa
-# node_label: label_veg
- replaces: service_veg
- artifacts:
- pubkey: /opt/cord_profile/key_import/veg_rsa.pub
+ # node_label: label_veg
+
+ veg_vrouter:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
+ requirements:
+ - subscriber_service:
+ node: service#veg
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
+ node: service#vrouter
+ relationship: tosca.relationships.BelongsToOne
+
+ # NOTE are this connected?
+ veg_addressmanager:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
+ requirements:
+ - subscriber_service:
+ node: service#veg
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
+ node: service#addressmanager
+ relationship: tosca.relationships.BelongsToOne
service#vrouter:
type: tosca.nodes.VRouterService
properties:
- view_url: /admin/vrouter/vrouterservice/$id$/
- replaces: service_vrouter
- requirements:
- - addresses_veg:
- node: addresses_veg
- relationship: tosca.relationships.ProvidesAddresses
- - addresses_public:
- node: addresses_public
- relationship: tosca.relationships.ProvidesAddresses
+ name: vrouter
+ rest_hostname: onos-fabric.{{ site_suffix }}
+ rest_port: 8181
+ rest_user: onos
+ rest_pass: rocks
+ # NOTE: shouldn't the addresses be attached to address_manager? I don't think vRouter is used now
+ # requirements:
+ # - addresses_veg:
+ # node: addresses_veg
+ # relationship: tosca.relationships.ProvidesAddresses
+ # - addresses_public:
+ # node: addresses_public
+ # relationship: tosca.relationships.ProvidesAddresses
vRouter_ONOS_app:
- type: tosca.nodes.ONOSvRouterApp
+ type: tosca.nodes.ONOSApp
requirements:
- - onos_tenant:
+ - owner:
node: service#ONOS_Fabric
- relationship: tosca.relationships.TenantOfService
- - vrouter_service:
- node: service#vrouter
- relationship: tosca.relationships.UsedByService
+ relationship: tosca.relationships.BelongsToOne
properties:
+ name: vRouter_ONOS_app
dependencies: org.onosproject.fpm
- autogenerate: vrouter-network-cfg
+
+ 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#veg:
type: tosca.nodes.NetworkTemplate
properties:
+ name: veg
visibility: private
translation: none
vtn_kind: VSG
# Networks required by the CORD setup
{{ site_name }}_veg-access:
- type: tosca.nodes.network.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
+ name: {{ site_name }}_veg-access
+ # ip_version: 4
requirements:
- - network_template:
+ - template:
node: template#veg
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
node: {{ site_name }}_veg
- relationship: tosca.relationships.MemberOfSlice
- - connection:
+ relationship: tosca.relationships.BelongsToOne
+
+ networkslice#{{ site_name }}_veg-access_to_{{ site_name }}_veg:
+ type: tosca.nodes.NetworkSlice
+ requirements:
+ - network:
+ node: {{ site_name }}_veg-access
+ relationship: tosca.relationships.BelongsToOne
+ - slice:
node: {{ site_name }}_veg
- relationship: tosca.relationships.ConnectsToSlice
+ relationship: tosca.relationships.BelongsToOne
# CORD Slices
{{ site_name }}_veg:
@@ -165,72 +232,88 @@
type: tosca.nodes.Slice
properties:
network: noauto
+ name: {{ site_name }}_veg
requirements:
- - veg_service:
+ - service:
node: service#veg
- relationship: tosca.relationships.MemberOfService
+ relationship: tosca.relationships.BelongsToOne
- 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:
+ relationship: tosca.relationships.BelongsToOne
+ - default_image:
node: image#vsg-1.1
- relationship: tosca.relationships.DefaultImage
+ relationship: tosca.relationships.BelongsToOne
- in#lanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: in
+ networkslice#management_to_{{ site_name }}_veg:
+ type: tosca.nodes.NetworkSlice
+ requirements:
+ - network:
+ node: management
+ relationship: tosca.relationships.BelongsToOne
+ - slice:
+ node: {{ site_name }}_veg
+ relationship: tosca.relationships.BelongsToOne
- out#lanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: out
+{% if use_management_hosts %}
+ networkslice#management_hosts_to_{{ site_name }}_veg:
+ type: tosca.nodes.NetworkSlice
+ requirements:
+ - network:
+ node: management_hosts
+ relationship: tosca.relationships.BelongsToOne
+ - slice:
+ node: {{ site_name }}_veg
+ relationship: tosca.relationships.BelongsToOne
+{% endif %}
- in#wanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: in
+ # TODO: migrate interfaces when we'll start using
+ # in#lanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: in
- out#wanside:
- type: tosca.nodes.InterfaceType
- properties:
- direction: out
+ # out#lanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: out
- veg_lanside:
- type: tosca.nodes.ServiceInterface
- requirements:
- - service:
- node: service#veg
- relationship: tosca.relationships.MemberOfService
- - interface:
- node: in#lanside
- relationship: tosca.relationships.IsType
+ # in#wanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: in
- veg_wanside:
- type: tosca.nodes.ServiceInterface
- requirements:
- - service:
- node: service#veg
- relationship: tosca.relationships.MemberOfService
- - interface:
- node: out#wanside
- relationship: tosca.relationships.IsType
+ # out#wanside:
+ # type: tosca.nodes.InterfaceType
+ # properties:
+ # direction: out
- addressmanager_wanside:
- type: tosca.nodes.ServiceInterface
- requirements:
- - service:
- node: service#addressmanager
- relationship: tosca.relationships.MemberOfService
- - interface:
- node: in#wanside
- relationship: tosca.relationships.IsType
+ # veg_lanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#veg
+ # relationship: tosca.relationships.MemberOfService
+ # - interface:
+ # node: in#lanside
+ # relationship: tosca.relationships.IsType
+
+ # veg_wanside:
+ # type: tosca.nodes.ServiceInterface
+ # requirements:
+ # - service:
+ # node: service#veg
+ # 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
diff --git a/roles/cord-profile/templates/fabric-service.yaml.j2 b/roles/cord-profile/templates/fabric-service.yaml.j2
index 5f01466..e28d5ea 100644
--- a/roles/cord-profile/templates/fabric-service.yaml.j2
+++ b/roles/cord-profile/templates/fabric-service.yaml.j2
@@ -19,7 +19,11 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - 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
@@ -28,32 +32,47 @@
service#ONOS_Fabric:
type: tosca.nodes.ONOSService
- requirements:
properties:
- kind: onos
- view_url: /admin/onos/onosservice/$id$/
+ name: ONOS_Fabric
+ kind: platform
no_container: true
rest_hostname: onos-fabric.{{ site_suffix }}
- replaces: service_ONOS_Fabric
- rest_onos/v1/network/configuration/: { get_artifact: [ SELF, fabric_network_cfg_json, LOCAL_FILE ] }
- artifacts:
- fabric_network_cfg_json: {{ fabric_network_cfg_json }}
+
+ 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:
- view_url: /admin/fabric/fabricservice/$id$/
- replaces: service_fabric
+ name: fabric
+ kind: platform
+
+
Fabric_ONOS_app:
type: tosca.nodes.ONOSApp
requirements:
- - onos_tenant:
+ - owner:
node: service#ONOS_Fabric
- relationship: tosca.relationships.TenantOfService
- - fabric_service:
- node: service#fabric
- relationship: tosca.relationships.UsedByService
+ 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/roles/cord-profile/templates/initial_data.yaml.j2 b/roles/cord-profile/templates/initial_data.yaml.j2
index 0017cfc..26f0e80 100644
--- a/roles/cord-profile/templates/initial_data.yaml.j2
+++ b/roles/cord-profile/templates/initial_data.yaml.j2
@@ -17,7 +17,7 @@
# Site
- model: core.Site
fields:
- name: "{{ site_humanname }}"
+ name: "{{ site_name }}"
abbreviated_name: "{{ site_name }}"
login_base: "{{ site_name }}"
site_url: "http://{{ site_name }}.opencloud.us/"
@@ -34,7 +34,7 @@
relations:
site:
fields:
- name: "{{ site_humanname }}"
+ name: "{{ site_name }}"
model: core.Site
# All other users
@@ -49,7 +49,7 @@
relations:
site:
fields:
- name: "{{ site_humanname }}"
+ name: "{{ site_name }}"
model: core.Site
{% endfor %}
diff --git a/roles/cord-profile/templates/management-net.yaml.j2 b/roles/cord-profile/templates/management-net.yaml.j2
index 2b3b41d..9c7b03c 100644
--- a/roles/cord-profile/templates/management-net.yaml.j2
+++ b/roles/cord-profile/templates/management-net.yaml.j2
@@ -19,7 +19,10 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/network.yaml
+ - custom_types/slice.yaml
+ - custom_types/site.yaml
description: management network config, generated by platform-install
@@ -29,59 +32,66 @@
# 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.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
- cidr: {{ management_network_cidr }}
+ name: management
+ # ip_version: 4
+ subnet: {{ management_network_cidr }}
+ permit_all_slices: true
requirements:
- - network_template:
+ - template:
node: management_template
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
- node: {{ site_name }}_management
- relationship: tosca.relationships.MemberOfSlice
+ 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.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
- cidr: {{ management_hosts_net_cidr }}
+ # 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:
- - network_template:
+ - template:
node: management_hosts_template
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
- node: {{ site_name }}_management
- relationship: tosca.relationships.MemberOfSlice
+ node: slice#{{ site_name }}_management
+ relationship: tosca.relationships.BelongsToOne
{% endif %}
- {{ site_name }}_management:
+ 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.MemberOfSite
+ relationship: tosca.relationships.BelongsToOne
diff --git a/roles/cord-profile/templates/onos-global-service.yaml.j2 b/roles/cord-profile/templates/onos-global-service.yaml.j2
index 2b7d33f..0ba630c 100644
--- a/roles/cord-profile/templates/onos-global-service.yaml.j2
+++ b/roles/cord-profile/templates/onos-global-service.yaml.j2
@@ -19,7 +19,7 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/onosservice.yaml
description: Configures the global ONOS service
@@ -30,9 +30,8 @@
type: tosca.nodes.ONOSService
requirements:
properties:
- kind: onos
- view_url: /admin/onos/onosservice/$id$/
+ name: ONOS_CORD
+ kind: ecord
no_container: true
rest_hostname: onos-cord.{{ site_suffix }}
rest_port: 8182
- replaces: service_ONOS_CORD
diff --git a/roles/cord-profile/templates/openstack.yaml.j2 b/roles/cord-profile/templates/openstack.yaml.j2
index 5f2f233..0159abe 100644
--- a/roles/cord-profile/templates/openstack.yaml.j2
+++ b/roles/cord-profile/templates/openstack.yaml.j2
@@ -19,7 +19,13 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/controller.yaml
+ - custom_types/controllersite.yaml
+ - custom_types/deployment.yaml
+ - custom_types/flavor.yaml
+ - custom_types/image.yaml
+ - custom_types/site.yaml
+ - custom_types/sitedeployment.yaml
description: openstack extensions to deployment, generated by platform-install
@@ -31,27 +37,34 @@
{{ image.name }}:
type: tosca.nodes.Image
properties:
- path: /opt/xos/images/{{ image.name }}.qcow2
- disk_format: QCOW2
- container_format: BARE
+ name: {{ image.name }}
+ path: /opt/xos/images/{{ image.name }}.qcow2
+ disk_format: QCOW2
+ container_format: BARE
{% endfor %}
{% for flavor in deployment_flavors %}
{{ flavor }}:
type: tosca.nodes.Flavor
+ properties:
+ name: {{ flavor }}
{% endfor %}
# Deployment - adds images/flavors to site defined in deployment.yaml
+# NOTE do we still need this?
{{ deployment_type }}:
type: tosca.nodes.Deployment
- requirements:
-{% for flavor in deployment_flavors %}
- - {{ flavor }}:
- node: {{ flavor }}
- relationship: tosca.relationships.SupportsFlavor
-{% endfor %}
+ properties:
+ name: {{ deployment_type }}
+# NOTE look that this are outdated and not used anymore
+# requirements:
+# {% for flavor in deployment_flavors %}
+# - {{ flavor }}:
+# node: {{ flavor }}
+# relationship: tosca.relationships.SupportsFlavor
+# {% endfor %}
# OpenStack Controller
{{ site_name }}_{{ deployment_type }}_openstack:
@@ -59,14 +72,15 @@
requirements:
- deployment:
node: {{ deployment_type }}
- relationship: tosca.relationships.ControllerDeployment
+ relationship: tosca.relationships.BelongsToOne
properties:
+ name: {{ site_name }}_{{ deployment_type }}_openstack
backend_type: OpenStack
version: Kilo
- auth_url: { get_script_env: [ SELF, adminrc, OS_AUTH_URL, LOCAL_FILE] }
- admin_user: { get_script_env: [ SELF, adminrc, OS_USERNAME, LOCAL_FILE] }
- admin_password: { get_script_env: [ SELF, adminrc, OS_PASSWORD, LOCAL_FILE] }
- admin_tenant: { get_script_env: [ SELF, adminrc, OS_TENANT_NAME, LOCAL_FILE] }
+ auth_url: https://keystone.{{ site_suffix }}:5000/v2.0
+ admin_user: admin
+ admin_password: {{ keystone_admin_password }}
+ admin_tenant: admin
domain: Default
artifacts:
adminrc: /opt/cord_profile/admin-openrc.sh
@@ -75,14 +89,31 @@
{{ site_name }}:
type: tosca.nodes.Site
properties:
- display_name: {{ site_humanname }}
+ name: {{ site_name }}
+ must-exist: true
site_url: http://{{ site_name }}.opencloud.us/
hosts_nodes: true
- requirements:
- - deployment:
- node: {{ deployment_type }}
- relationship: tosca.relationships.MemberOfDeployment
- - controller:
- node: {{ site_name }}_{{ deployment_type }}_openstack
- relationship: tosca.relationships.UsesController
+
+ {{site_name}}_deployment_{{ deployment_type }}:
+ type: tosca.nodes.SiteDeployment
+ requirements:
+ - site:
+ node: {{ site_name }}
+ relationship: tosca.relationships.BelongsToOne
+ - deployment:
+ node: {{ deployment_type }}
+ relationship: tosca.relationships.BelongsToOne
+ - controller:
+ node: {{ site_name }}_{{ deployment_type }}_openstack
+ relationship: tosca.relationships.BelongsToOne
+
+ {{ site_name }}_openstack_controller:
+ type: tosca.nodes.ControllerSite
+ requirements:
+ - site:
+ node: {{ site_name }}
+ relationship: tosca.relationships.BelongsToOne
+ - controller:
+ node: {{ site_name }}_{{ deployment_type }}_openstack
+ relationship: tosca.relationships.BelongsToOne
diff --git a/roles/cord-profile/templates/public-net.yaml.j2 b/roles/cord-profile/templates/public-net.yaml.j2
index 7e43e11..610c58b 100644
--- a/roles/cord-profile/templates/public-net.yaml.j2
+++ b/roles/cord-profile/templates/public-net.yaml.j2
@@ -19,8 +19,15 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
- - custom_types/addressmanager.yaml
+ - 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
@@ -30,44 +37,81 @@
# 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.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
+ name: public
+ permit_all_slices: true
+ subnet: 10.8.1.0/24 # NOTE same as AddressPool#addresses_public
+ # ip_version: 4
requirements:
- - network_template:
+ - template:
node: public_template
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
node: {{ site_name }}_public
- relationship: tosca.relationships.MemberOfSlice
- - addressmanager_service_instance:
- node: service#addressmanager
- relationship: tosca.relationships.TenantOfService
+ 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.MemberOfSite
+ relationship: tosca.relationships.BelongsToOne
diff --git a/roles/cord-profile/templates/shared-net.yaml.j2 b/roles/cord-profile/templates/shared-net.yaml.j2
index f54ab9d..186e69f 100644
--- a/roles/cord-profile/templates/shared-net.yaml.j2
+++ b/roles/cord-profile/templates/shared-net.yaml.j2
@@ -1,7 +1,10 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/network.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/slice.yaml
+ - custom_types/site.yaml
description: shared network config, generated by platform-install
@@ -11,36 +14,41 @@
# site, fully created in deployment.yaml
{{ site_name }}:
type: tosca.nodes.Site
+ properties:
+ name: {{ site_name }}
+ must-exist: true
# shared network
shared_template:
type: tosca.nodes.NetworkTemplate
properties:
+ name: shared_template
visibility: private
translation: none
vtn_kind: PRIVATE
shared_network:
- type: tosca.nodes.network.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
- cidr: 100.0.0.0/24
+ name: shared_network
+ subnet: 100.0.0.0/24
requirements:
- - network_template:
+ - template:
node: shared_template
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
node: {{ site_name }}_shared
- relationship: tosca.relationships.MemberOfSlice
+ relationship: tosca.relationships.BelongsToOne
{{ site_name }}_shared:
description: This slice exists solely to own the private network
type: tosca.nodes.Slice
properties:
+ name: {{ site_name }}_shared
network: noauto
requirements:
- site:
node: {{ site_name }}
- relationship: tosca.relationships.MemberOfSite
+ relationship: tosca.relationships.BelongsToOne
diff --git a/roles/cord-profile/templates/vee-service.yaml.j2 b/roles/cord-profile/templates/vee-service.yaml.j2
index ad4202c..9fea06d 100644
--- a/roles/cord-profile/templates/vee-service.yaml.j2
+++ b/roles/cord-profile/templates/vee-service.yaml.j2
@@ -19,9 +19,10 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
- - custom_types/vee.yaml
- - custom_types/veg.yaml
+ - custom_types/veeservice.yaml
+ - custom_types/vegservice.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/servicedependency.yaml
description: vee services, generated by platform-install
@@ -32,24 +33,30 @@
type: tosca.nodes.VEGService
requirements:
properties:
- no-delete: true
- no-create: true
- no-update: true
- artifacts:
- pubkey: /opt/xos/services/veg/keys/veg_rsa.pub
+ name: veg
+ must-exist: true
service#vee:
type: tosca.nodes.VEEService
- requirements:
- - veg_tenant:
- node: service#veg
- relationship: tosca.relationships.TenantOfService
properties:
- view_url: /admin/vEE/veeservice/$id$/
+ name: vee
+
+ veg_vee:
+ type: tosca.nodes.ServiceDependency
+ properties:
+ connect_method: None
+ requirements:
+ - subscriber_service:
+ node: service#veg
+ relationship: tosca.relationships.BelongsToOne
+ - provider_service:
+ node: service#vee
+ relationship: tosca.relationships.BelongsToOne
template#vee:
type: tosca.nodes.NetworkTemplate
properties:
+ name: vee
visibility: private
translation: none
vtn_kind: vee
diff --git a/roles/cord-profile/templates/vsg-net.yaml.j2 b/roles/cord-profile/templates/vsg-net.yaml.j2
index bb5e546..9bcf397 100644
--- a/roles/cord-profile/templates/vsg-net.yaml.j2
+++ b/roles/cord-profile/templates/vsg-net.yaml.j2
@@ -1,7 +1,10 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/network.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/slice.yaml
+ - custom_types/site.yaml
description: vsg network config, generated by platform-install
@@ -11,36 +14,41 @@
# 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.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
- cidr: 101.0.0.0/24
+ name: vsg_network
+ subnet: 101.0.0.0/24
requirements:
- - network_template:
+ - template:
node: vsg_template
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
node: {{ site_name }}_vsg
- relationship: tosca.relationships.MemberOfSlice
+ 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.MemberOfSite
+ relationship: tosca.relationships.BelongsToOne
diff --git a/roles/cord-profile/templates/vtn-service.yaml.j2 b/roles/cord-profile/templates/vtn-service.yaml.j2
index eab7961..6a2dbd6 100644
--- a/roles/cord-profile/templates/vtn-service.yaml.j2
+++ b/roles/cord-profile/templates/vtn-service.yaml.j2
@@ -17,7 +17,11 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - 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
@@ -26,18 +30,18 @@
service#ONOS_CORD:
type: tosca.nodes.ONOSService
- requirements:
properties:
- kind: onos
- view_url: /admin/onos/onosservice/$id$/
+ name: ONOS_CORD
+ kind: platform
no_container: true
rest_hostname: onos-cord.{{ site_suffix }}
rest_port: 8182
- replaces: service_ONOS_CORD
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 }}
@@ -48,21 +52,39 @@
xosEndpoint: xos-chameleon.{{ site_suffix }}:{{ xos_chameleon_port }}
xosUser: {{ xos_admin_user }}
xosPassword: {{ xos_admin_pass }}
- replaces: service_vtn
vtnAPIVersion: 2
controllerPort: onos-cord.{{ site_suffix }}:6654
+ resync: false
VTN_ONOS_app:
- type: tosca.nodes.ONOSVTNApp
+ type: tosca.nodes.ONOSApp
requirements:
- - onos_tenant:
+ - owner:
node: service#ONOS_CORD
- relationship: tosca.relationships.TenantOfService
- - vtn_service:
- node: service#vtn
- relationship: tosca.relationships.UsedByService
+ 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
+ # 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/roles/cord-profile/templates/wan-net.yaml.j2 b/roles/cord-profile/templates/wan-net.yaml.j2
index 4b9bb20..0ada8be 100644
--- a/roles/cord-profile/templates/wan-net.yaml.j2
+++ b/roles/cord-profile/templates/wan-net.yaml.j2
@@ -1,7 +1,10 @@
tosca_definitions_version: tosca_simple_yaml_1_0
imports:
- - custom_types/xos.yaml
+ - custom_types/network.yaml
+ - custom_types/networktemplate.yaml
+ - custom_types/slice.yaml
+ - custom_types/site.yaml
description: wan network config, generated by platform-install
@@ -11,36 +14,41 @@
# site, fully created in deployment.yaml
{{ site_name }}:
type: tosca.nodes.Site
+ properties:
+ name: {{ site_name }}
+ must-exist: true
# wan network
wan_template:
type: tosca.nodes.NetworkTemplate
properties:
+ name: wan_template
visibility: private
translation: none
vtn_kind: PRIVATE
wan_network:
- type: tosca.nodes.network.Network
+ type: tosca.nodes.Network
properties:
- ip_version: 4
- cidr: 102.0.0.0/24
+ name: wan_network
+ subnet: 102.0.0.0/24
requirements:
- - network_template:
+ - template:
node: wan_template
- relationship: tosca.relationships.UsesNetworkTemplate
+ relationship: tosca.relationships.BelongsToOne
- owner:
node: {{ site_name }}_wan
- relationship: tosca.relationships.MemberOfSlice
+ relationship: tosca.relationships.BelongsToOne
{{ site_name }}_wan:
description: This slice exists solely to own the private network
type: tosca.nodes.Slice
properties:
+ name: {{ site_name }}_wan
network: noauto
requirements:
- site:
node: {{ site_name }}
- relationship: tosca.relationships.MemberOfSite
+ relationship: tosca.relationships.BelongsToOne
diff --git a/roles/cord-profile/templates/xos-gui-extensions.yml.j2 b/roles/cord-profile/templates/xos-gui-extensions.yml.j2
index beb1d06..f10c695 100644
--- a/roles/cord-profile/templates/xos-gui-extensions.yml.j2
+++ b/roles/cord-profile/templates/xos-gui-extensions.yml.j2
@@ -21,7 +21,7 @@
description: Persist xos-sample-gui-extension
imports:
- - custom_types/xos.yaml
+ - custom_types/xosguiextension.yaml
topology_template:
node_templates:
@@ -31,6 +31,7 @@
{{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 %}
diff --git a/roles/exampleservice-config/templates/test-exampleservice.yaml.j2 b/roles/exampleservice-config/templates/test-exampleservice.yaml.j2
index a5c7708..cb34206 100644
--- a/roles/exampleservice-config/templates/test-exampleservice.yaml.j2
+++ b/roles/exampleservice-config/templates/test-exampleservice.yaml.j2
@@ -39,7 +39,7 @@
type: tosca.nodes.Site
properties:
must-exist: true
- name: {{ site_humanname }}
+ name: {{ site_name }}
m1.small:
type: tosca.nodes.Flavor
@@ -147,8 +147,6 @@
public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/exampleservice_rsa.pub') }}
private_key_fn: /opt/xos/services/exampleservice/keys/exampleservice_rsa
service_message: hello
- artifacts:
- pubkey: /opt/cord_profile/key_import/exampleservice_rsa.pub
exampletenant1:
type: tosca.nodes.ExampleServiceInstance
diff --git a/roles/xos-config-new-tosca/tasks/main.yml b/roles/xos-config-new-tosca/tasks/main.yml
index 683bc59..3fbbc0f 100644
--- a/roles/xos-config-new-tosca/tasks/main.yml
+++ b/roles/xos-config-new-tosca/tasks/main.yml
@@ -15,6 +15,35 @@
# xos-config-new-tosca/tasks/main.yml
+- name: Bootstrap XOS database - create site, deployment, admin user
+ uri:
+ url: "{{ xos_tosca_url }}/run"
+ method: POST
+ headers:
+ xos-username: "{{ xos_admin_user }}"
+ xos-password: "{{ xos_admin_pass }}"
+ body: "{{ lookup('file', head_cord_profile_dir + '/' + item ) }}"
+ status_code: 200
+ with_items:
+ - "fixtures.yaml"
+ - "deployment.yaml"
+ tags:
+ - skip_ansible_lint # TOSCA loading should be idempotent
+
+- name: Configure XOS with OpenStack config
+ uri:
+ url: "{{ xos_tosca_url }}/run"
+ method: POST
+ headers:
+ xos-username: "{{ xos_admin_user }}"
+ xos-password: "{{ xos_admin_pass }}"
+ body: "{{ lookup('file', head_cord_profile_dir + '/' + item ) }}"
+ status_code: 200
+ with_items:
+ - openstack.yaml
+ tags:
+ - skip_ansible_lint # TOSCA loading should be idempotent
+
- name: Configure XOS with profile specific TOSCA (new Engine)
uri:
url: "{{ xos_tosca_url }}/run"
diff --git a/roles/xos-config/tasks/main.yml b/roles/xos-config/tasks/main.yml
index e75195f..d05e034 100644
--- a/roles/xos-config/tasks/main.yml
+++ b/roles/xos-config/tasks/main.yml
@@ -19,20 +19,20 @@
# TODO move this to the TOSCA container
-- name: Bootstrap XOS database - create site, deployment, admin user
- command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/{{ item }}"
- with_items:
- - "fixtures.yaml"
- - "deployment.yaml"
- tags:
- - skip_ansible_lint # TOSCA loading should be idempotent
+# - name: Bootstrap XOS database - create site, deployment, admin user
+# command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/{{ item }}"
+# with_items:
+# - "fixtures.yaml"
+# - "deployment.yaml"
+# tags:
+# - skip_ansible_lint # TOSCA loading should be idempotent
-- name: Configure XOS with OpenStack config
- command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/{{ item }}"
- with_items:
- - openstack.yaml
- tags:
- - skip_ansible_lint # TOSCA loading should be idempotent
+# - name: Configure XOS with OpenStack config
+# command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/{{ item }}"
+# with_items:
+# - openstack.yaml
+# tags:
+# - skip_ansible_lint # TOSCA loading should be idempotent
- name: Configure XOS with profile specific TOSCA
command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/{{ item }}"