Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 7da97367 authored by Ludovic Courtès's avatar Ludovic Courtès
Browse files

Use <kernel> records to represent proxies.

* guix-jupyter-kernel.scm (<proxy>): Remove.
(register-proxy): Add docstring.
(new-container-connect): Return a <kernel> object.
(reply-execute-request, kill-containers): Adjust accordingly.
parent 30004d60
Branches
Tags
No related merge requests found
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
(use-modules (json) (use-modules (json)
(simple-zmq) (simple-zmq)
(srfi srfi-1) (srfi srfi-1)
(srfi srfi-9)
(srfi srfi-11) (srfi srfi-11)
(srfi srfi-13) (srfi srfi-13)
(srfi srfi-19) (srfi srfi-19)
...@@ -43,14 +42,6 @@ ...@@ -43,14 +42,6 @@
(seed->random-state (seed->random-state
(time-second (current-time time-utc))))) (time-second (current-time time-utc)))))
;; Kernel proxy running in a container.
(define-record-type <proxy>
(proxy pid socket start)
proxy?
(pid proxy-pid) ;integer
(socket proxy-socket) ;zmq socket
(start proxy-start-time)) ;integer
;; ;;
;; Container tools. ;; Container tools.
;; ;;
...@@ -62,6 +53,8 @@ ...@@ -62,6 +53,8 @@
(+ (string-rindex (car (command-line)) #\/) 1))) (+ (string-rindex (car (command-line)) #\/) 1)))
(define (register-proxy vhash name proxy) (define (register-proxy vhash name proxy)
"Register PROXY, a kernel object for a process running in a container that
acts as a proxy to an actual kernel."
(vhash-cons name proxy vhash)) (vhash-cons name proxy vhash))
(define (proxy-by-name vhash name) (define (proxy-by-name vhash name)
...@@ -135,12 +128,12 @@ ...@@ -135,12 +128,12 @@
(container (new-container-connect env-name id)) (container (new-container-connect env-name id))
(new (register-proxy containers env-name (new (register-proxy containers env-name
container))) container)))
(relay-message (proxy-socket container) kernel (relay-message (kernel-shell container) kernel
(string->utf8 env-name) (string->utf8 env-name)
message) message)
(values new (+ count 1)))) (values new (+ count 1))))
((? proxy? proxy) ((? kernel? proxy)
(relay-message (proxy-socket proxy) kernel (relay-message (kernel-shell proxy) kernel
(string->utf8 env-name) (string->utf8 env-name)
message) message)
(values containers (+ count 1)))))) (values containers (+ count 1))))))
...@@ -149,7 +142,7 @@ ...@@ -149,7 +142,7 @@
(let* ((list (string-split magic #\ )) (let* ((list (string-split magic #\ ))
(env-name (list-ref list 2)) (env-name (list-ref list 2))
(proxy (proxy-by-name containers env-name))) (proxy (proxy-by-name containers env-name)))
(relay-message (proxy-socket proxy) kernel (relay-message (kernel-shell proxy) kernel
(string->utf8 env-name) (string->utf8 env-name)
message) message)
(values containers (+ count 1)))) (values containers (+ count 1))))
...@@ -159,7 +152,7 @@ ...@@ -159,7 +152,7 @@
(delete-magic code) (delete-magic code)
count))) count)))
(else (else
(relay-message (proxy-socket (relay-message (kernel-shell
(proxy-by-name containers "default")) (proxy-by-name containers "default"))
kernel (string->utf8 "default") kernel (string->utf8 "default")
message) message)
...@@ -202,11 +195,11 @@ MESSAGE." ...@@ -202,11 +195,11 @@ MESSAGE."
((name . proxy) ((name . proxy)
(format (current-error-port) (format (current-error-port)
"terminating proxy ~s (PID ~s)...~%" "terminating proxy ~s (PID ~s)...~%"
name (proxy-pid proxy)) name (kernel-pid proxy))
(relay-message (proxy-socket proxy) kernel (relay-message (kernel-shell proxy) kernel
(string->utf8 name) message) (string->utf8 name) message)
(zmq-close-socket (proxy-socket proxy)) (zmq-close-socket (kernel-shell proxy))
(false-if-exception (kill (proxy-pid proxy) SIGTERM)))) (false-if-exception (kill (kernel-pid proxy) SIGTERM))))
containers)) containers))
;; ;;
...@@ -214,7 +207,7 @@ MESSAGE." ...@@ -214,7 +207,7 @@ MESSAGE."
;; ;;
(define (new-container-connect name pid) (define (new-container-connect name pid)
"Return a proxy object for process PID." "Return a kernel object for process PID."
(let* ((ipc-dir (string-append "/tmp/guix-kernel/ipc/" name "-" (let* ((ipc-dir (string-append "/tmp/guix-kernel/ipc/" name "-"
(number->string session-id) "/")) (number->string session-id) "/"))
(container-addr (string-append "ipc://" ipc-dir)) (container-addr (string-append "ipc://" ipc-dir))
...@@ -228,7 +221,9 @@ MESSAGE." ...@@ -228,7 +221,9 @@ MESSAGE."
(zmq-bind-socket container-socket container-addr-sock) (zmq-bind-socket container-socket container-addr-sock)
(display "+") (display "+")
(proxy pid container-socket (current-time time-utc))))) (kernel name pid
#:shell container-socket
#:iosub container-socket))))
(define %network-file-systems (define %network-file-systems
;; The list of <file-system> objects corresponding to bind-mounts required ;; The list of <file-system> objects corresponding to bind-mounts required
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment