Commit 3eb8a702 authored by yumaojun03's avatar yumaojun03

为模型生成fake数据

parent 806d38bb
from ansible import * from ansible import *
from cron import * from cron import *
from sudo import * from sudo import *
from utils import *
...@@ -30,21 +30,21 @@ class Tasker(models.Model): ...@@ -30,21 +30,21 @@ class Tasker(models.Model):
return self.hosts.split(',') return self.hosts.split(',')
@classmethod @classmethod
def generate_fake(cls, count=100): def generate_fake(cls, count=20):
from random import seed from random import seed
from uuid import uuid4
import forgery_py import forgery_py
from django.db import IntegrityError
seed() seed()
for i in range(count): for i in range(count):
group = cls(name=forgery_py.name.full_name(), tasker = cls(uuid=str(uuid4()),
comment=forgery_py.lorem_ipsum.sentence(), name=forgery_py.name.full_name(),
created_by='Fake') )
try: try:
group.save() tasker.save()
logger.debug('Generate fake asset group: %s' % group.name) logger.debug('Generate fake tasker: %s' % tasker.name)
except IntegrityError: except Exception as e:
print('Error continue') print('Error: %s, continue...' % e.message)
continue continue
...@@ -59,6 +59,25 @@ class AnsiblePlay(models.Model): ...@@ -59,6 +59,25 @@ class AnsiblePlay(models.Model):
def to_dict(self): def to_dict(self):
return {"uuid": self.uuid, "name": self.name} return {"uuid": self.uuid, "name": self.name}
@classmethod
def generate_fake(cls, count=20):
from random import seed, choice
from uuid import uuid4
import forgery_py
seed()
for i in range(count):
play = cls(uuid=str(uuid4()),
name=forgery_py.name.full_name(),
)
try:
play.tasker = choice(Tasker.objects.all())
play.save()
logger.debug('Generate fake play: %s' % play.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
class AnsibleTask(models.Model): class AnsibleTask(models.Model):
play = models.ForeignKey(AnsiblePlay, related_name='tasks', blank=True, null=True) play = models.ForeignKey(AnsiblePlay, related_name='tasks', blank=True, null=True)
...@@ -77,6 +96,25 @@ class AnsibleTask(models.Model): ...@@ -77,6 +96,25 @@ class AnsibleTask(models.Model):
def success(self): def success(self):
pass pass
@classmethod
def generate_fake(cls, count=20):
from random import seed, choice
from uuid import uuid4
import forgery_py
seed()
for i in range(count):
task = cls(uuid=str(uuid4()),
name=forgery_py.name.full_name(),
)
try:
task.play = choice(AnsiblePlay.objects.all())
task.save()
logger.debug('Generate fake play: %s' % task.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
class AnsibleHostResult(models.Model): class AnsibleHostResult(models.Model):
task = models.ForeignKey(AnsibleTask, related_name='host_results', blank=True, null=True) task = models.ForeignKey(AnsibleTask, related_name='host_results', blank=True, null=True)
...@@ -230,6 +268,27 @@ class AnsibleHostResult(models.Model): ...@@ -230,6 +268,27 @@ class AnsibleHostResult(models.Model):
except Exception as e: except Exception as e:
return {"msg": "deal with ping data failed, %s" % e.message, "data": None} return {"msg": "deal with ping data failed, %s" % e.message, "data": None}
@classmethod
def generate_fake(cls, count=20):
from random import seed, choice
import forgery_py
seed()
for i in range(count):
result = cls(name=forgery_py.name.full_name(),
success=forgery_py.lorem_ipsum.sentence(),
failed=forgery_py.lorem_ipsum.sentence(),
skipped=forgery_py.lorem_ipsum.sentence(),
unreachable=forgery_py.lorem_ipsum.sentence(),
no_host=forgery_py.lorem_ipsum.sentence(),
)
try:
result.task = choice(AnsibleTask.objects.all())
result.save()
logger.debug('Generate fake HostResult: %s' % result.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
......
# ~*~ coding: utf-8 ~*~ # ~*~ coding: utf-8 ~*~
from __future__ import unicode_literals, absolute_import from __future__ import unicode_literals, absolute_import
import logging
from django.db import models from django.db import models
from assets.models import Asset from assets.models import Asset
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
logger = logging.getLogger(__name__)
__all__ = ["CronTable"] __all__ = ["CronTable"]
...@@ -31,4 +35,27 @@ class CronTable(models.Model): ...@@ -31,4 +35,27 @@ class CronTable(models.Model):
@property @property
def describe(self): def describe(self):
return "http://docs.ansible.com/ansible/cron_module.html" return "http://docs.ansible.com/ansible/cron_module.html"
\ No newline at end of file
@classmethod
def generate_fake(cls, count=20):
from random import seed, choice
import forgery_py
seed()
for i in range(count):
cron = cls(name=forgery_py.name.full_name(),
month=str(choice(range(1,13))),
weekday=str(choice(range(0,7))),
day=str(choice(range(1,32))),
hour=str(choice(range(0,24))),
minute=str(choice(range(0,60))),
job=forgery_py.lorem_ipsum.sentence(),
user=forgery_py.name.first_name(),
)
try:
cron.save()
logger.debug('Generate fake cron: %s' % cron.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
\ No newline at end of file
# ~*~ coding: utf-8 ~*~ # ~*~ coding: utf-8 ~*~
from __future__ import unicode_literals, absolute_import from __future__ import unicode_literals, absolute_import
import logging
from jinja2 import Template from jinja2 import Template
from django.db import models from django.db import models
from django.utils import timezone
from assets.models import Asset, AssetGroup from assets.models import Asset, AssetGroup
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
logger = logging.getLogger(__name__)
__all__ = ["HostAlia", "UserAlia", "CmdAlia", "RunasAlia", "Privilege", __all__ = ["HostAlia", "UserAlia", "CmdAlia", "RunasAlia", "Privilege",
"Extra_conf", "Sudo"] "Extra_conf", "Sudo"]
...@@ -17,6 +22,23 @@ class HostAlia(models.Model): ...@@ -17,6 +22,23 @@ class HostAlia(models.Model):
def __unicode__(self): def __unicode__(self):
return self.name return self.name
@classmethod
def generate_fake(cls, count=20):
from random import seed
import forgery_py
seed()
for i in range(count):
hostA = cls(name=forgery_py.name.full_name(),
host_items=forgery_py.lorem_ipsum.sentence(),
)
try:
hostA.save()
logger.debug('Generate fake host alia: %s' % hostA.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
class UserAlia(models.Model): class UserAlia(models.Model):
name = models.CharField(max_length=128, blank=True, null=True, unique=True, verbose_name=_('User_Alias')) name = models.CharField(max_length=128, blank=True, null=True, unique=True, verbose_name=_('User_Alias'))
...@@ -25,6 +47,23 @@ class UserAlia(models.Model): ...@@ -25,6 +47,23 @@ class UserAlia(models.Model):
def __unicode__(self): def __unicode__(self):
return self.name return self.name
@classmethod
def generate_fake(cls, count=20):
from random import seed
import forgery_py
seed()
for i in range(count):
userA = cls(name=forgery_py.name.full_name(),
user_items=forgery_py.lorem_ipsum.sentence(),
)
try:
userA.save()
logger.debug('Generate fake host alia: %s' % userA.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
class CmdAlia(models.Model): class CmdAlia(models.Model):
name = models.CharField(max_length=128, blank=True, null=True, unique=True, verbose_name=_('Command_Alias')) name = models.CharField(max_length=128, blank=True, null=True, unique=True, verbose_name=_('Command_Alias'))
...@@ -33,6 +72,23 @@ class CmdAlia(models.Model): ...@@ -33,6 +72,23 @@ class CmdAlia(models.Model):
def __unicode__(self): def __unicode__(self):
return self.name return self.name
@classmethod
def generate_fake(cls, count=20):
from random import seed
import forgery_py
seed()
for i in range(count):
cmdA = cls(name=forgery_py.name.full_name(),
cmd_items=forgery_py.lorem_ipsum.sentence(),
)
try:
cmdA.save()
logger.debug('Generate fake command alia: %s' % cmdA.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
class RunasAlia(models.Model): class RunasAlia(models.Model):
name = models.CharField(max_length=128, blank=True, null=True, unique=True, verbose_name=_('Runas_Alias')) name = models.CharField(max_length=128, blank=True, null=True, unique=True, verbose_name=_('Runas_Alias'))
...@@ -41,6 +97,23 @@ class RunasAlia(models.Model): ...@@ -41,6 +97,23 @@ class RunasAlia(models.Model):
def __unicode__(self): def __unicode__(self):
return self.name return self.name
@classmethod
def generate_fake(cls, count=20):
from random import seed
import forgery_py
seed()
for i in range(count):
runas = cls(name=forgery_py.name.full_name(),
runas_items=forgery_py.lorem_ipsum.sentence(),
)
try:
runas.save()
logger.debug('Generate fake RunAs alia: %s' % runas.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
class Privilege(models.Model): class Privilege(models.Model):
name = models.CharField(max_length=128, unique=True, verbose_name=_('Name')) name = models.CharField(max_length=128, unique=True, verbose_name=_('Name'))
...@@ -61,6 +134,27 @@ class Privilege(models.Model): ...@@ -61,6 +134,27 @@ class Privilege(models.Model):
def to_tuple(self): def to_tuple(self):
return self.user.name, self.host.name, self.runas.name, self.command.name, self.nopassword return self.user.name, self.host.name, self.runas.name, self.command.name, self.nopassword
@classmethod
def generate_fake(cls, count=20):
from random import seed, choice
import forgery_py
seed()
for i in range(count):
pri = cls(name=forgery_py.name.full_name(),
comment=forgery_py.lorem_ipsum.sentence(),
)
try:
pri.user = choice(UserAlia.objects.all())
pri.host = choice(HostAlia.objects.all())
pri.runas = choice(RunasAlia.objects.all())
pri.command = choice(CmdAlia.objects.all())
pri.save()
logger.debug('Generate fake privileges: %s' % pri.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
class Extra_conf(models.Model): class Extra_conf(models.Model):
line = models.TextField(blank=True, null=True, verbose_name=_('Extra_Item'), line = models.TextField(blank=True, null=True, verbose_name=_('Extra_Item'),
...@@ -80,8 +174,10 @@ class Sudo(models.Model): ...@@ -80,8 +174,10 @@ class Sudo(models.Model):
name = models.CharField(max_length=128, unique=True, verbose_name=_('Name'), name = models.CharField(max_length=128, unique=True, verbose_name=_('Name'),
help_text=_('Name for this sudo')) help_text=_('Name for this sudo'))
created_by = models.CharField(max_length=32, blank=True, verbose_name=_('Created by'), created_time = models.DateTimeField(verbose_name=_('Created Time'), default=timezone.now(),
help_text=_('The create time of this sudo')) 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'))
assets = models.ManyToManyField(Asset, blank=True, related_name='sudos') assets = models.ManyToManyField(Asset, blank=True, related_name='sudos')
asset_groups = models.ManyToManyField(AssetGroup, blank=True, related_name='sudos') asset_groups = models.ManyToManyField(AssetGroup, blank=True, related_name='sudos')
extra_lines = models.ManyToManyField(Extra_conf, related_name='sudos', blank=True) extra_lines = models.ManyToManyField(Extra_conf, related_name='sudos', blank=True)
...@@ -204,4 +300,23 @@ root ALL=(ALL:ALL) ALL ...@@ -204,4 +300,23 @@ root ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives: # See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d #includedir /etc/sudoers.d
""" """
\ No newline at end of file
@classmethod
def generate_fake(cls, count=20):
from random import seed, choice
import forgery_py
seed()
for i in range(count):
sudo = cls(name=forgery_py.name.full_name(),
created_time=timezone.now()
)
try:
sudo.save()
sudo.privilege_items = [choice(Privilege.objects.all())]
sudo.save()
logger.debug('Generate fake cron: %s' % sudo.name)
except Exception as e:
print('Error: %s, continue...' % e.message)
continue
\ No newline at end of file
...@@ -5,7 +5,10 @@ from ansible import * ...@@ -5,7 +5,10 @@ from ansible import *
from cron import * from cron import *
from sudo import * from sudo import *
__all__ = ["generate_fake"]
def generate_fake(): def generate_fake():
for cls in (AssetGroup, IDC, AdminUser, SystemUser, Asset): for cls in (Tasker, AnsiblePlay, AnsibleTask, AnsibleHostResult, CronTable,
HostAlia, UserAlia, CmdAlia, RunasAlia, Privilege, Sudo):
cls.generate_fake() cls.generate_fake()
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment