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
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
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
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!')
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