mirror of https://github.com/jumpserver/jumpserver
commit
75b10d9d8f
|
@ -0,0 +1,41 @@
|
||||||
|
# Generated by Django 3.2.16 on 2023-02-06 11:27
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def compatible(apps, schema_editor):
|
||||||
|
"""
|
||||||
|
兼容旧版本的数据
|
||||||
|
"""
|
||||||
|
model = apps.get_model("ops", "JobExecution")
|
||||||
|
for obj in model.objects.all():
|
||||||
|
if obj.job:
|
||||||
|
if obj.job.type == 'adhoc':
|
||||||
|
obj.material = "{}:{}".format(obj.job.module, obj.job.args)
|
||||||
|
if obj.job.type == 'playbook':
|
||||||
|
obj.material = "{}:{}:{}".format(obj.job.org.name, obj.job.creator.name, obj.job.playbook.name)
|
||||||
|
obj.job_type = obj.job.type
|
||||||
|
obj.save()
|
||||||
|
else:
|
||||||
|
obj.delete()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
('ops', '0026_alter_jobexecution_job'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='jobexecution',
|
||||||
|
name='job_type',
|
||||||
|
field=models.CharField(choices=[('adhoc', 'Adhoc'), ('playbook', 'Playbook')], default='adhoc',
|
||||||
|
max_length=128, verbose_name='Material Type'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='jobexecution',
|
||||||
|
name='material',
|
||||||
|
field=models.CharField(blank=True, default='', max_length=1024, null=True, verbose_name='Material'),
|
||||||
|
),
|
||||||
|
migrations.RunPython(compatible),
|
||||||
|
]
|
|
@ -84,8 +84,15 @@ class Job(JMSOrgBaseModel, PeriodTaskModelMixin):
|
||||||
def inventory(self):
|
def inventory(self):
|
||||||
return JMSInventory(self.assets.all(), self.runas_policy, self.runas)
|
return JMSInventory(self.assets.all(), self.runas_policy, self.runas)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def material(self):
|
||||||
|
if self.type == 'adhoc':
|
||||||
|
return "{}:{}".format(self.module, self.args)
|
||||||
|
if self.type == 'playbook':
|
||||||
|
return "{}:{}:{}".format(self.org.name, self.creator.name, self.playbook.name)
|
||||||
|
|
||||||
def create_execution(self):
|
def create_execution(self):
|
||||||
return self.executions.create(job_version=self.version)
|
return self.executions.create(job_version=self.version, material=self.material, job_type=Types[self.type].label)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Job")
|
verbose_name = _("Job")
|
||||||
|
@ -106,19 +113,16 @@ class JobExecution(JMSOrgBaseModel):
|
||||||
date_start = models.DateTimeField(null=True, verbose_name=_('Date start'), db_index=True)
|
date_start = models.DateTimeField(null=True, verbose_name=_('Date start'), db_index=True)
|
||||||
date_finished = models.DateTimeField(null=True, verbose_name=_("Date finished"))
|
date_finished = models.DateTimeField(null=True, verbose_name=_("Date finished"))
|
||||||
|
|
||||||
|
material = models.CharField(max_length=1024, default='', verbose_name=_('Material'), null=True, blank=True)
|
||||||
|
job_type = models.CharField(max_length=128, choices=Types.choices, default=Types.adhoc,
|
||||||
|
verbose_name=_("Material Type"))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_job(self):
|
def current_job(self):
|
||||||
if self.job.version != self.job_version:
|
if self.job.version != self.job_version:
|
||||||
return self.job.get_history(self.job_version)
|
return self.job.get_history(self.job_version)
|
||||||
return self.job
|
return self.job
|
||||||
|
|
||||||
@property
|
|
||||||
def material(self):
|
|
||||||
if self.current_job.type == 'adhoc':
|
|
||||||
return "{}:{}".format(self.current_job.module, self.current_job.args)
|
|
||||||
if self.current_job.type == 'playbook':
|
|
||||||
return "{}:{}:{}".format(self.org.name, self.current_job.creator.name, self.current_job.playbook.name)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def assent_result_detail(self):
|
def assent_result_detail(self):
|
||||||
if not self.is_finished or self.summary.get('error'):
|
if not self.is_finished or self.summary.get('error'):
|
||||||
|
@ -158,10 +162,6 @@ class JobExecution(JMSOrgBaseModel):
|
||||||
result["detail"].append(asset_detail)
|
result["detail"].append(asset_detail)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@property
|
|
||||||
def job_type(self):
|
|
||||||
return Types[self.job.type].label
|
|
||||||
|
|
||||||
def compile_shell(self):
|
def compile_shell(self):
|
||||||
if self.current_job.type != 'adhoc':
|
if self.current_job.type != 'adhoc':
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue