summaryrefslogtreecommitdiff
path: root/lisp/aws/aws.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/aws/aws.lisp')
-rw-r--r--lisp/aws/aws.lisp22
1 files changed, 20 insertions, 2 deletions
diff --git a/lisp/aws/aws.lisp b/lisp/aws/aws.lisp
index ab6dcc8..6691650 100644
--- a/lisp/aws/aws.lisp
+++ b/lisp/aws/aws.lisp
@@ -21,6 +21,15 @@
:accessor value))
(:documentation ""))
+(defclass aws-instance ()
+ ((id :initarg :id
+ :initform nil
+ :accessor id)
+ (launch-time :initarg :launch-time
+ :initform nil
+ :accessor launch-time))
+ (:documentation ""))
+
(defclass aws-asg (aws)
((name :initarg :name
:initform nil
@@ -169,8 +178,17 @@
:count-min (cdr (assoc :*min-size asg))
:count-max (cdr (assoc :*max-size asg))
:count-desired (cdr (assoc :*desired-capacity asg))
- :instances (loop for instance in (cdr (assoc :*instances asg))
- collect (cdr (assoc :*instance-id instance)))))))
+ :instances (sort (loop for instance in (cdr (assoc :*instances asg))
+ collect (get-instance aws (cdr (assoc :*instance-id instance))))
+ (lambda (x y)
+ (string> (launch-time x) (launch-time y))))))))
+
+(defmethod get-instance ((aws aws) instance-id)
+ (let ((command (format nil "aws ec2 describe-instances --instance-ids ~a" instance-id)))
+ (car (loop for instance in (cdr (assoc :*instances (cadar (run-aws-cli aws command))))
+ collect (make-instance 'aws-instance
+ :id (cdr (assoc :*instance-id instance))
+ :launch-time (cdr (assoc :*launch-time instance)))))))
(defmethod get-targetgroups ((aws-targetgroup aws-targetgroup))
(let ((command "aws elbv2 describe-target-groups"))