      (apply juxt (map select kys)))))
 
 (defn os->template 
-  "Os key to vmware template" 
+  "Os key to template/VM/image" 
   [hyp]
   (fn [os]
     (let [ks [hyp :ostemplates os]]

               (catch Throwable e false))
            {:type ::ssh-failed :timeout timeout} "Timed out while waiting for ssh"))

; common validations
(validation :ip 
    (when-not-nil (partial re-find #"\d+\.\d+\.\d+\.\d+") "must be a legal ip address"))

(ns celestial.provider
  "common providers functions"
    (:require 
      [flatland.useful.map :refer (dissoc-in*)]
      [subs.core :refer (validation when-not-nil)]
      [supernal.sshj :refer (ssh-up?)] 
      [celestial.model :refer (hypervisor)]
