   (:require 
     [celestial.common :refer (import-logging )] 
     [celestial.provider :refer (wait-for)] 
-    [aws.sdk.ebs :as ebs]
-    [aws.sdk.ec2 :as ec2]
+    [amazonica.aws.ec2 :as ec2]
     [celestial.persistency.systems :as s]
     [aws.common :refer (with-ctx instance-desc creds image-id)]
     )) 

(import-logging)

(defn image-desc [endpoint ami & ks]
  (-> (ec2/describe-images (assoc (creds) :endpoint endpoint) (ec2/image-id-filter ami))
      first (apply ks)))

(defn wait-for-attach [endpoint instance-id timeout]
  (wait-for {:timeout timeout} 
    #(= "attached" (instance-desc endpoint instance-id :block-device-mappings 0 :ebs :status)) 
    {:type ::aws:ebs-attach-failed :message "Failed to wait for ebs root device attach"}))

(defn handle-volumes 
   "attached and waits for ebs volumes" 

  (doseq [{:keys [ebs device-name]} (-> (instance-desc endpoint instance-id) :block-device-mappings rest)]
    (when (clear? device-name system-id)
      (trace "deleting volume" ebs) 
      (with-ctx ec2/detach-volume {:volume-id (ebs :volume-id)}) 
      (wait-for {:timeout [10 :minute]} 
        #(= "available" (with-ctx (volume-desc endpoint (ebs :volume-id) :state)))
        {:type ::aws:ebs-volume-availability 
         :message "Failed to wait for ebs volume to become available"}) 
      (with-ctx ec2/delete-volume {:volume-id (ebs :volume-id)}))))
