        (every? string? vs)
        (every? pos? (map count vs))))
 
-
-
 (defn- really-up? [rs->info rs]
   (let [info (get rs->info rs)]
     (and

        (instance-info-map is)
        (let [[v c] (async/alts! [cl to])]
          (cond
           (= c to) (do (info "Timeout on instance request:" is)
                        (close-notify-chan! id)
                        (stop is)
                        nil)
           (= c cl) (recur (dec i))))))))


(def ag (ssh/ssh-agent {}))

    c))


(defn clean-up-volumes []
  (let [vols (:volumes (describe-volumes))
        bad  (filter #(-> % :attachments seq not) vols)
        ids  (map :volume-id bad)]
    (when (seq ids)
      (info "Deleting volumes:" ids)
      (doseq [v ids]
        (delete-volume :volume-id v)))))

(defn clean-up []
  (let [rs   (seq @all-requests)
        is   (seq @all-normal-instances)]
    (when (seq rs)
      (info "Canceling/terminating:" rs)
      (cancel-requests rs)
      (reset! all-requests #{}))
    (when (seq is)
      (info "Stopping:" is)
      (stop is)
      (reset! all-normal-instances #{}))
    (Thread/sleep 1000)
    (clean-up-volumes)
    (when-let [c (:sqs-listen @ids->chs)]
      (info "Bringing down listener" c)
      (close! c))
    (reset! ids->chs {})))


