Author: tmckay
Date: 2011-04-25 12:47:34 +0000 (Mon, 25 Apr 2011)
New Revision: 4733
Modified:
trunk/cumin/bin/cumin-data
trunk/cumin/python/cumin/config.py
trunk/mint/python/mint/main.py
trunk/mint/python/mint/session.py
Log:
Allow optional restrictions on binding of QMF agents
Modified: trunk/cumin/bin/cumin-data
===================================================================
--- trunk/cumin/bin/cumin-data 2011-04-21 16:30:58 UTC (rev 4732)
+++ trunk/cumin/bin/cumin-data 2011-04-25 12:47:34 UTC (rev 4733)
@@ -54,6 +54,37 @@
return return_code, pkgs
+def process_agents(values, section_name):
+
+ return_code = 0
+ agents = set()
+ if values and len(values) > 0:
+
+ for agent_str in values.split(","):
+ agent_str = agent_str.strip()
+ if agent_str[0] == ":":
+ # Leading : indicates V1 agent label value
+ agents.add((agent_str[1:],))
+ else:
+ # V2, Looking for vendor, product, instance
+ vendor = product = instance = "*"
+ agent = agent_str.split(":")
+ if len(agent) > 3:
+ log.error("Configuration section '%s',"\
+ " agent name '%s' is badly formed"\
+ % (section_name, agent_str))
+ return_code = 1
+ break
+ if len(agent) >= 1:
+ vendor = agent[0]
+ if len(agent) >= 2:
+ product = agent[1]
+ if len(agent) == 3:
+ instance = agent[2]
+ agents.add((vendor, product, instance))
+
+ return return_code, agents
+
def main():
# Do our own simple option check so we can redirect IO early
@@ -138,17 +169,23 @@
mint.check()
mint.init()
- return_code, includes = process_classes(mint,
- values.include_classes,
- opts.section,
on_empty="all")
+ # Handle QMF class binding options
+ if values.include_classes or values.exclude_classes:
+ return_code, includes = process_classes(mint,
+ values.include_classes,
+ opts.section,
on_empty="all")
- return_code, excludes = process_classes(mint,
- values.exclude_classes,
- opts.section)
+ return_code, excludes = process_classes(mint,
+ values.exclude_classes,
+ opts.section)
- if values.include_classes or values.exclude_classes:
mint.qmf_classes = includes.difference(excludes)
+ # Handle agents binding option
+ if values.agents:
+ return_code, agents = process_agents(values.agents, opts.section)
+ mint.qmf_agents = agents
+
if opts.init_only or return_code:
return
Modified: trunk/cumin/python/cumin/config.py
===================================================================
--- trunk/cumin/python/cumin/config.py 2011-04-21 16:30:58 UTC (rev 4732)
+++ trunk/cumin/python/cumin/config.py 2011-04-25 12:47:34 UTC (rev 4733)
@@ -58,6 +58,7 @@
param = ConfigParameter(data, "include-classes", str)
param = ConfigParameter(data, "exclude-classes", str)
+ param = ConfigParameter(data, "agents", str)
param = ConfigParameter(data, "expire-interval", int)
param.default = 60 * 60 # 1 hour
Modified: trunk/mint/python/mint/main.py
===================================================================
--- trunk/mint/python/mint/main.py 2011-04-21 16:30:58 UTC (rev 4732)
+++ trunk/mint/python/mint/main.py 2011-04-25 12:47:34 UTC (rev 4733)
@@ -31,8 +31,10 @@
# mechanisms, according to the sasl documentation
self.sasl_mech_list = None
- # List of classes to bind. Passed on to update
- # thread and session.
+ # List of agents to bind. Referenced by session.
+ self.qmf_agents = None
+
+ # List of classes to bind. Referenced by session and update thread.
self.qmf_classes = None
def check(self):
Modified: trunk/mint/python/mint/session.py
===================================================================
--- trunk/mint/python/mint/session.py 2011-04-21 16:30:58 UTC (rev 4732)
+++ trunk/mint/python/mint/session.py 2011-04-25 12:47:34 UTC (rev 4733)
@@ -39,7 +39,20 @@
rcvHeartbeats=False,
userBindings=True)
- self.qmf_session.bindAgent("*")
+ if self.app.qmf_agents:
+ for agent in self.app.qmf_agents:
+ if len(agent) == 1:
+ self.qmf_session.bindAgent(label=agent[0])
+ log.info("Binding agent, label is %s" % agent[0])
+ else:
+ self.qmf_session.bindAgent(vendor=agent[0],
+ product=agent[1],
+ instance=agent[2])
+ log.info("Binding agent %s:%s:%s" %
(agent[0],agent[1],agent[2]))
+
+ else:
+ self.qmf_session.bindAgent("*")
+ log.info("Binding all agents")
# Filter out classes we know should not be bound at this point in time
# This is to prevent confusion in log files.