about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--genenetwork/services/genenetwork.scm44
-rwxr-xr-xproduction-deploy.sh1
-rw-r--r--production.scm2
-rw-r--r--public-sparql.scm4
-rw-r--r--test-r-container.scm111
5 files changed, 153 insertions, 9 deletions
diff --git a/genenetwork/services/genenetwork.scm b/genenetwork/services/genenetwork.scm
index 4aa35b9..99e78b9 100644
--- a/genenetwork/services/genenetwork.scm
+++ b/genenetwork/services/genenetwork.scm
@@ -259,6 +259,32 @@
                             (chmod file #o644))
                           (find-files #$xapian-directory)))))))))
 
+(define (samples-count-script-gexp config)
+  (match-record config <genenetwork-configuration>
+                (genenetwork2 sql-uri)
+    (with-imported-modules '((guix build utils))
+      #~(begin
+          (use-modules (guix build utils))
+
+          (setenv "PYTHONPATH"
+                  (string-append
+                   #$(file-append genenetwork2
+                                  "/lib/python"
+                                  (python-version (package-version python))
+                                  "/site-packages")
+                   ":"
+                   #$(profile
+                       (content (package->development-manifest genenetwork2))
+                       (allow-collisions? #t))
+                   "/lib/python"
+                   #$(python-version (package-version python))
+                   "/site-packages"))
+
+          (invoke #$(file-append python "/bin/python3")
+                  "-m"
+                  "gn2.scripts.sample_count"
+                  #$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)
@@ -562,9 +588,9 @@ object."
                               (source gn-auth-conf)
                               (target source))
                              (file-system-mapping
-                              (source auth-db)
-                              (target source)
-                              (writable? #t))
+                               (source (dirname auth-db))
+                               (target source)
+                               (writable? #t))
                              (file-system-mapping
                               (source gn-auth-secrets)
                               (target source)
@@ -621,7 +647,10 @@ a @code{<genenetwork-configuration>} record."
   (list #~(job '(next-hour)
                #$(program-file "build-xapian-index-cron-gexp"
                                (build-xapian-index-cron-gexp config))
-               #:user "root")))
+               #: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)))))
 
 (define (gn-guile-gexp gn-guile-port gn-guile-pkg)
   (with-imported-modules '((guix build utils))
@@ -715,7 +744,7 @@ a @code{<genenetwork-configuration>} record."
                       (chown file
                              (passwd:uid (getpw "gunicorn-gn-uploader"))
                              (passwd:gid (getpw "gunicorn-gn-uploader"))))
-                    (append (list #$secrets)
+                    (append (list #$(dirname secrets))
                             (find-files #$sessions-dir
                                         #:directories? #t)
                             (find-files #$sqlite-databases-directory
@@ -782,8 +811,9 @@ a @code{<genenetwork-configuration>} record."
                               (source gn-uploader-conf)
                               (target source))
                              (file-system-mapping
-                              (source secrets)
-                              (target source))
+                              (source (dirname secrets))
+                              (target source)
+                              (writable? #t))
                              (file-system-mapping
                               (source data-directory)
                               (target source)
diff --git a/production-deploy.sh b/production-deploy.sh
index 7cd1cc7..c8e30fe 100755
--- a/production-deploy.sh
+++ b/production-deploy.sh
@@ -43,6 +43,7 @@ container_script=$(guix system container \
                         --share=/export/guix-containers/genenetwork/var/genenetwork/sessions=/var/genenetwork/sessions \
                         --share=/export/guix-containers/genenetwork/var/lib/genenetwork/uploader=/var/lib/genenetwork/uploader \
                         --share=/export/guix-containers/genenetwork/var/lib/genenetwork/sqlite/gn-uploader=/var/lib/genenetwork/sqlite/gn-uploader \
+                        --share=/export/guix-containers/genenetwork/var/lib/genenetwork/gn-guile=/var/lib/genenetwork/gn-guile \
                         production.scm)
 
 echo $container_script
diff --git a/production.scm b/production.scm
index ffa75da..bfd9e48 100644
--- a/production.scm
+++ b/production.scm
@@ -88,7 +88,7 @@
                              (llm-db-path "/var/lib/genenetwork/sqlite/genenetwork3/llm.db")
                              (gn3-alias-server-port 9800)
                              (gn-tmpdir "/opt/gn/tmp")
-                             (gn-doc-git-checkout "/var/lib/gn-docs.git")
+                             (gn-doc-git-checkout "/var/lib/genenetwork/gn-guile/gn-docs.git")
                              (log-level 'debug)))
                    (service gn-uploader-service-type
                             (gn-uploader-configuration
diff --git a/public-sparql.scm b/public-sparql.scm
index 4603cec..edfcd87 100644
--- a/public-sparql.scm
+++ b/public-sparql.scm
@@ -64,7 +64,9 @@ SPARQL endpoint is listening on."
 			     (dirs-allowed (list "/export/data/virtuoso"))
 			     (maximum-dirty-buffers 3000000)
                              (database-file "/var/lib/virtuoso/public-virtuoso.db")
-                             (transaction-file "/var/lib/virtuoso/public-virtuoso.trx")))
+                             (transaction-file "/var/lib/virtuoso/public-virtuoso.trx")
+                             (error-log-file "/var/lib/public-virtuoso-errors.log")
+                             (syslog "1")))
                    (service forge-nginx-service-type
                             (forge-nginx-configuration
                              (http-listen (forge-ip-socket
diff --git a/test-r-container.scm b/test-r-container.scm
new file mode 100644
index 0000000..3167574
--- /dev/null
+++ b/test-r-container.scm
@@ -0,0 +1,111 @@
+(use-modules (guix)
+             (gnu)
+             (guix git)
+             (guix modules)
+             (guix profiles)
+             (guix records)
+             (guix packages)
+             (guix git-download)
+             (guix build-system trivial)
+             (gnu services dbus)
+             (gnu services networking)
+             (gnu services ssh)
+             (gnu services web)
+             (gnu services certbot)
+             (gnu services docker)
+             (gnu services desktop)
+             (gnu services shepherd)
+             (gnu packages admin)
+             (gnu packages statistics)
+             (gnu packages cran)
+             (gnu packages curl)
+             (gnu packages lsof)
+             (srfi srfi-1)
+             (ice-9 match)
+             (genenetwork services mouse-longevity)
+             (gn services rshiny)
+             (gn packages mouse-longevity)
+             (forge acme)
+             (forge nginx)
+             (forge socket)
+             (gnu services))
+
+(define %nginx-configuration
+  (nginx-configuration
+   (server-blocks
+    (list
+     ;; Redirect domains that don't explicitly support HTTP (below) to HTTPS.
+     (nginx-server-configuration
+      (listen '("8080")))
+
+     ;; Domains that still explicitly support plain HTTP.
+     (nginx-server-configuration
+      (listen '("80"))
+      (server-name '("longevity-explorer.genenetwork.org"))
+      (locations
+       (list
+        (nginx-location-configuration
+         (uri "/")
+         (body (list "proxy_pass http://127.0.0.1:3979;")))))
+      (raw-content
+       (list
+        "proxy_set_header Host $host;"
+        "proxy_set_header X-Real-IP $remote_addr;"
+        "proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;"
+        "proxy_set_header X-Forwarded-Proto $scheme;")))))))
+
+(operating-system
+ (host-name "testing-genenetwork-services")
+ (keyboard-layout (keyboard-layout "us"))
+ (kernel-arguments
+    (cons* "console=ttyS0,115200" "console=tty0"
+           %default-kernel-arguments))
+ (bootloader (bootloader-configuration (bootloader grub-bootloader)))
+ (issue "This is a GeneNetwork container.  Welcome!\n")
+ (file-systems %base-file-systems)
+ (sudoers-file
+   (mixed-text-file "sudoers"
+     "@include " %sudoers-specification
+     "\nacme ALL = NOPASSWD: " (file-append shepherd "/bin/herd") " restart nginx\n"))
+ (packages (cons* lsof curl %base-packages))
+ (services
+  (cons*
+   (service dhcp-client-service-type)
+   (service dbus-root-service-type)
+   (service polkit-service-type)
+   (service forge-nginx-service-type
+            (forge-nginx-configuration
+             (http-listen (forge-ip-socket
+                           (ip "127.0.0.1")
+                           (port "8080")))
+             (https-listen (forge-ip-socket
+                            (ip "127.0.0.1")
+                            (port "8443")))
+             (server-blocks
+              (list
+               (nginx-server-configuration
+                (server-name '("longevity-explorer.genenetwork.org"))
+                (locations
+                 (list (nginx-location-configuration
+                        (uri "/")
+                        (body (list "proxy_pass http://localhost:3979;"
+                                    "proxy_set_header Host $host;"))))))))))
+   (service acme-service-type
+            (acme-configuration
+             (email "jgart@dismail.de")
+             (acme-url %letsencrypt-staging-url)))
+   ;; (service certbot-service-type
+   ;;          (certbot-configuration
+   ;;           (email "jgart@dismail.de")
+   ;;           (certificates
+   ;;            (list
+   ;;             (certificate-configuration
+   ;;              (domains '("longevity-explorer.genenetwork.org"
+   ;;                         "www.longevity-explorer.genenetwork.org")))))))
+   ;; (mouse-longevity-service )
+   (service rshiny-service-type
+            (rshiny-configuration
+             (package mouse-longevity-app)
+             (binary "mouse-longevity-app")))
+   ;; (service nginx-service-type %nginx-configuration)
+   %base-services)))