def start(): cwd = get_slash_cwd() INSTANCE_WORK_DIR = make_path(cwd, 'spkg', "TEST_INSTANCE") status_file = make_path(INSTANCE_WORK_DIR, "status.yml") spkg_work_dir = make_path(cwd, 'spkg') config_data = {"spkg_path": spkg_work_dir} os.system('bash -c "mkdir -p %s"' % INSTANCE_WORK_DIR) os.system('bash -c "mkdir %s/tmp"' % INSTANCE_WORK_DIR) #print "Copying repository files..." os.system('bash -c "cp -ax repos/ %s"' % spkg_work_dir) if not os.path.isdir(PKG_DIR): #print "Making %s..." % PKG_DIR os.system('bash -c "mkdir -p %s"' % PKG_DIR) #print "Copying package files..." os.system('bash -c "cd repos/type4 && tar -czmf TestPackage-7.spkg TestPackage-7"') os.system('bash -c "cp repos/type4/*.spkg %s"' % PKG_DIR) #print "Creating %s" % status_file open(status_file, 'w').write("{}") #print "Creating %s" % CONFIG_FILE current_config = get_current_config() if current_config: if "spkg_path" in current_config: current_config["old_spkg_path"] = current_config["spkg_path"] current_config["spkg_path"] = spkg_work_dir else: current_config = config_data config_fp = open(CONFIG_FILE, 'w') config_fp.write(yaml_dump(current_config)) config_fp.flush() config_fp.close()
def cleanup(): current_config = get_current_config() if current_config: if "old_spkg_path" in current_config: #print "Reverting %s" % CONFIG_FILE current_config["spkg_path"] = current_config["old_spkg_path"] del current_config["old_spkg_path"] open(CONFIG_FILE, 'w').write(yaml_dump(current_config)) #print "Removing %s..." % SPKG_WORK_DIR os.system('bash -c "rm -rf %s"' % SPKG_WORK_DIR)
def create_manifest(self): #old_md5_data = get_manifest_data(self.file_name, self.logger) old_md5_data = {} md5_dict = self.dump_md5_sums() md5_dict.update(old_md5_data) dump_string = yaml_dump(md5_dict) manifest_path = make_path(get_base_path(self.source_file), MANIFEST_FILE) open(manifest_path, 'w').write(dump_string) self.logger.info("Writing to %s..." % (manifest_path)) return md5_dict
def _write_progress(progress_data): data_fp = open("spkg/%s/status.yml" % INSTANCE, 'w') data_fp.write(yaml_dump(progress_data)) data_fp.flush() data_fp.close()
def _backup(self, obj, backup_data, future_pkns, dry_run): "Perform basic backup functions for a package" pre_backup_cmd = obj.pre_backup post_backup_cmd = obj.post_backup if pre_backup_cmd: status = self._find_cmd(pre_backup_cmd, future_pkns=future_pkns, dry_run=dry_run) if status != OK: erstr = "%s: backup FAILED because pre-backup command failed." Logger.error(erstr % self.full_name) return FAIL file_names = backup_data.get("file_names") if type(file_names) != type([]): errmsg = "Package %s did not define its backup data correctly."\ " '%s' should be a list." Logger.error(errmsg % (self.full_name, file_names)) return FAIL options = backup_data.get("options", [COMPRESS]) if type(options) != type([]): errmsg = "Package %s did not define its backup data correctly."\ " '%s' should be a list." Logger.error(errmsg % (self.full_name, options)) return FAIL backup_dir = tempfile.mkdtemp() Logger.info("Temporary backup dir: %s" % backup_dir) start_time = time.time() backup_data = {"__START_TIME__": start_time} for file_name in file_names: backup_data[file_name] = {} current_start = time.time() if file_name.startswith(os.path.sep): backup_destination = make_path(backup_dir, file_name[1:]) fpf = ForwardPluggableFileProcessor(file_name, backup_destination, options, Logger) backup_file_name, md5_dict = fpf.process_all() if not os.path.isfile(backup_file_name): Logger.error("Backup file not created.") return FAIL backup_data[file_name]["md5"] = md5_dict backup_data[file_name]["backup_file"] = rpartition(backup_file_name, os.path.sep)[-1] elapsed_time = time.time() - current_start backup_data[file_name]["elapsed_time"] = elapsed_time size = os.stat(file_name)[stat.ST_SIZE] backup_data[file_name]["size"] = size backup_data[file_name]["status"] = OK if post_backup_cmd: status = self._find_cmd(post_backup_cmd, future_pkns=future_pkns, dry_run=dry_run) if status != OK: erstr = "%s: backup FAILED because post-backup command failed." Logger.error(erstr % self.full_name) return FAIL backup_data["__BACKUP_DIR__"] = backup_dir dump_string = yaml_dump(backup_data) for line in dump_string.split('\n'): Logger.info("==REPORT==:%s" % line) return OK