Просмотр исходного кода

Merge pull request #32 from gabriel-samfira/make-compression-configurable

Make compression configurable
Nashwan Azhari 7 лет назад
Родитель
Сommit
4e2e340c58
2 измененных файлов с 20 добавлено и 3 удалено
  1. 15 2
      coriolis/providers/backup_writers.py
  2. 5 1
      coriolis/providers/replicator.py

+ 15 - 2
coriolis/providers/backup_writers.py

@@ -7,6 +7,7 @@ import errno
 import os
 import threading
 
+from oslo_config import cfg
 from oslo_log import log as logging
 import paramiko
 from six import with_metaclass
@@ -16,6 +17,13 @@ from coriolis import exception
 from coriolis import utils
 
 LOG = logging.getLogger(__name__)
+CONF = cfg.CONF
+opts = [
+    cfg.BoolOpt('compress_transfers',
+               default=True,
+               help='Use compression if possible during disk transfers'),
+]
+CONF.register_opts(opts)
 
 
 class BaseBackupWriterImpl(with_metaclass(abc.ABCMeta)):
@@ -98,13 +106,16 @@ class FileBackupWriter(BaseBackupWriter):
 
 
 class SSHBackupWriterImpl(BaseBackupWriterImpl):
-    def __init__(self, path, disk_id):
+    def __init__(self, path, disk_id, compress_transfer=None):
         self._msg_id = None
         self._stdin = None
         self._stdout = None
         self._stderr = None
         self._offset = None
         self._ssh = None
+        self._compress_transfer = compress_transfer
+        if self._compress_transfer is None:
+            self._compress_transfer = CONF.compress_transfers
         super(SSHBackupWriterImpl, self).__init__(path, disk_id)
 
     def _set_ssh_client(self, ssh):
@@ -119,7 +130,9 @@ class SSHBackupWriterImpl(BaseBackupWriterImpl):
 
     def _encode_data(self, content):
         msg = data_transfer.encode_data(
-            self._msg_id, self._path, self._offset, content)
+            self._msg_id, self._path,
+            self._offset, content,
+            compress=self._compress_transfer)
 
         LOG.debug(
             "Guest path: %(path)s, offset: %(offset)d, content len: "

+ 5 - 1
coriolis/providers/replicator.py

@@ -246,7 +246,7 @@ class Client(object):
 class Replicator(object):
 
     def __init__(self, conn_info, event_manager, volumes_info, replica_state,
-                 use_compression=False, ignore_mounted=True,
+                 use_compression=None, ignore_mounted=True,
                  hash_method=HASH_METHOD_SHA256, watch_devices=True,
                  chunk_size=10485760, use_tunnel=False):
         self._event_manager = event_manager
@@ -255,7 +255,11 @@ class Replicator(object):
         self._config_dir = None
         self._cert_dir = None
         self._volumes_info = volumes_info
+
         self._use_compression = use_compression
+        if self._use_compression is None:
+            self._use_compression = CONF.compress_transfers
+
         self._watch_devices = watch_devices
         self._hash_method = hash_method
         self._ignore_mounted = ignore_mounted