diff options
author | Casey Dahlin <cdahlin@redhat.com> | 2009-01-05 05:20:37 -0500 |
---|---|---|
committer | Casey Dahlin <cdahlin@redhat.com> | 2009-01-05 05:20:37 -0500 |
commit | 8e387fad57115e697ec406570bb6b55e1dcb0809 (patch) | |
tree | 66348beefc5821847870c084e588c53b265903c8 /statemachine.py | |
parent | b6fd410703891a4df82848fa807071d6efa8fa07 (diff) | |
download | upstate-8e387fad57115e697ec406570bb6b55e1dcb0809.tar.gz upstate-8e387fad57115e697ec406570bb6b55e1dcb0809.tar.xz upstate-8e387fad57115e697ec406570bb6b55e1dcb0809.zip |
Events mechanism
Diffstat (limited to 'statemachine.py')
-rw-r--r-- | statemachine.py | 23 |
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 |