From c8b916b5a25938fc86b2e4d6815619ac19f51975 Mon Sep 17 00:00:00 2001 From: Jay Bonci Date: Tue, 1 Apr 2014 01:19:40 +0000 Subject: [PATCH] Abstracted some of the copy_tree stuff out --- common/tools.py | 20 ++++++++++++++++++-- plugins/chef/tasks.py | 19 ++----------------- plugins/puppet/tasks.py | 18 ++---------------- 3 files changed, 22 insertions(+), 35 deletions(-) diff --git a/common/tools.py b/common/tools.py index 6b39db5..8721144 100644 --- a/common/tools.py +++ b/common/tools.py @@ -1,5 +1,3 @@ - - def log_check_call(command, stdin=None, env=None, shell=False): status, stdout, stderr = log_call(command, stdin, env, shell) if status != 0: @@ -71,3 +69,21 @@ def config_get(path, config_path): for key in config_path: config = config.get(key) return config + +def copy_tree(from_path,to_path): + from shutil import copy + import os + for abs_prefix, dirs, files in os.walk(from_path): + prefix = os.path.normpath(os.path.relpath(abs_prefix, from_path)) + for path in dirs: + full_path = os.path.join(to_path, prefix, path) + if os.path.exists(full_path): + if os.path.isdir(full_path): + continue + else: + os.remove(full_path) + os.mkdir(full_path) + for path in files: + copy(os.path.join(abs_prefix, path), + os.path.join(to_path, prefix, path)) + diff --git a/plugins/chef/tasks.py b/plugins/chef/tasks.py index 198bc7f..15fde45 100644 --- a/plugins/chef/tasks.py +++ b/plugins/chef/tasks.py @@ -36,20 +36,5 @@ class CopyChefAssets(Task): @classmethod def run(cls, info): - from shutil import copy - chef_path = os.path.join(info.root, 'etc/chef') - chef_assets = info.manifest.plugins['chef']['assets'] - for abs_prefix, dirs, files in os.walk(chef_assets): - prefix = os.path.normpath(os.path.relpath(abs_prefix, chef_assets)) - for path in dirs: - full_path = os.path.join(chef_path, prefix, path) - if os.path.exists(full_path): - if os.path.isdir(full_path): - continue - else: - os.remove(full_path) - os.mkdir(full_path) - for path in files: - copy(os.path.join(abs_prefix, path), - os.path.join(chef_path, prefix, path)) - + from common.tools import copy_tree + copy_tree(info.manifest.plugins['chef']['assets'], os.path.join(info.root, 'etc/chef')) diff --git a/plugins/puppet/tasks.py b/plugins/puppet/tasks.py index e2f0e22..abc90cb 100644 --- a/plugins/puppet/tasks.py +++ b/plugins/puppet/tasks.py @@ -53,22 +53,8 @@ class CopyPuppetAssets(Task): @classmethod def run(cls, info): - from shutil import copy - puppet_path = os.path.join(info.root, 'etc/puppet') - puppet_assets = info.manifest.plugins['puppet']['assets'] - for abs_prefix, dirs, files in os.walk(puppet_assets): - prefix = os.path.normpath(os.path.relpath(abs_prefix, puppet_assets)) - for path in dirs: - full_path = os.path.join(puppet_path, prefix, path) - if os.path.exists(full_path): - if os.path.isdir(full_path): - continue - else: - os.remove(full_path) - os.mkdir(full_path) - for path in files: - copy(os.path.join(abs_prefix, path), - os.path.join(puppet_path, prefix, path)) + from common.tools import copy_tree + copy_tree(info.manifest.plugins['puppet']['assets'], os.path.join(info.root, 'etc/puppet')) class ApplyPuppetManifest(Task):