From 48d29494046c9f8fa698e418d61bfa5c802aad6c Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 30 Nov 2022 16:21:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=20acl=20assets?= =?UTF-8?q?=20name/address?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/acls/models/login_asset_acl.py | 11 +++++---- apps/acls/serializers/login_asset_acl.py | 26 +++++++++------------- apps/acls/serializers/login_asset_check.py | 4 +--- 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/apps/acls/models/login_asset_acl.py b/apps/acls/models/login_asset_acl.py index 1c7455fb2..a27a730d0 100644 --- a/apps/acls/models/login_asset_acl.py +++ b/apps/acls/models/login_asset_acl.py @@ -61,19 +61,18 @@ class LoginAssetACL(BaseACL, OrgModelMixin): @classmethod def filter_asset(cls, asset, queryset): queryset = queryset.filter( - Q(assets__hostname_group__contains=asset.name) | - Q(assets__hostname_group__contains='*') + Q(assets__name_group__contains=asset.name) | + Q(assets__name_group__contains='*') ) - ids = [q.id for q in queryset if contains_ip(asset.address, q.assets.get('ip_group', []))] + ids = [ + q.id for q in queryset if contains_ip(asset.address, q.assets.get('address_group', [])) + ] queryset = cls.objects.filter(id__in=ids) return queryset @classmethod def filter_account(cls, account_username, queryset): queryset = queryset.filter( - Q(accounts__name_group__contains=account_username) | - Q(accounts__name_group__contains='*') - ).filter( Q(accounts__username_group__contains=account_username) | Q(accounts__username_group__contains='*') ) diff --git a/apps/acls/serializers/login_asset_acl.py b/apps/acls/serializers/login_asset_acl.py index 2a04b6c97..053771fb4 100644 --- a/apps/acls/serializers/login_asset_acl.py +++ b/apps/acls/serializers/login_asset_acl.py @@ -25,34 +25,28 @@ class LoginAssetACLUsersSerializer(serializers.Serializer): class LoginAssetACLAssestsSerializer(serializers.Serializer): - ip_group_help_text = _( + address_group_help_text = _( "Format for comma-delimited string, with * indicating a match all. " "Such as: " "192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64" " (Domain name support)" ) - ip_group = serializers.ListField( - default=["*"], - child=serializers.CharField(max_length=1024), - label=_("IP/Host"), - help_text=ip_group_help_text, - ) - hostname_group = serializers.ListField( - default=["*"], - child=serializers.CharField(max_length=128), - label=_("Name"), - help_text=common_help_text, - ) - - -class LoginAssetACLAccountsSerializer(serializers.Serializer): name_group = serializers.ListField( default=["*"], child=serializers.CharField(max_length=128), label=_("Name"), help_text=common_help_text, ) + address_group = serializers.ListField( + default=["*"], + child=serializers.CharField(max_length=1024), + label=_("IP/Host"), + help_text=address_group_help_text, + ) + + +class LoginAssetACLAccountsSerializer(serializers.Serializer): username_group = serializers.ListField( default=["*"], child=serializers.CharField(max_length=128), diff --git a/apps/acls/serializers/login_asset_check.py b/apps/acls/serializers/login_asset_check.py index 279feb3b6..49afda63a 100644 --- a/apps/acls/serializers/login_asset_check.py +++ b/apps/acls/serializers/login_asset_check.py @@ -37,9 +37,7 @@ class LoginAssetCheckSerializer(serializers.Serializer): def validate_account_username(self, account_username): asset_id = self.initial_data.get('asset_id') - account = Account.objects.filter( - username=account_username, asset_id=asset_id - ).first() + account = Account.objects.filter(username=account_username, asset_id=asset_id).first() if not account: error = 'Account username does not exist' raise serializers.ValidationError(error) From dcbdb0af4d11c6f0ed597c6e2b05205bc9af6a7e Mon Sep 17 00:00:00 2001 From: Aaron3S Date: Wed, 30 Nov 2022 16:24:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E7=9B=AE=E5=BD=95=E5=88=87=E6=8D=A2,=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=AD=97=E6=AE=B5=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/models/job.py | 10 +++++++++- apps/ops/serializers/adhoc.py | 6 ++---- apps/ops/serializers/playbook.py | 5 +++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/apps/ops/models/job.py b/apps/ops/models/job.py index e74258b55..5ce5f38c8 100644 --- a/apps/ops/models/job.py +++ b/apps/ops/models/job.py @@ -113,6 +113,13 @@ class JobExecution(JMSOrgBaseModel): def job_type(self): return self.job.type + def compile_shell(self): + if self.job.type != 'adhoc': + return + result = "{}{}{} ".format('\'', self.job.args, '\'') + result += "chdir={}".format(self.job.chdir) + return result + def get_runner(self): inv = self.job.inventory inv.write_to_file(self.inventory_path) @@ -122,8 +129,9 @@ class JobExecution(JMSOrgBaseModel): extra_vars = {} if self.job.type == 'adhoc': + args = self.compile_shell() runner = AdHocRunner( - self.inventory_path, self.job.module, module_args=self.job.args, + self.inventory_path, self.job.module, module_args=args, pattern="all", project_dir=self.private_dir, extra_vars=extra_vars, ) elif self.job.type == 'playbook': diff --git a/apps/ops/serializers/adhoc.py b/apps/ops/serializers/adhoc.py index 48ddf6567..08d583be1 100644 --- a/apps/ops/serializers/adhoc.py +++ b/apps/ops/serializers/adhoc.py @@ -1,8 +1,6 @@ # ~*~ coding: utf-8 ~*~ from __future__ import unicode_literals -import datetime - from rest_framework import serializers from common.drf.fields import ReadableHiddenField @@ -17,5 +15,5 @@ class AdHocSerializer(BulkOrgResourceModelSerializer, serializers.ModelSerialize class Meta: model = AdHoc - fields = ["id", "name", "module", "row_count", "size", "args", "creator", "comment", "date_created", - "date_updated"] + read_only_field = ["id", "row_count", "size", "creator", "date_created", "date_updated"] + fields = read_only_field + ["id", "name", "module", "args", "comment"] diff --git a/apps/ops/serializers/playbook.py b/apps/ops/serializers/playbook.py index 57c7f2fe5..4ff43abb4 100644 --- a/apps/ops/serializers/playbook.py +++ b/apps/ops/serializers/playbook.py @@ -24,6 +24,7 @@ class PlaybookSerializer(BulkOrgResourceModelSerializer, serializers.ModelSerial class Meta: model = Playbook - fields = [ - "id", "name", "path", "comment", "date_created", "creator", "date_updated" + read_only_fields = ["id", "date_created", "date_updated"] + fields = read_only_fields + [ + "id", "name", "comment", "creator", ]