Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
0011_add_O2_hwinj_logger_account.py 1.76 KiB
# -*- 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