CORD-3045 Reorganize TOSCA for rcord-lite profile

Change-Id: If215331658f778234eaa995ad95fdc7441ec355c
diff --git a/xos-profiles/rcord-lite/templates/_tosca.tpl b/xos-profiles/rcord-lite/templates/_tosca.tpl
new file mode 100644
index 0000000..c9985ae
--- /dev/null
+++ b/xos-profiles/rcord-lite/templates/_tosca.tpl
@@ -0,0 +1,237 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Copyright 2018-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.
+*/}}
+{{- define "rcord-lite.basicFixturesTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+description: Some basic fixtures
+imports:
+  - custom_types/siterole.yaml
+  - custom_types/slicerole.yaml
+  - custom_types/networkparametertype.yaml
+  - custom_types/networktemplate.yaml
+  - custom_types/deployment.yaml
+topology_template:
+  node_templates:
+
+# -----------------------------------------------------------------------------
+# Network Parameter Types
+# -----------------------------------------------------------------------------
+    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
+# ----------------------------------------------------------------------------
+    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
+    slicerole#admin:
+      type: tosca.nodes.SliceRole
+      properties:
+        role: admin
+    slicerole#access:
+      type: tosca.nodes.SliceRole
+      properties:
+        role: access
+
+# -----------------------------------------------------------------------------
+# Network Templates
+# -----------------------------------------------------------------------------
+    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
+
+    Public dedicated IPv4:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+        name: Public dedicated IPv4
+        visibility: public
+        translation: none
+        shared_network_name: ext-net
+
+# -----------------------------------------------------------------------------
+# Deployment
+# -----------------------------------------------------------------------------
+    MyDeployment:
+      type: tosca.nodes.Deployment
+      properties:
+        name: MyDeployment
+{{- end -}}
+
+
+{{- define "rcord-lite.serviceGraphTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+imports:
+  - custom_types/fabricservice.yaml
+  - custom_types/onosservice.yaml
+  - custom_types/rcordservice.yaml
+  - custom_types/vrouterservice.yaml
+  - custom_types/voltservice.yaml
+  - custom_types/vsghwservice.yaml
+  - custom_types/servicedependency.yaml
+  - custom_types/servicegraphconstraint.yaml
+description: rcord-lite service graph
+topology_template:
+  node_templates:
+
+# These services must be defined before loading the graph
+
+    service#ONOS_Fabric:
+      type: tosca.nodes.ONOSService
+      properties:
+        name: ONOS_Fabric
+        must-exist: true
+
+    service#fabric:
+      type: tosca.nodes.FabricService
+      properties:
+        name: fabric
+        must-exist: true
+
+    service#rcord:
+      type: tosca.nodes.RCORDService
+      properties:
+        name: rcord
+        must-exist: true
+
+    service#vrouter:
+      type: tosca.nodes.VRouterService
+      properties:
+        name: vrouter
+        must-exist: true
+
+    service#volt:
+      type: tosca.nodes.VOLTService
+      properties:
+        name: volt
+        must-exist: true
+
+    service#vsg-hw:
+      type: tosca.nodes.VSGHWService
+      properties:
+        name: vsg-hw
+        must-exist: true
+
+# The rcord-lite service graph
+
+    service_dependency#onos-fabric_fabric:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#ONOS_Fabric
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#fabric
+            relationship: tosca.relationships.BelongsToOne
+
+    service_dependency#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
+
+    service_dependency#fabric_vrouter:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#fabric
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vrouter
+            relationship: tosca.relationships.BelongsToOne
+
+    service_dependency#volt_vsg-hw:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#volt
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vsg-hw
+            relationship: tosca.relationships.BelongsToOne
+
+    service_dependency#onos_fabric_vsg-hw:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vsg-hw
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#ONOS_Fabric
+            relationship: tosca.relationships.BelongsToOne
+
+    constraints:
+      type: tosca.nodes.ServiceGraphConstraint
+      properties:
+        constraints: '[[null, "rcord"], [null, "volt"], ["ONOS_Fabric", "vsg-hw"], ["fabric", null], ["vrouter", null]]'
+{{- end -}}
+
diff --git a/xos-profiles/rcord-lite/templates/tosca-configmap.yaml b/xos-profiles/rcord-lite/templates/tosca-configmap.yaml
index f39acb3..e4a5f40 100644
--- a/xos-profiles/rcord-lite/templates/tosca-configmap.yaml
+++ b/xos-profiles/rcord-lite/templates/tosca-configmap.yaml
@@ -20,12 +20,18 @@
   name: rcord-lite-tosca
 data:
   010-fixtures.yaml: |
-{{ toYaml .Values.toscaRecipes.fixtures | indent 4 }}
-  020-deployment.yaml: |
-{{ toYaml .Values.toscaRecipes.deployment | indent 4 }}
-  030-fabric-service.yaml: |
-{{ toYaml .Values.toscaRecipes.fabricService | indent 4 }}
-  040-cord-services.yaml: |
-{{ toYaml .Values.toscaRecipes.cordServices | indent 4 }}
-  050-service-graph-constraints.yaml: |
-{{ toYaml .Values.toscaRecipes.serviceGraphConstraints | indent 4 }}
+{{ include "rcord-lite.basicFixturesTosca" . | indent 4 }}
+  020-rcord-subscriber-service.yaml: |
+{{ include "rcord.serviceTosca" .Values.rcord | indent 4 }}
+  030-volt-service.yaml: |
+{{ include "volt.serviceTosca" .Values.volt | indent 4 }}
+  040-vsg-hw-service.yaml: |
+{{ include "vsg-hw.serviceTosca" (index .Values "vsg-hw") | indent 4 }}
+  050-vrouter-service.yaml: |
+{{ include "vrouter.serviceTosca" .Values.vrouter | indent 4 }}
+  060-onos-service-fabric.yaml: |
+{{ include "onos-service.fabricAppTosca" (index .Values "onos-service") | indent 4 }}
+  070-fabric-service.yaml: |
+{{ include "fabric.serviceTosca" .Values.fabric | indent 4 }}
+  300-service-graph.yaml: |
+{{ include "rcord-lite.serviceGraphTosca" . | indent 4 }}
diff --git a/xos-profiles/rcord-lite/values.yaml b/xos-profiles/rcord-lite/values.yaml
index 116d41f..3427e09 100644
--- a/xos-profiles/rcord-lite/values.yaml
+++ b/xos-profiles/rcord-lite/values.yaml
@@ -30,265 +30,3 @@
 xosAdminUser: "admin@opencord.org"
 xosAdminPassword: "letmein"
 
-# TOSCA recipes for the tosca-loader
-toscaRecipes:
-  fixtures:
-    tosca_definitions_version: tosca_simple_yaml_1_0
-    description: Some basic fixtures
-    imports:
-      - custom_types/siterole.yaml
-      - custom_types/slicerole.yaml
-      - custom_types/networkparametertype.yaml
-      - custom_types/networktemplate.yaml
-    topology_template:
-      node_templates:
-    # -----------------------------------------------------------------------------
-    # Network Parameter Types
-    # -----------------------------------------------------------------------------
-        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
-    # ----------------------------------------------------------------------------
-        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
-        slicerole#admin:
-          type: tosca.nodes.SliceRole
-          properties:
-            role: admin
-        slicerole#access:
-          type: tosca.nodes.SliceRole
-          properties:
-            role: access
-    # -----------------------------------------------------------------------------
-    # Network Templates
-    # -----------------------------------------------------------------------------
-        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
-        Public dedicated IPv4:
-          type: tosca.nodes.NetworkTemplate
-          properties:
-            name: Public dedicated IPv4
-            visibility: public
-            translation: none
-            shared_network_name: ext-net
-
-  deployment:
-    tosca_definitions_version: tosca_simple_yaml_1_0
-    imports:
-       - custom_types/deployment.yaml
-    description: deployment config, generated by platform-install
-    topology_template:
-      node_templates:
-        MyDeployment:
-          type: tosca.nodes.Deployment
-          properties:
-            name: MyDeployment
-
-  fabricService:
-    tosca_definitions_version: tosca_simple_yaml_1_0
-    imports:
-      - custom_types/fabricservice.yaml
-      - custom_types/onosapp.yaml
-      - custom_types/onosservice.yaml
-      - custom_types/serviceattribute.yaml
-      - custom_types/servicedependency.yaml
-      - custom_types/serviceinstancelink.yaml
-    description: fabric services, generated by rcord profile
-    topology_template:
-      node_templates:
-        service#ONOS_Fabric:
-          type: tosca.nodes.ONOSService
-          properties:
-              name: ONOS_Fabric
-              kind: platform
-              no_container: true
-              rest_hostname: onos-fabric-ui
-              rest_port: 8181
-        service#fabric:
-          type: tosca.nodes.FabricService
-          properties:
-              name: fabric
-              kind: platform
-        Fabric_ONOS_app:
-          type: tosca.nodes.ONOSApp
-          requirements:
-              - owner:
-                  node: service#ONOS_Fabric
-                  relationship: tosca.relationships.BelongsToOne
-          properties:
-              name: Fabric_ONOS_app
-              dependencies: org.onosproject.drivers, org.onosproject.openflow, org.onosproject.netcfghostprovider, org.onosproject.segmentrouting, org.onosproject.vrouter
-        service_dependency#onos-fabric_fabric:
-          type: tosca.nodes.ServiceDependency
-          properties:
-            connect_method: None
-          requirements:
-            - subscriber_service:
-                node: service#ONOS_Fabric
-                relationship: tosca.relationships.BelongsToOne
-            - provider_service:
-                node: service#fabric
-                relationship: tosca.relationships.BelongsToOne
-
-  cordServices:
-    tosca_definitions_version: tosca_simple_yaml_1_0
-    description: Set up VOLT, AddressManager, and RCORD services
-    imports:
-      - custom_types/fabricservice.yaml
-      - custom_types/image.yaml
-      - custom_types/kubernetesservice.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/rcordservice.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/vsghwservice.yaml
-    topology_template:
-      node_templates:
-        service#ONOS_Fabric:
-          type: tosca.nodes.ONOSService
-          properties:
-              name: ONOS_Fabric
-              must-exist: true
-        service#fabric:
-          type: tosca.nodes.FabricService
-          properties:
-              name: fabric
-              must-exist: true
-        service#rcord:
-          type: tosca.nodes.RCORDService
-          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
-        service#kubernetes:
-          type: tosca.nodes.KubernetesService
-          properties:
-            name: kubernetes
-        service#volt:
-          type: tosca.nodes.VOLTService
-          properties:
-            name: volt
-            voltha_url: voltha.voltha.svc.cluster.local
-            voltha_port: 8882
-            onos_voltha_url: onos-voltha-ui.voltha.svc.cluster.local
-            onos_voltha_port: 8181
-            onos_voltha_user: karaf
-            onos_voltha_pass: karaf
-        service#vsg-hw:
-          type: tosca.nodes.VSGHWService
-          properties:
-            name: vsg-hw
-        service#vrouter:
-          type: tosca.nodes.VRouterService
-          properties:
-            name: vrouter
-            kind: rcord
-        service_dependency#fabric_vrouter:
-          type: tosca.nodes.ServiceDependency
-          properties:
-            connect_method: None
-          requirements:
-            - subscriber_service:
-                node: service#fabric
-                relationship: tosca.relationships.BelongsToOne
-            - provider_service:
-                node: service#vrouter
-                relationship: tosca.relationships.BelongsToOne
-        volt_vsg-hw:
-          type: tosca.nodes.ServiceDependency
-          properties:
-            connect_method: None
-          requirements:
-            - subscriber_service:
-                node: service#volt
-                relationship: tosca.relationships.BelongsToOne
-            - provider_service:
-                node: service#vsg-hw
-                relationship: tosca.relationships.BelongsToOne
-        onos_fabric_vsg-hw:
-          type: tosca.nodes.ServiceDependency
-          properties:
-            connect_method: None
-          requirements:
-            - subscriber_service:
-                node: service#vsg-hw
-                relationship: tosca.relationships.BelongsToOne
-            - provider_service:
-                node: service#ONOS_Fabric
-                relationship: tosca.relationships.BelongsToOne
-
-  serviceGraphConstraints:
-    tosca_definitions_version: tosca_simple_yaml_1_0
-    imports:
-       - custom_types/servicegraphconstraint.yaml
-    description: Constraints on the Services position in the graph
-    topology_template:
-      node_templates:
-        constraints:
-          type: tosca.nodes.ServiceGraphConstraint
-          properties:
-            constraints: '[[null, "rcord"], [null, "volt"], ["ONOS_Fabric", "vsg-hw"], ["fabric", null], ["vrouter", null]]'
diff --git a/xos-services/fabric/templates/_tosca.tpl b/xos-services/fabric/templates/_tosca.tpl
new file mode 100644
index 0000000..09f3810
--- /dev/null
+++ b/xos-services/fabric/templates/_tosca.tpl
@@ -0,0 +1,30 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Copyright 2018-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.
+*/}}
+{{- define "fabric.serviceTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+description: Set up Fabric service
+imports:
+  - custom_types/fabricservice.yaml
+
+topology_template:
+  node_templates:
+    service#fabric:
+      type: tosca.nodes.FabricService
+      properties:
+        name: fabric
+        kind: platform
+{{- end -}}
diff --git a/xos-services/onos-service/templates/_tosca.tpl b/xos-services/onos-service/templates/_tosca.tpl
new file mode 100644
index 0000000..67438b4
--- /dev/null
+++ b/xos-services/onos-service/templates/_tosca.tpl
@@ -0,0 +1,87 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Copyright 2018-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.
+*/}}
+{{- define "onos-service.fabricAppTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+imports:
+  - custom_types/onosapp.yaml
+  - custom_types/onosservice.yaml
+description: ONOS service and app for fabric
+topology_template:
+  node_templates:
+    service#ONOS_Fabric:
+      type: tosca.nodes.ONOSService
+      properties:
+          name: ONOS_Fabric
+          kind: platform
+          no_container: true
+          rest_hostname: onos-fabric-ui
+          rest_port: 8181
+
+    Fabric_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+          - owner:
+              node: service#ONOS_Fabric
+              relationship: tosca.relationships.BelongsToOne
+      properties:
+          name: Fabric_ONOS_app
+          dependencies: org.onosproject.drivers, org.onosproject.openflow, org.onosproject.netcfghostprovider, org.onosproject.segmentrouting, org.onosproject.vrouter
+{{- end -}}
+
+{{- define "onos-service.vtnAppTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/onosapp.yaml
+   - custom_types/onosservice.yaml
+   - custom_types/serviceinstanceattribute.yaml
+
+description: Configures the VTN ONOS service
+
+topology_template:
+  node_templates:
+
+    service#ONOS_CORD:
+      type: tosca.nodes.ONOSService
+      properties:
+          name: ONOS_CORD
+          kind: platform
+          no_container: true
+          rest_hostname: onos-cord-ui
+          rest_port: 8181
+
+    VTN_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+          - owner:
+              node: service#ONOS_CORD
+              relationship: tosca.relationships.BelongsToOne
+      properties:
+          name: VTN_ONOS_app
+          install_dependencies: https://repo.maven.apache.org/maven2/org/opencord/cord-config/1.3.1/cord-config-1.3.1.oar, https://repo.maven.apache.org/maven2/org/opencord/vtn/1.5.0/vtn-1.5.0.oar
+          dependencies: org.onosproject.drivers, org.onosproject.drivers.ovsdb, org.onosproject.openflow-base, org.onosproject.ovsdb-base, org.onosproject.dhcp
+
+    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
+{{- end -}}
diff --git a/xos-services/rcord/templates/_tosca.tpl b/xos-services/rcord/templates/_tosca.tpl
new file mode 100644
index 0000000..846837b
--- /dev/null
+++ b/xos-services/rcord/templates/_tosca.tpl
@@ -0,0 +1,28 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Copyright 2018-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.
+*/}}
+{{- define "rcord.serviceTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+imports:
+  - custom_types/rcordservice.yaml
+description: R-CORD service TOSCA
+topology_template:
+  node_templates:
+    service#rcord:
+      type: tosca.nodes.RCORDService
+      properties:
+        name: rcord
+{{- end -}}
diff --git a/xos-services/volt/templates/_tosca.tpl b/xos-services/volt/templates/_tosca.tpl
new file mode 100644
index 0000000..fffdab1
--- /dev/null
+++ b/xos-services/volt/templates/_tosca.tpl
@@ -0,0 +1,35 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Copyright 2018-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.
+*/}}
+{{- define "volt.serviceTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+description: Set up VOLT service
+imports:
+  - custom_types/voltservice.yaml
+
+topology_template:
+  node_templates:
+    service#volt:
+      type: tosca.nodes.VOLTService
+      properties:
+        name: volt
+        voltha_url: voltha.voltha.svc.cluster.local
+        voltha_port: 8882
+        onos_voltha_url: onos-voltha-ui.voltha.svc.cluster.local
+        onos_voltha_port: 8181
+        onos_voltha_user: karaf
+        onos_voltha_pass: karaf
+{{- end -}}
diff --git a/xos-services/vrouter/templates/_tosca.tpl b/xos-services/vrouter/templates/_tosca.tpl
new file mode 100644
index 0000000..7dce612
--- /dev/null
+++ b/xos-services/vrouter/templates/_tosca.tpl
@@ -0,0 +1,30 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Copyright 2018-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.
+*/}}
+{{- define "vrouter.serviceTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+description: Set up VRouter service
+imports:
+  - custom_types/vrouterservice.yaml
+
+topology_template:
+  node_templates:
+    service#vrouter:
+      type: tosca.nodes.VRouterService
+      properties:
+        name: vrouter
+        kind: rcord
+{{- end -}}
diff --git a/xos-services/vsg-hw/templates/_tosca.tpl b/xos-services/vsg-hw/templates/_tosca.tpl
new file mode 100644
index 0000000..d5d84be
--- /dev/null
+++ b/xos-services/vsg-hw/templates/_tosca.tpl
@@ -0,0 +1,29 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Copyright 2018-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.
+*/}}
+{{- define "vsg-hw.serviceTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+description: Set up VSG-HW service
+imports:
+  - custom_types/vsghwservice.yaml
+
+topology_template:
+  node_templates:
+    service#vsg-hw:
+      type: tosca.nodes.VSGHWService
+      properties:
+        name: vsg-hw
+{{- end -}}