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

Change-Id: I1dd85024fbe52a0adbd5021d306a78a9442164dd
diff --git a/templates/carrierethernet-global-app.yaml.j2 b/templates/carrierethernet-global-app.yaml.j2
new file mode 100644
index 0000000..d1406fb
--- /dev/null
+++ b/templates/carrierethernet-global-app.yaml.j2
@@ -0,0 +1,28 @@
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - 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:
+        name: ONOS_CORD
+        must-exist: true
+
+    CarrierEthernet_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      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/templates/carrierethernet-local-app.yaml.j2 b/templates/carrierethernet-local-app.yaml.j2
new file mode 100644
index 0000000..70f24aa
--- /dev/null
+++ b/templates/carrierethernet-local-app.yaml.j2
@@ -0,0 +1,79 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - 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:
+        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
+
+    CarrierEthernet_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+          - owner:
+              node: service#ONOS_CORD
+              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
+
+    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",
+                      "netconfReplyTimeout": "120"
+                  },
+                  "org.opencord.ce.local.bigswitch.BigSwitchManager": {
+                      "domainId": "{{ carrierethernet_domainid_prefix }}-cord-onos"
+                  }
+              }
+
+    CarrierEthernet_Fabric_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+          - owner:
+              node: service#ONOS_Fabric
+              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
+
+    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/templates/ecord-services.yaml.j2 b/templates/ecord-services.yaml.j2
new file mode 100644
index 0000000..cbdc2bf
--- /dev/null
+++ b/templates/ecord-services.yaml.j2
@@ -0,0 +1,319 @@
+{#
+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 vEG 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/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:
+
+# 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
+      properties:
+        name: management
+        must-exist: true
+
+{% if use_management_hosts %}
+    management_hosts:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+{% endif %}
+
+# 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
+    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
+      properties:
+        name: addressmanager
+
+    label_veg:
+      type: tosca.nodes.NodeLabel
+      properties:
+        name: label_veg
+
+    service#veg:
+      type: tosca.nodes.VEGService
+      properties:
+        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
+
+    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:
+        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.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#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
+      properties:
+        name: {{ site_name }}_veg-access
+        # ip_version: 4
+      requirements:
+        - template:
+            node: template#veg
+            relationship: tosca.relationships.BelongsToOne
+        - owner:
+            node: {{ site_name }}_veg
+            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.BelongsToOne
+
+    # CORD Slices
+    {{ site_name }}_veg:
+      description: vEG Controller Slice
+      type: tosca.nodes.Slice
+      properties:
+        network: noauto
+        name: {{ site_name }}_veg
+      requirements:
+        - service:
+            node: service#veg
+            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 }}_veg:
+        type: tosca.nodes.NetworkSlice
+        requirements:
+          - network:
+              node: management
+              relationship: tosca.relationships.BelongsToOne
+          - slice:
+              node: {{ site_name }}_veg
+              relationship: tosca.relationships.BelongsToOne
+
+{% 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 %}
+
+    # TODO: migrate interfaces when we'll start using
+    # 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
+
+    # 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/templates/fabric-network-cfg.json.j2 b/templates/fabric-network-cfg.json.j2
new file mode 100644
index 0000000..853c7e9
--- /dev/null
+++ b/templates/fabric-network-cfg.json.j2
@@ -0,0 +1,19 @@
+
+{#
+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.
+#}
+
+
+{}
\ No newline at end of file
diff --git a/templates/fabric-service.yaml.j2 b/templates/fabric-service.yaml.j2
new file mode 100644
index 0000000..e28d5ea
--- /dev/null
+++ b/templates/fabric-service.yaml.j2
@@ -0,0 +1,78 @@
+
+{#
+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
+
+imports:
+   - 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
+
+topology_template:
+  node_templates:
+
+    service#ONOS_Fabric:
+      type: tosca.nodes.ONOSService
+      properties:
+          name: ONOS_Fabric
+          kind: platform
+          no_container: true
+          rest_hostname: onos-fabric.{{ site_suffix }}
+
+    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:
+          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
+
+    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/templates/management-net.yaml.j2 b/templates/management-net.yaml.j2
new file mode 100644
index 0000000..9c7b03c
--- /dev/null
+++ b/templates/management-net.yaml.j2
@@ -0,0 +1,97 @@
+
+{#
+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
+
+imports:
+   - custom_types/networktemplate.yaml
+   - custom_types/network.yaml
+   - custom_types/slice.yaml
+   - custom_types/site.yaml
+
+description: management network config, generated by platform-install
+
+topology_template:
+  node_templates:
+
+# 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
+      properties:
+        name: management
+        # ip_version: 4
+        subnet: {{ management_network_cidr }}
+        permit_all_slices: true
+      requirements:
+        - template:
+            node: management_template
+            relationship: tosca.relationships.BelongsToOne
+        - owner:
+            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
+      properties:
+        # 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:
+        - template:
+            node: management_hosts_template
+            relationship: tosca.relationships.BelongsToOne
+        - owner:
+            node: slice#{{ site_name }}_management
+            relationship: tosca.relationships.BelongsToOne
+{% endif %}
+
+    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.BelongsToOne
+
diff --git a/templates/public-net.yaml.j2 b/templates/public-net.yaml.j2
new file mode 100644
index 0000000..610c58b
--- /dev/null
+++ b/templates/public-net.yaml.j2
@@ -0,0 +1,117 @@
+
+{#
+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
+
+imports:
+  - 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
+
+topology_template:
+  node_templates:
+
+# 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
+      properties:
+          name: public
+          permit_all_slices: true
+          subnet: 10.8.1.0/24 # NOTE same as AddressPool#addresses_public
+          # ip_version: 4
+      requirements:
+          - template:
+              node: public_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_public
+              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.BelongsToOne
+
diff --git a/templates/service-graph-constraints.yaml.j2 b/templates/service-graph-constraints.yaml.j2
new file mode 100644
index 0000000..00fbc4a
--- /dev/null
+++ b/templates/service-graph-constraints.yaml.j2
@@ -0,0 +1,14 @@
+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: '{{ xos_gui_service_graph_constraints }}'
diff --git a/templates/vee-service.yaml.j2 b/templates/vee-service.yaml.j2
new file mode 100644
index 0000000..9fea06d
--- /dev/null
+++ b/templates/vee-service.yaml.j2
@@ -0,0 +1,63 @@
+
+{#
+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
+
+imports:
+   - custom_types/veeservice.yaml
+   - custom_types/vegservice.yaml
+   - custom_types/networktemplate.yaml
+   - custom_types/servicedependency.yaml
+
+description: vee services, generated by platform-install
+
+topology_template:
+  node_templates:
+
+    service#veg:
+      type: tosca.nodes.VEGService
+      requirements:
+      properties:
+        name: veg
+        must-exist: true
+
+    service#vee:
+      type: tosca.nodes.VEEService
+      properties:
+        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/templates/vnaasglobal-service-reference.yaml.j2 b/templates/vnaasglobal-service-reference.yaml.j2
new file mode 100644
index 0000000..25626a7
--- /dev/null
+++ b/templates/vnaasglobal-service-reference.yaml.j2
@@ -0,0 +1,138 @@
+{#
+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
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/vnaas.yaml
+
+description: vnaasglobal services, generated by platform-install
+
+topology_template:
+  node_templates:
+
+    enterpriselocation#onlab:
+      type: tosca.nodes.EnterpriseLocation
+      requirements:
+      properties:
+        name: onlab
+        cord_site_ip: 127.0.0.1
+        cord_site_port: 8181
+        cord_site_username: onos
+        cord_site_password: rocks
+        cord_site_type: onos
+
+
+    enterpriselocation#onlab1:
+      type: tosca.nodes.EnterpriseLocation
+      requirements:
+      properties:
+        name: onlab1
+        cord_site_ip: 127.0.0.2
+        cord_site_port: 8181
+        cord_site_username: onos
+        cord_site_password: rocks
+        cord_site_type: onos
+
+    onosmodel#onlab:
+      type: tosca.nodes.OnosModel
+      requirements:
+      properties:
+        name: onlabT
+        onos_ip: onos-cord.{{ site_suffix }}
+        onos_port: 8182
+        onos_username: onos
+        onos_password: rocks
+        onos_type: global
+
+    bandwidthprofile#bronze:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 1000
+        ebs: 1200
+        cir: 1000
+        eir: 1200
+        name: bronze
+
+    bandwidthprofile#silver:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 1500
+        ebs: 2000
+        cir: 10000
+        eir: 2000
+        name: silver
+
+    bandwidthprofile#gold:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 2000
+        ebs: 2700
+        cir: 20000
+        eir: 5000
+        name: gold
+
+    bandwidthprofile#platinum:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 2500
+        ebs: 3200
+        cir: 100000
+        eir: 10000
+        name: platinum
+
+    usernetworkinterface#UserNetworkInterface1:
+      type: tosca.nodes.UserNetworkInterface
+      requirements:
+      properties:
+        tenant: onlab
+        name: uni1
+        latlng: [37.973535, -122.531087]
+        cpe_id: netconf:192.168.56.10:830/0
+
+    usernetworkinterface#UserNetworkInterface2:
+      type: tosca.nodes.UserNetworkInterface
+      requirements:
+      properties:
+        tenant: onlab
+        name: uni2
+        latlng: [37.773972, -122.431297]
+        cpe_id: netconf:192.168.56.20:830/0
+
+    usernetworkinterface#UserNetworkInterface3:
+      type: tosca.nodes.UserNetworkInterface
+      requirements:
+      properties:
+        tenant: onlab
+        name: uni3
+        latlng: [37.871637, -122.259750]
+        cpe_id: netconf:192.168.56.30:830/0
+
+#     eline#testeline:
+#       type: tosca.nodes.ELine
+#       requirements:
+#       properties:
+#         name: testeline
+#         connect_point_1_id: netconf:192.168.56.10:830/0
+#         connect_point_2_id: netconf:192.168.56.20:830/0
+#         vlanids: 100
+#         cord_site_name: onlabT
+#         bwp: gold
diff --git a/templates/vtn-service.yaml.j2 b/templates/vtn-service.yaml.j2
new file mode 100644
index 0000000..6a2dbd6
--- /dev/null
+++ b/templates/vtn-service.yaml.j2
@@ -0,0 +1,90 @@
+{#
+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
+
+imports:
+   - 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
+
+topology_template:
+  node_templates:
+
+    service#ONOS_CORD:
+      type: tosca.nodes.ONOSService
+      properties:
+          name: ONOS_CORD
+          kind: platform
+          no_container: true
+          rest_hostname: onos-cord.{{ site_suffix }}
+          rest_port: 8182
+
+    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 }}
+          ovsdbPort: 6641
+          sshUser: root
+          sshKeyFile: /root/node_key
+          sshPort: 22
+          xosEndpoint: xos-chameleon.{{ site_suffix }}:{{ xos_chameleon_port }}
+          xosUser: {{ xos_admin_user }}
+          xosPassword: {{ xos_admin_pass }}
+          vtnAPIVersion: 2
+          controllerPort: onos-cord.{{ site_suffix }}:6654
+          resync: false
+
+    VTN_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+          - owner:
+              node: service#ONOS_CORD
+              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
+
+    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/templates/xos-gui-extensions.yml.j2 b/templates/xos-gui-extensions.yml.j2
new file mode 100644
index 0000000..f10c695
--- /dev/null
+++ b/templates/xos-gui-extensions.yml.j2
@@ -0,0 +1,37 @@
+
+{#
+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: Persist xos-sample-gui-extension
+
+imports:
+   - custom_types/xosguiextension.yaml
+
+topology_template:
+  node_templates:
+
+    # UI Extension
+{% for ext in enabled_gui_extensions %}
+    {{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 %}