mirror of https://github.com/jumpserver/jumpserver
fix: 修改原来 platform 为 device 时,导致的 asset 类型不对
parent
471411a1aa
commit
4d4644dddd
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
import django.db
|
import django.db
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import common.db.fields
|
import common.db.fields
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,24 @@ def migrate_to_nodes(apps, *args):
|
||||||
parent.save()
|
parent.save()
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_ori_host_to_devices(apps, *args):
|
||||||
|
device_model = apps.get_model('assets', 'Device')
|
||||||
|
asset_model = apps.get_model('assets', 'Asset')
|
||||||
|
host_model = apps.get_model('assets', 'Host')
|
||||||
|
hosts_need_migrate_to_device = host_model.objects.filter(asset_ptr__platform__category='device')
|
||||||
|
assets = asset_model.objects.filter(id__in=hosts_need_migrate_to_device.values_list('asset_ptr_id', flat=True))
|
||||||
|
assets_map = {asset.id: asset for asset in assets}
|
||||||
|
|
||||||
|
for host in hosts_need_migrate_to_device:
|
||||||
|
asset = assets_map.get(host.asset_ptr_id)
|
||||||
|
if not asset:
|
||||||
|
continue
|
||||||
|
device = device_model(asset_ptr_id=asset.id)
|
||||||
|
device.__dict__.update(asset.__dict__)
|
||||||
|
device.save()
|
||||||
|
host.delete(keep_parents=True)
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('assets', '0097_auto_20220426_1558'),
|
('assets', '0097_auto_20220426_1558'),
|
||||||
|
@ -146,5 +164,6 @@ class Migration(migrations.Migration):
|
||||||
operations = [
|
operations = [
|
||||||
migrations.RunPython(migrate_database_to_asset),
|
migrations.RunPython(migrate_database_to_asset),
|
||||||
migrations.RunPython(migrate_cloud_to_asset),
|
migrations.RunPython(migrate_cloud_to_asset),
|
||||||
migrations.RunPython(migrate_to_nodes)
|
migrations.RunPython(migrate_to_nodes),
|
||||||
|
migrations.RunPython(migrate_ori_host_to_devices),
|
||||||
]
|
]
|
||||||
|
|
|
@ -72,8 +72,7 @@ def create_system_messages(app_config: AppConfig, **kwargs):
|
||||||
sub, created = SystemMsgSubscription.objects.get_or_create(message_type=message_type)
|
sub, created = SystemMsgSubscription.objects.get_or_create(message_type=message_type)
|
||||||
if created:
|
if created:
|
||||||
obj.post_insert_to_db(sub)
|
obj.post_insert_to_db(sub)
|
||||||
logger.info(
|
logger.info(f'Create MsgSubscription: package={app_config.module.__package__} type={message_type}')
|
||||||
f'Create SystemMsgSubscription: package={app_config.module.__package__} type={message_type}')
|
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import django
|
||||||
|
|
||||||
|
if os.path.exists('../apps'):
|
||||||
|
sys.path.insert(0, '../apps')
|
||||||
|
elif os.path.exists('./apps'):
|
||||||
|
sys.path.insert(0, './apps')
|
||||||
|
|
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jumpserver.settings")
|
||||||
|
django.setup()
|
||||||
|
|
||||||
|
from assets.models import Asset as asset_model, Host as host_model, Device as device_model
|
||||||
|
from orgs.models import Organization
|
||||||
|
|
||||||
|
|
||||||
|
def clean_host():
|
||||||
|
root = Organization.root()
|
||||||
|
root.change_to()
|
||||||
|
|
||||||
|
devices = host_model.objects.filter(platform__category='device')
|
||||||
|
assets = asset_model.objects.filter(id__in=devices.values_list('asset_ptr_id', flat=True))
|
||||||
|
assets_map = {asset.id: asset for asset in assets}
|
||||||
|
|
||||||
|
for host in devices:
|
||||||
|
asset = assets_map.get(host.asset_ptr_id)
|
||||||
|
if not asset:
|
||||||
|
continue
|
||||||
|
device = device_model(asset_ptr_id=asset.id)
|
||||||
|
device.__dict__.update(asset.__dict__)
|
||||||
|
device.save()
|
||||||
|
host.delete(keep_parents=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
clean_host()
|
Loading…
Reference in New Issue