diff --git a/noblogsmv/main.py b/noblogsmv/main.py index efa76a89f56e334d6e4c35c4639c0e36c04fafd2..11e5fe4967167c2396df6ec455c577ab4b0262c2 100644 --- a/noblogsmv/main.py +++ b/noblogsmv/main.py @@ -27,10 +27,21 @@ def execute_gen(cmd, dry_run=False): def init(blog_id, value, progress): return 'move_data' + def init_clean(blog_id, value, progress): return 'rm_data' +def sshcmd(*args): + return [ + 'ssh', + '-o', 'BatchMode=yes', + '-o', 'StrictHostKeyChecking=no' + '-o', 'ControlMaster=auto', + '-o', 'ControlPath=.ssh_ctrl_%h', + ] + list(args) + + class MysqlNoblogs(object): conn = collections.namedtuple('DbData', ['host', 'port', 'user', 'password', 'db']) @@ -55,8 +66,7 @@ class MysqlNoblogs(object): def find_tables(self, blog_id): find_tables =['mysql', self.options(self.old), self.old.db, '-NBe', "'show tables like \"wp\\_%s\\_%%\"'" % blog_id] - cmd = ['ssh', '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=no', - 'root@%s' % self.old.host, '%s' % ' '.join(find_tables)] + cmd = sshcmd('root@%s' % self.old.host, '%s' % ' '.join(find_tables)) log.debug('Calling %s', ' '.join(cmd)) raw_tables = subprocess.check_output(cmd) self.tables = [ t.strip() for t in raw_tables.splitlines()] @@ -66,9 +76,9 @@ def process_move_data(blog_id, value, progress): progress.update('moving blog data') log.info('moving data for %s', blog_id) blog_dir = os.path.join(BLOGS_DIR, blog_id) - cmd = ['ssh', '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=no', - 'root@%s' % value['old_host'], 'rsync', '-az', - '%s/' % blog_dir, 'root@%s:%s' % (value['new_host'], blog_dir)] + cmd = sshcmd( + 'root@%s' % value['old_host'], 'rsync', '-az', + '%s/' % blog_dir, 'root@%s:%s' % (value['new_host'], blog_dir)) log.debug('Calling %s', ' '.join(cmd)) try: execute(cmd) @@ -103,8 +113,8 @@ def process_move_db(blog_id, value, progress): tables = ' '.join(db.tables) move_db = ['mysqldump', '--opt', db.old_options, value['old_db'], tables, '|', 'mysql', db.new_options, value['new_db']] - cmd = ['ssh', '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=no', - 'root@%s' % value['old_host'], '%s' % ' '.join(move_db)] + cmd = sshcmd( + 'root@%s' % value['old_host'], '%s' % ' '.join(move_db)) log.debug('Calling %s', ' '.join(cmd)) try: execute(cmd) @@ -135,8 +145,8 @@ def process_rm_db(blog_id, value, progress): tables = ', '.join(db.tables) drop_db = ['mysql', db.old_options, db.old.db, '-NBe', '"DROP TABLE %s"' % tables] - cmd = ['ssh', '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=no', - 'root@%s' % value['old_host'], '%s' % ' '.join(drop_db)] + cmd = sshcmd( + 'root@%s' % value['old_host'], '%s' % ' '.join(drop_db)) try: execute(cmd) except (subprocess.CalledProcessError, OSError), e: @@ -151,9 +161,9 @@ def process_rm_data(blog_id, value, progress): progress.update('removing blog data files from old location') log.info('Removing blog data files') blog_dir = os.path.join(BLOGS_DIR, blog_id) - cmd = ['ssh', '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=no', - 'root@%s' % value['old_host'], 'rm', '-rf', - '%s/' % blog_dir] + cmd = sshcmd( + 'root@%s' % value['old_host'], 'rm', '-rf', + '%s/' % blog_dir) log.debug('Calling %s', ' '.join(cmd)) try: execute(cmd)