diff --git a/plugins/inventory/float.py b/plugins/inventory/float.py
index 1e29228a735528e5aa5b1cd6b77d30af2c01a92d..a68e19f3ee156da0fa1932e1952cae3c7d65f382 100644
--- a/plugins/inventory/float.py
+++ b/plugins/inventory/float.py
@@ -522,7 +522,9 @@ class Assignments(object):
             service = services[service_name]
             available_hosts = cls._available_hosts(service, group_map)
             num_instances = service.get('num_instances', 'all')
-            if num_instances == 'all':
+            if service.get('disabled'):
+                service_hosts = []
+            elif num_instances == 'all':
                 service_hosts = sorted(available_hosts)
             else:
                 service_hosts = sorted(_binpack(
@@ -530,7 +532,7 @@ class Assignments(object):
             service_hosts_map[service_name] = service_hosts
             for h in service_hosts:
                 host_occupation[h] += 1
-            if service.get('master_election'):
+            if service.get('master_election') and not service.get('disabled'):
                 if 'master_scheduling_group' in service:
                     available_hosts = set(available_hosts).intersection(
                             set(group_map[service['master_scheduling_group']]))