Ejemplo n.º 1
0
 def post(self, request, **kwargs):
     client = StorageClient(request.data)
     valid = client.check_valid()
     response = HttpResponse()
     result = {"message": '验证成功!', "success": True}
     if valid:
         response.write(json.dumps(result))
     else:
         result['message'] = '验证失败!'
         result['success'] = False
         response.write(json.dumps(result))
     return response
Ejemplo n.º 2
0
def delete_backup(cluster_backup_id):

    cluster_backup = ClusterBackup.objects.get(id=cluster_backup_id)
    backup_storage = BackupStorage.objects.get(id=cluster_backup.backup_storage_id)
    client = StorageClient(backup_storage)
    if client.exists(cluster_backup.folder):
        ok,msg = client.delete_file(cluster_backup.folder)
        if ok:
            cluster_backup.delete()
            return True
    else:
        cluster_backup.delete()
        return True
Ejemplo n.º 3
0
 def on_restore(self, extra_vars, cluster_backup_id):
     cluster_backup = ClusterBackup.objects.get(id=cluster_backup_id)
     backup_storage = BackupStorage.objects.get(id=cluster_backup.backup_storage_id)
     cluster = self.get_cluster()
     self.steps = cluster.get_steps('cluster-restore')
     client = StorageClient(backup_storage)
     backup_file_path = cluster.name + '/' + cluster_backup.name
     if client.exists(backup_file_path):
         success = client.download_file(backup_file_path,
                                        "/etc/ansible/roles/cluster-backup/files/cluster-backup.zip")
         if success:
             return self.run_playbooks(extra_vars)
         else:
             raise Exception('download file failed!')
     else:
         raise Exception('File is not exist!')
def upload_backup_file(project_id, backup_storage_id):
    cluster = Cluster.objects.get(id=project_id)
    backup_storage = BackupStorage.objects.get(id=backup_storage_id)
    now = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
    client = StorageClient(backup_storage)
    client.check_valid()
    file_name = cluster.name + '-' + str(now) + '.zip'
    file_remote_path = cluster.name + '/' + file_name
    result, message = client.upload_file(
        "/etc/ansible/roles/cluster-backup/files/cluster-backup.zip",
        file_remote_path)
    if result:
        clusterBackup = ClusterBackup(name=file_name,
                                      size=10,
                                      folder=file_remote_path,
                                      backup_storage_id=backup_storage_id,
                                      project_id=project_id)
        clusterBackup.save()
        return True
    else:
        return False
Ejemplo n.º 5
0
def run_restore(cluster_backup_id):
    cluster_backup = ClusterBackup.objects.get(id=cluster_backup_id)
    backup_storage = BackupStorage.objects.get(id=cluster_backup.backup_storage_id)
    project = Project.objects.get(id=cluster_backup.project_id)
    cluster = Cluster.objects.get(id=cluster_backup.project_id)
    steps = cluster.get_steps('cluster-restore')
    client = StorageClient(backup_storage)
    backup_file_path = cluster.name+'/'+cluster_backup.name
    if client.exists(backup_file_path):
        success = client.download_file(backup_file_path,"/etc/ansible/roles/cluster-backup/files/cluster-backup.zip")
        if success:
            extra_vars = {
                "cluster_name": cluster.name,
            }
            extra_vars.update(cluster.configs)
            run_playbooks(steps, extra_vars, project)
            return True
        else:
            raise Exception('download file failed!')
    else:
        raise Exception('File is not exist!')
Ejemplo n.º 6
0
def run_backup(project_id, backup_storage_id):
    cluster = Cluster.objects.get(id=project_id)
    steps = cluster.get_steps('cluster-backup')
    backup_storage = BackupStorage.objects.get(id=backup_storage_id)
    project = Project.objects.get(id=project_id)
    extra_vars = {"cluster_name": cluster.name}
    extra_vars.update(cluster.configs)
    run_playbooks(steps, extra_vars, project)
    now = datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
    client = StorageClient(backup_storage)
    client.check_valid()
    file_name = cluster.name + '-' + str(now) + '.zip'
    file_remote_path = cluster.name + '/' + file_name
    result, message = client.upload_file(
        "/etc/ansible/roles/cluster-backup/files/cluster-backup.zip",
        file_remote_path)
    if result:
        clusterBackup = ClusterBackup(name=file_name,
                                      size=10,
                                      folder=file_remote_path,
                                      backup_storage_id=backup_storage_id,
                                      project_id=project_id)
        clusterBackup.save()
        return True