From 7da264842ae56376b025d52a8aa584c9dd93297f Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Mon, 3 Feb 2020 04:09:22 +0000 Subject: [PATCH] cleanup migrations --- .../accounts/migrations/0001_initial.py | 44 +++++ .../agents/migrations/0001_initial.py | 54 +++++ .../checks/migrations/0001_initial.py | 187 ++++++++++++++++++ .../clients/migrations/0001_initial.py | 32 +++ .../software/migrations/0001_initial.py | 45 +++++ .../winupdate/migrations/0001_initial.py | 54 +++++ 6 files changed, 416 insertions(+) create mode 100644 api/tacticalrmm/accounts/migrations/0001_initial.py create mode 100644 api/tacticalrmm/agents/migrations/0001_initial.py create mode 100644 api/tacticalrmm/checks/migrations/0001_initial.py create mode 100644 api/tacticalrmm/clients/migrations/0001_initial.py create mode 100644 api/tacticalrmm/software/migrations/0001_initial.py create mode 100644 api/tacticalrmm/winupdate/migrations/0001_initial.py diff --git a/api/tacticalrmm/accounts/migrations/0001_initial.py b/api/tacticalrmm/accounts/migrations/0001_initial.py new file mode 100644 index 00000000..d75a8505 --- /dev/null +++ b/api/tacticalrmm/accounts/migrations/0001_initial.py @@ -0,0 +1,44 @@ +# Generated by Django 3.0.2 on 2020-02-03 04:04 + +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0011_update_proxy_permissions'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('is_active', models.BooleanField(default=True)), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/api/tacticalrmm/agents/migrations/0001_initial.py b/api/tacticalrmm/agents/migrations/0001_initial.py new file mode 100644 index 00000000..780085ca --- /dev/null +++ b/api/tacticalrmm/agents/migrations/0001_initial.py @@ -0,0 +1,54 @@ +# Generated by Django 3.0.2 on 2020-02-03 04:04 + +import django.contrib.postgres.fields.jsonb +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Agent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('version', models.CharField(default='0.1.0', max_length=255)), + ('operating_system', models.CharField(max_length=255, null=True)), + ('plat', models.CharField(max_length=255, null=True)), + ('plat_release', models.CharField(max_length=255, null=True)), + ('hostname', models.CharField(max_length=255)), + ('local_ip', models.TextField(null=True)), + ('agent_id', models.CharField(max_length=200)), + ('last_seen', models.DateTimeField(auto_now=True)), + ('services', django.contrib.postgres.fields.jsonb.JSONField(null=True)), + ('public_ip', models.CharField(max_length=255, null=True)), + ('cpu_load', models.FloatField(null=True)), + ('total_ram', models.IntegerField(null=True)), + ('used_ram', models.IntegerField(null=True)), + ('disks', django.contrib.postgres.fields.jsonb.JSONField(null=True)), + ('boot_time', models.FloatField(null=True)), + ('logged_in_username', models.CharField(max_length=200, null=True)), + ('cpu_info', django.contrib.postgres.fields.jsonb.JSONField(null=True)), + ('client', models.CharField(max_length=200)), + ('antivirus', models.CharField(default='n/a', max_length=255)), + ('site', models.CharField(max_length=150)), + ('monitoring_type', models.CharField(max_length=30)), + ('description', models.CharField(max_length=255, null=True)), + ('mesh_node_id', models.CharField(max_length=255, null=True)), + ('overdue_email_alert', models.BooleanField(default=False)), + ('overdue_text_alert', models.BooleanField(default=False)), + ('overdue_time', models.PositiveIntegerField(default=30)), + ('uninstall_pending', models.BooleanField(default=False)), + ('uninstall_inprogress', models.BooleanField(default=False)), + ('ping_check_interval', models.PositiveIntegerField(default=300)), + ('needs_reboot', models.BooleanField(default=False)), + ('managed_by_wsus', models.BooleanField(default=False)), + ('is_updating', models.BooleanField(default=False)), + ('choco_installed', models.BooleanField(default=False)), + ], + ), + ] diff --git a/api/tacticalrmm/checks/migrations/0001_initial.py b/api/tacticalrmm/checks/migrations/0001_initial.py new file mode 100644 index 00000000..b1e58b84 --- /dev/null +++ b/api/tacticalrmm/checks/migrations/0001_initial.py @@ -0,0 +1,187 @@ +# Generated by Django 3.0.2 on 2020-02-03 04:04 + +import django.contrib.postgres.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('agents', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='CpuLoadCheck', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('check_type', models.CharField(choices=[('diskspace', 'Disk Space Check'), ('ping', 'Ping Check'), ('cpuload', 'CPU Load Check'), ('memory', 'Memory Check'), ('winsvc', 'Win Service Check'), ('script', 'Script Check')], default='cpuload', max_length=30)), + ('cpuload', models.PositiveIntegerField(default=85)), + ('status', models.CharField(choices=[('passing', 'Passing'), ('failing', 'Failing'), ('pending', 'Pending')], default='pending', max_length=30)), + ('more_info', models.TextField(blank=True, null=True)), + ('email_alert', models.BooleanField(default=False)), + ('text_alert', models.BooleanField(default=False)), + ('last_run', models.DateTimeField(auto_now=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cpuloadchecks', to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='DiskCheck', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('check_type', models.CharField(choices=[('diskspace', 'Disk Space Check'), ('ping', 'Ping Check'), ('cpuload', 'CPU Load Check'), ('memory', 'Memory Check'), ('winsvc', 'Win Service Check'), ('script', 'Script Check')], default='diskspace', max_length=30)), + ('disk', models.CharField(blank=True, max_length=2, null=True)), + ('threshold', models.PositiveIntegerField(blank=True, null=True)), + ('status', models.CharField(choices=[('passing', 'Passing'), ('failing', 'Failing'), ('pending', 'Pending')], default='pending', max_length=30)), + ('email_alert', models.BooleanField(default=False)), + ('text_alert', models.BooleanField(default=False)), + ('more_info', models.TextField(blank=True, null=True)), + ('last_run', models.DateTimeField(auto_now=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='diskchecks', to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='MemCheck', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('check_type', models.CharField(choices=[('diskspace', 'Disk Space Check'), ('ping', 'Ping Check'), ('cpuload', 'CPU Load Check'), ('memory', 'Memory Check'), ('winsvc', 'Win Service Check'), ('script', 'Script Check')], default='memory', max_length=30)), + ('threshold', models.PositiveIntegerField(default=75)), + ('status', models.CharField(choices=[('passing', 'Passing'), ('failing', 'Failing'), ('pending', 'Pending')], default='pending', max_length=30)), + ('more_info', models.TextField(blank=True, null=True)), + ('email_alert', models.BooleanField(default=False)), + ('text_alert', models.BooleanField(default=False)), + ('last_run', models.DateTimeField(auto_now=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memchecks', to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='PingCheck', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('check_type', models.CharField(choices=[('diskspace', 'Disk Space Check'), ('ping', 'Ping Check'), ('cpuload', 'CPU Load Check'), ('memory', 'Memory Check'), ('winsvc', 'Win Service Check'), ('script', 'Script Check')], default='ping', max_length=30)), + ('ip', models.CharField(max_length=255)), + ('name', models.CharField(blank=True, max_length=255, null=True)), + ('failures', models.PositiveIntegerField(default=5)), + ('status', models.CharField(choices=[('passing', 'Passing'), ('failing', 'Failing'), ('pending', 'Pending')], default='pending', max_length=30)), + ('failure_count', models.IntegerField(default=0)), + ('email_alert', models.BooleanField(default=False)), + ('text_alert', models.BooleanField(default=False)), + ('more_info', models.TextField(blank=True, null=True)), + ('last_run', models.DateTimeField(auto_now=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pingchecks', to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='Script', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('description', models.TextField(blank=True, null=True)), + ('filename', models.CharField(max_length=255)), + ('shell', models.CharField(choices=[('powershell', 'Powershell'), ('batch', 'Batch'), ('python', 'Python')], default='powershell', max_length=100)), + ], + ), + migrations.CreateModel( + name='ScriptCheck', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('check_type', models.CharField(choices=[('diskspace', 'Disk Space Check'), ('ping', 'Ping Check'), ('cpuload', 'CPU Load Check'), ('memory', 'Memory Check'), ('winsvc', 'Win Service Check'), ('script', 'Script Check')], default='script', max_length=30)), + ('timeout', models.PositiveIntegerField(default=120)), + ('failures', models.PositiveIntegerField(default=5)), + ('status', models.CharField(choices=[('passing', 'Passing'), ('failing', 'Failing'), ('pending', 'Pending')], default='pending', max_length=30)), + ('failure_count', models.IntegerField(default=0)), + ('email_alert', models.BooleanField(default=False)), + ('text_alert', models.BooleanField(default=False)), + ('more_info', models.TextField(blank=True, null=True)), + ('last_run', models.DateTimeField(auto_now=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scriptchecks', to='agents.Agent')), + ('script', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='script', to='checks.Script')), + ], + ), + migrations.CreateModel( + name='WinServiceCheck', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('check_type', models.CharField(choices=[('diskspace', 'Disk Space Check'), ('ping', 'Ping Check'), ('cpuload', 'CPU Load Check'), ('memory', 'Memory Check'), ('winsvc', 'Win Service Check'), ('script', 'Script Check')], default='winsvc', max_length=30)), + ('svc_name', models.CharField(max_length=255)), + ('svc_display_name', models.CharField(max_length=255)), + ('pass_if_start_pending', models.BooleanField(default=False)), + ('restart_if_stopped', models.BooleanField(default=False)), + ('failures', models.PositiveIntegerField(default=1)), + ('failure_count', models.IntegerField(default=0)), + ('status', models.CharField(choices=[('passing', 'Passing'), ('failing', 'Failing'), ('pending', 'Pending')], default='pending', max_length=30)), + ('more_info', models.TextField(blank=True, null=True)), + ('email_alert', models.BooleanField(default=False)), + ('text_alert', models.BooleanField(default=False)), + ('last_run', models.DateTimeField(auto_now=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='winservicechecks', to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='WinServiceCheckEmail', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sent', models.DateTimeField(auto_now=True)), + ('email', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checks.WinServiceCheck')), + ], + ), + migrations.CreateModel( + name='ScriptCheckEmail', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sent', models.DateTimeField(auto_now=True)), + ('email', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checks.ScriptCheck')), + ], + ), + migrations.CreateModel( + name='PingCheckEmail', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sent', models.DateTimeField(auto_now=True)), + ('email', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checks.PingCheck')), + ], + ), + migrations.CreateModel( + name='MemoryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mem_history', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(blank=True), default=list, null=True, size=None)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='MemCheckEmail', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sent', models.DateTimeField(auto_now=True)), + ('email', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checks.MemCheck')), + ], + ), + migrations.CreateModel( + name='DiskCheckEmail', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sent', models.DateTimeField(auto_now=True)), + ('email', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checks.DiskCheck')), + ], + ), + migrations.CreateModel( + name='CpuLoadCheckEmail', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sent', models.DateTimeField(auto_now=True)), + ('email', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checks.CpuLoadCheck')), + ], + ), + migrations.CreateModel( + name='CpuHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cpu_history', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(blank=True), default=list, null=True, size=None)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cpuhistory', to='agents.Agent')), + ], + ), + ] diff --git a/api/tacticalrmm/clients/migrations/0001_initial.py b/api/tacticalrmm/clients/migrations/0001_initial.py new file mode 100644 index 00000000..c723effe --- /dev/null +++ b/api/tacticalrmm/clients/migrations/0001_initial.py @@ -0,0 +1,32 @@ +# Generated by Django 3.0.2 on 2020-02-03 04:04 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Client', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('client', models.CharField(max_length=255)), + ('checks_failing', models.BooleanField(default=False)), + ], + ), + migrations.CreateModel( + name='Site', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('site', models.CharField(max_length=255)), + ('checks_failing', models.BooleanField(default=False)), + ('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sites', to='clients.Client')), + ], + ), + ] diff --git a/api/tacticalrmm/software/migrations/0001_initial.py b/api/tacticalrmm/software/migrations/0001_initial.py new file mode 100644 index 00000000..c75e9fdb --- /dev/null +++ b/api/tacticalrmm/software/migrations/0001_initial.py @@ -0,0 +1,45 @@ +# Generated by Django 3.0.2 on 2020-02-03 04:04 + +import django.contrib.postgres.fields.jsonb +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('agents', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='ChocoSoftware', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('chocos', django.contrib.postgres.fields.jsonb.JSONField()), + ('added', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='InstalledSoftware', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('software', django.contrib.postgres.fields.jsonb.JSONField()), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='ChocoLog', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ('version', models.CharField(max_length=255)), + ('message', models.TextField()), + ('installed', models.BooleanField(default=False)), + ('time', models.DateTimeField(auto_now_add=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chocolog', to='agents.Agent')), + ], + ), + ] diff --git a/api/tacticalrmm/winupdate/migrations/0001_initial.py b/api/tacticalrmm/winupdate/migrations/0001_initial.py new file mode 100644 index 00000000..062787c2 --- /dev/null +++ b/api/tacticalrmm/winupdate/migrations/0001_initial.py @@ -0,0 +1,54 @@ +# Generated by Django 3.0.2 on 2020-02-03 04:04 + +import django.contrib.postgres.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('agents', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='WinUpdatePolicy', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('critical', models.CharField(choices=[('manual', 'Manual'), ('approve', 'Approve'), ('ignore', 'Ignore')], default='manual', max_length=100)), + ('important', models.CharField(choices=[('manual', 'Manual'), ('approve', 'Approve'), ('ignore', 'Ignore')], default='manual', max_length=100)), + ('moderate', models.CharField(choices=[('manual', 'Manual'), ('approve', 'Approve'), ('ignore', 'Ignore')], default='manual', max_length=100)), + ('low', models.CharField(choices=[('manual', 'Manual'), ('approve', 'Approve'), ('ignore', 'Ignore')], default='manual', max_length=100)), + ('other', models.CharField(choices=[('manual', 'Manual'), ('approve', 'Approve'), ('ignore', 'Ignore')], default='manual', max_length=100)), + ('run_time_hour', models.IntegerField(choices=[(0, '12 AM'), (1, ' 1 AM'), (2, ' 2 AM'), (3, ' 3 AM'), (4, ' 4 AM'), (5, ' 5 AM'), (6, ' 6 AM'), (7, ' 7 AM'), (8, ' 8 AM'), (9, ' 9 AM'), (10, '10 AM'), (11, '11 AM'), (12, '12 PM'), (13, ' 1 PM'), (14, ' 2 PM'), (15, ' 3 PM'), (16, ' 4 PM'), (17, ' 5 PM'), (18, ' 6 PM'), (19, ' 7 PM'), (20, ' 8 PM'), (21, ' 9 PM'), (22, '10 PM'), (23, '11 PM')], default=3)), + ('run_time_days', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(blank=True), default=list, null=True, size=None)), + ('reboot_after_install', models.CharField(choices=[('never', 'Never'), ('required', 'When Required'), ('always', 'Always')], default='required', max_length=50)), + ('reprocess_failed', models.BooleanField(default=False)), + ('reprocess_failed_times', models.PositiveIntegerField(default=5)), + ('email_if_fail', models.BooleanField(default=False)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='winupdatepolicy', to='agents.Agent')), + ], + ), + migrations.CreateModel( + name='WinUpdate', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('guid', models.CharField(max_length=255, null=True)), + ('kb', models.CharField(max_length=100, null=True)), + ('mandatory', models.BooleanField(default=False)), + ('title', models.TextField(null=True)), + ('needs_reboot', models.BooleanField(default=False)), + ('installed', models.BooleanField(default=False)), + ('downloaded', models.BooleanField(default=False)), + ('description', models.TextField(null=True)), + ('severity', models.CharField(blank=True, max_length=255, null=True)), + ('action', models.CharField(choices=[('inherit', 'Inherit'), ('approve', 'Approve'), ('ignore', 'Ignore'), ('nothing', 'Do Nothing')], default='nothing', max_length=100)), + ('result', models.CharField(default='n/a', max_length=255)), + ('date_installed', models.DateTimeField(null=True)), + ('agent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='winupdates', to='agents.Agent')), + ], + ), + ]