Move thread control to threaded commands
authorStavros Sachtouris <saxtouri@admin.grnet.gr>
Tue, 19 Nov 2013 16:18:16 +0000 (18:18 +0200)
committerStavros Sachtouris <saxtouri@admin.grnet.gr>
Tue, 19 Nov 2013 16:18:16 +0000 (18:18 +0200)
Refs: #4616, #4617

Remove max_theads from config, move control to threaded commands as --threads
Set default MAX_THREADS to 1

Changelog
kamaki/cli/__init__.py
kamaki/cli/commands/__init__.py
kamaki/cli/commands/cyclades.py
kamaki/cli/commands/pithos.py
kamaki/cli/config/__init__.py
kamaki/cli/config/test.py
kamaki/clients/__init__.py

index 675b124..13f9774 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -2,11 +2,13 @@ CHANGELOG for version 0.11
 
 Bug Fixes:
 -In file list, the path or prefix was converted to boolean value. Fixed.
+-Thread options did not work [#4616]
 
 Changes:
 1. Make astakosclient a mantatory requirement for kamaki [#4312]
 2. Make post_user_catalogs obsolete, but keep for one more version [#4337]
 3. Rename user commands for cached account requests as /user session [#4340]
+4. Remove max_theads from config, move control to threaded commands [#4617]
 
 Features:
 
index 83795b2..1ec0560 100644 (file)
@@ -312,7 +312,6 @@ def init_cached_authenticator(config_argument, cloud, logger):
                     fake_cmd = _command_init(dict(config=config_argument))
                     fake_cmd.client = auth_base
                     fake_cmd._set_log_params()
-                    fake_cmd._update_max_threads()
                     tmp_base.authenticate(token)
                     auth_base = tmp_base
             except ClientError as ce:
@@ -558,6 +557,9 @@ def main():
         if _debug:
             raise err
         exit(1)
+    except KeyboardInterrupt:
+        print('Canceled by user')
+        exit(1)
     except Exception as er:
         print('Unknown Error: %s' % er)
         if _debug:
index bb98d7a..c21cd2c 100644 (file)
@@ -57,7 +57,6 @@ def addLogSettings(foo):
             return foo(self, *args, **kwargs)
         finally:
             self._set_log_params()
-            self._update_max_threads
     return wrap
 
 
@@ -171,12 +170,6 @@ class _command_init(object):
             log.debug('Failed to read custom log_pid setting:'
                 '%s\n default for log_pid is off' % e)
 
-    def _update_max_threads(self):
-        if getattr(self, 'client', None):
-            max_threads = int(self['config'].get('global', 'max_threads'))
-            assert max_threads > 0, 'invalid max_threads config option'
-            self.client.MAX_THREADS = max_threads
-
     def _safe_progress_bar(
             self, msg, arg='progress_bar', countdown=False, timeout=100):
         """Try to get a progress bar, but do not raise errors"""
index 0918ac0..2fb3b91 100644 (file)
@@ -387,7 +387,9 @@ class server_create(_init_cyclades, _optional_json, _server_wait):
             'Create a cluster of servers of this size. In this case, the name'
             'parameter is the prefix of each server in the cluster (e.g.,'
             'srv1, srv2, etc.',
-            '--cluster-size')
+            '--cluster-size'),
+        max_threads=IntArgument(
+            'Max threads in cluster mode (default 1)', '--threads')
     )
 
     @errors.cyclades.cluster_size
@@ -399,6 +401,7 @@ class server_create(_init_cyclades, _optional_json, _server_wait):
             personality=self['personality']) for i in range(1, 1 + size)]
         if size == 1:
             return [self.client.create_server(**servers[0])]
+        self.client.MAX_THREADS = int(self['max_threads'] or 1)
         try:
             r = self.client.async_run(self.client.create_server, servers)
             return r
index 416e2e0..353d72f 100644 (file)
@@ -1045,7 +1045,7 @@ class file_upload(_file_container_command, _optional_output_cmd):
                 '( "read=user1,grp1,user2,... write=user1,grp2,... )']),
             parsed_name='--sharing'),
         public=FlagArgument('make object publicly accessible', '--public'),
-        poolsize=IntArgument('set pool size', '--with-pool-size'),
+        max_threads=IntArgument('set max threads (default 5)', '--threads'),
         progress_bar=ProgressBarArgument(
             'do not show progress bar',
             ('-N', '--no-progress-bar'),
@@ -1152,8 +1152,7 @@ class file_upload(_file_container_command, _optional_output_cmd):
     @errors.pithos.object_path
     @errors.pithos.local_path
     def _run(self, local_path, remote_path):
-        if self['poolsize'] > 0:
-            self.client.MAX_THREADS = int(self['poolsize'])
+        self.client.MAX_THREADS = int(self['max_threads'] or 5)
         params = dict(
             content_encoding=self['content_encoding'],
             content_type=self['content_type'],
@@ -1272,7 +1271,7 @@ class file_download(_file_container_command):
             'show output unmodified since then', '--if-unmodified-since'),
         object_version=ValueArgument(
             'get the specific version', ('-O', '--object-version')),
-        poolsize=IntArgument('set pool size', '--with-pool-size'),
+        max_threads=IntArgument('set max threads (default 5)', '--threads'),
         progress_bar=ProgressBarArgument(
             'do not show progress bar', ('-N', '--no-progress-bar'),
             default=False),
@@ -1389,9 +1388,7 @@ class file_download(_file_container_command):
     @errors.pithos.object_path
     @errors.pithos.local_path
     def _run(self, local_path):
-        poolsize = self['poolsize']
-        if poolsize:
-            self.client.MAX_THREADS = int(poolsize)
+        self.client.MAX_THREADS = int(self['max_threads'] or 5)
         progress_bar = None
         try:
             for f, rpath in self._outputs(local_path):
index 54a7ecb..edf85b0 100644 (file)
@@ -77,7 +77,6 @@ DEFAULTS = {
         'log_token': 'off',
         'log_data': 'off',
         'log_pid': 'off',
-        'max_threads': 7,
         'history_file': HISTORY_PATH,
         'user_cli': 'astakos',
         'admin_cli': 'astakos',
index 164ffc8..7ab5d10 100644 (file)
@@ -68,7 +68,6 @@ class Config(TestCase):
         self.config_file_content = [
             HEADER,
             '[global]\n',
-            'max_threads = 5\n',
             'default_cloud = ~mycloud\n',
             'file_cli = pithos\n',
             'history_file = /home/user/.kamaki.history\n',
index 87cb067..437f75b 100644 (file)
@@ -331,7 +331,7 @@ class SilentEvent(Thread):
 
 class Client(Logged):
 
-    MAX_THREADS = 7
+    MAX_THREADS = 1
     DATE_FORMATS = ['%a %b %d %H:%M:%S %Y', ]
     CONNECTION_RETRY_LIMIT = 0