From 48b037ac26ff8a5715a6abcab895ac75ffba6671 Mon Sep 17 00:00:00 2001 From: "Gerry.tan" Date: Tue, 14 May 2024 21:32:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=20Dameng=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/const/database.py | 11 +++++++ apps/assets/const/protocol.py | 7 +++++ .../migrations/0128_auto_20240514_1521.py | 31 +++++++++++++++++++ apps/terminal/connect_methods.py | 3 +- 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 apps/assets/migrations/0128_auto_20240514_1521.py diff --git a/apps/assets/const/database.py b/apps/assets/const/database.py index 261373688..6802ed3b4 100644 --- a/apps/assets/const/database.py +++ b/apps/assets/const/database.py @@ -8,6 +8,7 @@ class DatabaseTypes(BaseType): ORACLE = 'oracle', 'Oracle' SQLSERVER = 'sqlserver', 'SQLServer' DB2 = 'db2', 'DB2' + DAMENG = 'dameng', 'Dameng' CLICKHOUSE = 'clickhouse', 'ClickHouse' MONGODB = 'mongodb', 'MongoDB' REDIS = 'redis', 'Redis' @@ -55,6 +56,15 @@ class DatabaseTypes(BaseType): 'change_secret_enabled': False, 'push_account_enabled': False, }, + cls.DAMENG: { + 'ansible_enabled': False, + 'ping_enabled': False, + 'gather_facts_enabled': False, + 'gather_accounts_enabled': False, + 'verify_account_enabled': False, + 'change_secret_enabled': False, + 'push_account_enabled': False, + }, cls.CLICKHOUSE: { 'ansible_enabled': False, 'ping_enabled': False, @@ -84,6 +94,7 @@ class DatabaseTypes(BaseType): cls.ORACLE: [{'name': 'Oracle'}], cls.SQLSERVER: [{'name': 'SQLServer'}], cls.DB2: [{'name': 'DB2'}], + cls.DAMENG: [{'name': 'Dameng'}], cls.CLICKHOUSE: [{'name': 'ClickHouse'}], cls.MONGODB: [{'name': 'MongoDB'}], cls.REDIS: [ diff --git a/apps/assets/const/protocol.py b/apps/assets/const/protocol.py index 58376b0db..474570bab 100644 --- a/apps/assets/const/protocol.py +++ b/apps/assets/const/protocol.py @@ -23,6 +23,7 @@ class Protocol(ChoicesMixin, models.TextChoices): postgresql = 'postgresql', 'PostgreSQL' sqlserver = 'sqlserver', 'SQLServer' db2 = 'db2', 'DB2' + dameng = 'dameng', 'Dameng' clickhouse = 'clickhouse', 'ClickHouse' redis = 'redis', 'Redis' mongodb = 'mongodb', 'MongoDB' @@ -185,6 +186,12 @@ class Protocol(ChoicesMixin, models.TextChoices): 'secret_types': ['password'], 'xpack': True, }, + cls.dameng: { + 'port': 5236, + 'required': True, + 'secret_types': ['password'], + 'xpack': True, + }, cls.clickhouse: { 'port': 9000, 'required': True, diff --git a/apps/assets/migrations/0128_auto_20240514_1521.py b/apps/assets/migrations/0128_auto_20240514_1521.py new file mode 100644 index 000000000..cad8628fa --- /dev/null +++ b/apps/assets/migrations/0128_auto_20240514_1521.py @@ -0,0 +1,31 @@ +# Generated by Django 4.1.10 on 2023-10-07 06:37 + +from django.db import migrations + + +def add_dameng_platform(apps, schema_editor): + platform_cls = apps.get_model('assets', 'Platform') + automation_cls = apps.get_model('assets', 'PlatformAutomation') + platform, _ = platform_cls.objects.update_or_create( + name='Dameng', defaults={ + 'name': 'Dameng', 'category': 'database', + 'internal': True, 'type': 'dameng', + 'domain_enabled': True, 'su_enabled': False, + 'su_method': None, 'comment': 'Dameng', 'created_by': 'System', + 'updated_by': 'System', 'custom_fields': [] + } + ) + platform.protocols.update_or_create(name='dameng', defaults={ + 'name': 'dameng', 'port': 5236, 'primary': True, 'setting': {} + }) + automation_cls.objects.update_or_create(platform=platform, defaults={'ansible_enabled': False}) + + +class Migration(migrations.Migration): + dependencies = [ + ('assets', '0127_automation_remove_account'), + ] + + operations = [ + migrations.RunPython(add_dameng_platform) + ] diff --git a/apps/terminal/connect_methods.py b/apps/terminal/connect_methods.py index a6b7e7e51..9e815a29a 100644 --- a/apps/terminal/connect_methods.py +++ b/apps/terminal/connect_methods.py @@ -166,7 +166,8 @@ class ConnectMethodUtil: 'support': [ Protocol.mysql, Protocol.postgresql, Protocol.oracle, Protocol.sqlserver, - Protocol.mariadb, Protocol.db2 + Protocol.mariadb, Protocol.db2, + Protocol.dameng ], 'match': 'm2m' },