]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orch: adapt orchestrator CLI to new interface
authorSebastian Wagner <sebastian.wagner@suse.com>
Mon, 8 Feb 2021 00:21:37 +0000 (01:21 +0100)
committerSebastian Wagner <sebastian.wagner@suse.com>
Mon, 1 Mar 2021 12:41:55 +0000 (13:41 +0100)
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
src/pybind/mgr/orchestrator/module.py

index 85dd8749c04971a4da6b8ec2d2fb7efcf79d357f..dc68d374f68cfe18e3c97a7ab0b1f47c7b70898d 100644 (file)
@@ -18,7 +18,7 @@ from mgr_util import to_pretty_timedelta, format_dimless
 from mgr_module import MgrModule, HandleCommandResult, Option
 
 from ._interface import OrchestratorClientMixin, DeviceLightLoc, _cli_read_command, \
-    raise_if_exception, _cli_write_command, TrivialReadCompletion, OrchestratorError, \
+    raise_if_exception, _cli_write_command, OrchestratorError, \
     NoOrchestrator, OrchestratorValidationError, NFSServiceSpec, \
     RGWSpec, InventoryFilter, InventoryHost, HostSpec, CLICommandMeta, \
     ServiceDescription, DaemonDescription, IscsiServiceSpec, json_to_generic_spec, \
@@ -265,7 +265,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
         self._save()
         self._refresh_health()
         completion = self.blink_device_light(fault_ident, True, locs)
-        self._orchestrator_wait([completion])
         return HandleCommandResult(stdout=str(completion.result))
 
     def light_off(self, fault_ident, devid, force):
@@ -278,7 +277,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
 
         try:
             completion = self.blink_device_light(fault_ident, False, locs)
-            self._orchestrator_wait([completion])
 
             if devid in getattr(self, fault_ident):
                 getattr(self, fault_ident).remove(devid)
@@ -335,7 +333,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
     def _remove_host(self, hostname: str) -> HandleCommandResult:
         """Remove a host"""
         completion = self.remove_host(hostname)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -343,7 +340,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
     def _update_set_addr(self, hostname: str, addr: str) -> HandleCommandResult:
         """Update a host address"""
         completion = self.update_host_addr(hostname, addr)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -351,10 +347,10 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
     def _get_hosts(self, format: Format = Format.plain) -> HandleCommandResult:
         """List hosts"""
         completion = self.get_hosts()
-        self._orchestrator_wait([completion])
-        raise_if_exception(completion)
+        hosts = raise_if_exception(completion)
+
         if format != Format.plain:
-            output = to_format(completion.result, format, many=True, cls=HostSpec)
+            output = to_format(hosts, format, many=True, cls=HostSpec)
         else:
             table = PrettyTable(
                 ['HOST', 'ADDR', 'LABELS', 'STATUS'],
@@ -362,7 +358,7 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
             table.align = 'l'
             table.left_padding_width = 0
             table.right_padding_width = 2
-            for host in sorted(completion.result, key=lambda h: h.hostname):
+            for host in sorted(hosts, key=lambda h: h.hostname):
                 table.add_row((host.hostname, host.addr, ' '.join(
                     host.labels), host.status.capitalize()))
             output = table.get_string()
@@ -372,7 +368,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
     def _host_label_add(self, hostname: str, label: str) -> HandleCommandResult:
         """Add a host label"""
         completion = self.add_host_label(hostname, label)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -380,7 +375,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
     def _host_label_rm(self, hostname: str, label: str) -> HandleCommandResult:
         """Remove a host label"""
         completion = self.remove_host_label(hostname, label)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -388,7 +382,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
     def _host_ok_to_stop(self, hostname: str) -> HandleCommandResult:
         """Check if the specified host can be safely stopped without reducing availability"""""
         completion = self.host_ok_to_stop(hostname)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -399,7 +392,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
         Prepare a host for maintenance by shutting down and disabling all Ceph daemons (cephadm only)
         """
         completion = self.enter_host_maintenance(hostname, force=force)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
 
         return HandleCommandResult(stdout=completion.result_str())
@@ -411,7 +403,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
         Return a host from maintenance, restarting all Ceph daemons (cephadm only)
         """
         completion = self.exit_host_maintenance(hostname)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
 
         return HandleCommandResult(stdout=completion.result_str())
@@ -434,11 +425,10 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
 
         completion = self.get_inventory(host_filter=nf, refresh=refresh)
 
-        self._orchestrator_wait([completion])
-        raise_if_exception(completion)
+        inv_hosts = raise_if_exception(completion)
 
         if format != Format.plain:
-            return HandleCommandResult(stdout=to_format(completion.result,
+            return HandleCommandResult(stdout=to_format(inv_hosts,
                                                         format,
                                                         many=True,
                                                         cls=InventoryHost))
@@ -468,7 +458,7 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
             table._align['SIZE'] = 'r'
             table.left_padding_width = 0
             table.right_padding_width = 2
-            for host_ in sorted(completion.result, key=lambda h: h.name):  # type: InventoryHost
+            for host_ in sorted(inv_hosts, key=lambda h: h.name):  # type: InventoryHost
                 for d in host_.devices.devices:  # type: Device
 
                     led_ident = 'N/A'
@@ -526,7 +516,6 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
         if not force:
             raise OrchestratorError('must pass --force to PERMANENTLY ERASE DEVICE DATA')
         completion = self.zap_device(hostname, path)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -546,9 +535,8 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
         completion = self.describe_service(service_type,
                                            service_name,
                                            refresh=refresh)
-        self._orchestrator_wait([completion])
-        raise_if_exception(completion)
-        services: List[ServiceDescription] = completion.result
+
+        services = raise_if_exception(completion)
 
         def ukn(s: Optional[str]) -> str:
             return '<unknown>' if s is None else s
@@ -621,9 +609,8 @@ class OrchestratorCli(OrchestratorClientMixin, MgrModule,
                                        daemon_id=daemon_id,
                                        host=hostname,
                                        refresh=refresh)
-        self._orchestrator_wait([completion])
-        raise_if_exception(completion)
-        daemons: List[DaemonDescription] = completion.result
+
+        daemons = raise_if_exception(completion)
 
         def ukn(s: Optional[str]) -> str:
             return '<unknown>' if s is None else s
@@ -798,7 +785,6 @@ Usage:
             return HandleCommandResult(-errno.EINVAL, stderr=msg)
 
         completion = self.create_osds(drive_group)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -809,7 +795,6 @@ Usage:
                       force: bool = False) -> HandleCommandResult:
         """Remove OSD services"""
         completion = self.remove_osds(svc_id, replace=replace, force=force)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -817,7 +802,6 @@ Usage:
     def _osd_rm_stop(self, svc_id: List[str]) -> HandleCommandResult:
         """Remove OSD services"""
         completion = self.stop_remove_osds(svc_id)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -825,7 +809,6 @@ Usage:
     def _osd_rm_status(self, format: Format = Format.plain) -> HandleCommandResult:
         """status of OSD removal operation"""
         completion = self.remove_osds_status()
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         report = completion.result
 
@@ -902,7 +885,6 @@ Usage:
             tp = type(daemon_type)
             raise OrchestratorValidationError(f'unknown daemon type `{tp}`')
 
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -990,7 +972,6 @@ Usage:
     def _service_action(self, action: ServiceAction, service_name: str) -> HandleCommandResult:
         """Start, stop, restart, redeploy, or reconfig an entire service (i.e. all daemons)"""
         completion = self.service_action(action.value, service_name)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1000,7 +981,6 @@ Usage:
         if '.' not in name:
             raise OrchestratorError('%s is not a valid daemon name' % name)
         completion = self.daemon_action(action.value, name)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1010,7 +990,6 @@ Usage:
         if '.' not in name:
             raise OrchestratorError('%s is not a valid daemon name' % name)
         completion = self.daemon_action("redeploy", name, image=image)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1027,7 +1006,6 @@ Usage:
                 raise OrchestratorError(
                     'must pass --force to REMOVE daemon with potentially PRECIOUS DATA for %s' % name)
         completion = self.remove_daemons(names)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1039,7 +1017,6 @@ Usage:
         if service_name in ['mon', 'mgr'] and not force:
             raise OrchestratorError('The mon and mgr services cannot be removed')
         completion = self.remove_service(service_name)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1085,12 +1062,10 @@ Usage:
 
     def _apply_misc(self, specs: Sequence[GenericSpec], dry_run: bool, format: Format) -> HandleCommandResult:
         completion = self.apply(specs)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         out = completion.result_str()
         if dry_run:
             completion = self.plan(specs)
-            self._orchestrator_wait([completion])
             raise_if_exception(completion)
             data = completion.result
             if format == Format.plain:
@@ -1323,9 +1298,6 @@ Usage:
         except OrchestratorError as e:
             assert e.args == ('hello, world',)
 
-        c = TrivialReadCompletion(result=True)
-        assert c.has_result
-
     @staticmethod
     def _upgrade_check_image_name(image: Optional[str], ceph_version: Optional[str]) -> None:
         """
@@ -1348,7 +1320,6 @@ Usage:
         """Check service versions vs available and target containers"""
         self._upgrade_check_image_name(image, ceph_version)
         completion = self.upgrade_check(image=image, version=ceph_version)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1356,13 +1327,12 @@ Usage:
     def _upgrade_status(self) -> HandleCommandResult:
         """Check service versions vs available and target containers"""
         completion = self.upgrade_status()
-        self._orchestrator_wait([completion])
-        raise_if_exception(completion)
+        status = raise_if_exception(completion)
         r = {
-            'target_image': completion.result.target_image,
-            'in_progress': completion.result.in_progress,
-            'services_complete': completion.result.services_complete,
-            'message': completion.result.message,
+            'target_image': status.target_image,
+            'in_progress': status.in_progress,
+            'services_complete': status.services_complete,
+            'message': status.message,
         }
         out = json.dumps(r, indent=4)
         return HandleCommandResult(stdout=out)
@@ -1374,7 +1344,6 @@ Usage:
         """Initiate upgrade"""
         self._upgrade_check_image_name(image, ceph_version)
         completion = self.upgrade_start(image, ceph_version)
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1382,7 +1351,6 @@ Usage:
     def _upgrade_pause(self) -> HandleCommandResult:
         """Pause an in-progress upgrade"""
         completion = self.upgrade_pause()
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1390,7 +1358,6 @@ Usage:
     def _upgrade_resume(self) -> HandleCommandResult:
         """Resume paused upgrade"""
         completion = self.upgrade_resume()
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
@@ -1398,6 +1365,5 @@ Usage:
     def _upgrade_stop(self) -> HandleCommandResult:
         """Stop an in-progress upgrade"""
         completion = self.upgrade_stop()
-        self._orchestrator_wait([completion])
         raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())