From 24ed11e2a574442a754e4157d1b9e856a57e10c1 Mon Sep 17 00:00:00 2001 From: Aaron3S Date: Thu, 17 Nov 2022 20:10:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=90=E8=A1=8Cjob=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=8A=A8=E6=80=81=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/api/adhoc.py | 9 ++----- .../ops/migrations/0032_auto_20221117_1848.py | 27 +++++++++++++++++++ apps/ops/models/job.py | 9 +++---- apps/ops/serializers/adhoc.py | 9 ------- apps/ops/serializers/job.py | 4 +-- 5 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 apps/ops/migrations/0032_auto_20221117_1848.py diff --git a/apps/ops/api/adhoc.py b/apps/ops/api/adhoc.py index ce7e8ad57..9889349df 100644 --- a/apps/ops/api/adhoc.py +++ b/apps/ops/api/adhoc.py @@ -4,7 +4,7 @@ from rest_framework import viewsets from ..models import AdHoc from ..serializers import ( - AdHocSerializer, AdhocListSerializer, + AdHocSerializer ) __all__ = [ @@ -14,9 +14,4 @@ __all__ = [ class AdHocViewSet(viewsets.ModelViewSet): queryset = AdHoc.objects.all() - - def get_serializer_class(self): - if self.action != 'list': - return AdhocListSerializer - return AdHocSerializer - + serializer_class = AdHocSerializer diff --git a/apps/ops/migrations/0032_auto_20221117_1848.py b/apps/ops/migrations/0032_auto_20221117_1848.py new file mode 100644 index 000000000..ae18c5280 --- /dev/null +++ b/apps/ops/migrations/0032_auto_20221117_1848.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.14 on 2022-11-17 10:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ops', '0031_auto_20221116_2024'), + ] + + operations = [ + migrations.RemoveField( + model_name='job', + name='variables', + ), + migrations.AddField( + model_name='job', + name='parameters_define', + field=models.JSONField(default=dict, verbose_name='Parameters define'), + ), + migrations.AddField( + model_name='jobexecution', + name='parameters', + field=models.JSONField(default=dict, verbose_name='Parameters'), + ), + ] diff --git a/apps/ops/models/job.py b/apps/ops/models/job.py index b330a4bae..8897d6107 100644 --- a/apps/ops/models/job.py +++ b/apps/ops/models/job.py @@ -45,7 +45,7 @@ class Job(BaseCreateUpdateModel): runas = models.CharField(max_length=128, default='root', verbose_name=_('Runas')) runas_policy = models.CharField(max_length=128, choices=RunasPolicies.choices, default=RunasPolicies.skip, verbose_name=_('Runas policy')) - variables = models.JSONField(default=dict, verbose_name=_('Variables')) + parameters_define = models.JSONField(default=dict, verbose_name=_('Parameters define')) comment = models.CharField(max_length=1024, default='', verbose_name=_('Comment'), null=True, blank=True) @property @@ -55,15 +55,13 @@ class Job(BaseCreateUpdateModel): def create_execution(self): return self.executions.create() - def get_variables(self): - return json.loads(self.variables) - class JobExecution(BaseCreateUpdateModel): id = models.UUIDField(default=uuid.uuid4, primary_key=True) task_id = models.UUIDField(null=True) status = models.CharField(max_length=16, verbose_name=_('Status'), default='running') job = models.ForeignKey(Job, on_delete=models.CASCADE, related_name='executions', null=True) + parameters = models.JSONField(default=dict, verbose_name=_('Parameters')) result = models.JSONField(blank=True, null=True, verbose_name=_('Result')) summary = models.JSONField(default=dict, verbose_name=_('Summary')) creator = models.ForeignKey('users.User', verbose_name=_("Creator"), on_delete=models.SET_NULL, null=True) @@ -74,11 +72,12 @@ class JobExecution(BaseCreateUpdateModel): def get_runner(self): inv = self.job.inventory inv.write_to_file(self.inventory_path) + extra_vars = json.loads(self.parameters) if self.job.type == 'adhoc': runner = AdHocRunner( self.inventory_path, self.job.module, module_args=self.job.args, - pattern="all", project_dir=self.private_dir, extra_vars=self.job.get_variables() + pattern="all", project_dir=self.private_dir, extra_vars=extra_vars, ) elif self.job.type == 'playbook': runner = PlaybookRunner( diff --git a/apps/ops/serializers/adhoc.py b/apps/ops/serializers/adhoc.py index 2120c8c50..f5d8d4780 100644 --- a/apps/ops/serializers/adhoc.py +++ b/apps/ops/serializers/adhoc.py @@ -14,15 +14,6 @@ class AdHocSerializer(serializers.ModelSerializer): row_count = serializers.IntegerField(read_only=True) size = serializers.IntegerField(read_only=True) - class Meta: - model = AdHoc - fields = ["id", "name", "module", "owner", "row_count", "size", "date_created", "date_updated"] - - -class AdhocListSerializer(AdHocSerializer): - row_count = serializers.IntegerField(read_only=True) - size = serializers.IntegerField(read_only=True) - class Meta: model = AdHoc fields = ["id", "name", "module", "row_count", "size", "args", "owner", "date_created", "date_updated"] diff --git a/apps/ops/serializers/job.py b/apps/ops/serializers/job.py index 9b8823bcb..2771e2a7f 100644 --- a/apps/ops/serializers/job.py +++ b/apps/ops/serializers/job.py @@ -14,7 +14,7 @@ class JobSerializer(serializers.ModelSerializer): model = Job fields = [ "id", "name", "instant", "type", "module", "args", "playbook", "assets", "runas_policy", "runas", "owner", - "variables", + "parameters_define", "timeout", "chdir", "comment", @@ -29,5 +29,5 @@ class JobExecutionSerializer(serializers.ModelSerializer): read_only_fields = ["id", "task_id", "timedelta", "time_cost", 'is_finished', 'date_start', 'date_created', 'is_success', 'task_id', 'short_id'] fields = read_only_fields + [ - "job" + "job", "parameters" ]