mirror of https://github.com/jumpserver/jumpserver
perf: 修改 models
parent
1d1b252e58
commit
a86d5c1456
|
@ -9,19 +9,16 @@ def migrate_to_host(apps, schema_editor):
|
||||||
host_model = apps.get_model("assets", 'Host')
|
host_model = apps.get_model("assets", 'Host')
|
||||||
db_alias = schema_editor.connection.alias
|
db_alias = schema_editor.connection.alias
|
||||||
|
|
||||||
created = 0
|
count = 0
|
||||||
batch_size = 1000
|
batch_size = 1000
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
start = created
|
assets = asset_model.objects.using(db_alias).all()[count:count+batch_size]
|
||||||
end = created + batch_size
|
|
||||||
assets = asset_model.objects.using(db_alias).all()[start:end]
|
|
||||||
if not assets:
|
if not assets:
|
||||||
break
|
break
|
||||||
|
count += len(assets)
|
||||||
hosts = [host_model(asset_ptr=asset) for asset in assets]
|
hosts = [host_model(asset_ptr=asset) for asset in assets]
|
||||||
host_model.objects.using(db_alias).bulk_create(hosts, ignore_conflicts=True)
|
host_model.objects.using(db_alias).bulk_create(hosts, ignore_conflicts=True)
|
||||||
created += len(hosts)
|
|
||||||
|
|
||||||
|
|
||||||
def migrate_hardware_info(apps, *args):
|
def migrate_hardware_info(apps, *args):
|
||||||
|
@ -36,15 +33,14 @@ def migrate_hardware_info(apps, *args):
|
||||||
]
|
]
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
start = count
|
assets = asset_model.objects.all()[count:count+batch_size]
|
||||||
end = count + batch_size
|
|
||||||
assets = asset_model.objects.all()[start:end]
|
|
||||||
if not assets:
|
if not assets:
|
||||||
break
|
break
|
||||||
|
count += len(assets)
|
||||||
|
|
||||||
updated = []
|
updated = []
|
||||||
for asset in assets:
|
for asset in assets:
|
||||||
info = {getattr(asset, field) for field in hardware_fields if getattr(asset, field)}
|
info = {field: getattr(asset, field) for field in hardware_fields if getattr(asset, field)}
|
||||||
if not info:
|
if not info:
|
||||||
continue
|
continue
|
||||||
asset.info = info
|
asset.info = info
|
||||||
|
|
|
@ -39,7 +39,6 @@ class Migration(migrations.Migration):
|
||||||
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
|
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
|
||||||
('asset', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='assets.asset', verbose_name='Asset')),
|
('asset', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='assets.asset', verbose_name='Asset')),
|
||||||
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
||||||
('su_from', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='assets.account', verbose_name='Su from')),
|
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'historical Account',
|
'verbose_name': 'historical Account',
|
||||||
|
@ -67,7 +66,6 @@ class Migration(migrations.Migration):
|
||||||
('privileged', models.BooleanField(default=False, verbose_name='Privileged')),
|
('privileged', models.BooleanField(default=False, verbose_name='Privileged')),
|
||||||
('version', models.IntegerField(default=0, verbose_name='Version')),
|
('version', models.IntegerField(default=0, verbose_name='Version')),
|
||||||
('asset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='accounts', to='assets.asset', verbose_name='Asset')),
|
('asset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='accounts', to='assets.asset', verbose_name='Asset')),
|
||||||
('su_from', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='su_to', to='assets.account', verbose_name='Su from')),
|
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Account',
|
'verbose_name': 'Account',
|
||||||
|
@ -75,4 +73,14 @@ class Migration(migrations.Migration):
|
||||||
'unique_together': {('username', 'asset'), ('name', 'asset')},
|
'unique_together': {('username', 'asset'), ('name', 'asset')},
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='account',
|
||||||
|
name='su_from',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='su_to', to='assets.account', verbose_name='Su from'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='historicalaccount',
|
||||||
|
name='su_from',
|
||||||
|
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='assets.account', verbose_name='Su from'),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -36,9 +36,20 @@ def update_internal_platforms(platform_model):
|
||||||
'change_password_method': 'change_password_aix',
|
'change_password_method': 'change_password_aix',
|
||||||
},
|
},
|
||||||
{'name': 'Windows', 'category': 'host', 'type': 'windows'},
|
{'name': 'Windows', 'category': 'host', 'type': 'windows'},
|
||||||
{'name': 'Windows-TLS', 'category': 'host', 'type': 'windows'},
|
{
|
||||||
{'name': 'Windows-RDP', 'category': 'host', 'type': 'windows'},
|
'name': 'Windows-TLS', 'category': 'host', 'type': 'windows',
|
||||||
|
'protocols': [
|
||||||
|
{'name': 'rdp', 'port': 3389, 'setting': {'security': 'tls'}},
|
||||||
|
{'name': 'ssh', 'port': 22},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'Windows-RDP', 'category': 'host', 'type': 'windows',
|
||||||
|
'protocols': [
|
||||||
|
{'name': 'rdp', 'port': 3389, 'setting': {'security': 'rdp'}},
|
||||||
|
{'name': 'ssh', 'port': 22},
|
||||||
|
]
|
||||||
|
},
|
||||||
# 数据库
|
# 数据库
|
||||||
{'name': 'MySQL', 'category': 'database', 'type': 'mysql'},
|
{'name': 'MySQL', 'category': 'database', 'type': 'mysql'},
|
||||||
{'name': 'PostgreSQL', 'category': 'database', 'type': 'postgresql'},
|
{'name': 'PostgreSQL', 'category': 'database', 'type': 'postgresql'},
|
||||||
|
@ -48,10 +59,10 @@ def update_internal_platforms(platform_model):
|
||||||
{'name': 'Redis', 'category': 'database', 'type': 'redis'},
|
{'name': 'Redis', 'category': 'database', 'type': 'redis'},
|
||||||
|
|
||||||
# 网络设备
|
# 网络设备
|
||||||
{'name': 'Generic', 'category': 'networking', 'type': 'general'},
|
{'name': 'Generic', 'category': 'networking', 'type': 'general', 'brand': 'other'},
|
||||||
{'name': 'Huawei', 'category': 'networking', 'type': 'general'},
|
{'name': 'Huawei', 'category': 'networking', 'type': 'general', 'brand': 'huawei'},
|
||||||
{'name': 'Cisco', 'category': 'networking', 'type': 'general'},
|
{'name': 'Cisco', 'category': 'networking', 'type': 'general', 'brand': 'cisco'},
|
||||||
{'name': 'H3C', 'category': 'networking', 'type': 'general'},
|
{'name': 'H3C', 'category': 'networking', 'type': 'general', 'brand': 'h3c'},
|
||||||
|
|
||||||
# Web
|
# Web
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
vars:
|
vars:
|
||||||
connection_type: ssh
|
connection_type: ssh
|
||||||
password:
|
password:
|
||||||
value: {{ password}}
|
value: {{ password }}
|
||||||
public_key:
|
public_key:
|
||||||
value: {{ jms_key }}
|
value: {{ jms_key }}
|
||||||
exclusive: {{ exclusive }}
|
exclusive: {{ exclusive }}
|
||||||
|
|
Loading…
Reference in New Issue