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

Change-Id: I008f9affb7194665d3de5eff331c49372bc8b73e
diff --git a/mcord-cavium.yml b/mcord-cavium.yml
new file mode 100644
index 0000000..f1ea30d
--- /dev/null
+++ b/mcord-cavium.yml
@@ -0,0 +1,274 @@
+---
+
+# 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.
+
+# profile_manifests/mcord.yml
+# Configures an M-CORD pod
+
+# Profile info located in orchestration/profiles/<cord_use_case>
+cord_use_case: mcord
+
+# site configuration
+site_name: mysite
+site_humanname: MySite
+#site_suffix: "{{ site_name }}.opencord.org"
+site_suffix: "cord.lab"
+deployment_type: MyDeployment
+
+# Feature toggles
+use_fabric: True
+use_maas: True
+
+# XOS config
+xos_new_tosca_config_templates:
+  - vtn-service.yaml
+  - fabric-service.yaml
+  - management-net.yaml
+  - shared-net.yaml
+  - wan-net.yaml
+  - vsg-net.yaml
+  - s11-net.yaml
+  - flat-net-s1u.yaml
+  - flat-net-s1mme.yaml
+  - spgw-net.yaml
+  - sgi-net.yaml
+  - mcord-cavium-services.yml
+  - xos-gui-extensions.yml
+  - service-graph-constraints.yaml
+
+xos_other_templates:
+  - fabric-network-cfg.json
+
+# GUI Config [new GUI]
+gui_project_name: "M-CORD"
+gui_background: "cord-bg.jpg" # TODO find mcord image
+
+enabled_gui_extensions: []
+
+# paths defined in manifest/default.xml, eNB is temporally removed
+xos_services:
+  - name: vtn
+    path: orchestration/xos_services/vtn-service
+    keypair: vsg_rsa
+  - name: openstack
+    path: orchestration/xos_services/openstack
+  - name: onos
+    path: orchestration/xos_services/onos-service
+    keypair: onos_rsa
+  - name: addressmanager
+    path: orchestration/xos_services/addressmanager
+  - name: fabric
+    path: orchestration/xos_services/fabric
+  - name: vmme
+    path: orchestration/xos_services/vmme
+    keypair: mcord_rsa
+  - name: vspgwc
+    path: orchestration/xos_services/vspgwc
+    keypair: mcord_rsa
+  - name: vspgwu
+    path: orchestration/xos_services/vspgwu
+    keypair: mcord_rsa
+  - name: vepc
+    path: orchestration/xos_services/epc-service
+    keypair: mcord_rsa
+
+# service graph gui constraints
+xos_gui_service_graph_constraints: '["mcord", "venb", ["vspgwc", "vspgwu"]]'
+
+profile_library: "mcord"
+
+# VTN network configuration
+management_network_cidr: 172.27.0.0/24
+management_network_ip: 172.27.0.1/24
+data_plane_ip: 10.168.0.253/24
+
+# Juju config
+charm_versions:
+  ceilometer: "cs:trusty/ceilometer-17"
+  ceilometer-agent: "cs:trusty/ceilometer-agent-13"
+  glance: "cs:trusty/glance-28"
+  keystone: "cs:trusty/keystone-267"
+  mongodb: "cs:trusty/mongodb-33"
+  percona-cluster: "cs:trusty/percona-cluster-31"
+  nagios: "cs:trusty/nagios-10"
+  neutron-api: "cs:~cordteam/trusty/neutron-api-6"
+  nova-cloud-controller: "cs:trusty/nova-cloud-controller-64"
+  nova-compute: "cs:~cordteam/trusty/nova-compute-3"
+  nrpe: "cs:trusty/nrpe-4"
+  ntp: "cs:trusty/ntp-14"
+  openstack-dashboard: "cs:trusty/openstack-dashboard-19"
+  rabbitmq-server: "cs:trusty/rabbitmq-server-42"
+
+head_lxd_list:
+  - name: "juju-1"
+    service: "juju"
+    aliases:
+      - "juju"
+    ipv4_last_octet: 10
+
+  - name: "ceilometer-1"
+    service: "ceilometer"
+    aliases:
+      - "ceilometer"
+    ipv4_last_octet: 20
+    forwarded_ports:
+      - { ext: 8777, int: 8777 }
+
+  - name: "glance-1"
+    service: "glance"
+    aliases:
+      - "glance"
+    ipv4_last_octet: 30
+    forwarded_ports:
+      - { ext: 9292, int: 9292 }
+
+  - name: "keystone-1"
+    service: "keystone"
+    aliases:
+      - "keystone"
+    ipv4_last_octet: 40
+    forwarded_ports:
+      - { ext: 35357, int: 35357 }
+      - { ext: 4990, int: 4990 }
+      - { ext: 5000, int: 5000 }
+
+  - name: "percona-cluster-1"
+    service: "percona-cluster"
+    aliases:
+      - "percona-cluster"
+    ipv4_last_octet: 50
+
+  - name: "nagios-1"
+    service: "nagios"
+    aliases:
+      - "nagios"
+    ipv4_last_octet: 60
+    forwarded_ports:
+      - { ext: 3128, int: 80 }
+
+  - name: "neutron-api-1"
+    service: "neutron-api"
+    aliases:
+      - "neutron-api"
+    ipv4_last_octet: 70
+    forwarded_ports:
+      - { ext: 9696, int: 9696 }
+
+  - name: "nova-cloud-controller-1"
+    service: "nova-cloud-controller"
+    aliases:
+      - "nova-cloud-controller"
+    ipv4_last_octet: 80
+    forwarded_ports:
+      - { ext: 8774, int: 8774 }
+
+  - name: "openstack-dashboard-1"
+    service: "openstack-dashboard"
+    aliases:
+      - "openstack-dashboard"
+    ipv4_last_octet: 90
+    forwarded_ports:
+      - { ext: 8080, int: 80 }
+
+  - name: "rabbitmq-server-1"
+    service: "rabbitmq-server"
+    aliases:
+      - "rabbitmq-server"
+    ipv4_last_octet: 100
+
+  - name: "mongodb-1"
+    service: "mongodb"
+    aliases:
+      - "mongodb"
+    ipv4_last_octet: 110
+
+lxd_service_list:
+  - ceilometer
+  - glance
+  - keystone
+  - mongodb
+  - nagios
+  - neutron-api
+  - nova-cloud-controller
+  - openstack-dashboard
+  - percona-cluster
+  - rabbitmq-server
+
+standalone_service_list:
+  - ntp
+  - nrpe
+  - ceilometer-agent
+
+
+service_relations:
+  - name: keystone
+    relations: [ "percona-cluster", "nrpe", ]
+
+  - name: nova-cloud-controller
+    relations: [ "percona-cluster", "rabbitmq-server", "glance", "keystone", "nrpe", ]
+
+  - name: glance
+    relations: [ "percona-cluster", "keystone", "nrpe", ]
+
+  - name: neutron-api
+    relations: [ "keystone",  "percona-cluster", "rabbitmq-server", "nova-cloud-controller", "nrpe", ]
+
+  - name: openstack-dashboard
+    relations: [ "keystone", "nrpe", ]
+
+  - name: nagios
+    relations: [ "nrpe", ]
+
+  - name: "percona-cluster:juju-info"
+    relations: [ "nrpe:general-info", ]
+
+  - name: rabbitmq-server
+    relations: [ "nrpe", ]
+
+  - name: ceilometer
+    relations: [ "mongodb", "rabbitmq-server", "nagios", "nrpe", ]
+
+  - name: "ceilometer:identity-service"
+    relations: [ "keystone:identity-service", ]
+
+  - name: "ceilometer:ceilometer-service"
+    relations: [ "ceilometer-agent:ceilometer-service", ]
+
+
+compute_relations:
+  - name: nova-compute
+    relations: [ "ceilometer-agent", "glance", "nova-cloud-controller", "nagios", "nrpe", ]
+
+  - name: "nova-compute:shared-db"
+    relations: [ "percona-cluster:shared-db", ]
+
+  - name: "nova-compute:amqp"
+    relations: [ "rabbitmq-server:amqp", ]
+
+  - name: ntp
+    relations: [ "nova-compute", ]
+
+xos_images:
+  - name: "image-test"
+    url: "https://github.com/opencord/platform-install/releases/download/vms/trusty-server-cloudimg-amd64-disk1.img.20170201"
+    checksum: "sha256:ebf007ba3ec1043b7cd011fc6668e2a1d1d4c69c41071e8513ab355df7a057cb"
+
+  - name: "image-spgwc"
+    url: "http://www.vicci.org/cord/ngic-cp1-cmpress.qcow2.20171121"
+    checksum: "sha256:eca43de006d193625778597cc9b3f171752c31e0ce6dbed363954c87c33935a3"
+
+  - name: "image-spgwu"
+    url: "http://www.vicci.org/cord/ngic-dp1-cmpress.qcow2.20171121"
+    checksum: "sha256:2d431dc24b8de5d531ddf9a82c20f692d9ac8c9d4dd0295c535acc06c6635bc5"
\ No newline at end of file
diff --git a/mcord-ng40.yml b/mcord-ng40.yml
new file mode 100644
index 0000000..7892c27
--- /dev/null
+++ b/mcord-ng40.yml
@@ -0,0 +1,277 @@
+---
+
+# 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.
+
+# profile_manifests/mcord.yml
+# Configures an M-CORD pod
+
+# Profile info located in orchestration/profiles/<cord_use_case>
+cord_use_case: mcord
+
+# site configuration
+site_name: mysite
+site_humanname: MySite
+#site_suffix: "{{ site_name }}.opencord.org"
+site_suffix: "cord.lab"
+deployment_type: MyDeployment
+
+# Feature toggles
+use_fabric: True
+use_maas: True
+
+# XOS config
+xos_new_tosca_config_templates:
+  - vtn-service.yaml
+  - fabric-service.yaml
+  - management-net.yaml
+  - shared-net.yaml
+  - wan-net.yaml
+  - vsg-net.yaml
+  - s11-net.yaml
+  - s1u-net.yaml
+  - nbi-net.yaml
+  - sbi-net.yaml
+  - spgw-net.yaml
+  - sgi-net.yaml
+  - flat-net.yaml
+  - mcord-ng40-services.yml
+  - xos-gui-extensions.yml
+  - service-graph-constraints.yaml
+
+xos_other_templates:
+  - fabric-network-cfg.json
+
+# GUI Config [new GUI]
+gui_project_name: "M-CORD"
+gui_background: "cord-bg.jpg" # TODO find mcord image
+
+enabled_gui_extensions: []
+
+# paths defined in manifest/default.xml
+xos_services:
+  - name: vtn
+    path: orchestration/xos_services/vtn-service
+    keypair: vsg_rsa
+  - name: openstack
+    path: orchestration/xos_services/openstack
+  - name: onos
+    path: orchestration/xos_services/onos-service
+    keypair: onos_rsa
+  - name: addressmanager
+    path: orchestration/xos_services/addressmanager
+  - name: fabric
+    path: orchestration/xos_services/fabric
+  - name: venb
+    path: orchestration/xos_services/venb
+    keypair: mcord_rsa
+  - name: vspgwc
+    path: orchestration/xos_services/vspgwc
+    keypair: mcord_rsa
+  - name: vspgwu
+    path: orchestration/xos_services/vspgwu
+    keypair: mcord_rsa
+  - name: vepc
+    path: orchestration/xos_services/epc-service
+    keypair: mcord_rsa
+
+# service graph gui constraints
+xos_gui_service_graph_constraints: '["mcord", "venb", ["vspgwc", "vspgwu"]]'
+
+profile_library: "mcord"
+
+# VTN network configuration
+management_network_cidr: 172.27.0.0/24
+management_network_ip: 172.27.0.1/24
+data_plane_ip: 10.168.0.253/24
+
+# Juju config
+charm_versions:
+  ceilometer: "cs:trusty/ceilometer-17"
+  ceilometer-agent: "cs:trusty/ceilometer-agent-13"
+  glance: "cs:trusty/glance-28"
+  keystone: "cs:trusty/keystone-267"
+  mongodb: "cs:trusty/mongodb-33"
+  percona-cluster: "cs:trusty/percona-cluster-31"
+  nagios: "cs:trusty/nagios-10"
+  neutron-api: "cs:~cordteam/trusty/neutron-api-6"
+  nova-cloud-controller: "cs:trusty/nova-cloud-controller-64"
+  nova-compute: "cs:~cordteam/trusty/nova-compute-3"
+  nrpe: "cs:trusty/nrpe-4"
+  ntp: "cs:trusty/ntp-14"
+  openstack-dashboard: "cs:trusty/openstack-dashboard-19"
+  rabbitmq-server: "cs:trusty/rabbitmq-server-42"
+
+head_lxd_list:
+  - name: "juju-1"
+    service: "juju"
+    aliases:
+      - "juju"
+    ipv4_last_octet: 10
+
+  - name: "ceilometer-1"
+    service: "ceilometer"
+    aliases:
+      - "ceilometer"
+    ipv4_last_octet: 20
+    forwarded_ports:
+      - { ext: 8777, int: 8777 }
+
+  - name: "glance-1"
+    service: "glance"
+    aliases:
+      - "glance"
+    ipv4_last_octet: 30
+    forwarded_ports:
+      - { ext: 9292, int: 9292 }
+
+  - name: "keystone-1"
+    service: "keystone"
+    aliases:
+      - "keystone"
+    ipv4_last_octet: 40
+    forwarded_ports:
+      - { ext: 35357, int: 35357 }
+      - { ext: 4990, int: 4990 }
+      - { ext: 5000, int: 5000 }
+
+  - name: "percona-cluster-1"
+    service: "percona-cluster"
+    aliases:
+      - "percona-cluster"
+    ipv4_last_octet: 50
+
+  - name: "nagios-1"
+    service: "nagios"
+    aliases:
+      - "nagios"
+    ipv4_last_octet: 60
+    forwarded_ports:
+      - { ext: 3128, int: 80 }
+
+  - name: "neutron-api-1"
+    service: "neutron-api"
+    aliases:
+      - "neutron-api"
+    ipv4_last_octet: 70
+    forwarded_ports:
+      - { ext: 9696, int: 9696 }
+
+  - name: "nova-cloud-controller-1"
+    service: "nova-cloud-controller"
+    aliases:
+      - "nova-cloud-controller"
+    ipv4_last_octet: 80
+    forwarded_ports:
+      - { ext: 8774, int: 8774 }
+
+  - name: "openstack-dashboard-1"
+    service: "openstack-dashboard"
+    aliases:
+      - "openstack-dashboard"
+    ipv4_last_octet: 90
+    forwarded_ports:
+      - { ext: 8080, int: 80 }
+
+  - name: "rabbitmq-server-1"
+    service: "rabbitmq-server"
+    aliases:
+      - "rabbitmq-server"
+    ipv4_last_octet: 100
+
+  - name: "mongodb-1"
+    service: "mongodb"
+    aliases:
+      - "mongodb"
+    ipv4_last_octet: 110
+
+lxd_service_list:
+  - ceilometer
+  - glance
+  - keystone
+  - mongodb
+  - nagios
+  - neutron-api
+  - nova-cloud-controller
+  - openstack-dashboard
+  - percona-cluster
+  - rabbitmq-server
+
+standalone_service_list:
+  - ntp
+  - nrpe
+  - ceilometer-agent
+
+
+service_relations:
+  - name: keystone
+    relations: [ "percona-cluster", "nrpe", ]
+
+  - name: nova-cloud-controller
+    relations: [ "percona-cluster", "rabbitmq-server", "glance", "keystone", "nrpe", ]
+
+  - name: glance
+    relations: [ "percona-cluster", "keystone", "nrpe", ]
+
+  - name: neutron-api
+    relations: [ "keystone",  "percona-cluster", "rabbitmq-server", "nova-cloud-controller", "nrpe", ]
+
+  - name: openstack-dashboard
+    relations: [ "keystone", "nrpe", ]
+
+  - name: nagios
+    relations: [ "nrpe", ]
+
+  - name: "percona-cluster:juju-info"
+    relations: [ "nrpe:general-info", ]
+
+  - name: rabbitmq-server
+    relations: [ "nrpe", ]
+
+  - name: ceilometer
+    relations: [ "mongodb", "rabbitmq-server", "nagios", "nrpe", ]
+
+  - name: "ceilometer:identity-service"
+    relations: [ "keystone:identity-service", ]
+
+  - name: "ceilometer:ceilometer-service"
+    relations: [ "ceilometer-agent:ceilometer-service", ]
+
+
+compute_relations:
+  - name: nova-compute
+    relations: [ "ceilometer-agent", "glance", "nova-cloud-controller", "nagios", "nrpe", ]
+
+  - name: "nova-compute:shared-db"
+    relations: [ "percona-cluster:shared-db", ]
+
+  - name: "nova-compute:amqp"
+    relations: [ "rabbitmq-server:amqp", ]
+
+  - name: ntp
+    relations: [ "nova-compute", ]
+
+
+xos_images:
+  - name: "image-venb"
+    url: "https://github.com/opencord/venb/releases/download/vms/ng40-vmcord-1-4GB.img.20171201"
+    checksum: "sha256:3d6d385247560c90db90b2591578c200eafaa62c232a964ab664420e8b2b33ac"
+
+  - name: "image-spgwc"
+    url: "http://www.vicci.org/cord/ngic-cp1-cmpress.qcow2.20171121"
+    checksum: "sha256:eca43de006d193625778597cc9b3f171752c31e0ce6dbed363954c87c33935a3"
+
+  - name: "image-spgwu"
+    url: "http://www.vicci.org/cord/ngic-dp1-cmpress.qcow2.20171121"
+    checksum: "sha256:2d431dc24b8de5d531ddf9a82c20f692d9ac8c9d4dd0295c535acc06c6635bc5"
diff --git a/podconfig/mcord-cavium-local.yml b/podconfig/mcord-cavium-local.yml
new file mode 100644
index 0000000..22e24bd
--- /dev/null
+++ b/podconfig/mcord-cavium-local.yml
@@ -0,0 +1,23 @@
+
+# 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.
+
+
+---
+# local-mcord Pod Config
+# Starts a M-CORD container set in the local environment
+
+cord_scenario: local
+cord_profile: mcord-cavium
+
diff --git a/podconfig/mcord-cavium-mock.yml b/podconfig/mcord-cavium-mock.yml
new file mode 100644
index 0000000..51f168d
--- /dev/null
+++ b/podconfig/mcord-cavium-mock.yml
@@ -0,0 +1,23 @@
+
+# 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.
+
+
+---
+# mock-mcord Pod Config
+# Creates a single-node mock M-CORD pod
+
+cord_scenario: mock
+cord_profile: mcord-cavium
+
diff --git a/podconfig/mcord-cavium-single.yml b/podconfig/mcord-cavium-single.yml
new file mode 100644
index 0000000..0ccf9ff
--- /dev/null
+++ b/podconfig/mcord-cavium-single.yml
@@ -0,0 +1,23 @@
+
+# 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.
+
+
+---
+# mcord-single Pod Config
+# Creates a single-node mock M-CORD pod w/synchronizers
+
+cord_scenario: single
+cord_profile: mcord-cavium
+
diff --git a/podconfig/mcord-cavium-virtual.yml b/podconfig/mcord-cavium-virtual.yml
new file mode 100644
index 0000000..bc00c31
--- /dev/null
+++ b/podconfig/mcord-cavium-virtual.yml
@@ -0,0 +1,46 @@
+# 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.
+
+
+---
+# mcord-virtual Pod Config
+# Creates a virtual multi-node M-CORD pod, aka "mcord-in-a-box"
+
+cord_scenario: cord
+cord_profile: mcord-cavium
+
+compute_vm_mem: 32768
+
+vagrant_up_prereqs:
+  - prereqs-check
+  - ciab-ovs
+
+build_targets:
+ - compute1-up
+
+external_iface: 'eth0'
+
+skipTags:
+  - 'set_compute_node_password'
+  - 'switch_support'
+  - 'reboot'
+  - 'interface_config'
+
+# Other old config carried over
+cord_in_a_box: True # what is this for?
+fabric_include_names: eth2
+fabric_include_module_types: omit
+fabric_exclude_names: eth0,eth1
+management_include_names: eth1
+management_exclude_names: eth0,eth2
diff --git a/podconfig/mcord-ng40-local.yml b/podconfig/mcord-ng40-local.yml
new file mode 100644
index 0000000..7ace9d5
--- /dev/null
+++ b/podconfig/mcord-ng40-local.yml
@@ -0,0 +1,23 @@
+
+# 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.
+
+
+---
+# local-rcord Pod Config
+# Starts a R-CORD container set in the local environment
+
+cord_scenario: local
+cord_profile: mcord-ng40
+
diff --git a/podconfig/mcord-ng40-mock.yml b/podconfig/mcord-ng40-mock.yml
new file mode 100644
index 0000000..ebe8bf0
--- /dev/null
+++ b/podconfig/mcord-ng40-mock.yml
@@ -0,0 +1,23 @@
+
+# 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.
+
+
+---
+# mock-mcord Pod Config
+# Creates a single-node mock M-CORD pod
+
+cord_scenario: mock
+cord_profile: mcord-ng40
+
diff --git a/podconfig/mcord-ng40-single.yml b/podconfig/mcord-ng40-single.yml
new file mode 100644
index 0000000..cec8727
--- /dev/null
+++ b/podconfig/mcord-ng40-single.yml
@@ -0,0 +1,23 @@
+
+# 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.
+
+
+---
+# mcord-single Pod Config
+# Creates a single-node mock M-CORD pod w/synchronizers
+
+cord_scenario: single
+cord_profile: mcord-ng40
+
diff --git a/podconfig/mcord-ng40-virtual.yml b/podconfig/mcord-ng40-virtual.yml
new file mode 100644
index 0000000..20b02c3
--- /dev/null
+++ b/podconfig/mcord-ng40-virtual.yml
@@ -0,0 +1,46 @@
+# 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.
+
+
+---
+# mcord-virtual Pod Config
+# Creates a virtual multi-node M-CORD pod, aka "mcord-in-a-box"
+
+cord_scenario: cord
+cord_profile: mcord-ng40
+
+compute_vm_mem: 32768
+
+vagrant_up_prereqs:
+  - prereqs-check
+  - ciab-ovs
+
+build_targets:
+ - compute1-up
+
+external_iface: 'eth0'
+
+skipTags:
+  - 'set_compute_node_password'
+  - 'switch_support'
+  - 'reboot'
+  - 'interface_config'
+
+# Other old config carried over
+cord_in_a_box: True # what is this for?
+fabric_include_names: eth2
+fabric_include_module_types: omit
+fabric_exclude_names: eth0,eth1
+management_include_names: eth1
+management_exclude_names: eth0,eth2
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/flat-net-s1mme.yaml.j2 b/templates/flat-net-s1mme.yaml.j2
new file mode 100644
index 0000000..b4c5c93
--- /dev/null
+++ b/templates/flat-net-s1mme.yaml.j2
@@ -0,0 +1,55 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: flat network for S1MME interface
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# flat network for s1mme
+    flat_template_s1mme:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: flat_template_s1mme
+          visibility: private
+          translation: none
+          vtn_kind: FLAT
+
+    flat_network_s1mme:
+      type: tosca.nodes.Network
+      properties:
+          name: flat_network_s1mme
+          subnet: 118.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: flat_template_s1mme
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_flat_s1mme
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_flat_s1mme:
+      description: This slice exists solely to own the Flat network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_flat_s1mme
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
\ No newline at end of file
diff --git a/templates/flat-net-s1u.yaml.j2 b/templates/flat-net-s1u.yaml.j2
new file mode 100644
index 0000000..01ca850
--- /dev/null
+++ b/templates/flat-net-s1u.yaml.j2
@@ -0,0 +1,55 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: flat network for S1U interface
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# flat network for s1u
+    flat_template_s1u:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: flat_template_s1u
+          visibility: private
+          translation: none
+          vtn_kind: FLAT
+
+    flat_network_s1u:
+      type: tosca.nodes.Network
+      properties:
+          name: flat_network_s1u
+          subnet: 119.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: flat_template_s1u
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_flat_s1u
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_flat_s1u:
+      description: This slice exists solely to own the Flat network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_flat_s1u
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
\ No newline at end of file
diff --git a/templates/flat-net.yaml.j2 b/templates/flat-net.yaml.j2
new file mode 100644
index 0000000..e9588c0
--- /dev/null
+++ b/templates/flat-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: flat network for connecting from VM in CORD to servers outside
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# flat network
+    flat_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: flat_template
+          visibility: private
+          translation: none
+          vtn_kind: FLAT
+
+    flat_network:
+      type: tosca.nodes.Network
+      properties:
+          name: flat_network
+          subnet: 103.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: flat_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_flat
+              relationship: tosca.relationships.MemberOfSlice
+
+    {{ site_name }}_flat:
+      description: This slice exists solely to own the flat network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_flat
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              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/mcord-cavium-services.yml.j2 b/templates/mcord-cavium-services.yml.j2
new file mode 100644
index 0000000..99fab61
--- /dev/null
+++ b/templates/mcord-cavium-services.yml.j2
@@ -0,0 +1,342 @@
+
+{#
+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: created by platform-install
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/slice.yaml
+   - custom_types/site.yaml
+   - custom_types/image.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/onosservice.yaml
+   - custom_types/networkslice.yaml
+   - custom_types/vspgwcservice.yaml
+   - custom_types/vspgwcvendor.yaml
+   - custom_types/vspgwuservice.yaml
+   - custom_types/vspgwuvendor.yaml
+   - custom_types/vmmeservice.yaml
+   - custom_types/vmmevendor.yaml
+   - custom_types/vepcservice.yaml
+   - custom_types/servicedependency.yaml
+   - custom_types/mcordsubscriberservice.yaml
+
+topology_template:
+  node_templates:
+
+# site, image, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+        must-exist: true
+        name: {{ site_name }}
+
+    m1.small:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.small
+        must-exist: true
+    m1.large:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.large
+        must-exist: true
+    m1.medium:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.medium
+        must-exist: true
+    m1.xlarge:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.xlarge
+        must-exist: true
+
+    image-test:
+      type: tosca.nodes.Image
+      properties:
+        name: image-test
+
+    image-spgwc:
+      type: tosca.nodes.Image
+      properties:
+        name: image-spgwc
+
+    image-spgwu:
+      type: tosca.nodes.Image
+      properties:
+        name: image-spgwu
+
+# management networks, fully created in management-net.yaml
+    management:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: management
+
+{% if use_management_hosts %}
+    management_hosts:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: management_hosts
+{% endif %}
+
+# flat_network_s1mme is for connectivity between VMs, fully created in flat-net-s1mme.yaml
+    flat_network_s1mme:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: flat_network_s1mme
+# flat_network_s1u is for connectivity between VMs, fully created in flat-net-s1u.yaml
+    flat_network_s1u:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: flat_network_s1u
+# s11_network is for connectivity between VMs, fully created in s11-net.yaml
+    s11_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: s11_network
+# sgi_network is for connectivity between VMs, fully created in sgi-net.yaml
+    sgi_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: sgi_network
+# spgw_network is for connectivity between VMs, fully created in spgw-net.yaml
+    spgw_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: spgw_network
+
+# ONOS_CORD, fully created in vtn.yaml
+    service#ONOS_CORD:
+      type: tosca.nodes.ONOSService
+      properties:
+        must-exist: true
+        name: ONOS_CORD
+
+# ONOS_Fabric, fully created in fabric.yaml
+    service#ONOS_Fabric:
+      type: tosca.nodes.ONOSService
+      properties:
+        must-exist: true
+        name: ONOS_Fabric
+
+# vMME Service
+    service#vmme:
+      type: tosca.nodes.VMMEService
+      properties:
+          name: vmme
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/vmme/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+    {{ site_name }}_vmme:
+      description: vMME Service Slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_vmme
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#vmme
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: image-test
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.medium
+              relationship: tosca.relationships.BelongsToOne
+
+    sprint_mme:
+      type: tosca.nodes.VMMEVendor
+      properties:
+        name: sprint_mme
+      requirements:
+        - image:
+            node: image-test
+            relationship: tosca.relationships.BelongsToOne
+        - flavor:
+            node: m1.medium
+            relationship: tosca.relationships.BelongsToOne
+
+#vSPGWC Service
+    service#vspgwc:
+      type: tosca.nodes.VSPGWCService
+      properties:
+          name: vspgwc
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/vspgwc/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+    {{ site_name }}_vspgwc:
+      description: SDN controller slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_vspgwc
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#vspgwc
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: image-spgwc
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.large
+              relationship: tosca.relationships.BelongsToOne
+
+    intel_vspgwc:
+      type: tosca.nodes.VSPGWCVendor
+      properties:
+        name: intel_vspgwc
+      requirements:
+        - image:
+            node: image-spgwc
+            relationship: tosca.relationships.BelongsToOne
+        - flavor:
+            node: m1.large
+            relationship: tosca.relationships.BelongsToOne
+
+
+#vSPGWU Service
+    service#vspgwu:
+      type: tosca.nodes.VSPGWUService
+      properties:
+          name: vspgwu
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/vspgwu/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+    {{ site_name }}_vspgwu:
+      description: SDN controller slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_vspgwu
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#vspgwu
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: image-spgwu
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.xlarge
+              relationship: tosca.relationships.BelongsToOne
+
+    intel_vspgwu:
+      type: tosca.nodes.VSPGWUVendor
+      properties:
+        name: intel_vspgwu
+      requirements:
+        - image:
+            node: image-spgwu
+            relationship: tosca.relationships.BelongsToOne
+        - flavor:
+            node: m1.xlarge
+            relationship: tosca.relationships.BelongsToOne
+
+# vEPC Service
+    service#vepc:
+      type: tosca.nodes.VEPCService
+      properties:
+          name: vepc
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/epc-service/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+# ServiceDependencies
+    vmme_vspgwc:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vmme
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vspgwc
+            relationship: tosca.relationships.BelongsToOne
+
+    vmme_vspgwu:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vmme
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwc_vspgwu:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vspgwc
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+# M-CORD Subscriber
+    service#mcord:
+      type: tosca.nodes.MCordSubscriberService
+      properties:
+        name: mcord
+
+    # ServiceDependency M-CORD to vENB
+    mcord_vmme:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vmme
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#mcord
+            relationship: tosca.relationships.BelongsToOne
diff --git a/templates/mcord-ng40-services.yml.j2 b/templates/mcord-ng40-services.yml.j2
new file mode 100644
index 0000000..4cd0fc2
--- /dev/null
+++ b/templates/mcord-ng40-services.yml.j2
@@ -0,0 +1,343 @@
+
+{#
+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: created by platform-install, need to add M-CORD services later
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/slice.yaml
+   - custom_types/site.yaml
+   - custom_types/image.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/onosservice.yaml
+   - custom_types/networkslice.yaml
+   - custom_types/venbservice.yaml
+   - custom_types/vspgwcservice.yaml
+   - custom_types/vspgwcvendor.yaml
+   - custom_types/vspgwuservice.yaml
+   - custom_types/vspgwuvendor.yaml
+   - custom_types/vepcservice.yaml
+   - custom_types/servicedependency.yaml
+   - custom_types/mcordsubscriberservice.yaml
+
+topology_template:
+  node_templates:
+
+# site, image, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+        must-exist: true
+        name: {{ site_name }}
+
+    m1.small:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.small
+        must-exist: true
+    m1.large:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.large
+        must-exist: true
+    m1.medium:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.medium
+        must-exist: true
+    m1.xlarge:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.xlarge
+        must-exist: true
+
+    image-venb:
+      type: tosca.nodes.Image
+      properties:
+        name: image-venb
+
+    image-spgwc:
+      type: tosca.nodes.Image
+      properties:
+        name: image-spgwc
+
+    image-spgwu:
+      type: tosca.nodes.Image
+      properties:
+        name: image-spgwu
+
+# management networks, fully created in management-net.yaml
+    management:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: management
+
+{% if use_management_hosts %}
+    management_hosts:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: management_hosts
+{% endif %}
+
+# s1u_network is for connectivity between VMs, fully created in s1u-net.yaml
+    s1u_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: s1u_network
+# s11_network is for connectivity between VMs, fully created in s11-net.yaml
+    s11_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: s11_network
+# nbi_network is for connectivity between VMs, fully created in nbi-net.yaml
+    nbi_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: nbi_network
+# sbi_network is for connectivity between VMs, fully created in sbi-net.yaml
+    sbi_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: sbi_network
+# sgi_network is for connectivity between VMs, fully created in sgi-net.yaml
+    sgi_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: sgi_network
+# spgw_network is for connectivity between VMs, fully created in spgw-net.yaml
+    spgw_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: spgw_network
+# flat_network is for connectivity between VM inside cord and server outside, fully created in flat-net.yaml
+    flat_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: flat_network
+
+# ONOS_CORD, fully created in vtn.yaml
+    service#ONOS_CORD:
+      type: tosca.nodes.ONOSService
+      properties:
+        must-exist: true
+        name: ONOS_CORD
+
+# ONOS_Fabric, fully created in fabric.yaml
+    service#ONOS_Fabric:
+      type: tosca.nodes.ONOSService
+      properties:
+        must-exist: true
+        name: ONOS_Fabric
+
+# vENB Service
+    service#venb:
+      type: tosca.nodes.VENBService
+      properties:
+          name: venb
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/venb/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+    {{ site_name }}_venb:
+      description: vENB Service Slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_venb
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#venb
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: image-venb
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.medium
+              relationship: tosca.relationships.BelongsToOne
+
+
+#vSPGWC Service
+    service#vspgwc:
+      type: tosca.nodes.VSPGWCService
+      properties:
+          name: vspgwc
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/vspgwc/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+    {{ site_name }}_vspgwc:
+      description: SDN controller slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_vspgwc
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#vspgwc
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: image-spgwc
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.large
+              relationship: tosca.relationships.BelongsToOne
+
+    intel_vspgwc:
+      type: tosca.nodes.VSPGWCVendor
+      properties:
+        name: intel_vspgwc
+      requirements:
+        - image:
+            node: image-spgwc
+            relationship: tosca.relationships.BelongsToOne
+        - flavor:
+            node: m1.large
+            relationship: tosca.relationships.BelongsToOne
+
+
+#vSPGWU Service
+    service#vspgwu:
+      type: tosca.nodes.VSPGWUService
+      properties:
+          name: vspgwu
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/vspgwu/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+    {{ site_name }}_vspgwu:
+      description: SDN controller slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_vspgwu
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#vspgwu
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: image-spgwu
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.xlarge
+              relationship: tosca.relationships.BelongsToOne
+
+    intel_vspgwu:
+      type: tosca.nodes.VSPGWUVendor
+      properties:
+        name: intel_vspgwu
+      requirements:
+        - image:
+            node: image-spgwu
+            relationship: tosca.relationships.BelongsToOne
+        - flavor:
+            node: m1.xlarge
+            relationship: tosca.relationships.BelongsToOne
+
+# vEPC Service
+    service#vepc:
+      type: tosca.nodes.VEPCService
+      properties:
+          name: vepc
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/venb/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+
+# ServiceDependencies
+    venb_vspgwc:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#venb
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vspgwc
+            relationship: tosca.relationships.BelongsToOne
+
+    venb_vspgwu:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#venb
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwc_vspgwu:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#vspgwc
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+# M-CORD Subscriber
+    service#mcord:
+      type: tosca.nodes.MCordSubscriberService
+      properties:
+        name: mcord
+
+    # ServiceDependency M-CORD to vENB
+    mcord_venb:
+      type: tosca.nodes.ServiceDependency
+      properties:
+        connect_method: None
+      requirements:
+        - subscriber_service:
+            node: service#venb
+            relationship: tosca.relationships.BelongsToOne
+        - provider_service:
+            node: service#mcord
+            relationship: tosca.relationships.BelongsToOne
diff --git a/templates/nbi-net.yaml.j2 b/templates/nbi-net.yaml.j2
new file mode 100644
index 0000000..edc649a
--- /dev/null
+++ b/templates/nbi-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: network for north bound interface (nbi)
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# nbi network
+    nbi_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: nbi_template
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    nbi_network:
+      type: tosca.nodes.Network
+      properties:
+          name: nbi_network
+          subnet: 113.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: nbi_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_nbi
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_nbi:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_nbi
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/s11-net.yaml.j2 b/templates/s11-net.yaml.j2
new file mode 100644
index 0000000..f44b0fd
--- /dev/null
+++ b/templates/s11-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: network for S11 interface
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# s11 network
+    s11_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: s11_template
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    s11_network:
+      type: tosca.nodes.Network
+      properties:
+          name: s11_network
+          subnet: 112.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: s11_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_s11
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_s11:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_s11
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/s1u-net.yaml.j2 b/templates/s1u-net.yaml.j2
new file mode 100644
index 0000000..e2bb51c
--- /dev/null
+++ b/templates/s1u-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: network for S1U interface
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# s1u network
+    s1u_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: s1u_template
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    s1u_network:
+      type: tosca.nodes.Network
+      properties:
+          name: s1u_network
+          subnet: 111.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: s1u_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_s1u
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_s1u:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_s1u
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/sbi-net.yaml.j2 b/templates/sbi-net.yaml.j2
new file mode 100644
index 0000000..fe56d4c
--- /dev/null
+++ b/templates/sbi-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: network for south bound interface (sbi)
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# sbi network
+    sbi_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: sbi_template
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    sbi_network:
+      type: tosca.nodes.Network
+      properties:
+          name: sbi_network
+          subnet: 114.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: sbi_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_sbi
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_sbi:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_sbi
+          default_isolation: vm
+          network: noauto
+      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/sgi-net.yaml.j2 b/templates/sgi-net.yaml.j2
new file mode 100644
index 0000000..db2779e
--- /dev/null
+++ b/templates/sgi-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: network for SGI interface
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# sgi network
+    sgi_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: sgi_template
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    sgi_network:
+      type: tosca.nodes.Network
+      properties:
+          name: sgi_network
+          subnet: 115.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: sgi_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_sgi
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_sgi:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_sgi
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/shared-net.yaml.j2 b/templates/shared-net.yaml.j2
new file mode 100644
index 0000000..186e69f
--- /dev/null
+++ b/templates/shared-net.yaml.j2
@@ -0,0 +1,54 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+  - custom_types/network.yaml
+  - custom_types/networktemplate.yaml
+  - custom_types/slice.yaml
+  - custom_types/site.yaml
+
+description: shared 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
+
+# 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
+      properties:
+          name: shared_network
+          subnet: 100.0.0.0/24
+      requirements:
+          - template:
+              node: shared_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_shared
+              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.BelongsToOne
+
+
diff --git a/templates/spgw-net.yaml.j2 b/templates/spgw-net.yaml.j2
new file mode 100644
index 0000000..0f4739a
--- /dev/null
+++ b/templates/spgw-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: network for direct communication between SPGW-C and SPGW-U
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# spgw network
+    spgw_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: spgw_template
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    spgw_network:
+      type: tosca.nodes.Network
+      properties:
+          name: spgw_network
+          subnet: 117.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: spgw_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_spgw
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_spgw:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_spgw
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
+
diff --git a/templates/vsg-net.yaml.j2 b/templates/vsg-net.yaml.j2
new file mode 100644
index 0000000..9bcf397
--- /dev/null
+++ b/templates/vsg-net.yaml.j2
@@ -0,0 +1,54 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+  - custom_types/network.yaml
+  - custom_types/networktemplate.yaml
+  - custom_types/slice.yaml
+  - custom_types/site.yaml
+
+description: vsg 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
+
+# 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
+      properties:
+          name: vsg_network
+          subnet: 101.0.0.0/24
+      requirements:
+          - template:
+              node: vsg_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_vsg
+              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.BelongsToOne
+
+
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/wan-net.yaml.j2 b/templates/wan-net.yaml.j2
new file mode 100644
index 0000000..0ada8be
--- /dev/null
+++ b/templates/wan-net.yaml.j2
@@ -0,0 +1,54 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+  - custom_types/network.yaml
+  - custom_types/networktemplate.yaml
+  - custom_types/slice.yaml
+  - custom_types/site.yaml
+
+description: wan 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
+
+# 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
+      properties:
+          name: wan_network
+          subnet: 102.0.0.0/24
+      requirements:
+          - template:
+              node: wan_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_wan
+              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.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 %}