[CORD-2437] add flat networks for eNB hardware

Change-Id: I65973eddebe0ef90098426951cf8b850c8eb8025
diff --git a/roles/cord-profile/templates/flat-net-s1mme.yaml.j2 b/roles/cord-profile/templates/flat-net-s1mme.yaml.j2
new file mode 100644
index 0000000..b4c5c93
--- /dev/null
+++ b/roles/cord-profile/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/roles/cord-profile/templates/flat-net-s1u.yaml.j2 b/roles/cord-profile/templates/flat-net-s1u.yaml.j2
new file mode 100644
index 0000000..01ca850
--- /dev/null
+++ b/roles/cord-profile/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/roles/cord-profile/templates/mcord-cavium-services.yml.j2 b/roles/cord-profile/templates/mcord-cavium-services.yml.j2
new file mode 100644
index 0000000..99fab61
--- /dev/null
+++ b/roles/cord-profile/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