How can I access script-results executed on a target?

24 views
Skip to first unread message

Michael Jerger

unread,
Dec 12, 2016, 3:42:56 AM12/12/16
to pallet
Hi,

I thinking about creating sth. like server-spec for pallet. One of the foundations would to be able to get script-results back to clojure and do some tests on these results.

I tried out the following simple example:

(defn evaluate-log [nv]
 
(actions/as-action
   
(logging/info (:out nv))
 
))

(defn ide-test [config]
  (let [nv (actions/exec-script ("netstat" "-tulpen"))]
    (actions/as-action
     
(logging/info "before delayed declaration"))
   
(pallet.argument/delayed [session] evaluate-log)
   
(actions/as-action
     
(logging/info "after delayed declaration"))
    nv
   
))

But evaluate-log seems not to get called, so I missed sth. ...
Any idea?


Best Regards,
Michael

Michael Jerger

unread,
Dec 22, 2016, 2:03:40 AM12/22/16
to pallet
Let me ask my question more precise:

In settings phase I collect some values from target node, in a test phase I try to access these values:

(defn settings []
 
(let [action-netstat (actions/exec-script ("netstat" "-tulpen"))
        action
-package (actions/exec-script ("dpkg" "-l"))]
   
(crate/assoc-settings
     
:dda-servertest-fact {:netstat action-netstat} {:instance-id (crate/target-node)})
   
(crate/assoc-settings
     
:dda-servertest-fact {:package action-package} {:instance-id (crate/target-node)})
   
)
 
)

(defn test []
 
(let [facts (crate/get-settings :dda-servertest-fact {:instance-id (crate/target-node)})]
   
(do
     
(println "--------------1--------------")
     
(println (-> facts :netstat))
   
     
(actions/as-action
       
(println "--------------2--------------")
       
(println (-> facts :netstat)))
     
     
(actions/as-action
       
(println "--------------3--------------")
       
(println (first (-> facts :netstat)))
       
)
     
)
   
))

as output I get:
--------------1--------------
#object[pallet.node_value.NodeValue 0x125500c6 {:status :pending, :val nil}]
--------------2--------------
#object[pallet.node_value.NodeValue 0x125500c6 {:status :ready, :val {:context nil, :action-symbol pallet.actions/exec-script*, :out Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp6       0      0 :::22                   :::*                    LISTEN      0          15431       1229/sshd      
...

, :exit 0, :flags #{}, :flag-values {}, :script #!/usr/bin/env bash
set -h
netstat -tulpen
exit $?, :summary nil}}]
--------------3--------------
07:40:26.297 [operate-90] WARN  pallet.core.primitives - async-fsm failed
java.lang.AbstractMethodError: null
    at clojure.lang.RT.seqFrom(RT.java:514)
    at clojure.lang.RT.seq(RT.java:509)
    at clojure.lang.RT.first(RT.java:654)
    at clojure.core$first__4110.invoke(core.clj:55)
    at org.domaindrivenarchitecture.pallet.crate.managed_vm.test_vm$test_vm$action__2643__auto___direct__26942$clj_action26941__26943.invoke(test_vm.clj:60)
...

How can I access contents of node-values?

BR,
Michael
Reply all
Reply to author
Forward
0 new messages