blob: 4cf0aa22753a2607d72b7ca8eefac1af820368ca [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import datetime
from pyvermeer.structure.base_data import BaseResponse
from pyvermeer.utils.vermeer_datetime import parse_vermeer_time
class TaskWorker:
"""task worker info"""
def __init__(self, dic):
"""init"""
self.__name = dic.get("name", None)
self.__status = dic.get("status", None)
@property
def name(self) -> str:
"""worker name"""
return self.__name
@property
def status(self) -> str:
"""worker status"""
return self.__status
def to_dict(self):
"""to dict"""
return {"name": self.name, "status": self.status}
class TaskInfo:
"""task info"""
def __init__(self, dic):
"""init"""
self.__id = dic.get("id", 0)
self.__status = dic.get("status", "")
self.__state = dic.get("state", "")
self.__create_user = dic.get("create_user", "")
self.__create_type = dic.get("create_type", "")
self.__create_time = parse_vermeer_time(dic.get("create_time", ""))
self.__start_time = parse_vermeer_time(dic.get("start_time", ""))
self.__update_time = parse_vermeer_time(dic.get("update_time", ""))
self.__graph_name = dic.get("graph_name", "")
self.__space_name = dic.get("space_name", "")
self.__type = dic.get("type", "")
self.__params = dic.get("params", {})
self.__workers = [TaskWorker(w) for w in dic.get("workers", [])]
@property
def id(self) -> int:
"""task id"""
return self.__id
@property
def state(self) -> str:
"""task state"""
return self.__state
@property
def create_user(self) -> str:
"""task creator"""
return self.__create_user
@property
def create_type(self) -> str:
"""task create type"""
return self.__create_type
@property
def create_time(self) -> datetime:
"""task create time"""
return self.__create_time
@property
def start_time(self) -> datetime:
"""task start time"""
return self.__start_time
@property
def update_time(self) -> datetime:
"""task update time"""
return self.__update_time
@property
def graph_name(self) -> str:
"""task graph"""
return self.__graph_name
@property
def space_name(self) -> str:
"""task space"""
return self.__space_name
@property
def type(self) -> str:
"""task type"""
return self.__type
@property
def params(self) -> dict:
"""task params"""
return self.__params
@property
def workers(self) -> list[TaskWorker]:
"""task workers"""
return self.__workers
def to_dict(self) -> dict:
"""to dict"""
return {
"id": self.__id,
"status": self.__status,
"state": self.__state,
"create_user": self.__create_user,
"create_type": self.__create_type,
"create_time": self.__create_time.strftime("%Y-%m-%d %H:%M:%S") if self.__start_time else "",
"start_time": self.__start_time.strftime("%Y-%m-%d %H:%M:%S") if self.__start_time else "",
"update_time": self.__update_time.strftime("%Y-%m-%d %H:%M:%S") if self.__update_time else "",
"graph_name": self.__graph_name,
"space_name": self.__space_name,
"type": self.__type,
"params": self.__params,
"workers": [w.to_dict() for w in self.__workers],
}
class TaskCreateRequest:
"""task create request"""
def __init__(self, task_type, graph_name, params):
"""init"""
self.task_type = task_type
self.graph_name = graph_name
self.params = params
def to_dict(self) -> dict:
"""to dict"""
return {"task_type": self.task_type, "graph": self.graph_name, "params": self.params}
class TaskCreateResponse(BaseResponse):
"""task create response"""
def __init__(self, dic):
"""init"""
super().__init__(dic)
self.__task = TaskInfo(dic.get("task", {}))
@property
def task(self) -> TaskInfo:
"""task info"""
return self.__task
def to_dict(self) -> dict:
"""to dict"""
return {
"errcode": self.errcode,
"message": self.message,
"task": self.task.to_dict(),
}
class TasksResponse(BaseResponse):
"""tasks response"""
def __init__(self, dic):
"""init"""
super().__init__(dic)
self.__tasks = [TaskInfo(t) for t in dic.get("tasks", [])]
@property
def tasks(self) -> list[TaskInfo]:
"""task infos"""
return self.__tasks
def to_dict(self) -> dict:
"""to dict"""
return {"errcode": self.errcode, "message": self.message, "tasks": [t.to_dict() for t in self.tasks]}
class TaskResponse(BaseResponse):
"""task response"""
def __init__(self, dic):
"""init"""
super().__init__(dic)
self.__task = TaskInfo(dic.get("task", {}))
@property
def task(self) -> TaskInfo:
"""task info"""
return self.__task
def to_dict(self) -> dict:
"""to dict"""
return {
"errcode": self.errcode,
"message": self.message,
"task": self.task.to_dict(),
}