From 64e48712a578c17f54f51389919806906fe67fb1 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Thu, 2 Feb 2023 16:16:38 +0800 Subject: [PATCH] perf: gateway migrate (#9412) Co-authored-by: feng <1304903146@qq.com> --- apps/assets/migrations/0100_auto_20220711_1413.py | 3 +-- apps/assets/migrations/0101_auto_20220811_1511.py | 1 - apps/assets/migrations/0103_auto_20220902_1021.py | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/assets/migrations/0100_auto_20220711_1413.py b/apps/assets/migrations/0100_auto_20220711_1413.py index 16e75cbae..2412c6df0 100644 --- a/apps/assets/migrations/0100_auto_20220711_1413.py +++ b/apps/assets/migrations/0100_auto_20220711_1413.py @@ -1,8 +1,7 @@ # Generated by Django 3.2.12 on 2022-07-11 06:13 import time -from django.db import migrations, models -from assets.models import Platform +from django.db import migrations def migrate_asset_accounts(apps, schema_editor): diff --git a/apps/assets/migrations/0101_auto_20220811_1511.py b/apps/assets/migrations/0101_auto_20220811_1511.py index 9ca39774e..0287a8414 100644 --- a/apps/assets/migrations/0101_auto_20220811_1511.py +++ b/apps/assets/migrations/0101_auto_20220811_1511.py @@ -1,5 +1,4 @@ # Generated by Django 3.2.14 on 2022-08-11 07:11 -import assets.models.platform import django.db.models from django.db import migrations, models diff --git a/apps/assets/migrations/0103_auto_20220902_1021.py b/apps/assets/migrations/0103_auto_20220902_1021.py index 8d324fa12..dfc731736 100644 --- a/apps/assets/migrations/0103_auto_20220902_1021.py +++ b/apps/assets/migrations/0103_auto_20220902_1021.py @@ -18,6 +18,8 @@ def _create_account_obj(secret, secret_type, gateway, asset, account_model): def migrate_gateway_to_asset(apps, schema_editor): db_alias = schema_editor.connection.alias + node_model = apps.get_model('assets', 'Node') + org_model = apps.get_model('orgs', 'Organization') gateway_model = apps.get_model('assets', 'Gateway') platform_model = apps.get_model('assets', 'Platform') gateway_platform = platform_model.objects.using(db_alias).get(name=GATEWAY_NAME) @@ -28,6 +30,16 @@ def migrate_gateway_to_asset(apps, schema_editor): asset_model = apps.get_model('assets', 'Asset') protocol_model = apps.get_model('assets', 'Protocol') gateways = gateway_model.objects.all() + + org_ids = gateways.order_by('org_id').values_list('org_id', flat=True).distinct() + node_dict = {} + for org_id in org_ids: + org = org_model.objects.using(db_alias).filter(id=org_id).first() + node = node_model.objects.using(db_alias).filter( + org_id=org_id, value=org.name, full_value=f'/{org.name}' + ).first() + node_dict[org_id] = node + for gateway in gateways: comment = gateway.comment if gateway.comment else '' data = { @@ -40,6 +52,8 @@ def migrate_gateway_to_asset(apps, schema_editor): 'platform': gateway_platform, } asset = asset_model.objects.using(db_alias).create(**data) + node = node_dict.get(str(gateway.org_id)) + asset.nodes.set([node]) asset_dict[gateway.id] = asset protocol_model.objects.using(db_alias).create(name='ssh', port=gateway.port, asset=asset) hosts = [host_model(asset_ptr=asset) for asset in asset_dict.values()]