Beispiel #1
0
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')
Beispiel #2
0
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')
Beispiel #3
0
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')
Beispiel #4
0
    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)
Beispiel #5
0
 def get_serializable(self, s: str) -> Migration:
     return get_migration(s)