From 5bbb6232e556106cf189f83debdb903acc926a31 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Fri, 11 Nov 2016 15:48:32 -0600
Subject: [PATCH] Adding nagios/gracedb and hinj robot users and certificates.

---
 .../0010_add_nagios_gracedb_robot_and_cert.py | 61 +++++++++++++++++++
 .../0011_add_O2_hwinj_logger_account.py       | 61 +++++++++++++++++++
 2 files changed, 122 insertions(+)
 create mode 100644 ligoauth/migrations/0010_add_nagios_gracedb_robot_and_cert.py
 create mode 100644 ligoauth/migrations/0011_add_O2_hwinj_logger_account.py

diff --git a/ligoauth/migrations/0010_add_nagios_gracedb_robot_and_cert.py b/ligoauth/migrations/0010_add_nagios_gracedb_robot_and_cert.py
new file mode 100644
index 000000000..7f0873bcf
--- /dev/null
+++ b/ligoauth/migrations/0010_add_nagios_gracedb_robot_and_cert.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+# Default imports
+from __future__ import unicode_literals
+from django.db import migrations, models
+from django.conf import settings
+
+ROBOT = {'username': 'nagios',
+         'first_name': '',
+         'last_name': 'Nagios Monitor',
+         'email': 'admins@phys.uwm.edu',
+         'is_active': True,
+         'is_staff': False,
+         'is_superuser': False
+}
+# Certificate for nagios user on gracedb.
+CERT_SUBJ = '/DC=org/DC=ligo/O=LIGO/OU=Services/CN=nagios/gracedb.cgca.uwm.edu'
+
+def create_robot(apps, schema_editor):
+    LocalUser = apps.get_model('ligoauth','LocalUser')
+    X509Cert = apps.get_model('ligoauth','X509Cert')
+    Group = apps.get_model('auth','Group')
+    lvc_group = Group.objects.get(name=settings.LVC_GROUP)
+
+    # get or create user
+    user, created = LocalUser.objects.get_or_create(username=ROBOT['username'])
+    if created:
+        for key in ROBOT.keys():
+            setattr(user, key, ROBOT[key])
+        user.save()
+
+    # Add user to LVC group.
+    if not lvc_group in user.groups.all():
+        lvc_group.user_set.add(user)
+        lvc_group.save()
+
+    # get or create certificate, add user
+    cert, c_created = X509Cert.objects.get_or_create(subject=CERT_SUBJ)
+    cert.users.add(user)
+    cert.save()
+
+def delete_robot(apps, schema_editor):
+    LocalUser = apps.get_model('ligoauth','LocalUser')
+    X509Cert = apps.get_model('ligoauth','X509Cert')
+
+    # Delete user.
+    LocalUser.objects.get(username=ROBOT['username']).delete()
+
+    # Delete cert.
+    X509Cert.objects.get(subject=CERT_SUBJ).delete()
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ligoauth', '0009_add_pankow_robot_and_cert'),
+    ]
+
+    operations = [
+        migrations.RunPython(create_robot, delete_robot)
+    ]
+
+# End of file
diff --git a/ligoauth/migrations/0011_add_O2_hwinj_logger_account.py b/ligoauth/migrations/0011_add_O2_hwinj_logger_account.py
new file mode 100644
index 000000000..479eb869d
--- /dev/null
+++ b/ligoauth/migrations/0011_add_O2_hwinj_logger_account.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+# Default imports
+from __future__ import unicode_literals
+from django.db import migrations, models
+from django.conf import settings
+
+ROBOT = {'username': 'hinj',
+         'first_name': '',
+         'last_name': 'HWINJ Monitor',
+         'email': 'mhulko@caltech.edu',
+         'is_active': True,
+         'is_staff': False,
+         'is_superuser': False
+}
+# Certificate for nagios user on gracedb.
+CERT_SUBJ = '/DC=org/DC=ligo/O=LIGO/OU=Services/CN=hinj/ldas-grid.ligo.caltech.edu'
+
+def create_robot(apps, schema_editor):
+    LocalUser = apps.get_model('ligoauth','LocalUser')
+    X509Cert = apps.get_model('ligoauth','X509Cert')
+    Group = apps.get_model('auth','Group')
+    lvc_group = Group.objects.get(name=settings.LVC_GROUP)
+
+    # get or create user
+    user, created = LocalUser.objects.get_or_create(username=ROBOT['username'])
+    if created:
+        for key in ROBOT.keys():
+            setattr(user, key, ROBOT[key])
+        user.save()
+
+    # Add user to LVC group.
+    if not lvc_group in user.groups.all():
+        lvc_group.user_set.add(user)
+        lvc_group.save()
+
+    # get or create certificate, add user
+    cert, c_created = X509Cert.objects.get_or_create(subject=CERT_SUBJ)
+    cert.users.add(user)
+    cert.save()
+
+def delete_robot(apps, schema_editor):
+    LocalUser = apps.get_model('ligoauth','LocalUser')
+    X509Cert = apps.get_model('ligoauth','X509Cert')
+
+    # Delete user.
+    LocalUser.objects.get(username=ROBOT['username']).delete()
+
+    # Delete cert.
+    X509Cert.objects.get(subject=CERT_SUBJ).delete()
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ligoauth', '0010_add_nagios_gracedb_robot_and_cert'),
+    ]
+
+    operations = [
+        migrations.RunPython(create_robot, delete_robot)
+    ]
+
+# End of file
-- 
GitLab