[CORD-1673]
Fixes to E-CORD pod deploy
includes #5016/1 and #4402/5
fix pubkey paths
Includes 5038/2
Fix high Logtash CPU usage (backport of part of CORD-1588)
post-China Mobile fixes

Change-Id: I07bf9a54afd803082491e37b3bcfd6557ec32cb7
diff --git a/.gitignore b/.gitignore
index 497a91a..c0857ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,7 @@
 
 # Vagrant
 .vagrant
+pki/*
 
 # Docker registry
 /registry
diff --git a/profile_manifests/ecord-global.yml b/profile_manifests/ecord-global.yml
index 3d49f90..b45e6f2 100644
--- a/profile_manifests/ecord-global.yml
+++ b/profile_manifests/ecord-global.yml
@@ -17,11 +17,14 @@
 use_vtn: False
 
 xos_tosca_config_templates:
-  - openstack.yaml
+  - vtn-service.yaml
   - vnodglobal-service.yaml
   - xos-gui-extensions.yml
+  - carrierethernet-global-app.yaml
 
 cord_profile_dir: "{{ ansible_user_dir + '/cord_profile' }}"
+pki_dir: "{{ playbook_dir + '/pki' }}"
+credentials_dir: "{{ playbook_dir + '/credentials_dir' }}"
 
 xos_docker_volumes:
   - host: "{{ cord_profile_dir }}/images"
@@ -50,9 +53,6 @@
   - name: vtn
     path: onos-apps/apps/vtn
     synchronizer: true
-  - name: openstack
-    path: orchestration/xos_services/openstack
-    synchronizer: true
   - name: onos
     path: orchestration/xos_services/onos-service
     synchronizer: true
@@ -70,12 +70,6 @@
   - name: metro-net_rsa.pub
     source_path: "~/.ssh/id_rsa.pub"
 
-# VM networks/bridges on head
-virt_nets:
-  - name: mgmtbr
-    ipv4_prefix: 192.168.122
-    head_vms: true
-
 # site domain suffix
 site_suffix: cord.lab
 
@@ -95,22 +89,6 @@
     altnames:
       - "DNS:xos-core.{{ site_suffix }}"
 
-# NSD/Unbound settings
-nsd_zones:
-  - name: "{{ site_suffix }}"
-    ipv4_first_octets: 192.168.122
-    name_reverse_unbound: "168.192.in-addr.arpa"
-    soa: ns1
-    ns:
-      - { name: ns1 }
-    nodelist: head_vm_list
-    aliases:
-      - { name: "ns1" , dest: "head" }
-      - { name: "ns" , dest: "head" }
-      - { name: "apt-cache" , dest: "head" }
-
-name_on_public_interface: head
-
 # VTN network configuration
 management_network_cidr: 172.27.0.0/24
 management_network_ip: 172.27.0.1/24
@@ -119,216 +97,7 @@
 # CORD ONOS app version
 cord_app_version: 1.2-SNAPSHOT
 
-# If true, unbound listens on the head node's `ansible_default_ipv4` interface
-unbound_listen_on_default: True
-
-# turn this on, or override it when running the playbook with --extra-vars="on_cloudlab=True"
-on_cloudlab: False
-
-# turn this off, or override when running playbook with --extra-vars="on_maas=False"
-on_maas: True
+onos_docker_image: "onosproject/onos:1.8.9"
 
 run_dist_upgrade: False
 
-maas_node_key: /etc/maas/ansible/id_rsa
-
-openstack_version: kilo
-
-juju_config_name: cord
-
-juju_config_path: /usr/local/src/juju_config.yml
-
-# Pull ONOS from local Docker registry rather than Docker Hub
-onos_docker_image: "docker-registry:5000/onosproject/onos:candidate"
-
-# Pull XOS from local Docker registry
-xos_docker_image: "docker-registry:5000/xosproject/xos:candidate"
-
-keystone_admin_password: "{{ lookup('password', 'credentials/cord_keystone_admin chars=ascii_letters,digits') }}"
-
-deployment_flavors:
-  - m1.small
-  - m1.medium
-  - m1.large
-  - m1.xlarge
-
-charm_versions:
-  ceilometer: "cs:trusty/ceilometer-17"
-  ceilometer-agent: "cs:trusty/ceilometer-agent-13"
-  glance: "cs:trusty/glance-28"
-  keystone: "cs:trusty/keystone-33"
-  mongodb: "cs:trusty/mongodb-33"
-  percona-cluster: "cs:trusty/percona-cluster-31"
-  nagios: "cs:trusty/nagios-10"
-  neutron-api: "cs:~cordteam/trusty/neutron-api-5"
-  nova-cloud-controller: "cs:trusty/nova-cloud-controller-64"
-  nova-compute: "cs:~cordteam/trusty/nova-compute-2"
-  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_vm_list: []
-
-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: "trusty-server-multi-nic"
-    url: "http://www.vicci.org/opencloud/trusty-server-cloudimg-amd64-disk1.img.20170201"
-    checksum: "sha256:ebf007ba3ec1043b7cd011fc6668e2a1d1d4c69c41071e8513ab355df7a057cb"
-
-  - name: "ceilometer-trusty-server-multi-nic"
-    url: "http://www.vicci.org/cord/ceilometer-trusty-server-multi-nic.compressed.qcow2"
-    checksum: "sha256:b77ef8d692b640568dea13df99fe1dfcb1f4bb4ac05408db9ff77399b34f754f"
-
-  - name: "ceilometer-service-trusty-server-multi-nic"
-    url: "http://www.vicci.org/cord/ceilometer-service-trusty-server-multi-nic.compressed.qcow2.20170131"
-    checksum: "sha256:f0341e283f0f2cb8f70cd1a6347e0081c9c8492ef34eb6397c657ef824800d4f"
diff --git a/profile_manifests/ecord.yml b/profile_manifests/ecord.yml
index a031d72..4717d6a 100644
--- a/profile_manifests/ecord.yml
+++ b/profile_manifests/ecord.yml
@@ -25,6 +25,7 @@
   - public-net.yaml
   - vee-service.yaml
   - xos-gui-extensions.yml
+  - carrierethernet-local-app.yaml
 
 xos_other_templates:
   - fabric-network-cfg.json
@@ -46,28 +47,38 @@
 gui_branding_favicon: "/static/cord-favicon.png"
 gui_branding_bg: "/static/cord-bg.jpg"
 
-enabled_gui_extensions: []
+enabled_gui_extensions:
+  - name: vtr
+    path: orchestration/xos_services/vtr/xos/gui
 
 # paths defined in manifest/default.xml
 xos_services:
   - name: openstack
     path: orchestration/xos_services/openstack
+    synchronizer: true
   - name: onos
     path: orchestration/xos_services/onos-service
     keypair: onos_rsa
+    synchronizer: true
   - name: vtn
     path: onos-apps/apps/vtn
+    synchronizer: true
   - name: fabric
     path: orchestration/xos_services/fabric
+    synchronizer: true
   - name: vrouter
     path: orchestration/xos_services/vrouter
+    synchronizer: true
   - name: veg
     path: orchestration/xos_services/vEG
     keypair: veg_rsa
+    synchronizer: true
   - name: vnodlocal
     path: orchestration/xos_services/metronet-local
+    synchronizer: true
   - name: vee
     path: orchestration/xos_services/vEE
+    synchronizer: true
 
 xos_service_sshkeys:
   - name: onos_rsa
diff --git a/profile_manifests/mock-ecord-global.yml b/profile_manifests/mock-ecord-global.yml
index cfc1445..2809386 100644
--- a/profile_manifests/mock-ecord-global.yml
+++ b/profile_manifests/mock-ecord-global.yml
@@ -21,6 +21,7 @@
   - mock-onos.yaml
   - vnodglobal-service.yaml
   - xos-gui-extensions.yml
+  - carrierethernet-global-app.yaml
 
 # GUI Config [new GUI]
 gui_project_name: "E-CORD"
diff --git a/profile_manifests/mock-ecord.yml b/profile_manifests/mock-ecord.yml
index ffdec0f..e5a5586 100644
--- a/profile_manifests/mock-ecord.yml
+++ b/profile_manifests/mock-ecord.yml
@@ -25,6 +25,7 @@
   - ecord-services.yaml
   - vee-service.yaml
   - xos-gui-extensions.yml
+  - carrierethernet-local-app.yaml
 
 # GUI Config [new GUI]
 gui_project_name: "E-CORD"
diff --git a/roles/cord-profile/templates/carrierethernet-global-app.yaml.j2 b/roles/cord-profile/templates/carrierethernet-global-app.yaml.j2
new file mode 100644
index 0000000..43d04a2
--- /dev/null
+++ b/roles/cord-profile/templates/carrierethernet-global-app.yaml.j2
@@ -0,0 +1,25 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+
+description: carrierethernet-app onboarding, generated by platform-install
+topology_template:
+  node_templates:
+
+    service#ONOS_CORD:
+      type: tosca.nodes.ONOSService
+      properties:
+        no-delete: true
+        no-create: true
+        no-update: true
+
+    CarrierEthernet_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+        - onos_tenant:
+            node: service#ONOS_CORD
+            relationship: tosca.relationships.TenantOfService
+      properties:
+        install_dependencies: http://mavenrepo:8080/repository/org/opencord/ce/ce-api/{{ cord_app_version }}/ce-api-{{ cord_app_version }}.oar, http://mavenrepo:8080/repository/org/opencord/ce/ecord-global-app/{{ cord_app_version }}/ecord-global-app-{{ cord_app_version }}.oar
+        dependencies: org.onosproject.drivers, org.onosproject.drivers.ovsdb, org.onosproject.openflow-base, org.onosproject.ovsdb-base
diff --git a/roles/cord-profile/templates/carrierethernet-local-app.yaml.j2 b/roles/cord-profile/templates/carrierethernet-local-app.yaml.j2
new file mode 100644
index 0000000..43d04a2
--- /dev/null
+++ b/roles/cord-profile/templates/carrierethernet-local-app.yaml.j2
@@ -0,0 +1,25 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+
+description: carrierethernet-app onboarding, generated by platform-install
+topology_template:
+  node_templates:
+
+    service#ONOS_CORD:
+      type: tosca.nodes.ONOSService
+      properties:
+        no-delete: true
+        no-create: true
+        no-update: true
+
+    CarrierEthernet_ONOS_app:
+      type: tosca.nodes.ONOSApp
+      requirements:
+        - onos_tenant:
+            node: service#ONOS_CORD
+            relationship: tosca.relationships.TenantOfService
+      properties:
+        install_dependencies: http://mavenrepo:8080/repository/org/opencord/ce/ce-api/{{ cord_app_version }}/ce-api-{{ cord_app_version }}.oar, http://mavenrepo:8080/repository/org/opencord/ce/ecord-global-app/{{ cord_app_version }}/ecord-global-app-{{ cord_app_version }}.oar
+        dependencies: org.onosproject.drivers, org.onosproject.drivers.ovsdb, org.onosproject.openflow-base, org.onosproject.ovsdb-base
diff --git a/roles/cord-profile/templates/ecord-services.yaml.j2 b/roles/cord-profile/templates/ecord-services.yaml.j2
index dc6a71f..312a861 100644
--- a/roles/cord-profile/templates/ecord-services.yaml.j2
+++ b/roles/cord-profile/templates/ecord-services.yaml.j2
@@ -82,7 +82,7 @@
 #       node_label: label_veg
         replaces: service_veg
       artifacts:
-        pubkey: /opt/xos/services/veg/keys/veg_rsa.pub
+        pubkey: /opt/cord_profile/key_import/veg_rsa.pub
 
     service#vrouter:
       type: tosca.nodes.VRouterService
diff --git a/roles/cord-profile/templates/mock-onos.yaml.j2 b/roles/cord-profile/templates/mock-onos.yaml.j2
index 1f733f9..a3953c6 100644
--- a/roles/cord-profile/templates/mock-onos.yaml.j2
+++ b/roles/cord-profile/templates/mock-onos.yaml.j2
@@ -1,3 +1,4 @@
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 imports:
diff --git a/roles/cord-profile/templates/vee-service.yaml.j2 b/roles/cord-profile/templates/vee-service.yaml.j2
index 56a7de4..da07cc9 100644
--- a/roles/cord-profile/templates/vee-service.yaml.j2
+++ b/roles/cord-profile/templates/vee-service.yaml.j2
@@ -26,7 +26,7 @@
         no-create: true
         no-update: true
       artifacts:
-        pubkey: /opt/xos/services/veg/keys/veg_rsa.pub
+        pubkey: /opt/cord_profile/key_import/veg_rsa.pub
 
     service#vnodlocal:
       type: tosca.nodes.VNodLocalService
diff --git a/roles/cord-profile/templates/vnodglobal-service-complete.yaml.j2 b/roles/cord-profile/templates/vnodglobal-service-complete.yaml.j2
new file mode 100644
index 0000000..a1b57ff
--- /dev/null
+++ b/roles/cord-profile/templates/vnodglobal-service-complete.yaml.j2
@@ -0,0 +1,113 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/metronet.yaml
+
+description: vnodglobal services, generated by platform-install
+
+topology_template:
+  node_templates:
+
+    enterpriselocation#onlab:
+      type: tosca.nodes.EnterpriseLocation
+      requirements:
+      properties:
+        name: onlab
+        cord_site_ip: 127.0.0.1
+        cord_site_port: 8181
+        cord_site_username: onos
+        cord_site_password: rocks
+        cord_site_type: onos
+
+
+    enterpriselocation#onlab1:
+      type: tosca.nodes.EnterpriseLocation
+      requirements:
+      properties:
+        name: onlab1
+        cord_site_ip: 127.0.0.2
+        cord_site_port: 8181
+        cord_site_username: onos
+        cord_site_password: rocks
+        cord_site_type: onos
+
+    onosmodel#onlab:
+      type: tosca.nodes.OnosModel
+      requirements:
+      properties:
+        name: onlabT
+        onos_ip: 127.0.0.1
+        onos_port: 8181
+        onos_username: onos
+        onos_password: rocks
+        onos_type: global
+
+    bandwidthprofile#bronze:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 1000
+        ebs: 1200
+        cir: 1000000
+        eir: 1200000
+        name: bronze
+
+    bandwidthprofile#silver:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 1500
+        ebs: 2000
+        cir: 1500000
+        eir: 2000000
+        name: silver
+
+    bandwidthprofile#gold:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 2000
+        ebs: 2700
+        cir: 2000000
+        eir: 2700000
+        name: gold
+
+    bandwidthprofile#platinum:
+      type: tosca.nodes.BandwidthProfile
+      requirements:
+      properties:
+        cbs: 2500
+        ebs: 3200
+        cir: 2500000
+        eir: 3200000
+        name: platinum
+
+    usernetworkinterface#UserNetworkInterface1:
+      type: tosca.nodes.UserNetworkInterface
+      requirements:
+      properties:
+        tenant: onlab
+        name: uni1
+        latlng: [37.973535, -122.531087]
+        cpe_id: netconf:192.168.56.10:830/0
+
+    usernetworkinterface#UserNetworkInterface2:
+      type: tosca.nodes.UserNetworkInterface
+      requirements:
+      properties:
+        tenant: onlab
+        name: uni2
+        latlng: [37.773972, -122.431297]
+        cpe_id: netconf:192.168.56.20:830/0
+
+    eline#testeline:
+      type: tosca.nodes.ELine
+      requirements:
+      properties:
+        name: testeline
+        connect_point_1_id: netconf:192.168.56.10:830/0
+        connect_point_2_id: netconf:192.168.56.20:830/0
+        vlanids: 100
+        cord_site_name: onlabT
+        bwp: gold
\ No newline at end of file
diff --git a/roles/cord-profile/templates/vnodglobal-service.yaml.j2 b/roles/cord-profile/templates/vnodglobal-service.yaml.j2
index a1b57ff..348f121 100644
--- a/roles/cord-profile/templates/vnodglobal-service.yaml.j2
+++ b/roles/cord-profile/templates/vnodglobal-service.yaml.j2
@@ -9,34 +9,11 @@
 topology_template:
   node_templates:
 
-    enterpriselocation#onlab:
-      type: tosca.nodes.EnterpriseLocation
-      requirements:
-      properties:
-        name: onlab
-        cord_site_ip: 127.0.0.1
-        cord_site_port: 8181
-        cord_site_username: onos
-        cord_site_password: rocks
-        cord_site_type: onos
-
-
-    enterpriselocation#onlab1:
-      type: tosca.nodes.EnterpriseLocation
-      requirements:
-      properties:
-        name: onlab1
-        cord_site_ip: 127.0.0.2
-        cord_site_port: 8181
-        cord_site_username: onos
-        cord_site_password: rocks
-        cord_site_type: onos
-
-    onosmodel#onlab:
+    onosmodel#globalONOS:
       type: tosca.nodes.OnosModel
       requirements:
       properties:
-        name: onlabT
+        name: globalONOS
         onos_ip: 127.0.0.1
         onos_port: 8181
         onos_username: onos
@@ -81,33 +58,4 @@
         ebs: 3200
         cir: 2500000
         eir: 3200000
-        name: platinum
-
-    usernetworkinterface#UserNetworkInterface1:
-      type: tosca.nodes.UserNetworkInterface
-      requirements:
-      properties:
-        tenant: onlab
-        name: uni1
-        latlng: [37.973535, -122.531087]
-        cpe_id: netconf:192.168.56.10:830/0
-
-    usernetworkinterface#UserNetworkInterface2:
-      type: tosca.nodes.UserNetworkInterface
-      requirements:
-      properties:
-        tenant: onlab
-        name: uni2
-        latlng: [37.773972, -122.431297]
-        cpe_id: netconf:192.168.56.20:830/0
-
-    eline#testeline:
-      type: tosca.nodes.ELine
-      requirements:
-      properties:
-        name: testeline
-        connect_point_1_id: netconf:192.168.56.10:830/0
-        connect_point_2_id: netconf:192.168.56.20:830/0
-        vlanids: 100
-        cord_site_name: onlabT
-        bwp: gold
\ No newline at end of file
+        name: platinum
\ No newline at end of file
diff --git a/roles/create-lxd/tasks/main.yml b/roles/create-lxd/tasks/main.yml
index fd3ace2..570e151 100644
--- a/roles/create-lxd/tasks/main.yml
+++ b/roles/create-lxd/tasks/main.yml
@@ -112,7 +112,7 @@
     - skip_ansible_lint # connectivity check
 
 - name: Verify that containers have external connectivity
-  command: ansible containers -m uri -u ubuntu -a "url=http://www.google.com"
+  command: ansible containers -m uri -u ubuntu -a "url=http://opencord.org"
   tags:
     - skip_ansible_lint # connectivity check
 
diff --git a/roles/elasticstack/files/30-elasticsearch-output.conf b/roles/elasticstack/files/30-elasticsearch-output.conf
index ab51625..11c7bfc 100644
--- a/roles/elasticstack/files/30-elasticsearch-output.conf
+++ b/roles/elasticstack/files/30-elasticsearch-output.conf
@@ -1,4 +1,3 @@
 output {
   elasticsearch { hosts => ["localhost:9200"] }
-  stdout { codec => rubydebug }
 }