git.fiddlerwoaroof.com
Browse code

Support updated stacks + nil parameter values

Ed Langley authored on 28/04/2018 07:29:32
Showing 2 changed files
... ...
@@ -73,8 +73,9 @@
73 73
 
74 74
 
75 75
 (defclass stack ()
76
-  ((%outputs :initarg :outputs :reader outputs)
76
+  ((%outputs :initarg :outputs :reader outputs :initform (list))
77 77
    (%capabilities :initarg :capabilities :reader capabilities)
78
+   (%last-updated-time :initarg :last-updated-time :reader last-updated-time)
78 79
    (%creation-time :initarg :creation-time :reader creation-time)
79 80
    (%notification-arns :initarg :notification-arns :reader notification-arns)
80 81
    (%stack-id :initarg :stack-id :reader stack-id)
... ...
@@ -23,9 +23,9 @@
23 23
     the-stack))
24 24
 
25 25
 (defun print-kvs (formatter stream data)
26
-  (mapcar (destructuring-lambda (((_ k) (__ v)))
26
+  (mapcar (destructuring-lambda (((_ k) (__ . v)))
27 27
             (declare (ignore _ __))
28
-            (funcall formatter stream k v))
28
+            (funcall formatter stream k (car v)))
29 29
           data))
30 30
 
31 31
 (defun stack-outputs (the-stack)
... ...
@@ -113,13 +113,13 @@
113 113
 (defmethod (setf stack) :before (new-value (object stack-formatter))
114 114
   (setf (old-status object) (stack-status object)))
115 115
 
116
-(defgeneric refresh-stack (stack-formatter)
116
+(defgeneric refresh (stack-formatter)
117 117
   (:method ((stack cloud-watcher.aws-result:stack))
118 118
     (stack-for-name (stack-name stack))) 
119 119
   (:method ((stack-formatter string))
120 120
     (make-instance 'stack-formatter :stack (stack-for-name stack-formatter)))
121 121
   (:method ((stack-formatter stack-formatter))
122
-    (setf (stack stack-formatter) (refresh-stack (stack stack-formatter)))
122
+    (setf (stack stack-formatter) (refresh (stack stack-formatter)))
123 123
     stack-formatter))
124 124
 
125 125
 (defmethod old-status ((stack cloud-watcher.aws-result:stack))
... ...
@@ -138,15 +138,15 @@
138 138
           (output-block the-stack)
139 139
           t))))
140 140
 
141
-(defun refreshing (refresh-function cb)
142
-  (lambda (thing)
143
-    (let ((refreshed-thing (funcall refresh-function thing)))
144
-      (values (funcall cb refreshed-thing)
145
-              refreshed-thing))))
141
+(defmacro refreshing (cb)
142
+  `(lambda (thing)
143
+     (let ((refreshed-thing (refresh thing)))
144
+       (values (,cb refreshed-thing)
145
+               refreshed-thing))))
146 146
 
147 147
 (defun watch-stack (name)
148 148
   (format t "~&Watching ~s~2%" name)
149
-  (every-five-seconds (refreshing 'refresh-stack 'stack-info)
149
+  (every-five-seconds (refreshing stack-info)
150 150
                       (list name))
151 151
   (fresh-line))
152 152