blob: b10cb0829cb86d506a3b8fd26ebcc3ce3a568bbf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
(module desmo-apply (run-apply)
(import scheme
(chicken base)
shell
test
utils)
(define (run-apply cfg)
(let* ((cluster (assoc 'cluster cfg))
(nodes (cdr cluster)))
(map gather-node-facts nodes)
(print "TODO")
'todo))
(define (get-ssh-command node)
(let* ((alist (cdr node))
(ssh-user-pair (assoc 'ssh-user alist))
(ssh-hostname-pair (assoc 'ssh-hostname alist))
(ssh-command-pair (assoc 'ssh-command alist)))
(cond ((not ssh-user-pair)
'(cfg-error "ssh-user not specified"))
((not ssh-hostname-pair)
'(cfg-error "ssh-hostname not specified"))
((not ssh-command-pair)
'(cfg-error "ssh-command not specified"))
(else
(string-append (cadr ssh-command-pair)
" "
(cadr ssh-user-pair)
"@"
(cadr ssh-hostname-pair))))))
(inline-tests
(test-group
"get-ssh-command"
(test "returns error if ssh-user not specified" 'cfg-error
(car (get-ssh-command '(node (ssh-hostname "foo") (ssh-command "bar")))))
(test "returns error if ssh-hostname not specified" 'cfg-error
(car (get-ssh-command '(node (ssh-user "foo") (ssh-command "bar")))))
(test "returns error if ssh-command not specified" 'cfg-error
(car (get-ssh-command '(node (ssh-user "foo") (ssh-hostname "bar")))))
(test "returns ssh command if all specified" "ssh foo@bar"
(get-ssh-command '(node (ssh-user "foo") (ssh-hostname "bar") (ssh-command "ssh"))))))
(define (gather-node-facts node)
(let* ((ssh-command (get-ssh-command node))
(jls-command "jls")
(combined (string-append ssh-command " " jls-command))
(result (capture ,combined)))
; TODO parse result
(not (equal? result #!eof)))))
|