mirror of https://github.com/jumpserver/jumpserver
为模型生成fake数据
parent
806d38bbb2
commit
3eb8a702c8
|
@ -1,3 +1,4 @@
|
||||||
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):
|
||||||
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):
|
||||||
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):
|
||||||
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):
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
# ~*~ 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):
|
||||||
|
|
||||||
@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"
|
||||||
|
|
||||||
|
@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
|
|
@ -1,11 +1,16 @@
|
||||||
# ~*~ 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):
|
||||||
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):
|
||||||
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):
|
||||||
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):
|
||||||
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):
|
||||||
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):
|
||||||
|
|
||||||
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
|
||||||
# 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
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@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
|
|
@ -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()
|
Loading…
Reference in New Issue