#!/usr/bin/python3 from os import listdir, makedirs from os.path import isfile, isdir, join, dirname from shutil import copy2, copytree, rmtree from ansible.plugins.action import ActionBase from risotto.utils import RISOTTO_CONFIG class ActionModule(ActionBase): def run(self, tmp=None, task_vars=None): super(ActionModule, self).run(tmp, task_vars) module_args = self._task.args.copy() modules = module_args['modules'] dataset_directory = RISOTTO_CONFIG['directories']['dataset'] install_dir = join('/tmp/risotto/images') if isdir(install_dir): rmtree(install_dir) for module_name, depends in modules.items(): for depend in depends: manual = join(dataset_directory, depend, 'manual', 'image') if not isdir(manual): continue for filename in listdir(manual): src_file = join(manual, filename) dst_file = join(install_dir, module_name, filename) if isdir(src_file): if not isdir(dst_file): makedirs(dst_file) for subfilename in listdir(src_file): if not isfile(dst_file): src = join(src_file, subfilename) dst = join(dst_file, subfilename) if isfile(src): copy2(src, dst) else: copytree(src, dst) elif not isfile(dst_file): dst = dirname(dst_file) if not isdir(dst): makedirs(dst) if isfile(src_file): copy2(src_file, dst_file) else: copytree(src_file, dst_file) return dict(ansible_facts=dict({}))