CORD-2385 Move profile-specific configuration to R-CORD repo

Change-Id: I54dfcb973dd623da33c4b67053003f2cffc21fbf
diff --git a/templates/cord-services.yaml.j2 b/templates/cord-services.yaml.j2
new file mode 100644
index 0000000..0fb5171
--- /dev/null
+++ b/templates/cord-services.yaml.j2
@@ -0,0 +1,367 @@
+
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Just enough Tosca to get the vSG slice running on the CORD POD, created by platform-install
+
+imports:
+  - custom_types/addressmanagerservice.yaml
+  - custom_types/addresspool.yaml
+  - custom_types/image.yaml
+  - custom_types/network.yaml
+  - custom_types/networkslice.yaml
+  - custom_types/networktemplate.yaml
+  - custom_types/nodelabel.yaml
+  - custom_types/onosapp.yaml
+  - custom_types/onosservice.yaml
+  - custom_types/site.yaml
+  - custom_types/service.yaml
+  - custom_types/servicedependency.yaml
+  - custom_types/serviceinstanceattribute.yaml
+  - custom_types/serviceinstancelink.yaml
+  - custom_types/slice.yaml
+  - custom_types/voltservice.yaml
+  - custom_types/vrouterservice.yaml
+  - custom_types/vsgservice.yaml
+  - custom_types/vtrservice.yaml
+
+topology_template:
+  node_templates:
+
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+        name: {{ site_name }}
+        must-exist: true
+
+    image#vsg-1.1:
+      type: tosca.nodes.Image
+      properties:
+        name: vsg-1.1
+
+# management networks, fully created in management-net.yaml
+    management:
+      type: tosca.nodes.Network
+      properties:
+        name: management
+        must-exist: true
+
+{% if use_management_hosts %}
+    management_hosts:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+{% endif %}
+
+    service#rcord:
+      type: tosca.nodes.Service
+      properties:
+        name: rcord
+
+    rcord_volt:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#rcord
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#volt
+            relationship: tosca.relationships.BelongsToOne
+
+# ONOS_CORD, fully created in vtn.yaml
+    service#ONOS_CORD:
+      type: tosca.nodes.ONOSService
+      properties:
+        name: ONOS_CORD
+        must-exist: true
+
+# ONOS_Fabric, fully created in fabric.yaml
+    service#ONOS_Fabric:
+      type: tosca.nodes.ONOSService
+      properties:
+        name: ONOS_Fabric
+        must-exist: true
+
+# CORD Services
+    service#vtr:
+      type: tosca.nodes.VTRService
+      properties:
+        name: vtr
+        kind: rcord
+
+    service#volt:
+      type: tosca.nodes.VOLTService
+      properties:
+        name: volt
+        kind: rcord
+        public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/volt_rsa.pub') }}
+        private_key_fn: /opt/xos/services/volt/keys/volt_rsa
+
+    volt_vsg:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#volt
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vsg
+            relationship: tosca.relationships.BelongsToOne
+
+    addresses_vsg:
+      type: tosca.nodes.AddressPool
+      properties:
+        name: addresses_vsg
+        addresses: 10.7.1.0/24
+        gateway_ip: 10.7.1.1
+        gateway_mac: a4:23:05:06:01:01
+      requirements:
+        - service:
+            node: service#addressmanager
+            relationship: tosca.relationships.BelongsToOne
+
+    addresses_public:
+      type: tosca.nodes.AddressPool
+      properties:
+        name: addresses_public
+        addresses: 10.8.1.0/24
+        gateway_ip: 10.8.1.1
+        gateway_mac: a4:23:05:06:01:01
+      requirements:
+        - service:
+            node: service#addressmanager
+            relationship: tosca.relationships.BelongsToOne
+
+    label_vsg:
+      type: tosca.nodes.NodeLabel
+      properties:
+        name: label_vsg
+
+    service#vsg:
+      type: tosca.nodes.VSGService
+      properties:
+        name: vsg
+        # backend_network_label: hpc_client # what is this? can we drop it?
+        public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/vsg_rsa.pub') }}
+        private_key_fn: /opt/xos/services/vsg/keys/vsg_rsa
+        # node_label: label_vsg
+
+    vsg_vrouter:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vsg
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vrouter
+            relationship: tosca.relationships.BelongsToOne
+
+    vsg_addressmanager:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vsg
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#addressmanager
+            relationship: tosca.relationships.BelongsToOne
+
+    service#addressmanager:
+      type: tosca.nodes.AddressManagerService
+      properties:
+        name: addressmanager
+
+    service#vrouter:
+      type: tosca.nodes.VRouterService
+      properties:
+        name: vrouter
+        rest_hostname: onos-fabric.{{ site_suffix }}
+        rest_port: 8181
+        rest_user: onos
+        rest_pass: rocks
+
+    vRouter_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+        - owner:
+            node: service#ONOS_Fabric
+            relationship: tosca.relationships.BelongsToOne
+      properties:
+        name: vRouter_ONOS_app
+        dependencies: org.onosproject.fpm
+
+    vRouter_ONOS_app_autogenerate:
+        type: tosca.nodes.ServiceInstanceAttribute
+        requirements:
+          - service_instance:
+              node: vRouter_ONOS_app
+              relationship: tosca.relationships.BelongsToOne
+        properties:
+            name: autogenerate
+            value: vrouter-network-cfg
+
+    vRouter_ONOS_app_ONOS_CORD:
+        type: tosca.nodes.ServiceInstanceLink
+        requirements:
+          - provider_service_instance:
+              node: vRouter_ONOS_app
+              relationship: tosca.relationships.BelongsToOne
+          - subscriber_service:
+              node: service#vrouter
+              relationship: tosca.relationships.BelongsToOne
+
+    template#vsg:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+        name: vsg
+        visibility: private
+        translation: none
+        vtn_kind: VSG
+
+    # Networks required by the CORD setup
+    {{ site_name }}_vsg-access:
+      type: tosca.nodes.Network
+      properties:
+        name: {{ site_name }}_vsg-access
+        # ip_version: 4
+      requirements:
+        - template:
+            node: template#vsg
+            relationship: tosca.relationships.BelongsToOne
+        - owner:
+            node: {{ site_name }}_vsg
+            relationship: tosca.relationships.BelongsToOne
+
+    networkslice#{{ site_name }}_vsg-access_to_{{ site_name }}_vsg:
+        type: tosca.nodes.NetworkSlice
+        requirements:
+          - network:
+              node: {{ site_name }}_vsg-access
+              relationship: tosca.relationships.BelongsToOne
+          - slice:
+              node: {{ site_name }}_vsg
+              relationship: tosca.relationships.BelongsToOne
+
+    # CORD Slices
+    {{ site_name }}_vsg:
+      description: vSG Controller Slice
+      type: tosca.nodes.Slice
+      properties:
+        network: noauto
+        name: {{ site_name }}_vsg
+      requirements: 
+        - service:
+            node: service#vsg
+            relationship: tosca.relationships.BelongsToOne
+        - site:
+            node: {{ site_name }}
+            relationship: tosca.relationships.BelongsToOne
+        - default_image:
+            node: image#vsg-1.1
+            relationship: tosca.relationships.BelongsToOne
+
+    networkslice#management_to_{{ site_name }}_vsg:
+        type: tosca.nodes.NetworkSlice
+        requirements:
+          - network:
+              node: management
+              relationship: tosca.relationships.BelongsToOne
+          - slice:
+              node: {{ site_name }}_vsg
+              relationship: tosca.relationships.BelongsToOne
+
+{% if use_management_hosts %}
+    networkslice#management_hosts_to_{{ site_name }}_vsg:
+        type: tosca.nodes.NetworkSlice
+        requirements:
+          - network:
+              node: management_hosts
+              relationship: tosca.relationships.BelongsToOne
+          - slice:
+            node: {{ site_name }}_vsg
+            relationship: tosca.relationships.BelongsToOne
+{% endif %}
+    
+    # TODO: migrate interfaces when we'll start using them
+    # in#lanside:
+    #   type: tosca.nodes.InterfaceType
+    #   properties:
+    #      direction: in
+
+    # out#lanside:
+    #   type: tosca.nodes.InterfaceType
+    #   properties:
+    #      direction: out
+
+    # in#wanside:
+    #   type: tosca.nodes.InterfaceType
+    #   properties:
+    #      direction: in
+
+    # out#wanside:
+    #   type: tosca.nodes.InterfaceType
+    #   properties:
+    #      direction: out
+
+    # volt_lanside:
+    #   type: tosca.nodes.ServiceInterface
+    #   requirements:
+    #     - service:
+    #         node: service#volt
+    #         relationship: tosca.relationships.MemberOfService
+    #     - interface:
+    #         node: out#lanside
+    #         relationship: tosca.relationships.IsType
+
+    # vsg_lanside:
+    #   type: tosca.nodes.ServiceInterface
+    #   requirements:
+    #     - service:
+    #         node: service#vsg
+    #         relationship: tosca.relationships.MemberOfService
+    #     - interface:
+    #         node: in#lanside
+    #         relationship: tosca.relationships.IsType
+
+    # vsg_wanside:
+    #   type: tosca.nodes.ServiceInterface
+    #   requirements:
+    #     - service:
+    #         node: service#vsg
+    #         relationship: tosca.relationships.MemberOfService
+    #     - interface:
+    #         node: out#wanside
+    #         relationship: tosca.relationships.IsType
+
+    # addressmanager_wanside:
+    #   type: tosca.nodes.ServiceInterface
+    #   requirements:
+    #     - service:
+    #         node: service#addressmanager
+    #         relationship: tosca.relationships.MemberOfService
+    #     - interface:
+    #         node: in#wanside
+    #         relationship: tosca.relationships.IsType
\ No newline at end of file