summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCasey Dahlin <cdahlin@redhat.com>2009-01-17 00:34:06 -0500
committerCasey Dahlin <cdahlin@redhat.com>2009-01-17 00:34:06 -0500
commit6bd1ed26f737e514abbd889ea7d89981ccb0fd54 (patch)
tree430d132ab0d8a6f16a821e4738c7965f5dd11608
parentc2ccb99111ddfb41cb72065b03e1ceab799abbe1 (diff)
downloadupstate-6bd1ed26f737e514abbd889ea7d89981ccb0fd54.tar.gz
upstate-6bd1ed26f737e514abbd889ea7d89981ccb0fd54.tar.xz
upstate-6bd1ed26f737e514abbd889ea7d89981ccb0fd54.zip
Added valid supercategory filters
-rw-r--r--statemachine.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/statemachine.py b/statemachine.py
index 133fd17..deb8bb7 100644
--- a/statemachine.py
+++ b/statemachine.py
@@ -17,6 +17,7 @@ class StateMachine:
"""
self.up = set()
self.wanted = set()
+ self.valid_supercats = set()
self.deps = []
self.event_triggers = []
@@ -34,6 +35,19 @@ class StateMachine:
"""
Move states in the given Category `cat` from down to up.
"""
+ retval = False
+ for supercat in self.valid_supercats:
+ newcat = supercat.intersect(cat)
+ if newcat == None:
+ continue
+ retval = retval or self.__bring_up(newcat, wanted)
+ return retval
+
+ def __bring_up(self, cat, wanted=True):
+ """
+ Move states in the given Category `cat` from down to up. Don't check to
+ see if the category makes sense first.
+ """
found = None
for (match, dependency) in self.get_applicable_deps(cat):
res = self.get_satisfied_states(match, dependency)
@@ -159,11 +173,16 @@ if __name__ == "__main__":
sm.deps.append((Category("mounted", type=nm("nfs")), Category("found_disk")))
sm.deps.append((Category("mounted"), Category("vol_conf")))
+ sm.valid_supercats.add(Category("network_up"))
+ sm.valid_supercats.add(Category("vol_conf"))
+ sm.valid_supercats.add(Category("found_disk"))
+ sm.valid_supercats.add(Category("mounted", devname=any(), mountpoint=any()))
+
sm.event_triggers.append((Category("fstab_line"), Category("vol_conf", src=m("fstabd"))))
sm.bring_up(Category("network_up"))
sm.bring_up(Category("found_disk", uuid=m("d3adb3ef"), devname=m("/dev/sda"), label=m("myroot")))
- sm.bring_up(Category("mounted", devname=any(), mountpoint=any()))
+ sm.bring_up(Category("mounted"))
print sm
print "--"
sm.emit(Category("fstab_line", label=m("myroot"), type=m("ext3"), mountpoint=m("/")))