Author: tmckay Date: 2011-03-09 15:51:40 +0000 (Wed, 09 Mar 2011) New Revision: 4592
Modified: trunk/cumin/bin/cumin-data trunk/cumin/python/cumin/config.py trunk/mint/python/mint/session.py Log: Create basic mechanism for partitioning by class in cumin-data. Mechanism for specifying will likely change in the future.
Modified: trunk/cumin/bin/cumin-data =================================================================== --- trunk/cumin/bin/cumin-data 2011-03-09 15:42:08 UTC (rev 4591) +++ trunk/cumin/bin/cumin-data 2011-03-09 15:51:40 UTC (rev 4592) @@ -15,6 +15,41 @@ sys.stderr = sys.__stderr__ sys.stdout = sys.__stdout__
+ +def process_packages(mint, values, allow_classes=False): + + packages = list() + + for name in values.split(","): + name = name.strip() + if allow_classes and ":" in name: + pair = name.split(":") + name = pair[0] + className = pair[1] + else: + className = None + + try: + cls = None + pkg = mint.model._packages_by_name[name] + if className != None: + try: + cls = pkg._classes_by_name[className] + except KeyError: + print "No class found for '%s'" % className + + except KeyError: + print "No package found for '%s'" % name + continue + + if cls != None: + pkg = ((pkg,cls)) + + packages.append(pkg) + + return packages + + def main():
# Do our own simple option check so we can redirect IO early @@ -75,20 +110,12 @@ mint.init()
if values.packages: - packages = list() + mint.session.qmf_packages = process_packages(mint, values.packages)
- for name in values.packages.split(","): - name = name.strip() + if values.classes: + mint.session.qmf_classes = process_packages(mint, values.classes, + allow_classes=True)
- try: - pkg = mint.model._packages_by_name[name] - except KeyError: - print "No package found for '%s'" % name - - packages.append(pkg) - - mint.session.qmf_packages = packages - if opts.init_only: return
Modified: trunk/cumin/python/cumin/config.py =================================================================== --- trunk/cumin/python/cumin/config.py 2011-03-09 15:42:08 UTC (rev 4591) +++ trunk/cumin/python/cumin/config.py 2011-03-09 15:51:40 UTC (rev 4592) @@ -78,6 +78,7 @@ data.log_file.default = os.path.join(self.home, "log", name + ".log")
param = ConfigParameter(data, "packages", str) + param = ConfigParameter(data, "classes", str)
param = ConfigParameter(data, "expire-interval", int) param.default = 60 * 60 # 1 hour
Modified: trunk/mint/python/mint/session.py =================================================================== --- trunk/mint/python/mint/session.py 2011-03-09 15:42:08 UTC (rev 4591) +++ trunk/mint/python/mint/session.py 2011-03-09 15:51:40 UTC (rev 4592) @@ -13,6 +13,7 @@ self.qmf_session = None self.qmf_brokers = list() self.qmf_packages = self.app.model._packages + self.qmf_classes = list()
def add_broker(self, uri): log.info("Adding QMF broker at %s", uri) @@ -42,8 +43,19 @@
self.qmf_session.bindAgent("*")
+ # Handle bind by class + already_bound_list = list() + for pkg in self.qmf_classes: + if type(pkg) in (tuple,list) and len(pkg) == 2: + # If a packages shows up in the class binding list, + # then we cannot wholesale bind that package later. + already_bound_list.append(pkg[0]) + self.qmf_session.bindClass(pkg[0]._name.lower(), pkg[1]._name.lower()) + + # Handle bind by package for pkg in self.qmf_packages: - self.qmf_session.bindPackage(pkg._name) + if not pkg in already_bound_list: + self.qmf_session.bindPackage(pkg._name.lower())
for uri in self.broker_uris: self.add_broker(uri)
cumin-developers@lists.fedorahosted.org