about summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2024-02-29 19:39:48 +0000
committerArun Isaac2024-03-01 11:16:12 +0000
commitc032c737b5d2d791d388618e3c79403d3a16fe21 (patch)
tree1c785464c7d80584453e5937eb0cf65ec08db684
parentbb39c3b5800953197cc6ffa3f99273b537d347a3 (diff)
downloadgn-machines-c032c737b5d2d791d388618e3c79403d3a16fe21.tar.gz
Add gn-auth to production genenetwork service.
* genenetwork/services/genenetwork.scm: Import gn-auth from (gn
packages genenetwork).
*
genenetwork/services/genenetwork.scm (<genenetwork-configuration>)[gn-auth,
gn-auth-port, gn-auth-secrets]: New fields.

* genenetwork/services/genenetwork.scm (genenetwork-gunicorn-apps):
Add gn-auth gunicorn app.
-rw-r--r--genenetwork/services/genenetwork.scm48
1 files changed, 43 insertions, 5 deletions
diff --git a/genenetwork/services/genenetwork.scm b/genenetwork/services/genenetwork.scm
index ce930c0..f5d1e01 100644
--- a/genenetwork/services/genenetwork.scm
+++ b/genenetwork/services/genenetwork.scm
@@ -18,7 +18,7 @@
 ;;; <https://www.gnu.org/licenses/>.
 
 (define-module (genenetwork services genenetwork)
-  #:use-module ((gn packages genenetwork) #:select (genenetwork2 genenetwork3))
+  #:use-module ((gn packages genenetwork) #:select (genenetwork2 genenetwork3 gn-auth))
   #:use-module ((gnu packages admin) #:select (shadow))
   #:use-module (gnu services)
   #:use-module (gnu services web)
@@ -57,12 +57,16 @@
                 (default genenetwork2))
   (genenetwork3 genenetwork-configuration-genenetwork3
                 (default genenetwork3))
+  (gn-auth genenetwork-configuration-gn-auth
+           (default gn-auth))
   (server-name genenetwork-configuration-server-name
                (default "genenetwork.org"))
   (gn2-port genenetwork-configuration-gn2-port
             (default 8082))
   (gn3-port genenetwork-configuration-gn3-port
             (default 8083))
+  (gn-auth-port genenetwork-configuration-gn-auth-port
+                (default 8084))
   (sql-uri genenetwork-configuration-sql-uri
            (default "mysql://username:password@localhost/database"))
   (auth-db genenetwork-configuration-auth-db
@@ -78,7 +82,9 @@
   (gn2-secrets genenetwork-configuration-gn2-secrets
                (default "/etc/genenetwork/gn2-secrets.py"))
   (gn3-secrets genenetwork-configuration-gn3-secrets
-               (default "/etc/genenetwork/gn3-secrets.py")))
+               (default "/etc/genenetwork/gn3-secrets.py"))
+  (gn-auth-secrets genenetwork-configuration-gn-auth-secrets
+                   (default "/etc/genenetwork/gn-auth-secrets.py")))
 
 (define %genenetwork-accounts
   (list (user-group
@@ -135,7 +141,7 @@ G-expressions or numbers."
 described by @var{config}, a @code{<genenetwork-configuration>}
 object."
   (match-record config <genenetwork-configuration>
-    (genenetwork2 genenetwork3 server-name gn2-port gn3-port sql-uri auth-db xapian-db genotype-files sparql-endpoint gn3-data-directory gn2-secrets gn3-secrets)
+    (genenetwork2 genenetwork3 gn-auth server-name gn2-port gn3-port gn-auth-port sql-uri auth-db xapian-db genotype-files sparql-endpoint gn3-data-directory gn2-secrets gn3-secrets gn-auth-secrets)
     ;; If we mapped only the mysqld.sock socket file, it would break
     ;; when the external mysqld server is restarted.
     (let* ((database-mapping (file-system-mapping
@@ -163,7 +169,11 @@ object."
                                        ("DATA_DIR" ,gn3-data-directory)
                                        ("SPARQL_ENDPOINT" ,sparql-endpoint)
                                        ("SQL_URI" ,sql-uri)
-                                       ("XAPIAN_DB_PATH" ,xapian-db))))))
+                                       ("XAPIAN_DB_PATH" ,xapian-db)))))
+           (gn-auth-conf (computed-file "gn-auth.conf"
+                                        (configuration-file-gexp
+                                         `(("AUTH_DB" ,auth-db)
+                                           ("GN_AUTH_SECRETS" ,gn-auth-secrets))))))
       (list (gunicorn-app
              (name "genenetwork2")
              (package genenetwork2)
@@ -231,7 +241,35 @@ object."
                              (file-system-mapping
                               (source auth-db)
                               (target source)
-                              (writable? #t)))))))))
+                              (writable? #t)))))
+            (gunicorn-app
+             (name "gn-auth")
+             (package gn-auth)
+             (sockets (list (forge-ip-socket
+                             (port gn-auth-port))))
+             (wsgi-app-module "gn_auth:create_app()")
+             (workers 20)
+             (environment-variables
+              (list (environment-variable
+                     (name "GN_AUTH_CONF")
+                     (value gn-auth-conf))
+                    (environment-variable
+                     (name "HOME")
+                     (value "/tmp"))
+                    (environment-variable
+                     (name "AUTHLIB_INSECURE_TRANSPORT")
+                     (value "true"))))
+             (mappings (list database-mapping
+                             (file-system-mapping
+                              (source gn-auth-conf)
+                              (target source))
+                             (file-system-mapping
+                              (source auth-db)
+                              (target source)
+                              (writable? #t))
+                             (file-system-mapping
+                              (source gn-auth-secrets)
+                              (target source)))))))))
 
 (define (genenetwork-nginx-server-block config)
   "Return an @code{<nginx-server-configuration>} record specifying