Commit b634eb2349b697d8e88d0d37d7958b64238e1dd3

Thomas de Grivel 2015-09-23T06:30:45

Sync for host and resource-container.

diff --git a/core/resource-container.lisp b/core/resource-container.lisp
index ab65980..7a343af 100644
--- a/core/resource-container.lisp
+++ b/core/resource-container.lisp
@@ -50,6 +50,11 @@
   (let ((x (gensym)))
     `(for (,x ,var) in-hashtable (resource-registry ,container))))
 
+(defmethod child-resources ((res resource-container))
+  (sort (iter (for-resource child in res)
+              (collect child))
+        #'resource-before-p))
+
 ;;  Resource container
 
 (defmethod print-object ((rc resource-container) stream)
diff --git a/core/resource.lisp b/core/resource.lisp
index e5027d6..7bc9597 100644
--- a/core/resource.lisp
+++ b/core/resource.lisp
@@ -179,3 +179,13 @@
                      :os os
                      :host host
                      :resource res))))))
+
+(defmethod sync ((res resource-container))
+  (call-next-method)
+  (with-parent-resource res
+    (iter (for child in (child-resources res))
+          (sync child))))
+
+(defmethod sync ((host host))
+  (with-host host
+    (call-next-method)))