nodes = [orchestrator.InventoryNode(host_name, inventory.Devices([])) for host_name in self.inventory_cache]
return orchestrator.TrivialReadCompletion(nodes)
+ def add_host_label(self, host, label):
+ if host not in self.inventory:
+ raise OrchestratorError('host %s does not exist' % host)
+
+ @log_exceptions
+ def run(host, label):
+ if 'labels' not in self.inventory[host]:
+ self.inventory[host]['labels'] = list()
+ if label not in self.inventory[host]['labels']:
+ self.inventory[host]['labels'].append(label)
+ self._save_inventory()
+ return 'Added label %s to host %s' % (label, host)
+
+ return SSHWriteCompletion(
+ self._worker_pool.apply_async(run, (host, label)))
+
+ def remove_host_label(self, host, label):
+ if host not in self.inventory:
+ raise OrchestratorError('host %s does not exist' % host)
+
+ @log_exceptions
+ def run(host, label):
+ if 'labels' not in self.inventory[host]:
+ self.inventory[host]['labels'] = list()
+ if label in self.inventory[host]['labels']:
+ self.inventory[host]['labels'].remove(label)
+ self._save_inventory()
+ return 'Removed label %s to host %s' % (label, host)
+
+ return SSHWriteCompletion(
+ self._worker_pool.apply_async(run, (host, label)))
+
def _refresh_host_services(self, host):
out, code = self._run_ceph_daemon(
host, 'mon', 'ls', [], no_fsid=True)