# -*- coding: utf-8 -*- # # 2010-2015 Nico Schottelius (nico-cdist at schottelius.org) # 2012-2017 Steven Armstrong (steven-cdist at armstrong.cc) # # This file is part of cdist. # # cdist is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # cdist is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # # import os import hashlib import cdist.log import cdist.version VERSION = cdist.version.VERSION BANNER = """ .. . .x+=:. s dF @88> z` ^% :8 '88bu. %8P . 0: # output.append(label) # output.append('{0:-^50}'.format(label.center(len(label)+2))) output.append('{0:-<{1}}'.format(label, self.line_length)) with open(stderr_path, 'r') as fd: output.append(fd.read()) return '\n'.join(output) def __str__(self): output = [] output.append(self.message) output.append('''{label:-<{length}} name: {o.name} path: {o.absolute_path} source: {o.source} type: {o.cdist_type.absolute_path}'''.format( label='---- object ', length=self.line_length, o=self.cdist_object) ) output.append(self.stderr) return '\n'.join(output) class InitialManifestError(Error): """Something went wrong while executing initial manifest""" def __init__(self, initial_manifest, stdout_path, stderr_path, subject=''): self.initial_manifest = initial_manifest self.stdout_path = stdout_path self.stderr_path = stderr_path if isinstance(subject, Error): self.original_error = subject else: self.original_error = None self.message = str(subject) self.line_length = 74 @property def stderr(self): output = [] if os.path.getsize(self.stderr_path) > 0: label = "init" + ':stderr ' output.append('{0:-<{1}}'.format(label, self.line_length)) with open(self.stderr_path, 'r') as fd: output.append(fd.read()) return '\n'.join(output) def __str__(self): output = [] output.append(self.message) output.append('''{label:-<{length}} path: {im}'''.format( label='---- initial manifest ', length=self.line_length, im=self.initial_manifest) ) output.append(self.stderr) return '\n'.join(output) def file_to_list(filename): """Return list from \n seperated file""" if os.path.isfile(filename): file_fd = open(filename, "r") lines = file_fd.readlines() file_fd.close() # Remove \n from all lines lines = map(lambda s: s.strip(), lines) else: lines = [] return lines def str_hash(s): """Return hash of string s""" if isinstance(s, str): return hashlib.md5(s.encode('utf-8')).hexdigest() else: raise Error("Param should be string") def home_dir(): if 'HOME' in os.environ: return os.path.join(os.environ['HOME'], ".cdist") else: return None