mirror of https://github.com/jumpserver/jumpserver
perf: gather account api adjustment
parent
6ef5154d4d
commit
3b4e388ed0
|
@ -232,5 +232,6 @@ class BasePlaybookManager:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.on_runner_failed(runner, e)
|
self.on_runner_failed(runner, e)
|
||||||
print('\n')
|
print('\n')
|
||||||
|
self.execution.status = 'success'
|
||||||
self.execution.date_finished = timezone.now()
|
self.execution.date_finished = timezone.now()
|
||||||
self.execution.save()
|
self.execution.save()
|
||||||
|
|
|
@ -15,12 +15,8 @@ from assets.const import AutomationTypes
|
||||||
|
|
||||||
class BaseAutomation(CommonModelMixin, PeriodTaskModelMixin, OrgModelMixin):
|
class BaseAutomation(CommonModelMixin, PeriodTaskModelMixin, OrgModelMixin):
|
||||||
accounts = models.JSONField(default=list, verbose_name=_("Accounts"))
|
accounts = models.JSONField(default=list, verbose_name=_("Accounts"))
|
||||||
nodes = models.ManyToManyField(
|
nodes = models.ManyToManyField('assets.Node', blank=True, verbose_name=_("Nodes"))
|
||||||
'assets.Node', blank=True, verbose_name=_("Nodes")
|
assets = models.ManyToManyField('assets.Asset', blank=True, verbose_name=_("Assets"))
|
||||||
)
|
|
||||||
assets = models.ManyToManyField(
|
|
||||||
'assets.Asset', blank=True, verbose_name=_("Assets")
|
|
||||||
)
|
|
||||||
type = models.CharField(max_length=16, choices=AutomationTypes.choices, verbose_name=_('Type'))
|
type = models.CharField(max_length=16, choices=AutomationTypes.choices, verbose_name=_('Type'))
|
||||||
is_active = models.BooleanField(default=True, verbose_name=_("Is active"))
|
is_active = models.BooleanField(default=True, verbose_name=_("Is active"))
|
||||||
comment = models.TextField(blank=True, verbose_name=_('Comment'))
|
comment = models.TextField(blank=True, verbose_name=_('Comment'))
|
||||||
|
@ -92,7 +88,7 @@ class AutomationExecution(OrgModelMixin):
|
||||||
'BaseAutomation', related_name='executions', on_delete=models.CASCADE,
|
'BaseAutomation', related_name='executions', on_delete=models.CASCADE,
|
||||||
verbose_name=_('Automation task')
|
verbose_name=_('Automation task')
|
||||||
)
|
)
|
||||||
status = models.CharField(max_length=16, default='pending')
|
status = models.CharField(max_length=16, default='pending', verbose_name=_('Status'))
|
||||||
date_created = models.DateTimeField(auto_now_add=True, verbose_name=_('Date created'))
|
date_created = models.DateTimeField(auto_now_add=True, verbose_name=_('Date created'))
|
||||||
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"))
|
||||||
|
|
|
@ -13,3 +13,7 @@ class GatherAccountsAutomation(BaseAutomation):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Gather asset accounts")
|
verbose_name = _("Gather asset accounts")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def executed_amount(self):
|
||||||
|
return self.executions.count()
|
||||||
|
|
|
@ -3,9 +3,10 @@ from rest_framework import serializers
|
||||||
|
|
||||||
from ops.mixin import PeriodTaskSerializerMixin
|
from ops.mixin import PeriodTaskSerializerMixin
|
||||||
from assets.const import AutomationTypes
|
from assets.const import AutomationTypes
|
||||||
from assets.models import Asset, BaseAutomation, AutomationExecution
|
from assets.models import Asset, Node, BaseAutomation, AutomationExecution
|
||||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||||
from common.utils import get_logger
|
from common.utils import get_logger
|
||||||
|
from common.drf.fields import ObjectRelatedField
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = get_logger(__file__)
|
||||||
|
|
||||||
|
@ -16,6 +17,9 @@ __all__ = [
|
||||||
|
|
||||||
|
|
||||||
class BaseAutomationSerializer(PeriodTaskSerializerMixin, BulkOrgResourceModelSerializer):
|
class BaseAutomationSerializer(PeriodTaskSerializerMixin, BulkOrgResourceModelSerializer):
|
||||||
|
assets = ObjectRelatedField(many=True, required=False, queryset=Asset.objects, label=_('Assets'))
|
||||||
|
nodes = ObjectRelatedField(many=True, required=False, queryset=Node.objects, label=_('Nodes'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
read_only_fields = [
|
read_only_fields = [
|
||||||
'date_created', 'date_updated', 'created_by', 'periodic_display'
|
'date_created', 'date_updated', 'created_by', 'periodic_display'
|
||||||
|
@ -26,6 +30,7 @@ class BaseAutomationSerializer(PeriodTaskSerializerMixin, BulkOrgResourceModelSe
|
||||||
]
|
]
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'name': {'required': True},
|
'name': {'required': True},
|
||||||
|
'type': {'read_only': True},
|
||||||
'periodic_display': {'label': _('Periodic perform')},
|
'periodic_display': {'label': _('Periodic perform')},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,10 +42,10 @@ class AutomationExecutionSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = AutomationExecution
|
model = AutomationExecution
|
||||||
fields = [
|
read_only_fields = [
|
||||||
'id', 'automation', 'trigger', 'trigger_display',
|
'trigger_display', 'date_start', 'date_finished', 'snapshot', 'status'
|
||||||
'date_start', 'date_finished', 'snapshot', 'type'
|
|
||||||
]
|
]
|
||||||
|
fields = ['id', 'automation', 'trigger', 'type'] + read_only_fields
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_snapshot(obj):
|
def get_snapshot(obj):
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from assets.models import GatherAccountsAutomation
|
from assets.models import GatherAccountsAutomation
|
||||||
from common.utils import get_logger
|
from common.utils import get_logger
|
||||||
|
|
||||||
|
@ -15,6 +16,9 @@ __all__ = [
|
||||||
class GatherAccountAutomationSerializer(BaseAutomationSerializer):
|
class GatherAccountAutomationSerializer(BaseAutomationSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = GatherAccountsAutomation
|
model = GatherAccountsAutomation
|
||||||
read_only_fields = BaseAutomationSerializer.Meta.read_only_fields
|
read_only_fields = BaseAutomationSerializer.Meta.read_only_fields + ['executed_amount']
|
||||||
fields = BaseAutomationSerializer.Meta.fields + read_only_fields
|
fields = BaseAutomationSerializer.Meta.fields + read_only_fields
|
||||||
extra_kwargs = BaseAutomationSerializer.Meta.extra_kwargs
|
|
||||||
|
extra_kwargs = {**BaseAutomationSerializer.Meta.extra_kwargs, **{
|
||||||
|
'executed_amount': {'label': _('Executed amount')}
|
||||||
|
}}
|
||||||
|
|
Loading…
Reference in New Issue