diff --git a/fuel_dev_tools/cmd_parser.py b/fuel_dev_tools/cmd_parser.py new file mode 100644 index 0000000..eac979d --- /dev/null +++ b/fuel_dev_tools/cmd_parser.py @@ -0,0 +1,22 @@ +class CmdParserMixin(object): + """Mixin for parsing fuel CLI output.""" + + def parse_output(self, output): + ret = [] + header = [] + + lines = output.split('\n') + # brutal + lines = [line for line in lines + if not line.startswith('DEPRECATION WARNING')] + + for name in lines[0].split('|'): + header.append(name.strip()) + + # lines[1] is just '----' + + for line in lines[2:]: + values = [v.strip() for v in line.split('|')] + ret.append(dict(zip(header, values))) + + return ret \ No newline at end of file diff --git a/fuel_dev_tools/docker/__init__.py b/fuel_dev_tools/docker/__init__.py index d2b99a7..e007ba7 100644 --- a/fuel_dev_tools/docker/__init__.py +++ b/fuel_dev_tools/docker/__init__.py @@ -241,7 +241,9 @@ class RsyncCommand(DockerMixin, # target is on the remote target = os.path.join(base_target_dir, self.target_path) - self.rsync(source, target) + target, args = self.build_app_args_target(target) + + self.rsync(source, target, *args) self.post_sync(parsed_args) diff --git a/fuel_dev_tools/docker/nginx.py b/fuel_dev_tools/docker/nginx.py index 97d8755..bfd772d 100644 --- a/fuel_dev_tools/docker/nginx.py +++ b/fuel_dev_tools/docker/nginx.py @@ -57,7 +57,11 @@ class Rsync(DockerNginxMixin, docker.RsyncCommand): source = os.path.join(source_dir, source_path) - self.rsync(source, target_dir) + target, args = self.build_app_args_target(target_dir) + + self.rsync(source, target, *args) + + self.rsync(source, target) def build_gulp_static(self, source_dir): cwd = os.path.join(source_dir, 'nailgun') diff --git a/fuel_dev_tools/docker/postgres.py b/fuel_dev_tools/docker/postgres.py index 143c08f..9aa274e 100644 --- a/fuel_dev_tools/docker/postgres.py +++ b/fuel_dev_tools/docker/postgres.py @@ -12,9 +12,6 @@ # License for the specific language governing permissions and limitations # under the License. -import six -import subprocess - from fuel_dev_tools import docker from fuel_dev_tools import info diff --git a/fuel_dev_tools/rsync.py b/fuel_dev_tools/rsync.py index ad78ef1..ee915c6 100644 --- a/fuel_dev_tools/rsync.py +++ b/fuel_dev_tools/rsync.py @@ -12,18 +12,26 @@ # License for the specific language governing permissions and limitations # under the License. -import six - -from fabric.contrib import project +import subprocess class RsyncMixin(object): - def rsync(self, source, target): + def build_app_args_target(self, target): + target = '{}@{}:{}'.format(self.app_args.user, self.app_args.ip, target) + args = ['-e', 'ssh -p {}'.format(self.app_args.port)] + + return target, args + + def rsync(self, source, target, *args): self.print_debug('RSYNC: %s --> %s' % (source, target)) - result = project.rsync_project( - local_dir=source, - remote_dir=target + #result = project.rsync_project( + # local_dir=source, + # remote_dir=target + #) + + result = subprocess.check_output( + ['rsync', 'avz'] + list(args) + [source, target] ) self.print_debug(result.decode('utf-8'))