add mme service to j2 file & add networks

Change-Id: I9aa6ed0eef23a93f7c5a62a256b3a4f891e72d84
diff --git a/profile_manifests/mcord.yml b/profile_manifests/mcord.yml
index 7b3e535..bf12793 100644
--- a/profile_manifests/mcord.yml
+++ b/profile_manifests/mcord.yml
@@ -32,8 +32,12 @@
   - vtn-service.yaml
   - fabric-service.yaml
   - management-net.yaml
-  - xos-gui-extensions.yml
+  - shared-net.yaml
+  - wan-net.yaml
+  - vsg-net.yaml
+  - flat-net.yaml
   - mcord-services.yml
+  - xos-gui-extensions.yml
 
 xos_new_tosca_config_templates:
   - mcord-subscriber.yml
diff --git a/roles/cord-profile/templates/flat-net.yaml.j2 b/roles/cord-profile/templates/flat-net.yaml.j2
new file mode 100644
index 0000000..bd6f5c8
--- /dev/null
+++ b/roles/cord-profile/templates/flat-net.yaml.j2
@@ -0,0 +1,45 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+
+description: flat network config, generated by platform-install
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+
+# flat network
+    flat_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          visibility: private
+          translation: none
+          vtn_kind: FLAT
+
+    flat_network:
+      type: tosca.nodes.network.Network
+      properties:
+          ip_version: 4
+          cidr: 103.0.0.0/24
+      requirements:
+          - network_template:
+              node: flat_template
+              relationship: tosca.relationships.UsesNetworkTemplate
+          - 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:
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.MemberOfSite
+
diff --git a/roles/cord-profile/templates/mcord-services.yml.j2 b/roles/cord-profile/templates/mcord-services.yml.j2
index 21133ef..56d5549 100644
--- a/roles/cord-profile/templates/mcord-services.yml.j2
+++ b/roles/cord-profile/templates/mcord-services.yml.j2
@@ -22,6 +22,7 @@
 
 imports:
    - custom_types/xos.yaml
+   - custom_types/vmme.yaml
 
 topology_template:
   node_templates:
@@ -30,7 +31,16 @@
     {{ site_name }}:
       type: tosca.nodes.Site
 
-    image#vsg-1.1:
+    m1.small:
+      type: tosca.nodes.Flavor
+    m1.large:
+      type: tosca.nodes.Flavor
+    m1.medium:
+      type: tosca.nodes.Flavor
+    m1.xlarge:
+      type: tosca.nodes.Flavor
+
+    trusty-server-multi-nic:
       type: tosca.nodes.Image
 
 # management networks, fully created in management-net.yaml
@@ -50,6 +60,38 @@
         no-update: true
 {% endif %}
 
+# shared_network is for connectivity between VMs, fully created in shared-net.yaml
+    shared_network:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+        no-create: true
+        no-delete: true
+        no-update: true
+
+# wan_network for vPGWU and its upstream connectivity, fully created in wan-net.yaml
+    wan_network:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+        no-create: true
+        no-delete: true
+        no-update: true
+
+# VLAN networks for RRH and vBBU, fully created in vsg-net.yaml
+    vsg_network:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+        no-create: true
+        no-delete: true
+        no-update: true
+
+# flat network for vMME, vSGWC, vSGWU, to connect to RRU, fully created in flat-net.yaml
+    flat_network:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+        no-create: true
+        no-delete: true
+        no-update: true
+
 # ONOS_CORD, fully created in vtn.yaml
     service#ONOS_CORD:
       type: tosca.nodes.ONOSService
@@ -66,4 +108,41 @@
         no-create: true
         no-update: true
 
-# CORD Services, add later
\ No newline at end of file
+# CORD Services
+    service#vmme:
+      type: tosca.nodes.VMMEService
+      properties:
+          kind: vEPC
+          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
+          private_key_fn: /opt/xos/services/vmme/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+# CORD Slices
+    mysite_vMME_slice:
+      description: vMME Service Slice
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.MemberOfSite
+          - vmme_service:
+              node: service#vmme
+              relationship: tosca.relationships.MemberOfService
+          - default_image:
+              node: trusty-server-multi-nic
+              relationship: tosca.relationships.DefaultImage
+          - default_flavor:
+              node: m1.small
+              relationship: tosca.relationships.DefaultFlavor
+          - connection_to_management:
+              node: management
+              relationship: tosca.relationships.ConnectsToNetwork
+          - connection_to_shared_network:
+              node: shared_network
+              relationship: tosca.relationships.ConnectsToNetwork
+          - connection_to_flat_network:
+              node: flat_network
+              relationship: tosca.relationships.ConnectsToNetwork
\ No newline at end of file
diff --git a/roles/cord-profile/templates/shared-net.yaml.j2 b/roles/cord-profile/templates/shared-net.yaml.j2
new file mode 100644
index 0000000..f54ab9d
--- /dev/null
+++ b/roles/cord-profile/templates/shared-net.yaml.j2
@@ -0,0 +1,46 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.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
+
+# shared network
+    shared_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    shared_network:
+      type: tosca.nodes.network.Network
+      properties:
+          ip_version: 4
+          cidr: 100.0.0.0/24
+      requirements:
+          - network_template:
+              node: shared_template
+              relationship: tosca.relationships.UsesNetworkTemplate
+          - owner:
+              node: {{ site_name }}_shared
+              relationship: tosca.relationships.MemberOfSlice
+
+    {{ site_name }}_shared:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.MemberOfSite
+
+
diff --git a/roles/cord-profile/templates/vsg-net.yaml.j2 b/roles/cord-profile/templates/vsg-net.yaml.j2
new file mode 100644
index 0000000..bb5e546
--- /dev/null
+++ b/roles/cord-profile/templates/vsg-net.yaml.j2
@@ -0,0 +1,46 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.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
+
+# vsg network
+    vsg_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          visibility: private
+          translation: none
+          vtn_kind: VSG
+
+    vsg_network:
+      type: tosca.nodes.network.Network
+      properties:
+          ip_version: 4
+          cidr: 101.0.0.0/24
+      requirements:
+          - network_template:
+              node: vsg_template
+              relationship: tosca.relationships.UsesNetworkTemplate
+          - owner:
+              node: {{ site_name }}_vsg
+              relationship: tosca.relationships.MemberOfSlice
+
+    {{ site_name }}_vsg:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.MemberOfSite
+
+
diff --git a/roles/cord-profile/templates/wan-net.yaml.j2 b/roles/cord-profile/templates/wan-net.yaml.j2
new file mode 100644
index 0000000..4b9bb20
--- /dev/null
+++ b/roles/cord-profile/templates/wan-net.yaml.j2
@@ -0,0 +1,46 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.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
+
+# wan network
+    wan_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    wan_network:
+      type: tosca.nodes.network.Network
+      properties:
+          ip_version: 4
+          cidr: 102.0.0.0/24
+      requirements:
+          - network_template:
+              node: wan_template
+              relationship: tosca.relationships.UsesNetworkTemplate
+          - owner:
+              node: {{ site_name }}_wan
+              relationship: tosca.relationships.MemberOfSlice
+
+    {{ site_name }}_wan:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.MemberOfSite
+
+