+ version_data = self.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":
+ raise DbException(
+ "Wrong database status '{}'".format(
+ version_data.get("status")
+ ),
+ http_code=HTTPStatus.INTERNAL_SERVER_ERROR,
+ )
+ # check version
+ db_version = (
+ None if not version_data else version_data.get("version")
+ )
+ if target_version and target_version != db_version:
+ raise DbException(
+ "Invalid database version {}. Expected {}".format(
+ db_version, target_version
+ )
+ )
+ # get serial
+ if version_data and version_data.get("serial"):
+ self.secret_obtained = True
+ self.set_secret_key(b64decode(version_data["serial"]))
+ self.logger.info(
+ "Connected to database {} version {}".format(
+ config["name"], db_version
+ )
+ )