diff options
author | Casey Dahlin <cdahlin@redhat.com> | 2009-01-17 00:34:06 -0500 |
---|---|---|
committer | Casey Dahlin <cdahlin@redhat.com> | 2009-01-17 00:34:06 -0500 |
commit | 6bd1ed26f737e514abbd889ea7d89981ccb0fd54 (patch) | |
tree | 430d132ab0d8a6f16a821e4738c7965f5dd11608 | |
parent | c2ccb99111ddfb41cb72065b03e1ceab799abbe1 (diff) | |
download | upstate-6bd1ed26f737e514abbd889ea7d89981ccb0fd54.tar.gz upstate-6bd1ed26f737e514abbd889ea7d89981ccb0fd54.tar.xz upstate-6bd1ed26f737e514abbd889ea7d89981ccb0fd54.zip |
Added valid supercategory filters
-rw-r--r-- | statemachine.py | 21 |
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("/"))) |