updated deploy scripts and locations

This commit is contained in:
buenosairesam
2025-12-31 08:21:07 -03:00
parent 9e9e0a5a25
commit fc63e9010c
33 changed files with 160283 additions and 758 deletions

77
artery/room/__init__.py Normal file
View File

@@ -0,0 +1,77 @@
"""
Room - Runtime environment configuration.
A Room defines connection details for a managed environment (hosts, ports, domains, credentials).
Used by Pulse (Vein + Room + Depot) and Desk (Cabinet + Room + Depots).
Room instances are stored in data/rooms.json.
"""
from enum import Enum
from typing import Optional
from pydantic import BaseModel, Field
class RoomStatus(str, Enum):
PENDING = "pending"
PLANNED = "planned"
BUILDING = "building"
DEV = "dev"
LIVE = "live"
READY = "ready"
class RoomConfig(BaseModel):
"""Environment-specific configuration for a room."""
# Network
host: Optional[str] = Field(None, description="Primary host/domain")
port: Optional[int] = Field(None, description="Primary port")
# Paths
config_path: Optional[str] = Field(None, description="Path to room config folder")
deploy_path: Optional[str] = Field(None, description="Deployment target path")
# Docker
network_name: Optional[str] = Field(None, description="Docker network name")
deployment_name: Optional[str] = Field(None, description="Container name prefix")
# Database (when room has DB access)
db_host: Optional[str] = None
db_port: Optional[int] = Field(None, ge=1, le=65535)
db_name: Optional[str] = None
db_user: Optional[str] = None
# Note: db_password should come from env vars, not stored in config
class Room(BaseModel):
"""Runtime environment configuration."""
name: str = Field(..., description="Unique identifier")
slug: str = Field(..., description="URL-friendly identifier")
title: str = Field(..., description="Display title for UI")
status: RoomStatus = Field(RoomStatus.PENDING, description="Current status")
# Optional extended config
config: Optional[RoomConfig] = Field(None, description="Environment configuration")
# Legacy field for backwards compatibility
config_path: Optional[str] = Field(None, description="Path to room config folder")
class Config:
use_enum_values = True
def load_rooms(data_path: str = "data/rooms.json") -> list[Room]:
"""Load rooms from data file."""
import json
from pathlib import Path
path = Path(data_path)
if not path.exists():
return []
with open(path) as f:
data = json.load(f)
return [Room(**item) for item in data.get("items", [])]