mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-18 16:39:28 +00:00
perf: 优化部署 host
This commit is contained in:
@@ -5,7 +5,7 @@ from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common.utils import get_logger
|
||||
from .base import BaseAnsibleTask, BaseAnsibleExecution
|
||||
from .base import BaseAnsibleJob, BaseAnsibleExecution
|
||||
from ..ansible import AdHocRunner
|
||||
|
||||
__all__ = ["AdHoc", "AdHocExecution"]
|
||||
@@ -14,7 +14,7 @@ __all__ = ["AdHoc", "AdHocExecution"]
|
||||
logger = get_logger(__file__)
|
||||
|
||||
|
||||
class AdHoc(BaseAnsibleTask):
|
||||
class AdHoc(BaseAnsibleJob):
|
||||
pattern = models.CharField(max_length=1024, verbose_name=_("Pattern"), default='all')
|
||||
module = models.CharField(max_length=128, default='shell', verbose_name=_('Module'))
|
||||
args = models.CharField(max_length=1024, default='', verbose_name=_('Args'))
|
||||
|
@@ -12,7 +12,7 @@ from ..ansible.inventory import JMSInventory
|
||||
from ..mixin import PeriodTaskModelMixin
|
||||
|
||||
|
||||
class BaseAnsibleTask(PeriodTaskModelMixin, JMSOrgBaseModel):
|
||||
class BaseAnsibleJob(PeriodTaskModelMixin, JMSOrgBaseModel):
|
||||
owner = models.ForeignKey('users.User', verbose_name=_("Creator"), on_delete=models.SET_NULL, null=True)
|
||||
assets = models.ManyToManyField('assets.Asset', verbose_name=_("Assets"))
|
||||
account = models.CharField(max_length=128, default='root', verbose_name=_('Account'))
|
||||
@@ -46,7 +46,7 @@ class BaseAnsibleTask(PeriodTaskModelMixin, JMSOrgBaseModel):
|
||||
class BaseAnsibleExecution(models.Model):
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
|
||||
status = models.CharField(max_length=16, verbose_name=_('Status'), default='running')
|
||||
task = models.ForeignKey(BaseAnsibleTask, on_delete=models.CASCADE, related_name='executions', null=True)
|
||||
task = models.ForeignKey(BaseAnsibleJob, on_delete=models.CASCADE, related_name='executions', null=True)
|
||||
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)
|
||||
@@ -86,7 +86,7 @@ class BaseAnsibleExecution(models.Model):
|
||||
|
||||
def set_result(self, cb):
|
||||
status_mapper = {
|
||||
'successful': 'succeeded',
|
||||
'successful': 'success',
|
||||
}
|
||||
this = self.__class__.objects.get(id=self.id)
|
||||
this.status = status_mapper.get(cb.status, cb.status)
|
||||
@@ -112,11 +112,11 @@ class BaseAnsibleExecution(models.Model):
|
||||
|
||||
@property
|
||||
def is_finished(self):
|
||||
return self.status in ['succeeded', 'failed']
|
||||
return self.status in ['success', 'failed']
|
||||
|
||||
@property
|
||||
def is_success(self):
|
||||
return self.status == 'succeeded'
|
||||
return self.status == 'success'
|
||||
|
||||
@property
|
||||
def time_cost(self):
|
||||
|
@@ -23,6 +23,7 @@ class CeleryTask(models.Model):
|
||||
"comment": getattr(task, 'comment', None),
|
||||
"queue": getattr(task, 'queue', 'default')
|
||||
}
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
last_five_executions = CeleryTaskExecution.objects.filter(name=self.name).order_by('-date_published')[:5]
|
||||
|
@@ -2,7 +2,7 @@ from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from orgs.mixins.models import JMSOrgBaseModel
|
||||
from .base import BaseAnsibleExecution, BaseAnsibleTask
|
||||
from .base import BaseAnsibleExecution, BaseAnsibleJob
|
||||
|
||||
|
||||
class PlaybookTemplate(JMSOrgBaseModel):
|
||||
@@ -19,7 +19,7 @@ class PlaybookTemplate(JMSOrgBaseModel):
|
||||
unique_together = [('org_id', 'name')]
|
||||
|
||||
|
||||
class Playbook(BaseAnsibleTask):
|
||||
class Playbook(BaseAnsibleJob):
|
||||
path = models.FilePathField(max_length=1024, verbose_name=_("Playbook"))
|
||||
owner = models.ForeignKey('users.User', verbose_name=_("Owner"), on_delete=models.SET_NULL, null=True)
|
||||
comment = models.TextField(blank=True, verbose_name=_("Comment"))
|
||||
|
Reference in New Issue
Block a user