63 lines
2.4 KiB
Python
63 lines
2.4 KiB
Python
"""
|
|
Dell iDRAC 서버 관리 모델
|
|
backend/models/idrac_server.py
|
|
"""
|
|
|
|
from backend.models.user import db
|
|
from datetime import datetime
|
|
from sqlalchemy import Column, Integer, String, DateTime, Boolean
|
|
|
|
|
|
class IdracServer(db.Model):
|
|
"""iDRAC 서버 정보 모델"""
|
|
__tablename__ = 'idrac_servers'
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String(100), nullable=False) # 서버명
|
|
ip_address = Column(String(50), nullable=False, unique=True) # iDRAC IP
|
|
username = Column(String(50), default='root') # iDRAC 사용자명
|
|
password = Column(String(200), nullable=False) # 비밀번호 (암호화 권장)
|
|
|
|
# 분류 정보
|
|
group_name = Column(String(100)) # 그룹명 (고객사, 프로젝트명)
|
|
location = Column(String(100)) # 위치
|
|
model = Column(String(100)) # 서버 모델
|
|
|
|
# 상태 정보
|
|
status = Column(String(20), default='registered') # registered, online, offline, updating
|
|
last_connected = Column(DateTime) # 마지막 연결 시간
|
|
last_updated = Column(DateTime) # 마지막 업데이트 시간
|
|
|
|
# 펌웨어 정보
|
|
current_bios = Column(String(50)) # 현재 BIOS 버전
|
|
target_bios = Column(String(50)) # 목표 BIOS 버전
|
|
|
|
# 메타 정보
|
|
notes = Column(String(500)) # 비고
|
|
is_active = Column(Boolean, default=True) # 활성화 여부
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
|
|
def to_dict(self):
|
|
"""딕셔너리로 변환"""
|
|
return {
|
|
'id': self.id,
|
|
'name': self.name,
|
|
'ip_address': self.ip_address,
|
|
'username': self.username,
|
|
'group_name': self.group_name,
|
|
'location': self.location,
|
|
'model': self.model,
|
|
'status': self.status,
|
|
'last_connected': self.last_connected.isoformat() if self.last_connected else None,
|
|
'last_updated': self.last_updated.isoformat() if self.last_updated else None,
|
|
'current_bios': self.current_bios,
|
|
'target_bios': self.target_bios,
|
|
'notes': self.notes,
|
|
'is_active': self.is_active,
|
|
'created_at': self.created_at.isoformat() if self.created_at else None
|
|
}
|
|
|
|
def __repr__(self):
|
|
return f'<IdracServer {self.name} ({self.ip_address})>'
|