This commit is contained in:
unknown
2026-03-21 07:26:38 +09:00
parent 166d94fca4
commit 40150cd66d
406 changed files with 34179 additions and 55658 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+86
View File
@@ -0,0 +1,86 @@
"""
BIOS Baseline 모델
backend/models/bios_baseline.py
Redfish로 가져온 표준 BIOS 설정을 저장하고 관리하는 모델
"""
from datetime import datetime
from backend.models.user import db
class BiosBaseline(db.Model):
"""BIOS 설정 기준값 모델 - Redfish로 가져온 표준 설정"""
__tablename__ = 'bios_baselines'
id = db.Column(db.Integer, primary_key=True)
# 기본 정보
name = db.Column(db.String(100), nullable=False, unique=True) # 예: "R6615_GPU_Standard_2024"
server_model = db.Column(db.String(100), nullable=False) # 예: "PowerEdge R6615"
server_type = db.Column(db.String(50)) # 예: "GPU Server", "Storage Server"
description = db.Column(db.String(500)) # 설명
# Redfish로 가져온 원본 데이터
bios_data = db.Column(db.JSON, nullable=False) # BIOS 설정값 전체 (JSON)
bios_metadata = db.Column(db.JSON, nullable=True) # BIOS 메타데이터 (AttributeName -> DisplayName 매핑)
idrac_data = db.Column(db.JSON, nullable=True) # iDRAC 설정값 (JSON)
idrac_metadata = db.Column(db.JSON, nullable=True) # iDRAC 메타데이터 (DisplayName 매핑)
raid_data = db.Column(db.JSON, nullable=True) # RAID/Storage 구성 (JSON)
nic_data = db.Column(db.JSON, nullable=True) # NIC 설정 (Adapters)
boot_data = db.Column(db.JSON, nullable=True) # 부팅 설정 (Order)
firmware_data = db.Column(db.JSON, nullable=True) # 펌웨어 목록
# 메타데이터
source_ip = db.Column(db.String(50)) # 이 baseline을 생성한 서버 IP
source_service_tag = db.Column(db.String(50)) # 원본 서버 Service Tag
bios_version = db.Column(db.String(50)) # BIOS 버전
total_settings = db.Column(db.Integer) # 총 설정 항목 수
# 복사 관계 (어떤 baseline에서 복사되었는지)
copied_from_id = db.Column(db.Integer, db.ForeignKey('bios_baselines.id'), nullable=True)
# 상태 및 관리
is_active = db.Column(db.Boolean, default=True)
created_by = db.Column(db.String(100)) # 생성자
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# 관계 설정
copied_from = db.relationship('BiosBaseline', remote_side=[id], backref='copies')
def to_dict(self, include_data=False):
"""
딕셔너리로 변환
include_data: True면 bios_data, idrac_data, raid_data 등 상세 데이터 포함 (상세 조회 시)
"""
data = {
'id': self.id,
'name': self.name,
'server_model': self.server_model,
'server_type': self.server_type,
'description': self.description,
'source_ip': self.source_ip,
'source_service_tag': self.source_service_tag,
'bios_version': self.bios_version,
'total_settings': self.total_settings,
'copied_from_id': self.copied_from_id,
'is_active': self.is_active,
'created_by': self.created_by,
'created_at': self.created_at.isoformat() if self.created_at else None,
'updated_at': self.updated_at.isoformat() if self.updated_at else None
}
if include_data:
data['bios_data'] = self.bios_data
data['bios_metadata'] = self.bios_metadata
data['idrac_data'] = self.idrac_data
data['idrac_metadata'] = self.idrac_metadata
data['raid_data'] = self.raid_data
data['nic_data'] = self.nic_data
data['boot_data'] = self.boot_data
data['firmware_data'] = self.firmware_data
return data
def __repr__(self):
return f'<BiosBaseline {self.name} ({self.server_model})>'
+36
View File
@@ -0,0 +1,36 @@
from datetime import datetime
from backend.models.user import db
class ServerConfigSnapshot(db.Model):
"""
서버 설정 스냅샷 (BIOS, iDRAC, System 등)
"""
__tablename__ = 'server_config_snapshots'
id = db.Column(db.Integer, primary_key=True)
server_id = db.Column(db.Integer, db.ForeignKey('idrac_servers.id'), nullable=False)
# 설정 유형: bios, idrac, system
config_type = db.Column(db.String(20), nullable=False)
# JSON 데이터 저장
data = db.Column(db.JSON, nullable=True)
# 데이터 해시 (변경 감지용 - Optional)
hash_value = db.Column(db.String(64), nullable=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# 관계 설정 (IdracServer와의 관계는 IdracServer 모델에서 backref로 설정될 수도 있음)
server = db.relationship('IdracServer', backref=db.backref('config_snapshots', lazy=True))
def to_dict(self):
return {
'id': self.id,
'server_id': self.server_id,
'server_name': self.server.name if self.server else 'Unknown',
'config_type': self.config_type,
'data': self.data,
'updated_at': self.updated_at.strftime('%Y-%m-%d %H:%M:%S')
}