rhmessaging commits: r4276 - mgmt/newdata/cumin/python/cumin/grid.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-11 17:02:19 -0400 (Sat, 11 Sep 2010)
New Revision: 4276
Modified:
mgmt/newdata/cumin/python/cumin/grid/job.py
mgmt/newdata/cumin/python/cumin/grid/job.strings
Log:
Fix for BZ 632614. Now displaying an error message if the GetJobSummaries qmf call returns with an exception.
Modified: mgmt/newdata/cumin/python/cumin/grid/job.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/job.py 2010-09-10 18:59:26 UTC (rev 4275)
+++ mgmt/newdata/cumin/python/cumin/grid/job.py 2010-09-11 21:02:19 UTC (rev 4276)
@@ -107,18 +107,18 @@
submission = values["obj"]
results = self.app.model.get_submission_job_summaries(submission)
- #TODO: handle error status and create an invok message
if isinstance(results.data, dict):
- rows = super(JobSummariesAdapter, self).process_results(results.data)
+ rows = self.process_results(results.data)
elif isinstance(results.data, list):
- rows = self.process_results(results.data)
+ rows = self.process_list_results(results.data)
else:
rows = []
page = rows[first_index:last_index]
- return page
- def process_results(self, results):
+ return page, results
+
+ def process_list_results(self, results):
# the results for this call is a list
records = list()
@@ -182,6 +182,10 @@
self.job_id_column.visible = False
self.add_column(self.job_id_column)
+ self.error_tmpl = WidgetTemplate(self, "error_html")
+ self.qmf_response = Attribute(app, "qmf_response")
+ self.add_attribute(self.qmf_response)
+
JobSelectionHold(app, self, "held")
JobSelectionRelease(app, self, "released")
JobSelectionRemove(app, self, "removed")
@@ -199,6 +203,30 @@
def render_title(self, session):
return "Jobs"
+ def do_render(self, session):
+ # determine if there is an error getting the data
+ # and show an error message
+ self.get_data(session)
+ qmf_response = self.qmf_response.get(session)
+ if qmf_response.exception:
+ writer = Writer()
+ msg = "The data is not available at this time. <br/>%s" % str(qmf_response.exception.message)
+ self.error_tmpl.render(writer, session, msg)
+ return writer.to_string()
+
+ return super(JobSelector, self).do_render(session)
+
+ def get_data(self, session):
+ values = self.get_data_values(session)
+ options = self.get_data_options(session)
+
+ results, qmf_response = self.adapter.get_data(values, options)
+ self.qmf_response.set(session, qmf_response)
+ return results
+
+ def render_error_msg(self, session, msg):
+ return msg
+
def get_data_values(self, session):
values = super(JobSelector, self).get_data_values(session)
Modified: mgmt/newdata/cumin/python/cumin/grid/job.strings
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/job.strings 2010-09-10 18:59:26 UTC (rev 4275)
+++ mgmt/newdata/cumin/python/cumin/grid/job.strings 2010-09-11 21:02:19 UTC (rev 4276)
@@ -172,3 +172,12 @@
<textarea id="{id}" name="job_output" class="job_output" rows="20" cols="80">
{loading}
</textarea>
+
+[JobSelector.error_html]
+<div id="{id}">
+ <div class="TaskInvocationSet">
+ <ul>
+ <li>{error_msg}</li>
+ </ul>
+ </div>
+</div>
15 years, 7 months
rhmessaging commits: r4275 - mgmt/newdata/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-10 14:59:26 -0400 (Fri, 10 Sep 2010)
New Revision: 4275
Modified:
mgmt/newdata/cumin/python/cumin/widgets.strings
Log:
Fix BZ 623168: Changed the Page Updated text to Updated $datetime
Modified: mgmt/newdata/cumin/python/cumin/widgets.strings
===================================================================
--- mgmt/newdata/cumin/python/cumin/widgets.strings 2010-09-10 16:49:25 UTC (rev 4274)
+++ mgmt/newdata/cumin/python/cumin/widgets.strings 2010-09-10 18:59:26 UTC (rev 4275)
@@ -105,13 +105,18 @@
}
[CuminMainView.javascript]
- wooly.addPageUpdateListener( function () {
- var myEffect = new Fx.Morph('heartbeat', {duration: 1000});
+ cumin.set_updated = function () {
+ $('heartbeat').set('text', "Updated " + new Date().format("%Y-%m-%d %H:%M:%S"));
$('shock').style.display = "none";
$('heartbeat').style.display = "inline";
$('heartbeat').style.color = "#000000";
- setTimeout(function () {myEffect.start({ 'color': ['#000000', '#CCCCCC'] })}, 500);
+ if (typeof cumin.myEffect == "undefined")
+ cumin.myEffect = new Fx.Morph('heartbeat', {duration: 1000});
+ setTimeout(function () {cumin.myEffect.start({ 'color': ['#000000', '#666666'] })}, 500);
+ }
+ wooly.addPageUpdateListener( function () {
+ cumin.set_updated();
});
cumin.expireIntervalUpdate = function () {
if (typeof cumin.expireID != "undefined") {
@@ -132,6 +137,9 @@
}, 30*60*1000);
};
cumin.expireIntervalUpdate();
+ window.addEvent('domready', function () {
+ cumin.set_updated();
+ });
[CuminMainView.html]
<div id="head">
@@ -220,7 +228,7 @@
[CuminHeartBeat.html]
<div id="updateStatus">
- <span id="heartbeat">Page Updated</span>
+ <span id="heartbeat"></span>
<button id="shock">Resume Updates</button>
</div>
15 years, 7 months
rhmessaging commits: r4274 - mgmt/newdata/cumin/python/cumin/grid.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-10 12:49:25 -0400 (Fri, 10 Sep 2010)
New Revision: 4274
Modified:
mgmt/newdata/cumin/python/cumin/grid/daemon.py
Log:
Fix BZ 534077: Use new rosemary methods to call Master.Start and Master.Stop
Modified: mgmt/newdata/cumin/python/cumin/grid/daemon.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/daemon.py 2010-09-10 15:27:03 UTC (rev 4273)
+++ mgmt/newdata/cumin/python/cumin/grid/daemon.py 2010-09-10 16:49:25 UTC (rev 4274)
@@ -1,7 +1,26 @@
from cumin.objectframe import *
from cumin.objectselector import *
-class DaemonStart(ObjectFrameTask):
+class DaemonFrameTask(ObjectFrameTask):
+ def get_master(self, system_name, invoc):
+ cls = self.app.model.com_redhat_grid.Master
+
+ conn = self.app.database.get_connection()
+ cursor = conn.cursor()
+
+ try:
+ master = cls.get_object(cursor, System=system_name)
+ finally:
+ conn.close()
+
+ if not master:
+ invoc.exception = Exception("Master daemon not running")
+ invoc.status = invoc.FAILED
+ invoc.end()
+
+ return master
+
+class DaemonStart(DaemonFrameTask):
def __init__(self, app, frame, target):
super(DaemonStart, self).__init__(app, frame)
@@ -15,14 +34,11 @@
def do_invoke(self, invoc, daemon):
system_name = daemon.System
- try:
- master = Master.select("System = '%s'" % system_name)[0]
- except IndexError:
- raise Exception("Master daemon not running")
+ master = self.get_master(system_name, invoc)
+ if master:
+ self.qmf_call(invoc, master, "Start", self.target)
- master.Start(completion, self.target)
-
-class DaemonStop(ObjectFrameTask):
+class DaemonStop(DaemonFrameTask):
def __init__(self, app, frame, target):
super(DaemonStop, self).__init__(app, frame)
@@ -36,14 +52,30 @@
def do_invoke(self, invoc, daemon):
system_name = daemon.System
+ master = self.get_master(system_name, invoc)
+ if master:
+ self.qmf_call(invoc, master, "Stop", self.target)
+
+class DaemonSelectorTask(ObjectSelectorTask):
+ def get_master(self, system_name, invoc):
+ cls = self.app.model.com_redhat_grid.Master
+
+ conn = self.app.database.get_connection()
+ cursor = conn.cursor()
+
try:
- master = Master.select("System = '%s'" % system_name)[0]
- except IndexError:
- raise Exception("Master daemon not running")
+ master = cls.get_object(cursor, System=system_name)
+ finally:
+ conn.close()
+
+ if not master:
+ invoc.exception = Exception("Master daemon not running")
+ invoc.status = invoc.FAILED
+ invoc.end()
+
+ return master
- master.Stop(completion, self.target)
-
-class DaemonSelectionStart(ObjectSelectorTask):
+class DaemonSelectionStart(DaemonSelectorTask):
def __init__(self, app, selector, target):
super(DaemonSelectionStart, self).__init__(app, selector)
@@ -57,17 +89,16 @@
def do_invoke(self, invoc, daemon):
system_name = daemon.System
- try:
- master = Master.select("System = '%s'" % system_name)[0]
- except IndexError:
- raise Exception("Master daemon not running")
+ master = self.get_master(system_name, invoc)
+ if master:
+ self.qmf_call(invoc, master, "Start", self.target)
- master.Start(completion, self.target)
-
-class DaemonSelectionStop(ObjectSelectorTask):
+class DaemonSelectionStop(DaemonSelectorTask):
def __init__(self, app, selector, target):
super(DaemonSelectionStop, self).__init__(app, selector)
+ cls = app.model.com_redhat_grid.Master
+
self.target = target
self.name = "%s_%s" % (self.name, self.target)
@@ -78,9 +109,6 @@
def do_invoke(self, invoc, daemon):
system_name = daemon.System
- try:
- master = Master.select("System = '%s'" % system_name)[0]
- except IndexError:
- raise Exception("Master daemon not running")
-
- master.Stop(completion, self.target)
+ master = self.get_master(system_name, invoc)
+ if master:
+ self.qmf_call(invoc, master, "Stop", self.target)
15 years, 7 months
rhmessaging commits: r4273 - mgmt/newdata/cumin/python/cumin/grid.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-10 11:27:03 -0400 (Fri, 10 Sep 2010)
New Revision: 4273
Modified:
mgmt/newdata/cumin/python/cumin/grid/job.py
mgmt/newdata/cumin/python/cumin/grid/job.strings
Log:
Fix for BZ 268701. Provide feedback when GetJobAds qmf call returns an error.
Also included is the code to handle a list returned from GetJobSummaries instead of a dict
Modified: mgmt/newdata/cumin/python/cumin/grid/job.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/job.py 2010-09-10 00:21:05 UTC (rev 4272)
+++ mgmt/newdata/cumin/python/cumin/grid/job.py 2010-09-10 15:27:03 UTC (rev 4273)
@@ -108,18 +108,48 @@
submission = values["obj"]
results = self.app.model.get_submission_job_summaries(submission)
#TODO: handle error status and create an invok message
- rows = self.process_results(results.data)
+
+ if isinstance(results.data, dict):
+ rows = super(JobSummariesAdapter, self).process_results(results.data)
+ elif isinstance(results.data, list):
+ rows = self.process_results(results.data)
+ else:
+ rows = []
page = rows[first_index:last_index]
return page
+ def process_results(self, results):
+ # the results for this call is a list
+ records = list()
+
+ if results:
+ for rec in results:
+ row = self.process_record(None, rec)
+ records.append(row)
+
+ return records
+
def process_record(self, key, record):
field_data = list()
for column in self.columns:
try:
val = record[column.name]
except KeyError:
+ val = None
if column.name == "JobId":
- val = key
+ # GlobalJobId should look like localhost6.localdomain6#94.1#1284091602
+ try:
+ gjid = record["GlobalJobId"]
+ parts = gjid.split("#")
+ if len(parts) == 3:
+ val = parts[1]
+ except Exception, e:
+ pass
+ if not val:
+ try:
+ val = "%s.%s" % (str(record["ClusterId"]), str(record["ProcId"]))
+ except KeyError:
+ val = "0"
else:
val = 0
field_data.append(val)
@@ -304,11 +334,14 @@
self.items = Attribute(app, "cached_items")
self.add_attribute(self.items)
+ self.qmf_error = Attribute(app, "qmf_error")
+ self.add_attribute(self.qmf_error)
+
def do_get_items(self, session):
ad_list = self.items.get(session)
- error = False
+ error = self.qmf_error.get(session)
- if not ad_list:
+ if not ad_list and not error:
ad_list = list()
id = self.frame.id.get(session)
job_server = self.frame.get_job_server(session, id)
@@ -317,6 +350,7 @@
action = QmfCall(self.app, {'JobAd': {}})
results = action.execute(job_server, "GetJobAd", job_id)
error = results.error
+ self.qmf_error.set(session, error)
ads = results.data['JobAd']
cls = self.app.model.job_meta_data
ad_list = [self.gen_item(x, ads[x], cls, dtype=self.get_type(ads[x])) \
@@ -418,8 +452,15 @@
def render_groups(self, session):
writer = Writer()
- for group in self.app.model.get_ad_groups():
- self.group_tmpl.render(writer, session, group)
+
+ # check for qmf error
+ _, error = self.parent.do_get_items(session)
+ if error:
+ self.error_tmpl.render(writer, session, error.message)
+ else:
+ for group in self.app.model.get_ad_groups():
+ self.group_tmpl.render(writer, session, group)
+
return writer.to_string()
def render_group_name(self, session, group):
@@ -429,11 +470,8 @@
items, error = self.parent.get_group_items(session, group)
writer = Writer()
- if error:
- self.error_tmpl.render(writer, session, error.message)
- else:
- for item in items:
- self.parent.item_renderer.render(writer, session, item)
+ for item in items:
+ self.parent.item_renderer.render(writer, session, item)
return writer.to_string()
@@ -452,16 +490,18 @@
self.wait = Wait(app, "wait")
self.add_child(self.wait)
+ self.edit_button = JobAdsEditButton(app, "edit_button")
+ self.add_child(self.edit_button)
+
self.defer_enabled = True
+ def render_edit_button(self, session):
+ _, error = self.do_get_items(session)
+ return not error and self.edit_button.render(session) or ""
+
def render_title(self, session):
return "Attributes"
- def render_edit_ads_url(self, session):
- branch = session.branch()
- self.frame.show_ads_edit(branch)
- return branch.marshal()
-
def get_group_items(self, session, group):
group_items = list()
@@ -477,6 +517,12 @@
return group_items, error
+class JobAdsEditButton(Widget):
+ def render_edit_ads_url(self, session):
+ branch = session.branch()
+ self.parent.frame.show_ads_edit(branch)
+ return branch.marshal()
+
class JobAdsEditor(JobAdsViewer, CuminForm):
def __init__(self, app, name):
super(JobAdsEditor, self).__init__(app, name)
Modified: mgmt/newdata/cumin/python/cumin/grid/job.strings
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/job.strings 2010-09-10 00:21:05 UTC (rev 4272)
+++ mgmt/newdata/cumin/python/cumin/grid/job.strings 2010-09-10 15:27:03 UTC (rev 4273)
@@ -1,8 +1,6 @@
[JobAdsViewer.html]
<div id="{id}">
-<ul class="actions">
- <li><a class="nav" href="{edit_ads_url}">Edit Attributes</a></li>
-</ul>
+{edit_button}
<table class="CuminDetails">
<tbody>
<tr>
@@ -12,9 +10,7 @@
</tr>
</tbody>
</table>
-<ul class="actions">
- <li><a class="nav" href="{edit_ads_url}">Edit Attributes</a></li>
-</ul>
+{edit_button}
</div>
[JobAdsViewer.deferred_html]
@@ -22,6 +18,11 @@
{wait}
</div>
+[JobAdsEditButton.html]
+<ul class="actions">
+ <li><a class="nav" href="{edit_ads_url}">Edit Attributes</a></li>
+</ul>
+
[JobAdsGroups.css]
div.ads_error {
margin: 1em;
@@ -54,7 +55,11 @@
</table>
[JobAdsGroups.error_html]
-<div class="ads_error">{error_msg}</div>
+<div class="TaskInvocationSet">
+ <ul>
+ <li>{error_msg}</li>
+ </ul>
+</div>
[JobAdsViewer.property_html]
<tr>
15 years, 7 months
rhmessaging commits: r4272 - mgmt/newdata/cumin/python/cumin/grid.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-09 20:21:05 -0400 (Thu, 09 Sep 2010)
New Revision: 4272
Modified:
mgmt/newdata/cumin/python/cumin/grid/limit.py
Log:
Fixed error in SetLimit qmf call. Was passing in an int. It should have been a float.
Modified: mgmt/newdata/cumin/python/cumin/grid/limit.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/limit.py 2010-09-09 23:47:49 UTC (rev 4271)
+++ mgmt/newdata/cumin/python/cumin/grid/limit.py 2010-09-10 00:21:05 UTC (rev 4272)
@@ -131,6 +131,7 @@
def do_invoke(self, invoc, negotiator, limit_name, limit_max):
action = QmfCall(self.app)
+ limit_max = float(limit_max)
results = action.execute(negotiator, "SetLimit", limit_name, limit_max)
if results.error:
15 years, 7 months
rhmessaging commits: r4271 - mgmt/newdata/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-09 19:47:49 -0400 (Thu, 09 Sep 2010)
New Revision: 4271
Modified:
mgmt/newdata/cumin/python/cumin/model.py
Log:
Stringify the status value returned by a qmf call when there is an error. It *should* always be a string anyway, but apparently sometimes it isn't.
Modified: mgmt/newdata/cumin/python/cumin/model.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/model.py 2010-09-09 20:24:51 UTC (rev 4270)
+++ mgmt/newdata/cumin/python/cumin/model.py 2010-09-09 23:47:49 UTC (rev 4271)
@@ -1576,7 +1576,7 @@
self.data = data
self.got_data = True
else:
- self.error = QmfException(status)
+ self.error = QmfException(str(status))
return completion
def do_wait(self):
15 years, 7 months
rhmessaging commits: r4270 - mgmt/newdata/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-09 16:24:51 -0400 (Thu, 09 Sep 2010)
New Revision: 4270
Modified:
mgmt/newdata/cumin/python/cumin/model.py
Log:
Pass any exception back in the object store return
Modified: mgmt/newdata/cumin/python/cumin/model.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/model.py 2010-09-09 19:08:08 UTC (rev 4269)
+++ mgmt/newdata/cumin/python/cumin/model.py 2010-09-09 20:24:51 UTC (rev 4270)
@@ -1900,6 +1900,7 @@
self.model = model
self.data = None
self.status = None
+ self.exception = None
self.update_thread = self.UpdateThread(self)
@@ -1927,8 +1928,10 @@
for i in range(20):
try:
self.store.update(cursor)
+ self.store.exception = None
except Exception, e:
log.exception(e)
+ self.store.exception = e
sleep(30)
finally:
15 years, 7 months
rhmessaging commits: r4269 - mgmt/newdata/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-09 15:08:08 -0400 (Thu, 09 Sep 2010)
New Revision: 4269
Modified:
mgmt/newdata/cumin/python/cumin/stat.py
Log:
Turn sample averaging on for rate charts.
Modified: mgmt/newdata/cumin/python/cumin/stat.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/stat.py 2010-09-09 19:06:43 UTC (rev 4268)
+++ mgmt/newdata/cumin/python/cumin/stat.py 2010-09-09 19:08:08 UTC (rev 4269)
@@ -330,12 +330,8 @@
if interval != -1:
return interval
else:
- mode = self.mode.get(session)
- if mode == "rate":
- return 1
- else:
- max_samples = int(width * 1.5)
- return max(int(duration / max_samples), 1)
+ max_samples = int(width * 1.5)
+ return max(int(duration / max_samples), 1)
def render_samples(self, session, recent):
c = {(1,0,0): "red", (0,0,1): "blue", (0,1,0): "green"}
@@ -364,10 +360,10 @@
if self.samples.get(session):
return self.render_samples(session, recent)
- if recent:
- cached_png = self.get_cached(session, recent)
- if cached_png:
- return cached_png
+ #if recent:
+ # cached_png = self.get_cached(session, recent)
+ # if cached_png:
+ # return cached_png
samples = dict()
values = dict()
@@ -381,7 +377,8 @@
chart = TimeSeriesChart(width, height, interval=interval)
if mode == "rate":
- method = None # don't do averaging
+ #method = None # don't do averaging
+ method = self.method.get(session)
for stat in stats:
os = adapter.samples(stat, duration, interval, method)
ns = list()
@@ -414,6 +411,10 @@
max_value = deviated_values and max(max(deviated_values)) or 1
min_value = deviated_values and min(min(deviated_values)) or 0
+ # convert from decimal to float to avoid exceptions
+ max_value = float(max_value)
+ min_value = float(min_value)
+
max_value = round(max_value * 1.1 + 1)
if min_value < 0:
@@ -733,8 +734,8 @@
return False
def fix_method(self, method, mode):
- if mode == "rate":
- return None
+ #if mode == "rate":
+ # return None
return method
def create(self, session, adapter, stats):
15 years, 7 months
rhmessaging commits: r4268 - mgmt/newdata/cumin/python/cumin/grid.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2010-09-09 15:06:43 -0400 (Thu, 09 Sep 2010)
New Revision: 4268
Modified:
mgmt/newdata/cumin/python/cumin/grid/job.py
Log:
Set the job hold/release reason text to be required
Modified: mgmt/newdata/cumin/python/cumin/grid/job.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/grid/job.py 2010-09-09 15:07:32 UTC (rev 4267)
+++ mgmt/newdata/cumin/python/cumin/grid/job.py 2010-09-09 19:06:43 UTC (rev 4268)
@@ -251,6 +251,7 @@
self.add_parameter(self.submission_id)
self.content = ReasonField(app, "fields")
+ self.content.required = True
self.replace_child(self.content)
self.verb = verb
@@ -766,6 +767,7 @@
super(JobActionForm, self).__init__(app, name, task)
self.reason = ReasonField(app, "reason")
+ self.reason.required = True
self.add_field(self.reason)
self.job_id = Parameter(app, "job_id")
15 years, 7 months
rhmessaging commits: r4267 - in mgmt/newdata: rosemary/python/rosemary and 1 other directory.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2010-09-09 11:07:32 -0400 (Thu, 09 Sep 2010)
New Revision: 4267
Modified:
mgmt/newdata/cumin/python/cumin/session.py
mgmt/newdata/rosemary/python/rosemary/model.py
Log:
For bzs 630848 and 630855, deploy a workaround for bz 446079. Handle v1 qmf ids specially.
Modified: mgmt/newdata/cumin/python/cumin/session.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/session.py 2010-09-09 13:34:55 UTC (rev 4266)
+++ mgmt/newdata/cumin/python/cumin/session.py 2010-09-09 15:07:32 UTC (rev 4267)
@@ -75,15 +75,34 @@
if not agent:
raise Exception("Agent '%s' is unknown" % obj._qmf_agent_id)
+ if obj._qmf_object_id.isdigit():
+ # Translate v1 object ids
+
+ if obj._class is self.app.model.org_apache_qpid_broker.Queue:
+ # A very special workaround for queue keys
+
+ key = obj.name
+ else:
+ key_args = [getattr(obj, x.name)
+ for x in obj._class._attributes
+ if x.index]
+ key = ",".join(key_args)
+
+ id_args = (obj._class._package._name, obj._class._name.lower(), key)
+
+ object_id = ":".join(id_args)
+ else:
+ object_id = obj._qmf_object_id
+
oid = ObjectId({"_agent_name": obj._qmf_agent_id,
- "_object_name": obj._qmf_object_id})
+ "_object_name": object_id})
qmf_objs = agent.getObjects(_objectId=oid)
try:
qmf_obj = qmf_objs[0]
except IndexError:
- raise Exception("Object '%s' is unknown" % obj._qmf_object_id)
+ raise Exception("Object '%s' is unknown" % object_id)
self.lock.acquire()
try:
Modified: mgmt/newdata/rosemary/python/rosemary/model.py
===================================================================
--- mgmt/newdata/rosemary/python/rosemary/model.py 2010-09-09 13:34:55 UTC (rev 4266)
+++ mgmt/newdata/rosemary/python/rosemary/model.py 2010-09-09 15:07:32 UTC (rev 4267)
@@ -145,6 +145,8 @@
self._title = None
self._object_title = None
+ self._attributes = list()
+
self._headers = list()
self._headers_by_name = dict()
@@ -491,6 +493,8 @@
self.cls = cls
self.name = name
+ self.cls._attributes.append(self)
+
assert not hasattr(self.cls, self.name), self.name
setattr(self.cls, self.name, self)
15 years, 7 months