]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/dashboard: added CLI commands to set SSL certificate and key
authorRicardo Dias <rdias@suse.com>
Tue, 9 Apr 2019 12:42:57 +0000 (13:42 +0100)
committerRicardo Dias <rdias@suse.com>
Mon, 15 Jul 2019 14:56:14 +0000 (15:56 +0100)
Fixes: https://tracker.ceph.com/issues/39123
Signed-off-by: Ricardo Dias <rdias@suse.com>
src/pybind/mgr/dashboard/module.py

index 3f66790bc6a1b6abcecde80dc766635dda69fa40..868ccdb557ec331f739abd6114d7a930604d6663 100644 (file)
@@ -14,7 +14,7 @@ import threading
 import time
 from uuid import uuid4
 from OpenSSL import crypto, SSL
-from mgr_module import MgrModule, MgrStandbyModule, Option
+from mgr_module import MgrModule, MgrStandbyModule, Option, CLIWriteCommand
 from mgr_util import get_default_addr
 
 try:
@@ -405,6 +405,30 @@ class Module(MgrModule, CherryPyConfig):
         logger.info('Stopping engine...')
         self.shutdown_event.set()
 
+    @CLIWriteCommand("dashboard set-ssl-certificate",
+                     "name=mgr_id,type=CephString,req=false")
+    def set_ssl_certificate(self, mgr_id=None, inbuf=None):
+        if inbuf is None:
+            return -errno.EINVAL, '',\
+                   'Please specify the certificate file with "-i" option'
+        if mgr_id is not None:
+            self.set_store('{}/crt'.format(mgr_id), inbuf)
+        else:
+            self.set_store('crt', inbuf)
+        return 0, 'SSL certificate updated', ''
+
+    @CLIWriteCommand("dashboard set-ssl-certificate-key",
+                     "name=mgr_id,type=CephString,req=false")
+    def set_ssl_certificate_key(self, mgr_id=None, inbuf=None):
+        if inbuf is None:
+            return -errno.EINVAL, '',\
+                   'Please specify the certificate key file with "-i" option'
+        if mgr_id is not None:
+            self.set_store('{}/key'.format(mgr_id), inbuf)
+        else:
+            self.set_store('key', inbuf)
+        return 0, 'SSL certificate key updated', ''
+
     def handle_command(self, inbuf, cmd):
         # pylint: disable=too-many-return-statements
         res = handle_option_command(cmd)