diff --git a/ligoauth/migrations/0013_update_bayeswave_robot.py b/ligoauth/migrations/0013_update_bayeswave_robot.py index 56d935307a49a272124d3aa664b7f37110508e27..fd6875229fc784fbd5faf49fbe8c7e859e7cf5a2 100644 --- a/ligoauth/migrations/0013_update_bayeswave_robot.py +++ b/ligoauth/migrations/0013_update_bayeswave_robot.py @@ -29,12 +29,11 @@ def create_robots(apps, schema_editor): cert.save() # Delete old certs. - for oldcert in entry['oldcert']: - try: - cert = X509Cert.objects.get(subject=oldcert) - cert.delete() - except: - pass + try: + cert = X509Cert.objects.get(subject=entry['oldcert']) + cert.delete() + except: + pass def delete_robots(apps, schema_editor): LocalUser = apps.get_model('ligoauth','LocalUser') @@ -47,13 +46,15 @@ def delete_robots(apps, schema_editor): user.save() # Create oldcerts, add to user - for oldcert in entry['oldcert']: - cert, created = X509Cert.objects.get_or_create(subject=oldcert) - cert.users.add(user) - cert.save() + cert, created = X509Cert.objects.get_or_create(subject=entry['oldcert']) + cert.users.add(user) + cert.save() # Delete newcert. - X509Cert.objects.get(subject=entry['newcert']).delete() + try: + X509Cert.objects.get(subject=entry['newcert']).delete() + except: + pass class Migration(migrations.Migration): diff --git a/ligoauth/migrations/0015_update_bayestar_robot.py b/ligoauth/migrations/0015_update_bayestar_robot.py new file mode 100644 index 0000000000000000000000000000000000000000..5391b73b00fb1a14b3e5d87aafa66d1573254206 --- /dev/null +++ b/ligoauth/migrations/0015_update_bayestar_robot.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# Default imports +from __future__ import unicode_literals +from django.db import migrations, models +from django.conf import settings + +ROBOTS = [{'username': 'bayestar-mic', + 'newcert': '/DC=org/DC=ligo/O=LIGO/OU=Services/CN=Online_CBC_BAYESTAR_O3_Preview/node746.cluster.ldas.cit', + 'oldcert': '/DC=org/DC=ligo/O=LIGO/OU=Services/CN=bayestar-mic/node529.cluster.ldas.cit', + 'newemail': 'leo.singer@ligo.org', + 'oldemail': 'lsinger@caltech.edu', + }, +] + +def create_robots(apps, schema_editor): + LocalUser = apps.get_model('ligoauth','LocalUser') + X509Cert = apps.get_model('ligoauth','X509Cert') + + # Get/create new user, get/create new cert, associate user with cert. + for entry in ROBOTS: + # get user, update email + user = LocalUser.objects.get(username=entry['username']) + user.email = entry['newemail'] + user.save() + + # get or create certificate, add user + cert, c_created = X509Cert.objects.get_or_create(subject=entry['newcert']) + cert.users.add(user) + cert.save() + + # Delete old certs. + try: + cert = X509Cert.objects.get(subject=entry['oldcert']) + cert.delete() + except: + pass + +def delete_robots(apps, schema_editor): + LocalUser = apps.get_model('ligoauth','LocalUser') + X509Cert = apps.get_model('ligoauth','X509Cert') + + for entry in ROBOTS: + # revert email + user = LocalUser.objects.get(username=entry['username']) + user.email = entry['oldemail'] + user.save() + + # Create oldcerts, add to user + cert, created = X509Cert.objects.get_or_create(subject=entry['oldcert']) + cert.users.add(user) + cert.save() + + # Delete newcert. + try: + X509Cert.objects.get(subject=entry['newcert']).delete() + except: + pass + +class Migration(migrations.Migration): + + dependencies = [ + ('ligoauth', '0014_update_lib_robot'), + ] + + operations = [ + migrations.RunPython(create_robots, delete_robots) + ] + +# End of file