def download_package(): request_data = request.json required_parameters = ['version', 'url'] check_config(request_data, required_parameters) if not request_data['url']: raise Exception(f"illegal url {request_data['url']}") if not request_data['version']: raise Exception(f"illegal url {request_data['version']}") os.makedirs(os.path.join(get_project_base_directory(), 'packages'), exist_ok=True) package_dir = get_package_dir_by_version(request_data.get('version')) if os.path.exists(package_dir): return get_json_result(retcode=100, retmsg=f"Downloading mirror with version {request_data.get('version')} failed, " f"package dir {package_dir} already exists.") package_instance = Package.get_or_none(Package.f_version == request_data['version'], Package.f_status == 'success') if package_instance: return get_json_result(retcode=100, retmsg=f"Downloading mirror with version {request_data.get('version')} failed, " f"version info has been stored in database.") request_data['dir'] = package_dir p = Process(target=do_download, args=(request_data, )) p.start() return get_json_result(retmsg=f"Start downloading mirror from url: {request_data.get('url')}.", data= {'version': request_data.get('version')})
def execute_test(host, shell_cmd, test_type): process_cmd = [ 'python3', __file__, '--host', host, '--shell_cmd', shell_cmd, '--test_type', test_type ] log_dir = os.path.join(file_utils.get_project_base_directory(), 'logs', host, test_type) job_utils.run_subprocess(config_dir=log_dir, process_cmd=process_cmd, log_dir=log_dir) return 0, f'submit {test_type} test success'
def get_var_files_dir(self): return os.path.join(file_utils.get_project_base_directory(), 'templates', f"v{self.version.replace('.', '_')}", 'var_files')
def get_hosts_template(self): with open(os.path.join(file_utils.get_project_base_directory(), 'templates', f"v{self.version.replace('.', '_')}", 'hosts'), 'r') as f: data = f.read() return data
def get_roles_args(self): with open(os.path.join(file_utils.get_project_base_directory(), 'templates', f"v{self.version.replace('.', '_')}", 'roles_arg.json'), 'r') as f: data = json_loads(f.read()) return data
def get_proj_yml(self): with open(os.path.join(file_utils.get_project_base_directory(), 'templates', f"v{self.version.replace('.', '_')}", 'project.yml'), 'r') as f: data = yaml.safe_load(f.read()) return data