WIP: dev #6
| 
						 | 
				
			
			@ -7,7 +7,6 @@ import rtoml
 | 
			
		|||
from joj3_config_generator.models import joj1, repo, result, task
 | 
			
		||||
from joj3_config_generator.processers.repo import (  # get_teapotcheck_config,
 | 
			
		||||
    get_healthcheck_config,
 | 
			
		||||
    get_teapot_config,
 | 
			
		||||
    get_teapot_stage,
 | 
			
		||||
)
 | 
			
		||||
from joj3_config_generator.processers.task import (
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +38,6 @@ def convert(repo_conf: repo.Config, task_conf: task.Config) -> result.Config:
 | 
			
		|||
            sandbox_token=repo_conf.sandbox_token,
 | 
			
		||||
            poststages=[get_teapot_stage(repo_conf)],
 | 
			
		||||
        ),
 | 
			
		||||
        teapot=get_teapot_config(repo_conf, task_conf),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # Construct healthcheck stage
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -121,29 +121,10 @@ class Stage(BaseModel):
 | 
			
		|||
    poststages: List[StageDetail]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Teapot(BaseModel):
 | 
			
		||||
    log_path: str = Field(
 | 
			
		||||
        "/home/tt/.cache/joint-teapot-debug.log", serialization_alias="logPath"
 | 
			
		||||
    )
 | 
			
		||||
    scoreboard_path: str = Field("scoreboard.csv", serialization_alias="scoreboardPath")
 | 
			
		||||
    failed_table_path: str = Field(
 | 
			
		||||
        "failed-table.md", serialization_alias="failedTablePath"
 | 
			
		||||
    )
 | 
			
		||||
    grading_repo_name: str = Field("", serialization_alias="gradingRepoName")
 | 
			
		||||
    skip_issue: bool = Field(False, serialization_alias="skipIssue")
 | 
			
		||||
    skip_scoreboard: bool = Field(False, serialization_alias="skipScoreboard")
 | 
			
		||||
    skip_failed_table: bool = Field(False, serialization_alias="skipFailedTable")
 | 
			
		||||
    max_total_score: int = Field(100, serialization_alias="maxTotalScore")
 | 
			
		||||
    groups: List[Dict[str, Any]] = Field(
 | 
			
		||||
        [{"name": "", "maxCount": 100, "timePeriodHour": 24}]
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Config(BaseModel):
 | 
			
		||||
    name: str = ""
 | 
			
		||||
    log_path: str = Field("", serialization_alias="logPath")
 | 
			
		||||
    expire_unix_timestamp: int = Field(-1, serialization_alias="expireUnixTimestamp")
 | 
			
		||||
    actor_csv_path: str = Field("", serialization_alias="actorpostStagesCsvPath")
 | 
			
		||||
    actor_csv_path: str = Field("", serialization_alias="actorCsvPath")
 | 
			
		||||
    max_total_score: int = Field(100, serialization_alias="maxTotalScore")
 | 
			
		||||
    stage: Stage
 | 
			
		||||
    teapot: Teapot  # FIXME: remove this
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ import shlex
 | 
			
		|||
import socket
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
from joj3_config_generator.models import repo, result, task
 | 
			
		||||
from joj3_config_generator.models import repo, result
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_grading_repo_name() -> str:
 | 
			
		||||
| 
						 | 
				
			
			@ -13,44 +13,6 @@ def get_grading_repo_name() -> str:
 | 
			
		|||
    return f"{host_name.split('-')[0]}-joj"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_teapot_config(repo_conf: repo.Config, task_conf: task.Config) -> result.Teapot:
 | 
			
		||||
    groups_config = []
 | 
			
		||||
    for group_name in repo_conf.groups.name:
 | 
			
		||||
        groups_config.append(
 | 
			
		||||
            {
 | 
			
		||||
                "name": group_name,
 | 
			
		||||
                "maxCount": 1000,
 | 
			
		||||
                "timePeriodHour": 24,
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    for idx, max_count in enumerate(repo_conf.groups.max_count):
 | 
			
		||||
        groups_config[idx]["maxCount"] = max_count
 | 
			
		||||
 | 
			
		||||
    for idx, time_period_hour in enumerate(repo_conf.groups.time_period_hour):
 | 
			
		||||
        groups_config[idx]["timePeriodHour"] = time_period_hour
 | 
			
		||||
 | 
			
		||||
    teapot = result.Teapot(
 | 
			
		||||
        # TODO: fix the log path
 | 
			
		||||
        log_path=f"/home/tt/.cache/joj3/{task_conf.task.type_}-joint-teapot-debug.log",
 | 
			
		||||
        # FIXME: may need to fix the path below
 | 
			
		||||
        scoreboard_path=(
 | 
			
		||||
            f"{task_conf.task.type_.split("/")[0]}/{task_conf.task.type_.split("/")[1]}-scoreboard.csv"
 | 
			
		||||
            if task_conf.task.type_ is not None
 | 
			
		||||
            else "scoreboard.csv"
 | 
			
		||||
        ),
 | 
			
		||||
        failed_table_path=(
 | 
			
		||||
            f"{task_conf.task.type_.split("/")[0]}/{task_conf.task.type_.split("/")[1]}-failed-table.md"
 | 
			
		||||
            if task_conf.task.type_ is not None
 | 
			
		||||
            else "failed-table.md"
 | 
			
		||||
        ),
 | 
			
		||||
        grading_repo_name=get_grading_repo_name(),
 | 
			
		||||
        max_total_score=repo_conf.max_total_score,
 | 
			
		||||
        groups=groups_config,
 | 
			
		||||
    )
 | 
			
		||||
    return teapot
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_teapot_stage(repo_conf: repo.Config) -> result.StageDetail:
 | 
			
		||||
    args_ = ""
 | 
			
		||||
    args_ = (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ def get_conf_stage(
 | 
			
		|||
) -> result.StageDetail:
 | 
			
		||||
    conf_stage = result.StageDetail(
 | 
			
		||||
        name=task_stage.name if task_stage.name is not None else "",
 | 
			
		||||
        # FIXME: to be deterined the way
 | 
			
		||||
        # FIXME: to be deterined the way
 | 
			
		||||
        # group=(
 | 
			
		||||
        #     re.search(r'\[([^\[\]]+)\]', task_stage.name).group(1)
 | 
			
		||||
        #     if (task_stage.name is not None and re.search(r'\[([^\[\]]+)\]', task_stage.name))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
    "name": "hw7 ex2",
 | 
			
		||||
    "logPath": "/home/tt/.cache/joj3/homework/h7/e2.log",
 | 
			
		||||
    "expireUnixTimestamp": 1735574399,
 | 
			
		||||
    "actorpostStagesCsvPath": "/home/tt/.config/joj/students.csv",
 | 
			
		||||
    "actorCsvPath": "/home/tt/.config/joj/students.csv",
 | 
			
		||||
    "maxTotalScore": 100,
 | 
			
		||||
    "stage": {
 | 
			
		||||
        "sandboxExecServer": "172.17.0.1:5051",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user