[CORD-2349] Migrating REM-CORD
Change-Id: Iae573428e3bee89026262055263f24a32dd12183
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