Initial project upload

This commit is contained in:
Kim.KANGHEE
2026-05-05 17:14:11 +09:00
commit 122b73d254
282 changed files with 72135 additions and 0 deletions
+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})>'