session, _id, indata, not_send_msg=None
)
- def update_appinstance(self, session, topic, _id, item, indata):
- if topic not in self.map_topic:
- raise EngineException(
- "Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR
- )
- return self.map_topic[topic].update_appinstance(session, _id, item, indata)
-
def get_item_list(self, session, topic, filter_q=None, api_req=False):
"""
Get a list of items
attach_dettach_profile_schema,
ksu_schema,
app_instance_schema,
+ app_instance_edit_schema,
+ app_instance_update_schema,
oka_schema,
node_create_new_schema,
node_edit_schema,
okapkg_topic = "okas"
topic_msg = "appinstance"
schema_new = app_instance_schema
- schema_edit = app_instance_schema
+ schema_edit = app_instance_edit_schema
def __init__(self, db, fs, msg, auth):
super().__init__(db, fs, msg, auth)
except ValidationError as e:
raise EngineException(e, HTTPStatus.UNPROCESSABLE_ENTITY)
- def update_appinstance(self, session, _id, item, indata):
+ def update_item(self, session, _id, item, indata):
if not self.multiproject:
filter_db = {}
else:
filter_db = self._get_project_filter(session)
# To allow project&user addressing by name AS WELL AS _id
filter_db[BaseTopic.id_field(self.topic, _id)] = _id
- validate_input(indata, app_instance_schema)
+ self.logger.info(f"Item: {item}")
+ self.logger.info(f"Indata before validation: {indata}")
+ validate_input(indata, app_instance_update_schema)
+ self.logger.info(f"Indata after validation: {indata}")
data = self.db.get_one(self.topic, filter_db)
operation_params = {}
data["operatingState"] = "PROCESSING"
data["resourceState"] = "IN_PROGRESS"
operation_params = indata
+ self.logger.info(f"Operation params: {operation_params}")
op_id = self.format_on_operation(
data,
- item,
+ "update",
operation_params,
)
self.db.set_one(self.topic, {"_id": _id}, data)
- self._send_msg(item, {"appinstance": _id, "operation_id": op_id})
+ self._send_msg("update", {"appinstance": _id, "operation_id": op_id})
return op_id
def delete(self, session, _id, not_send_msg=None):
"<ID>": {
"METHODS": ("GET", "PATCH", "DELETE"),
"ROLE_PERMISSION": "appinstance:id:",
- },
- "update": {
- "METHODS": ("POST",),
- "ROLE_PERMISSION": "appinstance:",
+ "update": {
+ "METHODS": ("POST",),
+ "ROLE_PERMISSION": "appinstance:id:update:",
+ },
},
},
}
)
outdata = {"op_id": op_id}
elif topic == "appinstances" and item == "update":
- op_id = self.engine.update_appinstance(
- engine_session, engine_topic, _id, indata, kwargs
+ op_id = self.engine.update_item(
+ engine_session, engine_topic, _id, item, indata
)
outdata = {"op_id": op_id}
elif topic == "clusters" and item in ("upgrade", "scale"):
"required": ["name", "profile", "profile_type"],
}
+app_instance_edit_schema = {
+ "title": "app instance edit schema",
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "name": name_schema,
+ "description": string_schema,
+ },
+ "additionalProperties": False,
+}
+
+app_instance_update_schema = {
+ "title": "app instance update schema",
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "model": object_schema,
+ "params": object_schema,
+ "secret_params": object_schema,
+ },
+ "additionalProperties": True,
+}
+
class ValidationError(Exception):
def __init__(self, message, http_code=HTTPStatus.UNPROCESSABLE_ENTITY):