]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/ssh: provide get_unique_name helper
authorSage Weil <sage@redhat.com>
Mon, 28 Oct 2019 19:15:08 +0000 (14:15 -0500)
committerSage Weil <sage@redhat.com>
Mon, 28 Oct 2019 19:15:27 +0000 (14:15 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/ssh/module.py

index c4f0bdfd17d497ecceef0d4f8b677713a46c4c9f..9446d0a5b9b928676f78809a92dbc7ee6d8cd5cc 100644 (file)
@@ -3,8 +3,10 @@ import errno
 import logging
 from functools import wraps
 
+import string
 import six
 import os
+import random
 import tempfile
 import multiprocessing.pool
 
@@ -183,6 +185,22 @@ class SSHOrchestrator(MgrModule, orchestrator.Orchestrator):
                     self.get_ceph_option(opt))
             self.log.debug(' native option %s = %s', opt, getattr(self, opt))
 
+    def get_unique_name(self, existing, prefix=None):
+        """
+        Generate a unique random service name
+        """
+        while True:
+            if prefix:
+                name = prefix + '-'
+            else:
+                name = ''
+            name += ''.join(random.choice(string.ascii_lowercase)
+                            for i in range(6))
+            if len([d for d in existing if d.service_instance == name]):
+                self.log('name %s exists, trying again', name)
+                continue
+            return name
+
     def _reconfig_ssh(self):
         temp_files = []
         ssh_options = []