about summary refs log tree commit diff
path: root/genenetwork/services/genenetwork.scm
diff options
context:
space:
mode:
Diffstat (limited to 'genenetwork/services/genenetwork.scm')
-rw-r--r--genenetwork/services/genenetwork.scm60
1 files changed, 54 insertions, 6 deletions
diff --git a/genenetwork/services/genenetwork.scm b/genenetwork/services/genenetwork.scm
index 9ba6213..2091c2c 100644
--- a/genenetwork/services/genenetwork.scm
+++ b/genenetwork/services/genenetwork.scm
@@ -20,7 +20,7 @@
 ;;; <https://www.gnu.org/licenses/>.
 
 (define-module (genenetwork services genenetwork)
-  #:use-module ((gn packages genenetwork) #:select (genenetwork2 genenetwork3 gn-auth gn-uploader))
+  #:use-module ((gn-machines genenetwork) #:select (genenetwork2 genenetwork3 gn-auth gn-uploader))
   #:use-module ((gn packages guile) #:select (gn-guile))
   #:use-module (gnu build linux-container)
   #:use-module ((gnu packages web) #:select (nginx))
@@ -155,6 +155,10 @@
                 (default "/var/genenetwork/sessions/gn-uploader"))
   (sqlite-databases-directory gn-uploader-sqlite-databases-directory
                               (default "/var/genenetwork/sqlite/gn-uploader"))
+  (gn-tmpdir gn-uploader-configuration-gn-tmpdir
+             (default "/opt/gn/tmp"))
+  (genotype-files-directory gn-uploader-configuration-genotype-files-directory
+                            (default "/var/genenetwork/genotype-files"))
   (log-level gn-uploader-configuration-log-level
              (default 'warning)
              (sanitize sanitize-log-level)))
@@ -285,6 +289,33 @@
                   "gn2.scripts.sample_count"
                   #$sql-uri)))))
 
+(define (make-non-human-data-public-cron-gexp config)
+  (match-record config <genenetwork-configuration>
+                (gn-auth sql-uri auth-db)
+                (with-imported-modules '((guix build utils))
+                  #~(begin
+                      (use-modules (guix build utils))
+
+                      (setenv "PYTHONPATH"
+                              (string-append
+                               #$(file-append gn-auth
+                                              "/lib/python"
+                                              (python-version (package-version python))
+                                              "/site-packages")
+                               ":"
+                               #$(profile
+                                  (content (package->development-manifest gn-auth))
+                                  (allow-collisions? #t))
+                               "/lib/python"
+                               #$(python-version (package-version python))
+                               "/site-packages"))
+
+                      (invoke #$(file-append python "/bin/python3")
+                              "-m"
+                              "scripts.batch_assign_data_to_default_admin"
+                              #$auth-db
+                              #$sql-uri)))))
+
 (define (genenetwork-activation config)
   (match-record config <genenetwork-configuration>
     (gn2-secrets gn3-secrets gn-auth-secrets auth-db llm-db-path genotype-files gn-tmpdir gn-doc-git-checkout gn2-sessions-dir)
@@ -650,7 +681,11 @@ a @code{<genenetwork-configuration>} record."
                #:user "root")
         #~(job '(next-minute-from (next-hour) '(17)) ;17th minute of every hour
                #$(program-file "samples-count-script-gexp"
-                               (samples-count-script-gexp config)))))
+                               (samples-count-script-gexp config)))
+        #~(job '(next-minute (range 0 60 15))
+               #$(program-file "make-non-human-data-public-cron-gexp"
+                               (make-non-human-data-public-cron-gexp config))
+               #:user "gunicorn-gn-auth")))
 
 (define (gn-guile-gexp gn-guile-port gn-guile-pkg bare-repo)
   (with-imported-modules '((guix build utils))
@@ -735,7 +770,7 @@ a @code{<genenetwork-configuration>} record."
 
 (define (gn-uploader-activation config)
   (match-record config <gn-uploader-configuration>
-    (secrets data-directory sessions-dir sqlite-databases-directory)
+    (secrets data-directory sessions-dir sqlite-databases-directory gn-tmpdir)
     (with-imported-modules '((guix build utils))
       #~(begin
           (use-modules (guix build utils))
@@ -760,27 +795,32 @@ a @code{<genenetwork-configuration>} record."
                              (passwd:gid (getpw "gunicorn-gn-uploader"))))
                     (append (list #$data-directory)
                             (find-files #$data-directory
+                                        #:directories? #t)
+                            (find-files #$(string-append gn-tmpdir "/gn-uploader-tmpdir")
                                         #:directories? #t)))))))
 
 (define (gn-uploader-gunicorn-app config)
   (match-record config <gn-uploader-configuration>
-    (gn-uploader sql-uri port data-directory secrets log-level auth-server-url gn2-server-url sessions-dir sqlite-databases-directory)
+    (gn-uploader sql-uri port data-directory secrets log-level auth-server-url gn2-server-url sessions-dir sqlite-databases-directory gn-tmpdir genotype-files-directory)
     ;; 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
                               (source "/run/mysqld")
                               (target source)
                               (writable? #t)))
+           (gn-uploader-tmpdir (string-append gn-tmpdir "/gn-uploader-tmpdir"))
            (gn-uploader-conf (computed-file "gn-uploader.conf"
                                             (configuration-file-gexp
                                              `(("UPLOADER_SECRETS" ,secrets)
                                                ("SQL_URI" ,sql-uri)
                                                ("UPLOAD_FOLDER" ,(string-append data-directory
                                                                                 "/uploads"))
+                                               ("TEMPORARY_DIRECTORY" ,gn-uploader-tmpdir)
                                                ("AUTH_SERVER_URL" ,auth-server-url)
                                                ("GN2_SERVER_URL" ,gn2-server-url)
                                                ("SESSION_FILESYSTEM_CACHE_PATH" ,sessions-dir)
-                                               ("ASYNCHRONOUS_JOBS_SQLITE_DB" ,(string-append sqlite-databases-directory "/background-jobs.db"))))))
+                                               ("ASYNCHRONOUS_JOBS_SQLITE_DB" ,(string-append sqlite-databases-directory "/background-jobs.db"))
+                                               ("GENOTYPE_FILES_DIRECTORY" ,genotype-files-directory)))))
            (gn-uploader-profile (profile
                                  (content (package->development-manifest gn-uploader))
                                  (allow-collisions? #t)))
@@ -831,7 +871,15 @@ a @code{<genenetwork-configuration>} record."
                              (file-system-mapping
                               (source sqlite-databases-directory)
                               (target source)
-                              (writable? #t))))
+                              (writable? #t))
+                             (file-system-mapping
+                              (source gn-uploader-tmpdir)
+                              (target source)
+                              (writable? #t))
+                             (file-system-mapping
+                              (source genotype-files-directory)
+                              (target source)
+                              (writable? #f))))
              (extra-cli-arguments
               (list "--log-level"
                     (string-upcase (symbol->string log-level)))))))))