示例#1
0
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()
示例#2
0
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()
示例#5
0
    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