Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions challenge_api/extensions/k8s/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ def create(self, data:ChallengeInfo, namespace="challenge") -> int:

if not userchallenge_repo.is_exist(challenge_info):
userchallenge = userchallenge_repo.create(challenge_info)
# Create initial status with Pending state
userchallenge_status_repo.create(userchallenge_idx=userchallenge.idx, port=0)
else:
userchallenge = userchallenge_repo.get_by_user_challenge_name(challenge_info.name)
recent = userchallenge_status_repo.get_recent_status(userchallenge.idx)
Expand Down
21 changes: 15 additions & 6 deletions challenge_api/extensions/kafka/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,24 @@ def handle_message(message: Dict[str, Any]):

if userchallenge_repo.is_exist(challenge_info):
userchallenge = userchallenge_repo.get_by_user_challenge_name(challenge_name)
if not userchallenge:
logger.warning(f"Challenge {challenge_name} exists but could not be retrieved")
return

recent_status = status_repo.get_recent_status(userchallenge.idx)
if not recent_status:
logger.warning(f"No status found for challenge {challenge_name}, creating new status")
recent_status = status_repo.create(userchallenge_idx=userchallenge.idx, port=0)

if recent_status is None or new_status == 'Pending':
# 상태가 없으면 새로 생성
recent_status = status_repo.create(userchallenge_idx=userchallenge.idx, port=int(endpoint) if endpoint else 0)

elif new_status == 'Running' and endpoint:
try:
port = int(endpoint) if endpoint else 0
except (ValueError, TypeError):
logger.warning(f"Invalid endpoint value: {endpoint}, using 0 as default")
port = 0

if new_status == 'Running' and endpoint:
# Running 상태이고 endpoint가 있으면 포트 업데이트
status_repo.update_port(recent_status.idx, int(endpoint))
status_repo.update_port(recent_status.idx, port)

status_repo.update_status(recent_status.idx, new_status)
logger.info(f"Updated status for challenge {challenge_name} to {new_status} with endpoint {endpoint}")
Expand Down