mirror of https://github.com/jumpserver/jumpserver
perf: 其他 asset model
parent
0a2b2ad127
commit
770d2508d7
|
@ -0,0 +1,47 @@
|
|||
# Generated by Django 3.1.14 on 2022-04-26 07:54
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0097_auto_20220407_1726'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Database',
|
||||
fields=[
|
||||
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
||||
('db_name', models.CharField(blank=True, max_length=1024, verbose_name='Database')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Database',
|
||||
},
|
||||
bases=('assets.asset',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Network',
|
||||
fields=[
|
||||
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('assets.asset',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RemoteApp',
|
||||
fields=[
|
||||
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
||||
('app_path', models.CharField(max_length=1024, verbose_name='App path')),
|
||||
('attrs', models.JSONField(default=dict, verbose_name='Attrs')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('assets.asset',),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,75 @@
|
|||
# Generated by Django 3.1.14 on 2022-04-26 07:58
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.utils import IntegrityError
|
||||
|
||||
|
||||
def create_app_platform(apps, *args):
|
||||
platform_model = apps.get_model('assets', 'Platform')
|
||||
apps = [
|
||||
# DB
|
||||
{'name': 'MySQL', 'category': 'database', 'type': 'mysql'},
|
||||
{'name': 'MariaDB', 'category': 'database', 'type': 'mariadb'},
|
||||
{'name': 'PostgreSQL', 'category': 'database', 'type': 'postgresql'},
|
||||
{'name': 'Oracle', 'category': 'database', 'type': 'oracle'},
|
||||
{'name': 'SQLServer', 'category': 'database', 'type': 'sqlserver'},
|
||||
{'name': 'MongoDB', 'category': 'database', 'type': 'mongodb'},
|
||||
{'name': 'Redis', 'category': 'database', 'type': 'redis'},
|
||||
{'name': 'RemoteApp', 'category': 'remote_app', 'type': 'remote_app'},
|
||||
{'name': 'Kubernetes', 'category': 'cloud', 'type': 'kubernetes'},
|
||||
]
|
||||
|
||||
for app in apps:
|
||||
app['internal'] = True
|
||||
platform_model.objects.update_or_create(defaults=app, name=app['name'])
|
||||
|
||||
|
||||
def migrate_database_to_asset(apps, *args):
|
||||
app_model = apps.get_model('applications', 'Application')
|
||||
db_model = apps.get_model('assets', 'Database')
|
||||
platform_model = apps.get_model('assets', 'Platform')
|
||||
|
||||
applications = app_model.objects.filter(category='db')
|
||||
platforms = platform_model.objects.all()
|
||||
platforms_map = {p.type: p for p in platforms}
|
||||
|
||||
dbs = []
|
||||
for app in applications:
|
||||
attrs = {'host': '', 'port': 0, 'database': ''}
|
||||
_attrs = app.attrs or {}
|
||||
attrs.update(_attrs)
|
||||
print("Create: ", app.name)
|
||||
db = db_model(
|
||||
id=app.id, hostname=app.name, ip=attrs['host'],
|
||||
protocols='{}/{}'.format(app.type, attrs['port']),
|
||||
category='database', type=app.type,
|
||||
db_name=attrs['database'] or '',
|
||||
platform=platforms_map[app.type],
|
||||
org_id=app.org_id
|
||||
)
|
||||
for i in range(3):
|
||||
try:
|
||||
db.save()
|
||||
break
|
||||
except IntegrityError:
|
||||
db.name = 'DB-' + db.name
|
||||
|
||||
|
||||
def migrate_remote_app_to_asset(apps, *args):
|
||||
pass
|
||||
|
||||
|
||||
def migrate_cloud_to_asset(apps, *args):
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('assets', '0098_auto_20220426_1550'),
|
||||
('applications', '0020_auto_20220316_2028')
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(create_app_platform),
|
||||
migrations.RunPython(migrate_database_to_asset),
|
||||
]
|
Loading…
Reference in New Issue