mirror of https://github.com/jumpserver/jumpserver
324 lines
21 KiB
Python
324 lines
21 KiB
Python
# Generated by Django 4.1.13 on 2024-05-09 03:16
|
|
|
|
import uuid
|
|
|
|
import django.db.models.deletion
|
|
from django.db import migrations, models
|
|
|
|
import assets.models.asset.common
|
|
import assets.models.node
|
|
import common.db.fields
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='Asset',
|
|
fields=[
|
|
('created_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Created by')),
|
|
('updated_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Updated by')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
|
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
|
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
|
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
|
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
|
('connectivity', models.CharField(choices=[('-', 'Unknown'), ('ok', 'OK'), ('err', 'Error')], default='-', max_length=16, verbose_name='Connectivity')),
|
|
('date_verified', models.DateTimeField(null=True, verbose_name='Date verified')),
|
|
('name', models.CharField(max_length=128, verbose_name='Name')),
|
|
('address', models.CharField(db_index=True, max_length=767, verbose_name='Address')),
|
|
('is_active', models.BooleanField(default=True, verbose_name='Active')),
|
|
('gathered_info', models.JSONField(blank=True, default=dict, verbose_name='Gathered info')),
|
|
('custom_info', models.JSONField(default=dict, verbose_name='Custom info')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Asset',
|
|
'ordering': [],
|
|
'permissions': [('refresh_assethardwareinfo', 'Can refresh asset hardware info'), ('test_assetconnectivity', 'Can test asset connectivity'), ('match_asset', 'Can match asset'), ('change_assetnodes', 'Can change asset nodes')],
|
|
},
|
|
bases=(assets.models.asset.common.NodesRelationMixin, assets.models.asset.common.JSONFilterMixin, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name='AutomationExecution',
|
|
fields=[
|
|
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
|
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
|
('status', models.CharField(default='pending', max_length=16, verbose_name='Status')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
|
|
('date_start', models.DateTimeField(db_index=True, null=True, verbose_name='Date start')),
|
|
('date_finished', models.DateTimeField(null=True, verbose_name='Date finished')),
|
|
('snapshot', common.db.fields.EncryptJsonDictTextField(blank=True, default=dict, null=True, verbose_name='Automation snapshot')),
|
|
('trigger', models.CharField(choices=[('manual', 'Manual trigger'), ('timing', 'Timing trigger')], default='manual', max_length=128, verbose_name='Trigger mode')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Automation task execution',
|
|
'ordering': ('org_id', '-date_start'),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='BaseAutomation',
|
|
fields=[
|
|
('created_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Created by')),
|
|
('updated_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Updated by')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
|
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
|
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
|
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
|
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
|
('name', models.CharField(max_length=128, verbose_name='Name')),
|
|
('is_periodic', models.BooleanField(default=False, verbose_name='Periodic run')),
|
|
('interval', models.IntegerField(blank=True, default=24, null=True, verbose_name='Interval')),
|
|
('crontab', models.CharField(blank=True, max_length=128, null=True, verbose_name='Crontab')),
|
|
('accounts', models.JSONField(default=list, verbose_name='Accounts')),
|
|
('type', models.CharField(max_length=16, verbose_name='Type')),
|
|
('is_active', models.BooleanField(default=True, verbose_name='Is active')),
|
|
('params', models.JSONField(default=dict, verbose_name='Parameters')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Automation task',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Domain',
|
|
fields=[
|
|
('created_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Created by')),
|
|
('updated_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Updated by')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
|
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
|
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
|
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
|
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
|
('name', models.CharField(max_length=128, verbose_name='Name')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Zone',
|
|
'ordering': ('name',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Node',
|
|
fields=[
|
|
('created_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Created by')),
|
|
('updated_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Updated by')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
|
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
|
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
|
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
|
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
|
('key', models.CharField(max_length=64, unique=True, verbose_name='Key')),
|
|
('value', models.CharField(max_length=128, verbose_name='Value')),
|
|
('full_value', models.CharField(default='', max_length=4096, verbose_name='Full value')),
|
|
('child_mark', models.IntegerField(default=0)),
|
|
('date_create', models.DateTimeField(auto_now_add=True)),
|
|
('parent_key', models.CharField(db_index=True, default='', max_length=64, verbose_name='Parent key')),
|
|
('assets_amount', models.IntegerField(default=0)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Node',
|
|
'ordering': ['parent_key', 'value'],
|
|
'permissions': [('match_node', 'Can match node')],
|
|
},
|
|
bases=(models.Model, assets.models.node.SomeNodesMixin, assets.models.node.FamilyMixin, assets.models.node.NodeAssetsMixin),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Platform',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Created by')),
|
|
('updated_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Updated by')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
|
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
|
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
|
('name', models.SlugField(allow_unicode=True, unique=True, verbose_name='Name')),
|
|
('category', models.CharField(default='host', max_length=32, verbose_name='Category')),
|
|
('type', models.CharField(default='linux', max_length=32, verbose_name='Type')),
|
|
('meta', common.db.fields.JsonDictTextField(blank=True, null=True, verbose_name='Meta')),
|
|
('internal', models.BooleanField(default=False, verbose_name='Internal')),
|
|
('charset', models.CharField(choices=[('utf-8', 'UTF-8'), ('gbk', 'GBK')], default='utf-8', max_length=8, verbose_name='Charset')),
|
|
('domain_enabled', models.BooleanField(default=True, verbose_name='Gateway enabled')),
|
|
('su_enabled', models.BooleanField(default=False, verbose_name='Su enabled')),
|
|
('su_method', models.CharField(blank=True, max_length=32, null=True, verbose_name='Su method')),
|
|
('custom_fields', models.JSONField(default=list, null=True, verbose_name='Custom fields')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Platform',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Cloud',
|
|
fields=[
|
|
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Cloud',
|
|
},
|
|
bases=('assets.asset',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Custom',
|
|
fields=[
|
|
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Custom asset',
|
|
},
|
|
bases=('assets.asset',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Database',
|
|
fields=[
|
|
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
|
('db_name', models.CharField(blank=True, max_length=1024, verbose_name='Database')),
|
|
('use_ssl', models.BooleanField(default=False, verbose_name='Use SSL')),
|
|
('ca_cert', common.db.fields.EncryptTextField(blank=True, verbose_name='CA cert')),
|
|
('client_cert', common.db.fields.EncryptTextField(blank=True, verbose_name='Client cert')),
|
|
('client_key', common.db.fields.EncryptTextField(blank=True, verbose_name='Client key')),
|
|
('allow_invalid_cert', models.BooleanField(default=False, verbose_name='Allow invalid cert')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Database',
|
|
},
|
|
bases=('assets.asset',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Device',
|
|
fields=[
|
|
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Device',
|
|
},
|
|
bases=('assets.asset',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='GPT',
|
|
fields=[
|
|
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
|
('proxy', models.CharField(blank=True, default='', max_length=128, verbose_name='Proxy')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Web',
|
|
},
|
|
bases=('assets.asset',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Host',
|
|
fields=[
|
|
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Host',
|
|
},
|
|
bases=('assets.asset',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Web',
|
|
fields=[
|
|
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
|
('autofill', models.CharField(choices=[('no', 'Disabled'), ('basic', 'Basic'), ('script', 'Script')], default='basic', max_length=16, verbose_name='Autofill')),
|
|
('username_selector', models.CharField(blank=True, default='', max_length=128, verbose_name='Username selector')),
|
|
('password_selector', models.CharField(blank=True, default='', max_length=128, verbose_name='Password selector')),
|
|
('submit_selector', models.CharField(blank=True, default='', max_length=128, verbose_name='Submit selector')),
|
|
('script', models.JSONField(blank=True, default=list, verbose_name='Script')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Web',
|
|
},
|
|
bases=('assets.asset',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Protocol',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=32, verbose_name='Name')),
|
|
('port', models.IntegerField(verbose_name='Port')),
|
|
('asset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='protocols', to='assets.asset', verbose_name='Asset')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='PlatformProtocol',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=32, verbose_name='Name')),
|
|
('port', models.IntegerField(verbose_name='Port')),
|
|
('primary', models.BooleanField(default=False, verbose_name='Primary')),
|
|
('required', models.BooleanField(default=False, verbose_name='Required')),
|
|
('default', models.BooleanField(default=False, verbose_name='Default')),
|
|
('public', models.BooleanField(default=True, verbose_name='Public')),
|
|
('setting', models.JSONField(default=dict, verbose_name='Setting')),
|
|
('platform', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='protocols', to='assets.platform')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='PlatformAutomation',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('ansible_enabled', models.BooleanField(default=False, verbose_name='Enabled')),
|
|
('ansible_config', models.JSONField(default=dict, verbose_name='Ansible config')),
|
|
('ping_enabled', models.BooleanField(default=False, verbose_name='Ping enabled')),
|
|
('ping_method', models.CharField(blank=True, max_length=32, null=True, verbose_name='Ping method')),
|
|
('ping_params', models.JSONField(default=dict, verbose_name='Ping params')),
|
|
('gather_facts_enabled', models.BooleanField(default=False, verbose_name='Gather facts enabled')),
|
|
('gather_facts_method', models.TextField(blank=True, max_length=32, null=True, verbose_name='Gather facts method')),
|
|
('gather_facts_params', models.JSONField(default=dict, verbose_name='Gather facts params')),
|
|
('change_secret_enabled', models.BooleanField(default=False, verbose_name='Change secret enabled')),
|
|
('change_secret_method', models.TextField(blank=True, max_length=32, null=True, verbose_name='Change secret method')),
|
|
('change_secret_params', models.JSONField(default=dict, verbose_name='Change secret params')),
|
|
('push_account_enabled', models.BooleanField(default=False, verbose_name='Push account enabled')),
|
|
('push_account_method', models.TextField(blank=True, max_length=32, null=True, verbose_name='Push account method')),
|
|
('push_account_params', models.JSONField(default=dict, verbose_name='Push account params')),
|
|
('verify_account_enabled', models.BooleanField(default=False, verbose_name='Verify account enabled')),
|
|
('verify_account_method', models.TextField(blank=True, max_length=32, null=True, verbose_name='Verify account method')),
|
|
('verify_account_params', models.JSONField(default=dict, verbose_name='Verify account params')),
|
|
('gather_accounts_enabled', models.BooleanField(default=False, verbose_name='Gather facts enabled')),
|
|
('gather_accounts_method', models.TextField(blank=True, max_length=32, null=True, verbose_name='Gather facts method')),
|
|
('gather_accounts_params', models.JSONField(default=dict, verbose_name='Gather facts params')),
|
|
('remove_account_enabled', models.BooleanField(default=False, verbose_name='Remove account enabled')),
|
|
('remove_account_method', models.TextField(blank=True, max_length=32, null=True, verbose_name='Remove account method')),
|
|
('remove_account_params', models.JSONField(default=dict, verbose_name='Remove account params')),
|
|
('platform', models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='automation', to='assets.platform')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='Label',
|
|
fields=[
|
|
('created_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Created by')),
|
|
('updated_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Updated by')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
|
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
|
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
|
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
|
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
|
('name', models.CharField(max_length=128, verbose_name='Name')),
|
|
('value', models.CharField(max_length=128, verbose_name='Value')),
|
|
('category', models.CharField(choices=[('S', 'System'), ('U', 'User')], default='U', max_length=128, verbose_name='Category')),
|
|
('is_active', models.BooleanField(default=True, verbose_name='Is active')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Label',
|
|
'db_table': 'assets_label',
|
|
'unique_together': {('name', 'value', 'org_id')},
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='FavoriteAsset',
|
|
fields=[
|
|
('created_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Created by')),
|
|
('updated_by', models.CharField(blank=True, max_length=128, null=True, verbose_name='Updated by')),
|
|
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
|
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
|
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
|
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
|
('asset', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assets.asset')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Favorite asset',
|
|
},
|
|
),
|
|
]
|