def get_migration_status(): try: migration_data = str(request.data, 'utf-8') migration = get_migration(migration_data) migration_pickler = MigrationPickler() migrations = migration_pickler.read(migration) if len(migrations) == 0: raise Exception( "There are no such migrations at persistence layer") if len(migrations) > 1: raise Exception( "There are more than one such migration at persistence layer") response_json = { "status": migrations[0].migration_state.name, "error": None } return Response(json.dumps(response_json), status=200, mimetype='application/json') except Exception as e: response_json = {"success": False, "error": str(e)} return Response(json.dumps(response_json), status=500, mimetype='application/json')
def update_migration(): try: migration_data = json.loads(request.data) old_migration = get_migration(json.dumps(migration_data['old'])) new_migration = get_migration(json.dumps(migration_data['new'])) migration_pickler = MigrationPickler() migration_pickler.update(old_migration, new_migration) except Exception as e: response_json = {"success": False, "error": str(e)} return Response(json.dumps(response_json), status=500, mimetype='application/json') response_json = {"success": True, "error": None} return Response(json.dumps(response_json), status=200, mimetype='application/json')
def add_migration(): try: migration_data = str(request.data, 'utf-8') migration = get_migration(migration_data) migration_pickler = MigrationPickler() migration_pickler.create(migration) except Exception as e: response_json = {"success": False, "error": str(e)} return Response(json.dumps(response_json), status=500, mimetype='application/json') response_json = {"success": True, "error": None} return Response(json.dumps(response_json), status=200, mimetype='application/json')
def test_json_dec(self): s = '{"username": "******", "password": "******", "domain": null}' credentials = get_credentials(s) self.assertEqual(credentials.domain, None) s = r'{"mount_point_name": "C:\\", "size": 1024}' mount_point = get_mount_point(s) self.assertEqual(int(mount_point.size), 1024) s = '{"ip": "127.0.0.1", "credentials": {"username": "******", "password": "******", "domain": null},' \ r' "storage": [{"mount_point_name": "C:\\", "size": 1024}]}' workload = get_workload(s) self.assertEqual(workload.ip, "127.0.0.1") self.assertEqual(workload.storage[0].size, 1024) s = '{"cloud_type": "AWS", ' \ '"cloud_credentials": {"username": "******", "password": "******", "domain": null}, ' \ '"target_vm": {"ip": "127.0.0.1", ' \ '"credentials": {"username": "******", "password": "******", "domain": null}, ' \ r'"storage": [{"mount_point_name": "C:\\", "size": 1024}]}}' target = get_migration_target(s) self.assertEqual(target.cloud_type, CloudType.AWS) self.assertEqual(target.target_vm.ip, "127.0.0.1") s = r'{"mount_points": [{"mount_point_name": "C:\\", "size": 1024}], ' \ '"source": {"ip": "127.0.0.1", ' \ '"credentials": {"username": "******", "password": "******", "domain": null}, ' \ r'"storage": [{"mount_point_name": "C:\\", "size": 1024}]}, ' \ '"migration_target": {"cloud_type": "AWS", ' \ '"cloud_credentials": {"username": "******", "password": "******", "domain": null}, ' \ '"target_vm": {"ip": "127.0.0.1", ' \ '"credentials": {"username": "******", "password": "******", "domain": null}, ' \ r'"storage": [{"mount_point_name": "C:\\", "size": 1024}]}}, ' \ '"migration_state": "RUNNING"}' migration = get_migration(s) self.assertEqual(migration.migration_state, MigrationState.RUNNING) self.assertEqual(migration.source.credentials.domain, None)
def get_serializable(self, s: str) -> Migration: return get_migration(s)