Merge pull request #38 from elemoine/sync-code

Add cinder|neutron|nova_services_percent metrics
diff --git a/collectd/files/plugin/openstack_cinder.py b/collectd/files/plugin/openstack_cinder.py
index 3885c45..9ad209d 100644
--- a/collectd/files/plugin/openstack_cinder.py
+++ b/collectd/files/plugin/openstack_cinder.py
@@ -55,7 +55,14 @@
                                  'state': state})
 
         for service in aggregated_workers:
+            totalw = sum(aggregated_workers[service].values())
+
             for state in self.states:
+                prct = (100.0 * aggregated_workers[service][state]) / totalw
+                self.dispatch_value('cinder_services_percent', '',
+                                    prct,
+                                    {'state': state, 'service': service})
+
                 self.dispatch_value('cinder_services', '',
                                     aggregated_workers[service][state],
                                     {'state': state, 'service': service})
diff --git a/collectd/files/plugin/openstack_neutron.py b/collectd/files/plugin/openstack_neutron.py
index 6a2cf22..fdc2005 100644
--- a/collectd/files/plugin/openstack_neutron.py
+++ b/collectd/files/plugin/openstack_neutron.py
@@ -85,7 +85,14 @@
                                  'state': state})
 
         for service in aggregated_agents:
+            totala = sum(aggregated_agents[service].values())
+
             for state in self.states:
+                prct = (100.0 * aggregated_agents[service][state]) / totala
+                self.dispatch_value('neutron_agents_percent',
+                                    prct,
+                                    {'service': service, 'state': state})
+
                 self.dispatch_value('neutron_agents',
                                     aggregated_agents[service][state],
                                     {'service': service, 'state': state})
diff --git a/collectd/files/plugin/openstack_nova.py b/collectd/files/plugin/openstack_nova.py
index 62c55da..7c7d47a 100644
--- a/collectd/files/plugin/openstack_nova.py
+++ b/collectd/files/plugin/openstack_nova.py
@@ -53,7 +53,14 @@
                                  'state': state})
 
         for service in aggregated_workers:
+            totalw = sum(aggregated_workers[service].values())
+
             for state in self.states:
+                prct = (100.0 * aggregated_workers[service][state]) / totalw
+                self.dispatch_value('nova_services_percent', '',
+                                    prct,
+                                    {'state': state, 'service': service})
+
                 self.dispatch_value('nova_services', '',
                                     aggregated_workers[service][state],
                                     {'state': state, 'service': service})