def start(self): """This is the archive method. Uses archive (TAR) feature to compress files and then upload the TAR Ball to a specified container. """ # Index Local Files for Upload f_indexed = methods.get_local_files() if ARGS.get('pattern_match'): f_indexed = basic.match_filter( idx_list=f_indexed, pattern=ARGS['pattern_match'] ) num_files = len(f_indexed) report.reporter(msg='MESSAGE: "%s" Files have been found.' % num_files) # Package up the Payload payload = http.prep_payload( auth=self.auth, container=ARGS.get('container', basic.rand_string()), source=None, args=ARGS ) report.reporter( msg='PAYLOAD\t: "%s"' % payload, log=True, lvl='debug', prt=False ) # Set the actions class up self.go = actions.CloudActions(payload=payload) self.go.container_create( url=payload['url'], container=payload['c_name'] ) self.action = getattr(self.go, 'object_putter') with multi.spinner(): # Compression Job wfile = methods.compress_files(file_list=f_indexed) source, name = os.path.split(wfile) report.reporter(msg='MESSAGE: "%s" is being uploaded.' % name) # Perform the upload self.action(url=payload['url'], container=payload['c_name'], source=source, u_file=wfile) # Remove the archive unless instructed not too. if ARGS.get('no_cleanup') is None: basic.remove_file(wfile)
def start(self): """This is the archive method. Uses archive (TAR) feature to compress files and then upload the TAR Ball to a specified container. """ # Index Local Files for Upload f_indexed = methods.get_local_files() if ARGS.get('pattern_match'): f_indexed = basic.match_filter(idx_list=f_indexed, pattern=ARGS['pattern_match']) num_files = len(f_indexed) report.reporter(msg='MESSAGE: "%s" Files have been found.' % num_files) # Package up the Payload payload = http.prep_payload(auth=self.auth, container=ARGS.get('container', basic.rand_string()), source=None, args=ARGS) report.reporter( msg='PAYLOAD : [ %s ]' % payload, prt=False, lvl='debug', ) # Set the actions class up self.go = actions.CloudActions(payload=payload) self.go.container_create(url=payload['url'], container=payload['c_name']) self.action = getattr(self.go, 'object_putter') with multi.spinner(): # Compression Job wfile = methods.compress_files(file_list=f_indexed) source, name = os.path.split(wfile) report.reporter(msg='MESSAGE: "%s" is being uploaded.' % name) # Perform the upload self.action(url=payload['url'], container=payload['c_name'], source=source, u_file=wfile) # Remove the archive unless instructed not too. if ARGS.get('no_cleanup') is None: basic.remove_file(wfile)
def compress_files(file_list): """If the archive function is used, create a compressed archive. :param file_list: This function allows for multiple sources to be added to the compressed archive. """ tmp_file = None try: # Set date and time date_format = '%a%b%d.%H.%M.%S.%Y' today = datetime.datetime.today() _ts = today.strftime(date_format) # Get Home Directory home_dir = os.getenv('HOME') # Set the name of the archive. set_name = ARGS.get('tar_name', '%s_%s' % ('Archive', _ts)) file_name = '%s.tgz' % set_name # Set the working File. tmp_file = basic.jpath(root=home_dir, inode=file_name) # Begin creating the Archive. tar = tarfile.open(tmp_file, 'w:gz') for name in file_list: if basic.file_exists(name) is True: tar.add(name) tar.close() report.reporter(msg='ARCHIVE CREATED: %s' % tmp_file, prt=False) if ARGS.get('verify'): tar_len = tarfile.open(tmp_file, 'r') ver_array = [] for member_info in tar_len.getmembers(): ver_array.append(member_info.name) count = len(ver_array) orig_count = len(file_list) if orig_count != count: raise turbo.SystemProblem( 'ARCHIVE NOT VERIFIED: Archive and File List do not Match.' ' Original File Count = %s, Found Archive Contents = %s' % (orig_count, count) ) report.reporter( msg='ARCHIVE CONTENTS VERIFIED: %s files' % count, ) except KeyboardInterrupt: if basic.file_exists(tmp_file): basic.remove_file(tmp_file) turbo.emergency_exit('I have stopped at your command,' ' I removed Local Copy of the Archive') except Exception as exp: if basic.file_exists(tmp_file): basic.remove_file(tmp_file) turbo.emergency_exit( 'I am sorry i just don\'t know what you put into me, Removing' ' Local Copy of the Archive.' ) turbo.emergency_exit( 'Exception while working on the archive. MESSAGE: %s' % exp ) else: return tmp_file
def _cleanup(): """Ensure that our temp file is removed.""" if locals().get('tfile') is not None: basic.remove_file(tfile)
def test_remove_file(self): return_file = tempfile.mkstemp()[1] basic_utils.remove_file(filename=return_file) if os.path.exists(return_file): self.fail('Failed to remove File')
def compress_files(file_list): """If the archive function is used, create a compressed archive. :param file_list: This function allows for multiple sources to be added to the compressed archive. """ tmp_file = None try: # Set date and time date_format = '%a%b%d.%H.%M.%S.%Y' today = datetime.datetime.today() _ts = today.strftime(date_format) # Get Home Directory home_dir = os.getenv('HOME') # Set the name of the archive. set_name = ARGS.get('tar_name', '%s_%s' % ('Archive', _ts)) file_name = '%s.tgz' % set_name # Set the working File. tmp_file = basic.jpath(root=home_dir, inode=file_name) # Begin creating the Archive. tar = tarfile.open(tmp_file, 'w:gz') for name in file_list: if basic.file_exists(name) is True: tar.add(name) tar.close() report.reporter(msg='ARCHIVE CREATED: %s' % tmp_file, prt=False) if ARGS.get('verify'): tar_len = tarfile.open(tmp_file, 'r') ver_array = [] for member_info in tar_len.getmembers(): ver_array.append(member_info.name) count = len(ver_array) orig_count = len(file_list) if orig_count != count: raise turbo.SystemProblem( 'ARCHIVE NOT VERIFIED: Archive and File List do not Match.' ' Original File Count = %s, Found Archive Contents = %s' % (orig_count, count)) report.reporter(msg='ARCHIVE CONTENTS VERIFIED: %s files' % count, ) except KeyboardInterrupt: if basic.file_exists(tmp_file): basic.remove_file(tmp_file) turbo.emergency_exit('I have stopped at your command,' ' I removed Local Copy of the Archive') except Exception as exp: if basic.file_exists(tmp_file): basic.remove_file(tmp_file) turbo.emergency_exit( 'I am sorry i just don\'t know what you put into me, Removing' ' Local Copy of the Archive.') turbo.emergency_exit( 'Exception while working on the archive. MESSAGE: %s' % exp) else: return tmp_file
def test_remove_file(self): return_file = tempfile.mkstemp()[1] basic_utils.remove_file(filename=return_file) if os.path.exists(return_file): self.fail('Failed to remove File')
def _cleanup(): """Ensure that our temp file is removed.""" if locals().get('tfile') is not None: basic.remove_file(tfile)