CORD-501:Integration of vOLT meters with Ceilometer json hack
diff --git a/xos/configurations/cord/cord.yaml b/xos/configurations/cord/cord.yaml
index faa71ad..df13312 100644
--- a/xos/configurations/cord/cord.yaml
+++ b/xos/configurations/cord/cord.yaml
@@ -145,6 +145,7 @@
                    "rabbit.user": "<rabbit_user>",
                    "rabbit.password": "<rabbit_password>",
                    "rabbit.host": "<rabbit_host>",
+                   "publish.kafka": "false",
                    "publish.rabbit": "true",
                    "volt.events.rabbit.topic": "notifications.info",
                    "volt.events.rabbit.exchange": "voltlistener",
diff --git a/xos/core/xoslib/methods/ceilometerview.py b/xos/core/xoslib/methods/ceilometerview.py
index c2ecb15..5f99b61 100644
--- a/xos/core/xoslib/methods/ceilometerview.py
+++ b/xos/core/xoslib/methods/ceilometerview.py
@@ -222,6 +222,7 @@
         self._kwapi_meters_info = self._get_kwapi_meters_info()
         self._ipmi_meters_info = self._get_ipmi_meters_info()
         self._vcpe_meters_info = self._get_vcpe_meters_info()
+        self._volt_meters_info = self._get_volt_meters_info()
         self._sdn_meters_info = self._get_sdn_meters_info()
 
         # Storing the meters info of all services together.
@@ -233,6 +234,7 @@
                                self._kwapi_meters_info,
                                self._ipmi_meters_info,
                                self._vcpe_meters_info,
+                               self._volt_meters_info,
                                self._sdn_meters_info)
         self._all_meters_info = {}
         for service_meters in all_services_meters:
@@ -335,6 +337,16 @@
         return self._list(only_meters=self._vcpe_meters_info.keys(),
                           except_meters=except_meters)
 
+    def list_volt(self, except_meters=None):
+        """Returns a list of meters tied to volt service
+
+        :Parameters:
+          - `except_meters`: The list of meter names we don't want to show
+        """
+
+        return self._list(only_meters=self._volt_meters_info.keys(),
+                          except_meters=except_meters)
+
     def list_sdn(self, except_meters=None):
         """Returns a list of meters tied to sdn service
 
@@ -949,6 +961,39 @@
             }),
         ])
 
+    def _get_volt_meters_info(self):
+        """Returns additional info for each meter
+
+        That will be used for augmenting the Ceilometer meter
+        """
+
+        # TODO(lsmola) Unless the Ceilometer will provide the information
+        # below, I need to define it as a static here. I will be joining this
+        # to info that I am able to obtain from Ceilometer meters, hopefully
+        # some day it will be supported all.
+        return datastructures.SortedDict([
+            ('volt.device', {
+                'type': _("VOLT"),
+                'label': '',
+                'description': _("Existence of olt device"),
+            }),
+            ('volt.device.disconnect', {
+                'type': _("VOLT"),
+                'label': '',
+                'description': _("Olt device disconnected"),
+            }),
+            ('volt.device.subscriber', {
+                'type': _("VOLT"),
+                'label': '',
+                'description': _("Existence of olt subscriber"),
+            }),
+            ('volt.device.subscriber.unregister', {
+                'type': _("VOLT"),
+                'label': '',
+                'description': _("Olt subscriber unregistered"),
+            }),
+        ])
+
     def _get_sdn_meters_info(self):
         """Returns additional info for each meter
 
@@ -1121,6 +1166,7 @@
             _('Nova'): meters.list_nova(),
             _('Neutron'): meters.list_neutron(),
             _('VCPE'): meters.list_vcpe(),
+            _('VOLT'): meters.list_volt(),
             _('SDN'): meters.list_sdn(),
         }
         meters = []
@@ -1191,6 +1237,7 @@
             _('Nova'): meters.list_nova(),
             _('Neutron'): meters.list_neutron(),
             _('VCPE'): meters.list_vcpe(),
+            _('VOLT'): meters.list_volt(),
             _('SDN'): meters.list_sdn(),
         }
         report_rows = []
@@ -1343,6 +1390,7 @@
                 _('Nova'): meters.list_nova(except_meters=exclude_nova_meters_info),
                 _('Neutron'): meters.list_neutron(except_meters=exclude_neutron_meters_info),
                 _('VCPE'): meters.list_vcpe(),
+                _('VOLT'): meters.list_volt(),
                 _('SDN'): meters.list_sdn(),
             }
             for service,meters in services.items():
diff --git a/xos/synchronizers/onos/onos-ext-notifier-1.0-SNAPSHOT.oar b/xos/synchronizers/onos/onos-ext-notifier-1.0-SNAPSHOT.oar
index 3d44818..e593c30 100644
--- a/xos/synchronizers/onos/onos-ext-notifier-1.0-SNAPSHOT.oar
+++ b/xos/synchronizers/onos/onos-ext-notifier-1.0-SNAPSHOT.oar
Binary files differ
diff --git a/xos/synchronizers/onos/onos-ext-volt-event-publisher-1.0-SNAPSHOT.oar b/xos/synchronizers/onos/onos-ext-volt-event-publisher-1.0-SNAPSHOT.oar
index e9a4593..ffe0502 100644
--- a/xos/synchronizers/onos/onos-ext-volt-event-publisher-1.0-SNAPSHOT.oar
+++ b/xos/synchronizers/onos/onos-ext-volt-event-publisher-1.0-SNAPSHOT.oar
Binary files differ
diff --git a/xos/synchronizers/onos/steps/sync_onosapp.py b/xos/synchronizers/onos/steps/sync_onosapp.py
index 281df10..663e115 100644
--- a/xos/synchronizers/onos/steps/sync_onosapp.py
+++ b/xos/synchronizers/onos/steps/sync_onosapp.py
@@ -7,6 +7,7 @@
 import time
 import re
 import json
+from collections import OrderedDict
 from django.db.models import F, Q
 from xos.config import Config
 from synchronizers.base.ansible import run_template
@@ -162,7 +163,7 @@
                 file(os.path.join(o.files_dir, fn),"w").write(" " +value)
                 o.rest_configs.append( {"endpoint": endpoint, "fn": fn} )
             if name.startswith("component_config"):
-                components = json.loads(value)
+                components = json.loads(value,object_pairs_hook=OrderedDict)
                 for component in components.keys():
                     config = components[component]
                     for key in config.keys():