ansible Task接口更上层抽象的基本实现

This commit is contained in:
yumaojun03
2016-12-19 14:07:21 +08:00
parent 86c5f0d3d3
commit 150e1030c3
13 changed files with 92 additions and 35 deletions

View File

@@ -2,3 +2,4 @@ from ansible import *
from cron import *
from sudo import *
from utils import *

View File

@@ -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

View File

@@ -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()

View File

@@ -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()