summaryrefslogtreecommitdiffstats
path: root/statemachine.py
diff options
context:
space:
mode:
authorCasey Dahlin <cdahlin@redhat.com>2009-01-05 05:20:37 -0500
committerCasey Dahlin <cdahlin@redhat.com>2009-01-05 05:20:37 -0500
commit8e387fad57115e697ec406570bb6b55e1dcb0809 (patch)
tree66348beefc5821847870c084e588c53b265903c8 /statemachine.py
parentb6fd410703891a4df82848fa807071d6efa8fa07 (diff)
downloadupstate-8e387fad57115e697ec406570bb6b55e1dcb0809.tar.gz
upstate-8e387fad57115e697ec406570bb6b55e1dcb0809.tar.xz
upstate-8e387fad57115e697ec406570bb6b55e1dcb0809.zip
Events mechanism
Diffstat (limited to 'statemachine.py')
-rw-r--r--statemachine.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/statemachine.py b/statemachine.py
index 3c63048..609da17 100644
--- a/statemachine.py
+++ b/statemachine.py
@@ -16,6 +16,17 @@ class StateMachine:
"""
self.up = set()
self.deps = []
+ self.event_triggers = []
+
+ def emit(self, event):
+ """
+ Emit an event.
+ """
+ retval = False
+ for evpat, cat in self.event_triggers:
+ if event.subset_of(evpat):
+ retval |= self.bring_up(cat.intersect_args(**event.args))
+ return retval
def bring_up(self, cat):
"""
@@ -120,13 +131,19 @@ if __name__ == "__main__":
sm.deps.append((Category("mounted", type=m("nfs")), Category("network_up")))
sm.deps.append((Category("mounted", type=nm("nfs")), Category("found_disk")))
sm.deps.append((Category("mounted"), Category("vol_conf")))
+
+ sm.event_triggers.append((Category("fstab_line"), Category("vol_conf", src=m("fstabd"))))
+
sm.bring_up(Category("network_up"))
- sm.bring_up(Category("vol_conf", label=m("myroot"), type=m("ext3"), mountpoint=m("/")))
- sm.bring_up(Category("vol_conf", devname=m("foosrv.com:/vol/home"), type=m("nfs"), mountpoint=m("/home")))
- sm.bring_up(Category("vol_conf", devname=m("foosrv.com:/vol/beefs"), type=m("nfs"), mountpoint=m("/beefs")))
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()))
print sm
print "--"
+ sm.emit(Category("fstab_line", label=m("myroot"), type=m("ext3"), mountpoint=m("/")))
+ sm.emit(Category("fstab_line", devname=m("foosrv.com:/vol/home"), type=m("nfs"), mountpoint=m("/home")))
+ sm.emit(Category("fstab_line", devname=m("foosrv.com:/vol/beefs"), type=m("nfs"), mountpoint=m("/beefs")))
+ sm.bring_up(Category("mounted", devname=any(), mountpoint=any()))
+ print sm
+ print "--"
sm.bring_down(Category("network_up"))
print sm