update
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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})>'
|
||||
@@ -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')
|
||||
}
|
||||
Reference in New Issue
Block a user