diff options
Diffstat (limited to 'lisp/aws/aws.lisp')
| -rw-r--r-- | lisp/aws/aws.lisp | 22 |
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")) |
