v0.0.25 | KVM 서버 관리 API 추가
All checks were successful
Build And Test / build-and-push (push) Successful in 2m7s

- KVMServer 모델 추가 (멀티 서버 지원)
- 서버별 SSH 키 암호화 저장
- msa-django-libvirt 연동용 SSH 정보 조회 API

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-16 11:14:56 +09:00
parent 85f5688a0b
commit 2c050829ff
6 changed files with 494 additions and 4 deletions

View File

@ -0,0 +1,41 @@
# Generated by Django 4.2.14 on 2026-01-15 14:49
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('users', '0011_add_dns_appkey_to_nhncloudproject'),
]
operations = [
migrations.CreateModel(
name='KVMServer',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='서버 별칭')),
('host', models.CharField(max_length=255, verbose_name='호스트 (IP 또는 도메인)')),
('port', models.IntegerField(default=22, verbose_name='SSH 포트')),
('username', models.CharField(max_length=100, verbose_name='SSH 사용자명')),
('encrypted_private_key_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='SSH 키 이름')),
('encrypted_private_key', models.BinaryField(blank=True, null=True, verbose_name='SSH 개인키 (암호화)')),
('libvirt_uri', models.CharField(blank=True, help_text='예: qemu+ssh://user@host/system', max_length=255, null=True, verbose_name='Libvirt URI')),
('description', models.TextField(blank=True, null=True, verbose_name='설명')),
('tags', models.CharField(blank=True, help_text='쉼표로 구분된 태그 목록', max_length=500, null=True, verbose_name='태그')),
('is_active', models.BooleanField(default=True, verbose_name='활성화 상태')),
('last_used_at', models.DateTimeField(blank=True, null=True, verbose_name='마지막 사용 시각')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='kvm_servers', to=settings.AUTH_USER_MODEL, verbose_name='사용자')),
],
options={
'verbose_name': 'KVM 서버',
'verbose_name_plural': 'KVM 서버',
'ordering': ['-is_active', '-created_at'],
'unique_together': {('user', 'host', 'port')},
},
),
]