mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-16 15:28:38 +00:00
ansible Task接口更上层抽象的基本实现
This commit is contained in:
@@ -2,3 +2,4 @@ from ansible import *
|
||||
from cron import *
|
||||
from sudo import *
|
||||
from utils import *
|
||||
|
||||
|
@@ -9,13 +9,13 @@ from assets.models import Asset
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
__all__ = ["Task", "Tasker", "AnsiblePlay", "AnsibleTask", "AnsibleHostResult"]
|
||||
__all__ = ["Task", "TaskRecord", "AnsiblePlay", "AnsibleTask", "AnsibleHostResult"]
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Tasker(models.Model):
|
||||
class TaskRecord(models.Model):
|
||||
uuid = models.CharField(max_length=128, verbose_name=_('UUID'), primary_key=True)
|
||||
name = models.CharField(max_length=128, blank=True, verbose_name=_('Name'))
|
||||
start = models.DateTimeField(auto_now_add=True, verbose_name=_('Start Time'))
|
||||
@@ -51,7 +51,7 @@ class Tasker(models.Model):
|
||||
|
||||
|
||||
class AnsiblePlay(models.Model):
|
||||
tasker = models.ForeignKey(Tasker, related_name='plays', blank=True, null=True)
|
||||
tasker = models.ForeignKey(TaskRecord, related_name='plays', blank=True, null=True)
|
||||
uuid = models.CharField(max_length=128, verbose_name=_('UUID'), primary_key=True)
|
||||
name = models.CharField(max_length=128, verbose_name=_('Name'))
|
||||
|
||||
@@ -73,7 +73,7 @@ class AnsiblePlay(models.Model):
|
||||
name=forgery_py.name.full_name(),
|
||||
)
|
||||
try:
|
||||
play.tasker = choice(Tasker.objects.all())
|
||||
play.tasker = choice(TaskRecord.objects.all())
|
||||
play.save()
|
||||
logger.debug('Generate fake play: %s' % play.name)
|
||||
except Exception as e:
|
||||
@@ -293,8 +293,16 @@ class AnsibleHostResult(models.Model):
|
||||
continue
|
||||
|
||||
class Task(models.Model):
|
||||
record = models.OneToOneField(TaskRecord)
|
||||
name = models.CharField(max_length=128, blank=True, verbose_name=_('Name'))
|
||||
asset = models.ForeignKey(Asset, null=True, blank=True, related_name='crontables')
|
||||
module_name = models.CharField(max_length=128, verbose_name=_('Ansible Module Name'))
|
||||
module_args = models.CharField(max_length=512, blank=True, verbose_name=_("Ansible Module Args"))
|
||||
register = models.CharField(max_length=128, blank=True, verbose_name=_('Ansible Task Register'))
|
||||
is_gather_facts = models.BooleanField(default=False,verbose_name=_('Is Gather Ansible Facts'))
|
||||
asset = models.ManyToManyField(Asset, related_name='tasks')
|
||||
|
||||
def __unicode__(self):
|
||||
pass
|
||||
return "%s %s" % (self.module_name, self.module_args)
|
||||
|
||||
def run(self):
|
||||
pass
|
||||
|
@@ -5,7 +5,7 @@ import logging
|
||||
|
||||
from jinja2 import Template
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.timezone import now
|
||||
from assets.models import Asset, AssetGroup
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
@@ -174,7 +174,7 @@ class Sudo(models.Model):
|
||||
|
||||
name = models.CharField(max_length=128, unique=True, verbose_name=_('Name'),
|
||||
help_text=_('Name for this sudo'))
|
||||
created_time = models.DateTimeField(verbose_name=_('Created Time'), default=timezone.now(),
|
||||
created_time = models.DateTimeField(verbose_name=_('Created Time'), auto_created=True,
|
||||
help_text=_('The create time of this sudo'))
|
||||
modify_time = models.DateTimeField(auto_now=True, verbose_name=_('Modify Time'),
|
||||
help_text=_('The recent modify time of this sudo'))
|
||||
@@ -310,7 +310,7 @@ root ALL=(ALL:ALL) ALL
|
||||
seed()
|
||||
for i in range(count):
|
||||
sudo = cls(name=forgery_py.name.full_name(),
|
||||
created_time=timezone.now()
|
||||
created_time=now()
|
||||
)
|
||||
try:
|
||||
sudo.save()
|
||||
|
@@ -9,6 +9,6 @@ __all__ = ["generate_fake"]
|
||||
|
||||
|
||||
def generate_fake():
|
||||
for cls in (Tasker, AnsiblePlay, AnsibleTask, AnsibleHostResult, CronTable,
|
||||
for cls in (TaskRecord, AnsiblePlay, AnsibleTask, AnsibleHostResult, CronTable,
|
||||
HostAlia, UserAlia, CmdAlia, RunasAlia, Privilege, Sudo):
|
||||
cls.generate_fake()
|
Reference in New Issue
Block a user