diff options
-rw-r--r-- | statemachine.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/statemachine.py b/statemachine.py index a708e5b..e3ad8f1 100644 --- a/statemachine.py +++ b/statemachine.py @@ -111,16 +111,20 @@ class StateMachine: def __repr__(self): return str(self) +def m(*args): return Pattern(True, *args) # The "m" reads "match", so m("foo", "bar") reads 'match foo and bar' +def nm(*args): return Pattern(False, *args) # Reads as "don't match." See above +def any(): return nm() # Match anything. Implementation reads "don't match nothing" + if __name__ == "__main__": sm = StateMachine() - sm.deps.append((Category("mounted", type=Pattern(True, "nfs")), Category("network_up"))) - sm.deps.append((Category("mounted", uuid=Pattern(False), devname=Pattern(False), label=Pattern(False), type=Pattern(False, "nfs")), Category("found_disk", uuid=Pattern(False), devname=Pattern(False), label=Pattern(False)))) - sm.deps.append((Category("mounted", uuid=Pattern(False), devname=Pattern(False), label=Pattern(False)), Category("vol_conf", uuid=Pattern(False), devname=Pattern(False), label=Pattern(False)))) + sm.deps.append((Category("mounted", type=m("nfs")), Category("network_up"))) + sm.deps.append((Category("mounted", uuid=any(), devname=any(), label=any(), type=nm("nfs")), Category("found_disk", uuid=any(), devname=any(), label=any()))) + sm.deps.append((Category("mounted", uuid=any(), devname=any(), label=any()), Category("vol_conf", uuid=any(), devname=any(), label=any()))) sm.bring_up(Category("network_up")) - sm.bring_up(Category("vol_conf", uuid=Pattern(False), devname=Pattern(False), label=Pattern(True, "myroot"), type=Pattern(True, "ext3"), mountpoint=Pattern(True, "/"))) - sm.bring_up(Category("vol_conf", uuid=Pattern(False), devname=Pattern(True, "foosrv.com:/vol/home"), label=Pattern(False), type=Pattern(True, "nfs"), mountpoint=Pattern(True, "/home"))) - sm.bring_up(Category("found_disk", uuid=Pattern(True, "d3adb3ef"), devname=Pattern(True, "/dev/sda"), label=Pattern(True, "myroot"))) - sm.bring_up(Category("mounted", uuid=Pattern(False), type=Pattern(False), devname=Pattern(False), label=Pattern(False), mountpoint=Pattern(False))) + sm.bring_up(Category("vol_conf", uuid=any(), devname=any(), label=m("myroot"), type=m("ext3"), mountpoint=m("/"))) + sm.bring_up(Category("vol_conf", uuid=any(), devname=m("foosrv.com:/vol/home"), label=any(), type=m("nfs"), mountpoint=m("/home"))) + sm.bring_up(Category("found_disk", uuid=m("d3adb3ef"), devname=m("/dev/sda"), label=m("myroot"))) + sm.bring_up(Category("mounted", uuid=any(), type=any(), devname=any(), label=any(), mountpoint=any())) print sm print "--" sm.bring_down(Category("network_up")) |