Author: tmckay
Date: 2011-04-21 15:20:45 +0000 (Thu, 21 Apr 2011)
New Revision: 4731
Modified:
trunk/cumin/bin/cumin-data
trunk/cumin/bin/cumin-web
trunk/cumin/python/cumin/main.py
trunk/cumin/python/cumin/session.py
trunk/mint/python/mint/main.py
trunk/mint/python/mint/session.py
trunk/mint/python/mint/update.py
Log:
Filter deletion of database objects on agent create/delete by the list of
bound QMF classes in a cumin-data instance.
Also reference sasl_mech_list through self.app in session.py files (minor)
BZ698712
Modified: trunk/cumin/bin/cumin-data
===================================================================
--- trunk/cumin/bin/cumin-data 2011-04-21 13:32:15 UTC (rev 4730)
+++ trunk/cumin/bin/cumin-data 2011-04-21 15:20:45 UTC (rev 4731)
@@ -125,7 +125,8 @@
mint = Mint(model_dir, broker_uris, opts.database)
- mint.sasl_mech_list = values.sasl_mech_list
+ if type(values.sasl_mech_list) == str:
+ mint.sasl_mech_list = values.sasl_mech_list.upper()
mint.print_event_level = opts.print_events
@@ -146,7 +147,7 @@
opts.section)
if values.include_classes or values.exclude_classes:
- mint.session.qmf_classes = includes.difference(excludes)
+ mint.qmf_classes = includes.difference(excludes)
if opts.init_only or return_code:
return
Modified: trunk/cumin/bin/cumin-web
===================================================================
--- trunk/cumin/bin/cumin-web 2011-04-21 13:32:15 UTC (rev 4730)
+++ trunk/cumin/bin/cumin-web 2011-04-21 15:20:45 UTC (rev 4731)
@@ -85,7 +85,9 @@
cumin = Cumin(config.get_home(), broker_uris, opts.database,
opts.host, opts.port, values.persona)
- cumin.sasl_mech_list = values.sasl_mech_list
+ if type(values.sasl_mech_list) == str:
+ cumin.sasl_mech_list = values.sasl_mech_list.upper()
+
cumin.debug = opts.debug
cumin.user = values.user
cumin.update_interval = values.update_interval
Modified: trunk/cumin/python/cumin/main.py
===================================================================
--- trunk/cumin/python/cumin/main.py 2011-04-21 13:32:15 UTC (rev 4730)
+++ trunk/cumin/python/cumin/main.py 2011-04-21 15:20:45 UTC (rev 4731)
@@ -177,10 +177,6 @@
def start(self):
log.info("Starting %s", self)
- # Late binding. sasl_mech_list is not needed until
- # session is started.
- if type(self.sasl_mech_list) == str:
- self.session.sasl_mech_list = self.sasl_mech_list.upper()
self.session.start()
self.server.start()
Modified: trunk/cumin/python/cumin/session.py
===================================================================
--- trunk/cumin/python/cumin/session.py 2011-04-21 13:32:15 UTC (rev 4730)
+++ trunk/cumin/python/cumin/session.py 2011-04-21 15:20:45 UTC (rev 4731)
@@ -11,7 +11,6 @@
def __init__(self, app, broker_uris):
self.app = app
self.broker_uris = broker_uris
- self.sasl_mech_list = None
self.qmf_session = None
self.qmf_brokers = list()
@@ -23,11 +22,11 @@
self.lock = Lock()
def add_broker(self, uri):
- log.info("Adding QMF broker at %s", uri)
+ log.info("Adding QMF broker at %s with mech_list %s", uri,
str(self.app.sasl_mech_list))
assert self.qmf_session
- qmf_broker = self.qmf_session.addBroker(uri,mechanisms=self.sasl_mech_list)
+ qmf_broker = self.qmf_session.addBroker(uri,mechanisms=self.app.sasl_mech_list)
self.qmf_brokers.append(qmf_broker)
Modified: trunk/mint/python/mint/main.py
===================================================================
--- trunk/mint/python/mint/main.py 2011-04-21 13:32:15 UTC (rev 4730)
+++ trunk/mint/python/mint/main.py 2011-04-21 15:20:45 UTC (rev 4731)
@@ -31,6 +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.
+ self.qmf_classes = None
+
def check(self):
log.info("Checking %s", self)
@@ -60,10 +64,6 @@
self.update_thread.start()
- # Late binding. sasl_mech_list is not needed until
- # session is started.
- if type(self.sasl_mech_list) == str:
- self.session.sasl_mech_list = self.sasl_mech_list.upper()
self.session.start()
if self.expire_enabled:
Modified: trunk/mint/python/mint/session.py
===================================================================
--- trunk/mint/python/mint/session.py 2011-04-21 13:32:15 UTC (rev 4730)
+++ trunk/mint/python/mint/session.py 2011-04-21 15:20:45 UTC (rev 4731)
@@ -9,21 +9,16 @@
def __init__(self, app, broker_uris):
self.app = app
self.broker_uris = broker_uris
- self.sasl_mech_list = None
self.qmf_session = None
self.qmf_brokers = list()
- # This will become a sequence if
- # class binding is specifed in configuration
- self.qmf_classes = None
-
def add_broker(self, uri):
- log.info("Adding QMF broker at %s", uri)
+ log.info("Adding QMF broker at %s with mech_list %s", uri,
str(self.app.sasl_mech_list))
assert self.qmf_session
- qmf_broker = self.qmf_session.addBroker(uri, mechanisms=self.sasl_mech_list)
+ qmf_broker = self.qmf_session.addBroker(uri, mechanisms=self.app.sasl_mech_list)
self.qmf_brokers.append(qmf_broker)
def check(self):
@@ -51,8 +46,8 @@
package_filter = ["com.redhat.cumin",
"com.redhat.cumin.grid"]
# Handle bind by class
- if self.qmf_classes:
- for cls in self.qmf_classes:
+ if self.app.qmf_classes:
+ for cls in self.app.qmf_classes:
pname = cls._package._name
cname = cls._name
if pname not in package_filter:
Modified: trunk/mint/python/mint/update.py
===================================================================
--- trunk/mint/python/mint/update.py 2011-04-21 13:32:15 UTC (rev 4730)
+++ trunk/mint/python/mint/update.py 2011-04-21 15:20:45 UTC (rev 4731)
@@ -184,7 +184,7 @@
log.debug("Processing %s", self)
try:
- self.do_process(thread.cursor, thread.stats)
+ self.do_process(thread.cursor, thread.stats, thread.app.qmf_classes)
thread.conn.commit()
except UpdateDropped:
@@ -205,7 +205,7 @@
if thread.halt_on_error:
raise
- def do_process(self, cursor, stats):
+ def do_process(self, cursor, stats, bound_classes):
raise Exception("Not implemented")
def __repr__(self):
@@ -217,7 +217,7 @@
self.qmf_object = qmf_object
- def do_process(self, cursor, stats):
+ def do_process(self, cursor, stats, bound_classes):
cls = self.get_class()
agent_id = self.get_agent_id()
object_id = self.get_object_id()
@@ -574,7 +574,7 @@
def get_agent_id(self):
return make_agent_id(self.qmf_agent)
- def do_process(self, cursor, stats):
+ def do_process(self, cursor, stats, bound_classes):
agent_id = self.get_agent_id()
try:
@@ -584,7 +584,7 @@
stats.agents_created += 1
- self.delete_agent_objects(cursor, stats, agent)
+ self.delete_agent_objects(cursor, stats, agent, bound_classes)
return
@@ -595,22 +595,26 @@
stats.agents_updated += 1
- def delete_agent_objects(self, cursor, stats, agent):
- for pkg in self.model._packages:
- for cls in pkg._classes:
- if cls._storage == "none":
- continue
+ def delete_agent_objects(self, cursor, stats, agent, bound_classes):
- if cls is self.model.com_redhat_grid.Collector:
- continue
-
+ def loop_body(cls):
+ if cls._storage != "none" and cls is not
self.model.com_redhat_grid.Collector:
count = cls.delete_selection(cursor, _qmf_agent_id=agent.id)
-
stats.objects_deleted += count
#stats.objects_deleted_by_class[cls] += count
-
cursor.connection.commit()
+ if bound_classes:
+ log.debug("Delete agent objects by bound classes " +
str(bound_classes))
+ for cls in bound_classes:
+ loop_body(cls)
+ else:
+ # We bound all classes. Loop over model
+ log.debug("Delete agent objects, all classes")
+ for pkg in self.model._packages:
+ for cls in pkg._classes:
+ loop_body(cls)
+
def __repr__(self):
name = self.__class__.__name__
agent_id = self.get_agent_id()
@@ -618,7 +622,7 @@
return "%s(%s)" % (name, agent_id)
class AgentDelete(AgentUpdate):
- def do_process(self, cursor, stats):
+ def do_process(self, cursor, stats, bound_classes):
agent_id = self.get_agent_id()
try:
@@ -630,7 +634,7 @@
stats.agents_deleted += 1
- self.delete_agent_objects(cursor, stats, agent)
+ self.delete_agent_objects(cursor, stats, agent, bound_classes)
class UpdateDropped(Exception):
pass