- self.db.create("version", version_data)
- elif version["_id"] != target_version:
- # TODO implement migration process
- raise EngineException("Wrong database version '{}'. Expected '{}'".format(
- version["_id"], target_version), HTTPStatus.INTERNAL_SERVER_ERROR)
- elif version["status"] != 'ENABLED':
+ self.db.create("admin", version_data)
+ self.db.set_secret_key(serial)
+ current_version = "1.0"
+
+ if current_version in ("1.0", "1.1") and target_version_int >= self.map_target_version_to_int["1.2"]:
+ table = "roles_operations" if self.config['authentication']['backend'] == "keystone" else "roles"
+ self.db.del_list(table)
+
+ version_data = {
+ "_id": "version",
+ "version_int": 1002,
+ "version": "1.2",
+ "date": "2019-06-11",
+ "description": "set new format for roles_operations"
+ }
+
+ self.db.set_one("admin", {"_id": "version"}, version_data)
+ current_version = "1.2"
+ # TODO add future migrations here
+
+ def init_db(self, target_version='1.0'):
+ """
+ Init database if empty. If not empty it checks that database version and migrates if needed
+ If empty, it creates a new user admin/admin at 'users' and a new entry at 'version'
+ :param target_version: check desired database version. Migrate to it if possible or raises exception
+ :return: None if ok, exception if error or if the version is different.
+ """
+
+ version_data = self.db.get_one("admin", {"_id": "version"}, fail_on_empty=False, fail_on_more=True)
+ # check database status is ok
+ if version_data and version_data.get("status") != 'ENABLED':