[rhmessaging-commits] rhmessaging commits: r3369 - in mgmt/trunk: etc and 7 other directories.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Fri May 8 10:33:27 EDT 2009


Author: justi9
Date: 2009-05-08 10:33:27 -0400 (Fri, 08 May 2009)
New Revision: 3369

Added:
   mgmt/trunk/rosemary/
   mgmt/trunk/rosemary/COPYING
   mgmt/trunk/rosemary/LICENSE
   mgmt/trunk/rosemary/Makefile
   mgmt/trunk/rosemary/bin/
   mgmt/trunk/rosemary/bin/rosemary-test
   mgmt/trunk/rosemary/etc/
   mgmt/trunk/rosemary/etc/module.profile
   mgmt/trunk/rosemary/instance/
   mgmt/trunk/rosemary/instance/xml
   mgmt/trunk/rosemary/python/
   mgmt/trunk/rosemary/python/rosemary/
   mgmt/trunk/rosemary/python/rosemary/__init__.py
   mgmt/trunk/rosemary/python/rosemary/model.py
   mgmt/trunk/rosemary/python/rosemary/sql.py
   mgmt/trunk/rosemary/python/rosemary/util.py
   mgmt/trunk/rosemary/xml/
   mgmt/trunk/rosemary/xml/Makefile
   mgmt/trunk/rosemary/xml/condor.xml
   mgmt/trunk/rosemary/xml/qpid-acl.xml
   mgmt/trunk/rosemary/xml/qpid-cluster.xml
   mgmt/trunk/rosemary/xml/qpid-store.xml
   mgmt/trunk/rosemary/xml/qpid.xml
   mgmt/trunk/rosemary/xml/sesame.xml
Modified:
   mgmt/trunk/etc/devel.profile
Log:
Initial check in of rosemary, a 'mini mint' for cumin's use

Modified: mgmt/trunk/etc/devel.profile
===================================================================
--- mgmt/trunk/etc/devel.profile	2009-05-08 14:27:05 UTC (rev 3368)
+++ mgmt/trunk/etc/devel.profile	2009-05-08 14:33:27 UTC (rev 3369)
@@ -1,5 +1,5 @@
 export DEVEL_HOME="$PWD"
-export DEVEL_MODULES="mint cumin basil parsley wooly"
+export DEVEL_MODULES="mint cumin basil parsley wooly rosemary"
 
 if [[ -z "$DEVEL_ORIGINAL_PATH" ]]; then
     export DEVEL_ORIGINAL_PATH="$PATH"

Added: mgmt/trunk/rosemary/COPYING
===================================================================
--- mgmt/trunk/rosemary/COPYING	                        (rev 0)
+++ mgmt/trunk/rosemary/COPYING	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,15 @@
+Copyright (C) 2007 Red Hat Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Added: mgmt/trunk/rosemary/LICENSE
===================================================================
--- mgmt/trunk/rosemary/LICENSE	                        (rev 0)
+++ mgmt/trunk/rosemary/LICENSE	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,280 @@
+                    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS

Added: mgmt/trunk/rosemary/Makefile
===================================================================
--- mgmt/trunk/rosemary/Makefile	                        (rev 0)
+++ mgmt/trunk/rosemary/Makefile	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,35 @@
+.PHONY: build install schema clean
+
+include ../etc/Makefile.common
+
+name := rosemary
+
+lib := ${PYTHON_LIB_DIR}/${name}
+etc := ${ETC_DIR}/${name}
+doc := ${DOC_DIR}/${name}
+share := ${SHARE_DIR}/${name}
+
+build:
+	../bin/python-compile python
+
+install: build
+	install -d ${lib}
+	install python/rosemary/*.py python/rosemary/*.pyc ${lib}
+	install -d ${BIN_DIR}
+	install bin/* ${BIN_DIR}
+	install -d ${doc}
+	install LICENSE COPYING ${doc}
+	install -d ${share}/sql
+	install sql/* ${share}/sql
+	install -d ${etc}
+	install -pm 0644 etc/* ${etc}
+
+schema:
+	$(MAKE) schema -C xml
+	$(MAKE) schema -C python/rosemary
+	$(MAKE) schema -C sql
+
+clean:
+	$(MAKE) clean -C xml
+	$(MAKE) clean -C python/rosemary
+	$(MAKE) clean -C sql

Added: mgmt/trunk/rosemary/bin/rosemary-test
===================================================================
--- mgmt/trunk/rosemary/bin/rosemary-test	                        (rev 0)
+++ mgmt/trunk/rosemary/bin/rosemary-test	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+
+import sys, os, logging
+from rosemary.model import *
+from rosemary.sql import *
+
+if __name__ == "__main__":
+    model = RosemaryModel()
+    model.load_qmf_dir(os.path.join(os.environ["ROSEMARY_HOME"], "xml"))
+
+    for package in model.packages:
+        print "package %s" % package.name
+
+        for cls in package.classes:
+            print "  class %s" % cls.name
+
+            select = SelectObject(cls)
+            print select.emit()
+
+            update = UpdateObject(cls)
+            print update.emit()
+
+            continue
+
+            for prop in cls.properties:
+                print "    prop %s %s" % (prop.name, prop.title or "")
+
+            for stat in cls.statistics:
+                print "    stat %s" % stat.name
+
+            for meth in cls.methods:
+                print "    meth %s" % meth.name
+
+                for arg in meth.arguments:
+                    print "      arg %s" % arg.name


Property changes on: mgmt/trunk/rosemary/bin/rosemary-test
___________________________________________________________________
Name: svn:executable
   + *

Added: mgmt/trunk/rosemary/etc/module.profile
===================================================================
--- mgmt/trunk/rosemary/etc/module.profile	                        (rev 0)
+++ mgmt/trunk/rosemary/etc/module.profile	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,3 @@
+export PYTHONPATH="${PWD}/python:${PYTHONPATH}"
+export PATH="${PWD}/bin:${PATH}"
+export ROSEMARY_HOME="${PWD}/instance"

Added: mgmt/trunk/rosemary/instance/xml
===================================================================
--- mgmt/trunk/rosemary/instance/xml	                        (rev 0)
+++ mgmt/trunk/rosemary/instance/xml	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1 @@
+link ../xml
\ No newline at end of file


Property changes on: mgmt/trunk/rosemary/instance/xml
___________________________________________________________________
Name: svn:special
   + *

Added: mgmt/trunk/rosemary/python/rosemary/__init__.py
===================================================================

Added: mgmt/trunk/rosemary/python/rosemary/model.py
===================================================================
--- mgmt/trunk/rosemary/python/rosemary/model.py	                        (rev 0)
+++ mgmt/trunk/rosemary/python/rosemary/model.py	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,194 @@
+import sys
+import os
+
+from string import Template
+
+try:
+    from xml.etree.ElementTree import *
+except ImportError:
+    from elementtree.ElementTree import *
+
+from sql import *
+
+class RosemaryModel(object):
+    def __init__(self):
+        self.packages = list()
+        self.packages_by_name = dict()
+
+    def load_qmf_dir(self, dir):
+        assert os.path.isdir(dir)
+
+        for name in os.listdir(dir):
+            path = os.path.join(dir, name)
+
+            if path.endswith(".xml") and os.path.isfile(path):
+                self.load_qmf_metadata(path)
+
+    def load_qmf_metadata(self, path):
+        tree = ElementTree()
+        file = open(path, "r")
+
+        try:
+            tree.parse(file)
+            self.load(tree.getroot())
+        finally:
+            file.close()
+
+    def load(self, elem):
+        pkg = RosemaryPackage(self, elem.get("package"))
+        pkg.load(elem)
+
+class RosemaryPackage(object):
+    def __init__(self, model, name):
+        self.model = model
+
+        self.name = name
+
+        self.classes = list()
+        self.classes_by_name = dict()
+
+        self.model.packages.append(self)
+        self.model.packages_by_name[self.name] = self
+
+    def load(self, elem):
+        for child in elem.findall("class"):
+            cls = RosemaryClass(self, child.get("name"))
+            cls.load(child)
+
+class RosemaryClass(object):
+    def __init__(self, package, name):
+        self.package = package
+
+        self.name = name
+
+        self.properties = list()
+        self.properties_by_name = dict()
+
+        self.statistics = list()
+        self.statistics_by_name = dict()
+
+        self.methods = list()
+        self.methods_by_name = dict()
+
+        self.package.classes.append(self)
+        self.package.classes_by_name[self.name] = self
+
+    def load(self, elem):
+        for child in elem.findall("property"):
+            prop = RosemaryProperty(self, child.get("name"))
+            prop.load(child)
+
+        for child in elem.findall("statistic"):
+            stat = RosemaryStatistic(self, child.get("name"))
+            stat.load(child)
+
+        for child in elem.findall("method"):
+            meth = RosemaryMethod(self, child.get("name"))
+            meth.load(child)
+
+class RosemaryProperty(object):
+    def __init__(self, cls, name):
+        self.cls = cls
+
+        self.name = name
+        self.title = None
+        self.type = None
+        self.references = None
+        self.access = None
+        self.unit = None
+        self.is_index = None
+        self.is_optional = None
+        self.description = None
+
+        self.cls.properties.append(self)
+        self.cls.properties_by_name[self.name] = self
+
+    def load(self, elem):
+        self.type = elem.get("type")
+        self.references = elem.get("references")
+        self.access = elem.get("access")
+        self.unit = elem.get("unit")
+        self.is_index = elem.get("index", "n") == "y" and True
+        self.is_optional = elem.get("optional", "n") == "y" and True
+        self.description = elem.get("desc")
+
+class RosemaryStatistic(object):
+    def __init__(self, cls, name):
+        self.cls = cls
+
+        self.name = name
+        self.type = None
+        self.unit = None
+        self.description = None
+
+        self.cls.statistics.append(self)
+        self.cls.statistics_by_name[self.name] = self
+
+    def load(self, elem):
+        self.type = elem.get("type")
+        self.unit = elem.get("unit")
+        self.description = elem.get("desc")
+
+    def extend(self, elem):
+        pass
+
+class RosemaryMethod(object):
+    def __init__(self, cls, name):
+        self.cls = cls
+
+        self.name = name
+        self.description = None
+
+        self.arguments = list()
+        self.arguments_by_name = dict()
+
+        self.cls.methods.append(self)
+        self.cls.methods_by_name[self.name] = self
+
+    def load(self, elem):
+        self.description = elem.get("desc")
+
+        for child in elem.findall("arg"):
+            arg = RosemaryArgument(self, child.get("name"))
+            arg.load(child)
+
+    def call(self, console, object, callback, **kwargs):
+        pass
+
+class RosemaryArgument(object):
+    def __init__(self, meth, name):
+        self.meth = meth
+
+        self.name = name
+        self.type = None
+        self.direction = None
+        self.description = None
+
+        self.meth.arguments.append(self)
+        self.meth.arguments_by_name[self.name] = self
+
+    def load(self, elem):
+        self.type = elem.get("type")
+        self.direction = elem.get("dir")
+        self.description = elem.get("desc")
+
+class RosemaryObject(object):
+    def __init__(self, cls):
+        self.cls = cls
+
+        self.id = None
+        self.qmf_broker_id = None
+        self.qmf_object_id = None
+
+        for name in self.cls.properties:
+            setattr(name, None)
+
+        self.__select = SelectObject(self.cls)
+        self.__update = UpdateObject(self.cls)
+        self.__insert = InsertObject(self.cls)
+
+    def load(self, cursor, id):
+        self.__select.execute(cursor, {"id": id})
+
+    def save(self, cursor):
+        assert self.id is not None

Added: mgmt/trunk/rosemary/python/rosemary/sql.py
===================================================================
--- mgmt/trunk/rosemary/python/rosemary/sql.py	                        (rev 0)
+++ mgmt/trunk/rosemary/python/rosemary/sql.py	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,50 @@
+from model import *
+from util import *
+
+class Operation(object):
+    def __init__(self, cls):
+        self.cls = cls
+
+    def execute(self, cursor, args):
+        text = self.emit()
+        results = cursor.execute(text, args)
+        return results
+
+class SelectOperation(Operation):
+    def emit_columns(self):
+        names = [x.name for x in self.cls.properties]
+        cols = map(translate_column, names)
+        return ", ".join(cols)
+
+class SelectObject(SelectOperation):
+    def emit(self):
+        cols = self.emit_columns()
+        table = translate_table(self.cls.name)
+        return "select %s from %s where id = %%(id)" % (cols, table)
+
+class UpdateOperation(Operation):
+    def emit_exprs(self):
+        names = [x.name for x in self.cls.properties]
+        exprs = list()
+
+        for name in names:
+            exprs.append("%s = %%(%s)" % (translate_column(name), name))
+
+        return ", ".join(exprs)
+
+class UpdateObject(UpdateOperation):
+    def emit(self):
+        exprs = self.emit_exprs()
+        table = translate_table(self.cls.name)
+        return "update %s set %s where id = %%(id)" % (table, exprs)
+
+def translate_column(name):
+    name = unstudly(name)
+
+    if name.endswith("_ref"):
+        name = "%s_id" % name[:-4]
+
+    return name
+
+def translate_table(name):
+    return unstudly(name)

Added: mgmt/trunk/rosemary/python/rosemary/util.py
===================================================================
--- mgmt/trunk/rosemary/python/rosemary/util.py	                        (rev 0)
+++ mgmt/trunk/rosemary/python/rosemary/util.py	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,18 @@
+def unstudly(name):
+    chars = list()
+
+    curr = name[0]
+    prev = None
+
+    chars.append(curr.lower())
+
+    for i in range(1, len(name)):
+        prev = curr
+        curr = name[i]
+
+        if curr.isupper() and not prev.isupper():
+            chars.append("_")
+
+        chars.append(curr.lower())
+
+    return "".join(chars)

Added: mgmt/trunk/rosemary/xml/Makefile
===================================================================
--- mgmt/trunk/rosemary/xml/Makefile	                        (rev 0)
+++ mgmt/trunk/rosemary/xml/Makefile	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,26 @@
+.PHONY: schema clean
+
+FILES := qpid.xml qpid-store.xml qpid-acl.xml qpid-cluster.xml condor.xml sesame.xml
+
+schema: ${FILES}
+
+clean:
+	rm -f ${FILES}
+
+qpid.xml:
+	svn export http://svn.apache.org/repos/asf/qpid/trunk/qpid/specs/management-schema.xml qpid.xml
+
+qpid-store.xml:
+	svn export http://anonsvn.jboss.org/repos/rhmessaging/store/trunk/cpp/lib/qmf-schema.xml qpid-store.xml
+
+qpid-acl.xml:
+	svn export http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/src/qpid/acl/management-schema.xml qpid-acl.xml
+
+qpid-cluster.xml:
+	svn export http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/src/qpid/cluster/management-schema.xml qpid-cluster.xml
+
+condor.xml:
+	wget "http://git.et.redhat.com/?p=mrg-grid.git;a=blob_plain;f=src/management/condor-management-schema.xml;hb=refs/heads/V7.3-QMF-Plugins" -O condor.xml
+
+sesame.xml:
+	svn export http://anonsvn.jboss.org/repos/rhmessaging/mgmt/trunk/sesame/cpp/src/qmfgen/schema.xml sesame.xml

Added: mgmt/trunk/rosemary/xml/condor.xml
===================================================================
--- mgmt/trunk/rosemary/xml/condor.xml	                        (rev 0)
+++ mgmt/trunk/rosemary/xml/condor.xml	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,816 @@
+<schema package="mrg.grid">
+
+<!--
+/*
+ * Copyright 2008 Red Hat, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<group name="daemon-stats">
+  <property name="CondorPlatform"
+	    type="sstr"
+	    desc="The Condor platform string for the daemon's platform"/>
+  <property name="CondorVersion"
+	    type="sstr"
+	    desc="The Condor version string for the daemon's version"/>
+  <property name="DaemonStartTime"
+	    type="absTime" unit="nanosecond"
+	    desc="Number of nanoseconds since epoch when the daemon
+		  was started"/>
+
+  <statistic name="MonitorSelfAge" type="uint32"/>
+  <statistic name="MonitorSelfCPUUsage" type="double"/>
+  <statistic name="MonitorSelfImageSize" type="double"/>
+  <statistic name="MonitorSelfRegisteredSocketCount" type="uint32"/>
+  <statistic name="MonitorSelfResidentSetSize" type="uint32"/>
+  <statistic name="MonitorSelfTime" type="absTime"/>
+</group>
+
+<!--
+CpuBusy = ((LoadAvg - CondorLoadAvg) >= 0.500000)
+CpuBusyTime = 0
+CpuIsBusy = FALSE
+
+HasCheckpointing = TRUE
+HasFileTransfer = TRUE
+HasIOProxy = TRUE
+HasJava = TRUE
+HasJICLocalConfig = TRUE
+HasJICLocalStdin = TRUE
+HasJobDeferral = TRUE
+HasMPI = TRUE
+HasPerFileEncryption = TRUE
+HasReconnect = TRUE
+HasRemoteSyscalls = TRUE
+HasTDP = TRUE
+HasVM = FALSE
+
+JavaMFlops = 8.156164
+JavaVendor = "Free Software Foundation, Inc."
+JavaVersion = "1.4.2"
+
+Subnet = "10.16.43"
+
+Set by Collector:
+  UpdateSequenceNumber = 627
+  UpdatesHistory = "0x00000000000000000000000000000000"
+  UpdatesLost = 0
+  UpdatesSequenced = 58
+  UpdatesTotal = 59
+-->
+
+  <class name="Slot">
+
+    <group name="daemon-stats"/>
+
+    <property name="Pool" type="sstr" index="y"/>
+    <property name="System" type="sstr" index="y"/>
+
+    <property name="AccountingGroup"
+	      type="sstr"
+	      optional="y"
+	      desc="AccountingGroup of the running job, fully
+		    qualified with a UidDomain, UidDomain taken from
+		    RemoteUser, only present when a job is
+		    executing"/>
+    <statistic name="Activity"
+	       type="sstr"
+	       desc="One of: Idle, No job activity; Busy, Job is
+		     running; Suspended, Job is suspended; Vacating,
+		     Job is being removed; Killing, Job is being
+		     killed; Benchmarking, Benchmarks being run"/>
+    <property name="Arch"
+	      type="sstr"
+	      desc="Slot's architecture, e.g.: ALPHA, Diginal Alpha;
+		    HPPA1, HP PA-RISC 1.x (7000 series); HPPA2, HP
+		    PA-RISC 2.x (8000 series); IA64, Intel Itanium;
+		    INTEL, Intel x86 (Pentium, Xeon, etc); SGI, SGI
+		    MIPS; SUN4u, Sun UltraSparc; SUN4x, Sun Sparc
+		    (not UltraSparc); PPC, Power Macintosh; PPC64,
+		    64-bit Power Macintosh; X86_64, AMD/Intel 64-bit
+		    x86"/>
+    <property name="CheckpointPlatform"
+	      type="sstr"
+	      desc="Opaque string encoding OS, hardware and kernel
+		    attributes"/>
+    <property name="ClientMachine"
+	      type="sstr"
+	      optional="y"
+	      desc="The hostname of the machine that has claimed the
+		    slot, only present when slot is claimed"/>
+    <statistic name="ClockDay"
+	       type="uint32"
+	       desc="Day of the week: 0 = Sunday, 1 = Monday, ..., 6 =
+		     Saturaday"/>
+    <statistic name="ClockMin"
+	       type="uint32" unit="minute"
+	       desc="Number of elapsed minutes since midnight"/>
+    <property name="ConcurrencyLimits"
+	      type="sstr"
+	      optional="y"
+	      desc="Set of concurrency limits associated with the
+		    current job"/>
+    <statistic name="CondorLoadAvg"
+	       type="double"
+	       desc="Portion of LoadAvg generated by Condor (job or
+		     benchmark)"/>
+    <statistic name="ConsoleIdle"
+	       type="uint32" unit="second"
+	       desc="Seconds since activity on console keyboard or
+		     mouse"/>
+    <property name="Cpus"
+	      type="uint32"
+	      desc="Number of CPUs in slot"/>
+    <!-- XXX: CurrentRank could quite possibly be a statistic -->
+    <property name="CurrentRank"
+	      type="double"
+	      optional="y"
+	      desc="Slots' affinity for running the job it is
+		    currently hosting, calculated as Rank expression
+		    evaluated in context of the running job's ad"/>
+    <property name="Disk"
+	      type="uint32" unit="KiB"
+	      desc="Amount of disk space in KiB available in the slot"/>
+    <statistic name="EnteredCurrentActivity"
+	       type="absTime" unit="nanosecond"
+	       desc="Time at which current Activity was entered,
+		     number of nanoseconds since Unix epoch"/>
+    <statistic name="EnteredCurrentState"
+	       type="absTime" unit="nanosecond"
+	       desc="Time at which current State was entered,
+		     number of seconds since Unix epoch"/>
+    <property name="FileSystemDomain"
+	      type="sstr"
+	      desc="Configured namespace shared by slots with
+		    uniformly mounted shared storage"/>
+    <property name="GlobalJobId"
+	      type="sstr"
+	      optional="y"
+	      desc="The running job's GlobalJobId, only present when
+		    a job is executing"/>
+    <!-- XXX: ImageSize could quite possibly be a statistic -->
+    <property name="ImageSize"
+	      type="uint32" unit="KiB"
+	      optional="y"
+	      desc="Estimate of the memory image size, in KiB, of the
+		    running job, only present when a job is
+		    executing, pulled by STARTD_JOB_EXPRS"/>
+    <property name="IsValidCheckpointPlatform"
+	      type="lstr"
+	      desc="A configurable expression representing if a
+		    checkpointed job can run on the slot, part of the
+		    slot's Requirements along with the Start
+		    expression"/>
+    <!-- XXX: JobId could quite possibly be a statistic, snapshots
+	      would show use over time -->
+    <property name="JobId"
+	      type="sstr"
+	      optional="y"
+	      desc="The running job's identifier,
+		    i.e. ClusterId.ProcId, only present when a job is
+		    executing"/>
+    <property name="JobStart"
+	      type="absTime" unit="nanosecond"
+	      optional="y"
+	      desc="The number of nanosecond since epoch when the job
+		    began executing, only present when a job is
+		    executing"/>
+    <statistic name="KeyboardIdle"
+	       type="uint32" unit="second"
+	       desc="Number of seconds since any activity on any
+		     keyboard or mouse associated with the machine,
+		     including pseudo-terminals"/>
+    <property name="KFlops"
+	      type="uint32"
+	      desc="Relative floating point performance on a Linpack
+		    benchmark"/>
+    <statistic name="LastBenchmark"
+	       type="absTime" unit="nanosecond"
+	       desc="Number of nanoseconds since epoch when the last
+		     benchmark was run"/>
+    <statistic name="LastFetchWorkCompleted"
+	       type="absTime" unit="nanosecond"
+	       desc="Number of nanoseconds since epoch when the
+		     FetchWork Hook returned"/>
+
+    <statistic name="LastFetchWorkSpawned"
+	       type="absTime" unit="nanosecond"
+	       desc="Number of nanoseconds since epoch when the
+		     FetchWork Hook was invoked"/>
+    <statistic name="LastPeriodicCheckpoint"
+	       type="absTime" unit="nanosecond"
+	       desc="The number of nanoseconds since epoch when the
+		     job last performed a periodic checkpoint, only
+		     present when a job is executing"/>
+<!--
+    <statistic name="LastHeardFrom"
+	       type="absTime" unit="nanosecond"
+	       desc="Time when the Collector received an update from
+		     the slot, nanoseconds since epoch, inserted by
+		     Collector"/>
+-->
+    <statistic name="LoadAvg"
+	       type="double"
+	       desc="Load average of CPUs hosting the slot"/>
+    <property name="Machine"
+	      type="sstr"
+	      desc="The fully qualified hostname of slot's host
+		    machine"/>
+    <property name="MaxJobRetirementTime"
+	      type="lstr" unit="second"
+	      desc="Expression evaluated in context of job ad
+		    producing the number of seconds a job is allowed
+		    to finish before being killed, relevant when job
+		    is being kicked out of the slot"/>
+    <property name="Memory"
+	      type="uint32" unit="MiB"
+	      desc="Amount of RAM available in the slot, in MiB"/>
+    <property name="Mips"
+	      type="uint32"
+	      desc="Relative integer performance on a Dhrystone
+		    benchmark"/>
+    <property name="MyAddress"
+	      type="sstr"
+	      desc="IP:Port of StartD in charge of the slot"/>
+    <statistic name="MyCurrentTime"
+	       type="absTime" unit="nanosecond"
+	       desc="The number of nanoseconds since epoch that the
+		     slot produced an updated ad"/>
+<!--
+    <property name="MyType"
+	       type="sstr"
+	       desc="Always 'Machine'"\>
+-->
+    <property name="Name"
+	      type="sstr"
+	      index="y"
+	      desc="Name of the slot, either the same as Machine,
+		    slot#@Machine, or a configured value"/>
+    <statistic name="NextFetchWorkDelay"
+	       type="int32" unit="second"
+	       desc="Number of seconds until the next FetchWork
+		     Hook will be invoked, -1 means never"/>
+    <property name="OpSys"
+	      type="sstr"
+	      desc="Slot's operating system, e.g.: HPUX10, HPUX
+		    10.20; HPUX11, HPUX B.11.00; LINUX, Linux
+		    2.[0,2,4,6].x kernels; OSF1, Diginal Unix 4.x;
+		    OSX, Darwin; OSX10_2, Darwin 6.4; SOLARIS25,
+		    Solaris 2.4 or 5.5; SOLARIS251, Solaris 2.5.1 or
+		    5.5.1; SOLARIS26, Solaris 2.6 or 5.6; SOLARIS27,
+		    Solaris 2.7 or 5.7; SOLARIS28, Solaris 2.8 or
+		    5.8; SOLARIS29, Solaris 2.9 or 5.9; WINNT50,
+		    Windows 2000; WINNT51, Windows XP; WINNT52,
+		    Windows Server 2003; WINNT60, Windows Vista"/>
+    <property name="PreemptingConcurrencyLimits"
+	      type="sstr"
+	      optional="y"
+	      desc="Set of concurrency limits associated with the
+		    preempting job"/>
+    <property name="PreemptingOwner"
+	      type="sstr"
+	      optional="y"
+	      desc="The name of the user originally preempting the
+		    current job, i.e. the incoming user, only present
+		    when slot is claimed"/>
+    <!-- XXX: PreemptingUser could quite possibly be a statistic -->
+    <property name="PreemptingUser"
+	      type="sstr"
+	      optional="y"
+	      desc="The name of the user preempting the current job,
+		    different from PreemptingOwner only if the claim
+		    was given to another user who is using it to
+		    preempt, only present when slot is claimed"/>
+    <!-- XXX: PreemptingRank could quite possibly be a statistic -->
+    <property name="PreemptingRank"
+	      type="double"
+	      optional="y"
+	      desc="Slots' affinity for running the incoming,
+		    preempting, job, calculated as Rank expression
+		    evaluated in context of the incoming job's ad,
+		    only present when slot is claimed"/>
+    <!-- XXX: RemoteOwner could quite possibly be a statistic, showing
+	      use over time -->
+    <property name="RemoteOwner"
+	      type="sstr"
+	      optional="y"
+	      desc="The name of the user who originally claimed the
+		    slot, only present when slot is claimed"/>
+    <!-- XXX: RemoteUser could quite possibly be a statistic, showing
+	      use over time -->
+    <property name="RemoteUser"
+	      type="sstr"
+	      optional="y"
+	      desc="The name of the user who is currently using the
+		    slot, different from RemoteOwner only if the
+		    claim was given to another user who is using the
+		    slot, only present when slot is claimed"/>
+    <property name="Requirements"
+	      type="lstr"
+	      desc="Expression evaluated in the context of a job ad
+		    to determine if the slot will run a job"/>
+    <property name="PublicNetworkIpAddr"
+	      type="sstr"
+	      desc="IP:Port used to communicate with the slot"/>
+    <property name="Rank"
+	      type="lstr"
+	      desc="Configured expression representing how the slot
+		    prefers jobs"/>
+    <property name="SlotID"
+	      type="uint32"
+	      desc="The # in the slot's Name, i.e. Name='slot#@Machine'"/>
+    <property name="Start"
+	      type="lstr"
+	      desc="Expression evaluated to determine if a slot is
+		    willing to start running a job"/>
+    <property name="StarterAbilityList"
+	      type="lstr"
+	      desc="StringList, comma separated, set of abilities the
+		    slot has, i.e. HasFileTransfer,HasJava,HasVM,
+		    query with stringListMember('Element',
+		    StarterAbilityList)"/>
+    <statistic name="State"
+	       type="sstr"
+	       desc="One of: Owner, unavailable to Condor; Unclaimed,
+		     available to Condor, but no job match yet;
+		     Matched, job found, but not yet claimed; Claimed,
+		     claimed and job likely running (see Activity);
+		     Preempting, running job is being kicked off the
+		     slot"/>
+<!--
+    <statistic name="TargetType"
+	       type="sstr"
+	       desc="Always 'Job'"/>
+-->
+    <statistic name="TimeToLive"
+	       type="uint32" unit="second"
+	       desc="Number of second until StartD managing the slot
+		     has until it will exit"/>
+    <!-- XXX: TotalClaimRunTime is a statistic -->
+    <property name="TotalClaimRunTime"
+	      type="uint32" unit="second"
+	      optional="y"
+	      desc="Number of seconds the current claim has spent
+		    running jobs, only present when slot is
+		    claimed"/>
+    <!-- XXX: TotalClaimSuspendTime is a statistic -->
+    <property name="TotalClaimSuspendTime"
+	      type="uint32" unit="second"
+	      optional="y"
+	      desc="Number of seconds the current claim has spent
+		    with suspended jobs, only present when slot is
+		    claimed"/>
+    <statistic name="TotalCondorLoadAvg"
+	       type="double"
+	       desc="Portion of TotalLoadAvg generated by Condor (jobs
+		     or benchmarks)"/>
+    <property name="TotalCpus"
+	      type="uint32"
+	      desc="Total number of CPUs on slot's host machine, or
+		    NUM_CPUS configuration option"/>
+    <property name="TotalDisk"
+	      type="uint32" unit="KiB"
+	      desc="Amount of disk space available on the slot's host
+		    machine"/>
+    <!-- XXX: TotalJobRunTime is a statistic -->
+    <property name="TotalJobRunTime"
+	      type="uint32" unit="second"
+	      optional="y"
+	      desc="Number of seconds the current job has spent
+		    running, i.e. Claimed/Busy, only present when
+		    slot is claimed"/>
+    <!-- XXX: TotalJobSuspendTime is a statistic -->
+    <property name="TotalJobSuspendTime"
+	      type="uint32" unit="second"
+	      optional="y"
+	      desc="Number of seconds the current job has spent
+		    suspended, i.e. Claimed/Suspended, only present
+		    when slot is claimed"/>
+    <statistic name="TotalLoadAvg"
+	       type="double"
+	       desc="Total load average of the slot's host machine"/>
+    <property name="TotalMemory"
+	      type="uint32" unit="MiB"
+	      desc="Total RAM available on slot's machine, in MiB"/>
+    <property name="TotalSlots"
+	      type="uint32"
+	      desc="Total number of slots sharing the Machine"/>
+    <statistic name="TotalTimeBackfillBusy"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Backfill and Activity=Busy since the
+		     Startd started"/>
+    <statistic name="TotalTimeBackfillIdle"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Backfill and Activity=Idle since the
+		     Startd started"/>
+    <statistic name="TotalTimeBackfillKilling"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Backfill and Activity=Killing since the
+		     Startd started"/>
+    <statistic name="TotalTimeClaimedBusy"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Claimed and Activity=Busy since the
+		     Startd started"/>
+    <statistic name="TotalTimeClaimedIdle"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Claimed and Activity=Idle since the
+		     Startd started"/>
+    <statistic name="TotalTimeClaimedRetiring"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Claimed and Activity=Retiring since the
+		     Startd started"/>
+    <statistic name="TotalTimeClaimedSuspended"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Claimed and Activity=Suspended since the
+		     Startd started"/>
+    <statistic name="TotalTimeMatchedIdle"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Matched and Activity=Idle since the
+		     Startd started"/>
+    <statistic name="TotalTimeOwnerIdle"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Owner and Activity=Idle since the
+		     Startd started"/>
+    <statistic name="TotalTimePreemptingKilling"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Preempting and Activity=Killing since the
+		     Startd started"/>
+    <statistic name="TotalTimePreemptingVacating"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Preempting and Activity=Vacating since the
+		     Startd started"/>
+    <statistic name="TotalTimeUnclaimedBenchmarking"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Unclaimed and Activity=Benchmarking since
+		     the Startd started"/>
+    <statistic name="TotalTimeUnclaimedIdle"
+	       type="uint32" unit="second"
+	       desc="Accumulated number of seconds the slot has been
+		     in State=Unclaimed and Activity=Idle since the
+		     Startd started"/>
+    <property name="TotalVirtualMemory"
+	      type="uint32" unit="KiB"
+	      desc="Amount of swap space available on slot"/>
+    <property name="UidDomain"
+	      type="sstr"
+	      desc="Configured namespace shared by slots with
+		    uniform uid/gid entries, i.e. same logins and
+		    groups"/>
+    <property name="VirtualMemory"
+	      type="uint32" unit="KiB"
+	      desc="Amount of currently available virtual memory
+		    (swap space) in KiB"/>
+    <property name="WindowsBuildNumber"
+	      type="uint32"
+	      desc="Integer extracted from the platform type,
+		    representing a build number for a Windows
+		    operating system, only present on Windows
+		    slots"/>
+    <property name="WindowsMajorVersion"
+	      type="uint32"
+	      desc="Integer extracted from the platform type,
+		    representing a major version number for a Windows
+		    operating system, only present on Windows
+		    slots, e.g. 5 for OpSys=WINNT50"/>
+    <property name="WindowsMinorVersion"
+	      type="uint32"
+	      desc="Integer extected from the platform type,
+		    representing a minor version numer for a Windows
+		    operating system, only present on Windows
+		    slots, e.g. 2 for OpSys=WINNT52"/>
+
+<!--
+    <property name="AdditionalAttributes" type="map"/>
+-->
+  </class>
+
+<!--
+Exec Host, Order(Rank?), StartTime, TotalTime (Sys, User), Project, AccountingGroup
+-->
+  <class name="Job">
+    <property name="schedulerRef" type="objId" parentRef="y" index="y" references="mrg.grid.Scheduler"/>
+    <property name="submitterRef" type="objId" references="mrg.grid.Submitter"/>
+
+    <property name="AccountingGroup" type="sstr" optional="y" desc=""/>
+    <property name="Args" type="lstr" optional="y" desc=""/>
+    <property name="ClusterId"
+	      type="uint32" index="y"
+	      desc="The id of the cluster the job belongs
+		    to. ClusterIds are unique within a SchedD."/>
+    <property name="Cmd" type="lstr" desc=""/>
+    <property name="ConcurrencyLimits" type="lstr" optional="y" desc=""/>
+    <property name="CustomGroup" type="sstr" optional="y" desc=""/>
+    <property name="CustomId" type="sstr" optional="y" desc=""/>
+    <property name="CustomPriority" type="uint32" optional="y" desc=""/>
+    <property name="GlobalJobId" type="sstr" desc=""/>
+    <property name="In"
+	      type="lstr"
+	      desc="The file where the job's standard input is read
+		    from."/>
+    <property name="Iwd" type="lstr" desc=""/>
+    <property name="JobStatus"
+	      type="uint32"
+	      desc="One of: 0, unexpanded; 1, idle; 2, running; 3,
+		    removed; 4, completed; 5, held; or, 6, submission
+		    error"/>
+    <property name="Note"
+	      type="lstr" optional="y"
+	      desc="An arbitrary note attached to the job."/>
+    <property name="Out"
+	      type="lstr"
+	      desc="The file where the job's standard output is
+		    written."/>
+    <property name="Owner"
+	      type="sstr"
+	      desc="The submitter of the job."/>
+    <property name="User"
+	      type="sstr"
+	      desc="The Owner '@' the configured UidDomain namespace"/>
+    <property name="ProcId"
+	      type="uint32" index="y"
+	      desc="The id of the job within its cluster. ProcIds re
+		    unique within a cluster."/>
+    <property name="QDate"
+	      type="absTime" unit="nanoseconds"
+	      desc="The number of nanoseconds since epoch when the
+		    job was submitted."/>
+
+<!--
+    <property name="Requirements" type="lstr" desc=""/>
+    <property name="Scheduler" type="sstr" desc=""/>
+-->
+
+    <property name="JobUniverse"
+	      type="uint32"
+	      desc=""/>
+
+    <property name="Title" type="sstr" optional="y" desc=""/>
+    <property name="UserLog" type="lstr" optional="y" desc=""/>
+
+    <property name="HoldReason" type="lstr" optional="y" desc=""/>
+
+    <property name="DAGNodeName"
+	      type="sstr" optional="y" desc=""/>
+    <property name="DAGParentNodeNames"
+	      type="lstr" optional="y"
+	      desc="Comma separated list of the job's parent's node
+		    names"/>
+    <property name="DAGManJobId"
+	      type="uint32" optional="y"
+	      desc="The ClusterId of the DAGMan job who spawned the
+		    job"/>
+
+    <property name="Ad" type="map" optional="y" desc=""/>
+
+    <method name="GetAd">
+      <arg name="JobAd" dir="O" type="map"
+	   desc="(name,value,type) tuples; Values are INTEGER, FLOAT,
+		 STRING and EXPR. The EXPR value is not first class,
+		 it is an unquoted, with double quotes, string"/>
+    </method>
+
+    <method name="SetAttribute">
+      <arg name="Name" dir="I" type="sstr"/>
+      <arg name="Value" dir="I" type="lstr"/>
+    </method>
+
+    <method name="Hold">
+      <arg name="Reason" dir="I" type="sstr"/>
+    </method>
+
+    <method name="Release">
+      <arg name="Reason" dir="I" type="sstr"/>
+    </method>
+
+    <method name="Remove">
+      <arg name="Reason" dir="I" type="sstr"/>
+    </method>
+
+    <method name="Fetch">
+      <arg name="File" dir="I" type="sstr"/>
+      <arg name="Start" dir="I" type="int32"/>
+      <arg name="End" dir="I" type="int32"/>
+      <arg name="Data" dir="O" type="lstr"/>
+    </method>
+  </class>
+
+  <class name="Scheduler">
+    <group name="daemon-stats"/>
+
+    <property name="Pool" type="sstr" index="y"/>
+    <property name="System" type="sstr" index="y"/>
+
+    <property name="JobQueueBirthdate" type="absTime"/>
+    <property name="MaxJobsRunning" type="uint32" desc=""/>
+    <property name="Machine" type="sstr" desc=""/>
+    <property name="MyAddress" type="sstr" desc=""/>
+    <statistic name="NumUsers" type="uint32"/>
+    <property name="Name" type="sstr" index="y" desc=""/>
+    <property name="PublicNetworkIpAddr" type="sstr" desc=""/>
+    <statistic name="TotalHeldJobs" type="uint32"/>
+    <statistic name="TotalIdleJobs" type="uint32"/>
+    <statistic name="TotalJobAds" type="uint32"/>
+    <statistic name="TotalRemovedJobs" type="uint32"/>
+    <statistic name="TotalRunningJobs" type="uint32"/>    
+
+    <method name="Submit">
+      <arg name="Ad" dir="I" type="map"/>
+      <arg name="Id" dir="O" type="sstr"/>
+    </method>
+  </class>
+
+  <class name="Submitter">
+    <property name="schedulerRef" type="objId" parentRef="y" index="y" references="mrg.grid.Scheduler"/>
+
+    <statistic name="HeldJobs" type="uint32"/>
+    <statistic name="IdleJobs" type="uint32"/>
+    <property name="JobQueueBirthdate" type="absTime"/>
+    <property name="Machine" type="sstr"/>
+    <property name="Name" type="sstr" index="y"/>
+    <statistic name="RunningJobs" type="uint32"/>
+    <property name="ScheddName" type="sstr"/>
+  </class>
+
+  <class name="Negotiator">
+    <property name="Pool" type="sstr" index="y"/>
+    <property name="System" type="sstr" index="y"/>
+
+    <property name="Name" type="sstr" index="y"/>
+    <property name="Machine" type="sstr"/>
+    <property name="MyAddress" type="sstr" desc=""/>
+
+    <!-- NOTE: MonitorSelf* statistics are currently missing in 7.0.0 -->
+    <group name="daemon-stats"/>
+
+    <method name="GetLimits">
+      <arg name="Limits" dir="O" type="map"/>
+    </method>
+
+    <method name="SetLimit">
+      <arg name="Name" dir="I" type="sstr"/>
+      <arg name="Max" dir="I" type="double"/>
+    </method>
+
+    <method name="GetStats">
+      <arg name="Name" dir="I" type="sstr" desc="User or group name"/>
+      <arg name="Ad" dir="O" type="map"/>
+<!--
+      <arg name="Effective" dir="O" type="double"/>
+      <arg name="Real" dir="O" type="double"/>
+      <arg name="Factor" dir="O" type="double"/>
+      <arg name="Resources" dir="O" type="unit32"/>
+      <arg name="Usage" dir="O" type="double" units="hours"/>
+-->
+    </method>
+
+    <method name="SetPriority">
+      <arg name="Name" dir="I" type="sstr" desc="User or group name"/>
+      <arg name="Priority" dir="I" type="double"/>
+    </method>
+
+    <method name="SetPriorityFactor">
+      <arg name="Name" dir="I" type="sstr" desc="User or group name"/>
+      <arg name="PriorityFactor" dir="I" type="double"/>
+    </method>
+
+    <method name="SetUsage">
+      <arg name="Name" dir="I" type="sstr" desc="User or group name"/>
+      <arg name="Usage" dir="I" type="double"/>
+    </method>
+
+ <!--
+    <method name="GetStaticQuota">
+      <arg name="Name" dir="I" type="sstr" desc="Group name"/>
+      <arg name="Quota" dir="O" type="uint32"/>
+    </method>
+
+    <method name="GetDynamicQuota">
+      <arg name="Name" dir="I" type="sstr" desc="Group name"/>
+      <arg name="Quota" dir="O" type="double"/>
+    </method>
+
+    <method name="SetStaticQuota">
+      <arg name="Name" dir="I" type="sstr" desc="Group name"/>
+      <arg name="Quota" dir="I" type="uint32"/>
+    </method>
+
+    <method name="SetDynamicQuota">
+      <arg name="Name" dir="I" type="sstr" desc="Group name"/>
+      <arg name="Quota" dir="I" type="double"/>
+    </method>
+-->
+
+    <method name="GetRawConfig">
+      <arg name="Name" dir="I" type="sstr" desc="Config param name"/>
+      <arg name="Value" dir="O" type="lstr"/>
+    </method>
+
+    <method name="SetRawConfig">
+      <arg name="Name" dir="I" type="sstr" desc="Config param name"/>
+      <arg name="Value" dir="I" type="lstr"/>
+    </method>
+
+    <method name="Reconfig"/>
+  </class>
+
+  <class name="Collector">
+    <property name="Pool" type="sstr" index="y"/>
+    <property name="System" type="sstr" index="y"/>
+
+    <property name="CondorPlatform" type="sstr"/>
+    <property name="CondorVersion" type="sstr"/>
+    <property name="Name" type="sstr" index="y"/>
+    <property name="PublicNetworkIpAddr" type="sstr"/>
+
+    <statistic name="RunningJobs" type="uint32"/>
+    <statistic name="IdleJobs" type="uint32"/>
+    <statistic name="HostsTotal" type="uint32"/>
+    <statistic name="HostsClaimed" type="uint32"/>
+    <statistic name="HostsUnclaimed" type="uint32"/>
+    <statistic name="HostsOwner" type="uint32"/>
+  </class>
+
+  <class name="Master">
+
+    <group name="daemon-stats"/>
+
+    <property name="Pool" type="sstr" index="y"/>
+    <property name="System" type="sstr" index="y"/>
+
+    <property name="Name" type="sstr" index="y"/>
+    <property name="Machine" type="sstr"/>
+    <property name="PublicNetworkIpAddr" type="sstr"/>
+    <property name="MyAddress" type="sstr"/>
+    <property name="RealUid" type="int32"/>
+
+    <method name="Start">
+      <arg name="Subsystem"
+	   dir="I" type="sstr"
+	   desc="The component/subsystem to start: one of STARTD,
+		 SCHEDD, COLLECTOR, NEGOTIATOR, KBDD or QUILL"/>
+    </method>
+
+    <method name="Stop">
+      <arg name="Subsystem"
+	   dir="I" type="sstr"
+	   desc="The component/subsystem to stop: one of STARTD,
+		 SCHEDD, COLLECTOR, NEGOTIATOR, KBDD or QUILL"/>
+    </method>
+  </class>
+
+  <class name="Grid">
+    <property name="Pool" type="sstr" index="y"/>
+
+    <property name="Name" type="sstr"/>
+    <property name="ScheddName" type="sstr"/>
+    <property name="Owner" type="sstr"/>
+
+    <statistic name="NumJobs" type="uint32"/>
+    <property name="JobLimit"
+	      type="uint32"
+	      desc="Maximum number of jobs that can be in the process
+		    of being submitted at any time."/>
+    <property name="SubmitLimit"
+	      type="uint32"
+	      desc="Limit on the number of jobs that will be submitted
+		    to the grid resource at once."/>
+
+    <statistic name="SubmitsInProgress" type="uint32"/>
+    <statistic name="SubmitsQueued" type="uint32"/>
+    <statistic name="SubmitsAllowed" type="uint32"/>
+    <statistic name="SubmitsWanted" type="uint32"/>
+
+    <property name="GridResourceUnavailableTime"
+	      type="absTime" unit="nanosecond"
+	      optional="y"
+	      desc="If present, the Grid is down for the specified
+		    amount of time."/>
+
+    <statistic name="RunningJobs" type="uint32"/>
+    <statistic name="IdleJobs" type="uint32"/>
+  </class>
+</schema>

Added: mgmt/trunk/rosemary/xml/qpid-acl.xml
===================================================================
--- mgmt/trunk/rosemary/xml/qpid-acl.xml	                        (rev 0)
+++ mgmt/trunk/rosemary/xml/qpid-acl.xml	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,44 @@
+<schema package="org.apache.qpid.acl">
+
+<!--
+ * Copyright (c) 2008 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+  <class name="Acl">
+    <property name="brokerRef"     type="objId"   references="org.apache.qpid.broker:Broker" access="RO" index="y" parentRef="y"/>
+    <property name="policyFile"    type="sstr"    access="RO"    desc="Name of the policy file"/>
+    <property name="enforcingAcl"  type="bool"    access="RO"    desc="Currently Enforcing ACL"/>
+    <property name="transferAcl"   type="bool"    access="RO"    desc="Any transfer ACL rules in force"/>
+    <property name="lastAclLoad"   type="absTime" access="RO"    desc="Timestamp of last successful load of ACL"/>
+    <statistic name="aclDenyCount" type="count64" unit="request" desc="Number of ACL requests denied"/>
+
+    <method name="reloadACLFile" desc="Reload the ACL file"/>
+  </class>
+
+  <eventArguments>
+    <arg name="action"     type="sstr"/>
+    <arg name="arguments"  type="map"/>
+    <arg name="objectName" type="sstr"/>
+    <arg name="objectType" type="sstr"/>
+    <arg name="reason"     type="sstr"/>
+    <arg name="userId"     type="sstr"/>
+  </eventArguments>
+
+  <event name="allow"          sev="inform" args="userId, action, objectType, objectName, arguments"/>
+  <event name="deny"           sev="notice" args="userId, action, objectType, objectName, arguments"/>
+  <event name="fileLoaded"     sev="inform" args="userId"/>
+  <event name="fileLoadFailed" sev="error"  args="userId, reason"/>
+
+</schema>

Added: mgmt/trunk/rosemary/xml/qpid-cluster.xml
===================================================================
--- mgmt/trunk/rosemary/xml/qpid-cluster.xml	                        (rev 0)
+++ mgmt/trunk/rosemary/xml/qpid-cluster.xml	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,61 @@
+<schema package="org.apache.qpid.cluster">
+
+  <!--
+      Licensed to the Apache Software Foundation (ASF) under one
+      or more contributor license agreements.  See the NOTICE file
+      distributed with this work for additional information
+      regarding copyright ownership.  The ASF licenses this file
+      to you under the Apache License, Version 2.0 (the
+      "License"); you may not use this file except in compliance
+      with the License.  You may obtain a copy of the License at
+      
+      http://www.apache.org/licenses/LICENSE-2.0
+      
+      Unless required by applicable law or agreed to in writing,
+      software distributed under the License is distributed on an
+      "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+      KIND, either express or implied.  See the License for the
+      specific language governing permissions and limitations
+      under the License.
+  -->
+
+  <!-- Type information:
+
+Numeric types with "_wm" suffix are watermarked numbers.  These are compound
+values containing a current value, and a low and high water mark for the reporting
+interval.  The low and high water marks are set to the current value at the
+beginning of each interval and track the minimum and maximum values of the statistic
+over the interval respectively.
+
+Access rights for configuration elements:
+
+RO => Read Only
+RC => Read/Create, can be set at create time only, read-only thereafter
+RW => Read/Write
+
+If access rights are omitted for a property, they are assumed to be RO.
+
+  -->
+
+  <class name="Cluster">
+    <property name="brokerRef"        type="objId"  references="Broker" access="RC" index="y" parentRef="y"/>
+    <property name="clusterName"      type="sstr"   access="RC" desc="Name of cluster this server is a member of"/>
+    <property name="clusterID"        type="sstr"   access="RO" desc="Globally unique ID (UUID) for this cluster instance"/>
+    <property name="memberID"         type="sstr"   access="RO" desc="ID of this member of the cluster"/>
+    <property name="publishedURL"     type="sstr"   access="RC" desc="URL this node advertizes itself as"/>
+    <property name="clusterSize"      type="uint16" access="RO" desc="Number of brokers currently in the cluster"/>
+    <property name="status"           type="sstr"   access="RO" desc="Cluster node status (STALLED,ACTIVE,JOINING)"/>
+    <property name="members"          type="lstr"   access="RO" desc="List of member URLs delimited by ';'"/> 
+    <property name="memberIDs"        type="lstr"   access="RO" desc="List of member IDs delimited by ';'"/> 
+
+    <method name="stopClusterNode">
+      <arg name="brokerId" type="sstr" dir="I"/>
+    </method>
+    <method name="stopFullCluster"/>
+
+  </class>
+
+
+
+</schema>
+

Added: mgmt/trunk/rosemary/xml/qpid-store.xml
===================================================================
--- mgmt/trunk/rosemary/xml/qpid-store.xml	                        (rev 0)
+++ mgmt/trunk/rosemary/xml/qpid-store.xml	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,103 @@
+<schema package="com.redhat.rhm.store">
+
+<!--
+ Copyright (c) 2007, 2008 Red Hat, Inc.
+
+ This file is part of the Qpid async store library msgstore.so.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+ USA
+
+ The GNU Lesser General Public License is available in the file COPYING.
+ -->
+
+  <class name="Store">
+    <property name="brokerRef"               type="objId"  access="RO" references="qpid.Broker" index="y" parentRef="y"/>
+    <property name="location"                type="sstr"   access="RO"              desc="Logical directory on disk"/>
+    <property name="defaultInitialFileCount" type="uint16" access="RO" unit="file"  desc="Default number of files initially allocated to each journal"/>
+    <property name="defaultDataFileSize"     type="uint32" access="RO" unit="RdPg"  desc="Default size of each journal data file"/>
+    <property name="tplIsInitialized"        type="bool"   access="RO"              desc="Transaction prepared list has been initialized by a transactional prepare"/>
+    <property name="tplDirectory"            type="sstr"   access="RO"              desc="Transaction prepared list directory"/>
+    <property name="tplWritePageSize"        type="uint32" access="RO" unit="byte"  desc="Page size in transaction prepared list write-page-cache"/>
+    <property name="tplWritePages"           type="uint32" access="RO" unit="wpage" desc="Number of pages in transaction prepared list write-page-cache"/>
+    <property name="tplInitialFileCount"     type="uint16" access="RO" unit="file"  desc="Number of files initially allocated to transaction prepared list journal"/>
+    <property name="tplDataFileSize"         type="uint32" access="RO" unit="byte"  desc="Size of each journal data file in transaction prepared list journal"/>
+    <property name="tplCurrentFileCount"     type="uint32" access="RO" unit="file"  desc="Number of files currently allocated to transaction prepared list journal"/>
+    
+    <statistic name="tplTransactionDepth"    type="hilo32"  unit="txn"    desc="Number of currently enqueued prepared transactions"/>
+    <statistic name="tplTxnPrepares"         type="count64" unit="record" desc="Total transaction prepares on transaction prepared list"/>
+    <statistic name="tplTxnCommits"          type="count64" unit="record" desc="Total transaction commits on transaction prepared list"/>
+    <statistic name="tplTxnAborts"           type="count64" unit="record" desc="Total transaction aborts on transaction prepared list"/>
+    <statistic name="tplOutstandingAIOs"     type="hilo32"  unit="aio_op" desc="Number of currently outstanding AIO requests in Async IO system"/>
+  </class>
+
+  <class name="Journal">
+    <property name="queueRef"           type="objId"  access="RO" references="qpid.Queue" isGeneralReference="y"/>
+    <property name="name"               type="sstr"   access="RO" index="y"/>
+    <property name="directory"          type="sstr"   access="RO"              desc="Directory containing journal files"/>
+    <property name="baseFileName"       type="sstr"   access="RO"              desc="Base filename prefix for journal"/>
+    <property name="writePageSize"      type="uint32" access="RO" unit="byte"  desc="Page size in write-page-cache"/>
+    <property name="writePages"         type="uint32" access="RO" unit="wpage" desc="Number of pages in write-page-cache"/>
+    <property name="readPageSize"       type="uint32" access="RO" unit="byte"  desc="Page size in read-page-cache"/>
+    <property name="readPages"          type="uint32" access="RO" unit="rpage" desc="Number of pages in read-page-cache"/>
+    <property name="initialFileCount"   type="uint16" access="RO" unit="file"  desc="Number of files initially allocated to this journal"/>
+    <property name="autoExpand"         type="bool"   access="RO"              desc="Auto-expand enabled"/>
+    <property name="currentFileCount"   type="uint16" access="RO" unit="file"  desc="Number of files currently allocated to this journal"/>
+    <property name="maxFileCount"       type="uint16" access="RO" unit="file"  desc="Max number of files allowed for this journal"/>
+    <property name="dataFileSize"       type="uint32" access="RO" unit="byte"  desc="Size of each journal data file"/>
+    
+    <statistic name="recordDepth"       type="hilo32"  unit="record" desc="Number of currently enqueued records (durable messages)"/>
+    <statistic name="enqueues"          type="count64" unit="record" desc="Total enqueued records on journal"/>
+    <statistic name="dequeues"          type="count64" unit="record" desc="Total dequeued records on journal"/>
+    <statistic name="txn"               type="count32" unit="record" desc="Total open transactions (xids) on journal"/>
+    <statistic name="txnEnqueues"       type="count64" unit="record" desc="Total transactional enqueued records on journal"/>
+    <statistic name="txnDequeues"       type="count64" unit="record" desc="Total transactional dequeued records on journal"/>
+    <statistic name="txnCommits"        type="count64" unit="record" desc="Total transactional commit records on journal"/>
+    <statistic name="txnAborts"         type="count64" unit="record" desc="Total transactional abort records on journal"/>
+    <statistic name="outstandingAIOs"   type="hilo32"  unit="aio_op" desc="Number of currently outstanding AIO requests in Async IO system"/>
+
+<!--
+    The following are not yet "wired up" in JournalImpl.cpp
+-->
+    <statistic name="freeFileCount"       type="hilo32"  unit="file"   desc="Number of files free on this journal. Includes free files trapped in holes."/>
+    <statistic name="availableFileCount"  type="hilo32"  unit="file"   desc="Number of files available to be written.  Excluding holes"/>
+    <statistic name="writeWaitFailures"   type="count64" unit="record" desc="AIO Wait failures on write"/>
+    <statistic name="writeBusyFailures"   type="count64" unit="record" desc="AIO Busy failures on write"/>
+    <statistic name="readRecordCount"     type="count64" unit="record" desc="Records read from the journal"/>
+    <statistic name="readBusyFailures"    type="count64" unit="record" desc="AIO Busy failures on read"/>
+    <statistic name="writePageCacheDepth" type="hilo32"  unit="wpage"  desc="Current depth of write-page-cache"/>
+    <statistic name="readPageCacheDepth"  type="hilo32"  unit="rpage"  desc="Current depth of read-page-cache"/>
+
+    <method name="expand" desc="Increase number of files allocated for this journal">
+      <arg name="by" type="uint32" dir="I" desc="Number of files to increase journal size by"/>
+    </method>
+  </class>
+ 
+  <eventArguments>
+    <arg name="autoExpand" type="bool"   desc="Journal auto-expand enabled"/>
+    <arg name="fileSize"   type="uint32" desc="Journal file size in bytes"/>
+    <arg name="jrnlId"     type="sstr"   desc="Journal Id"/>
+    <arg name="numEnq"     type="uint32" desc="Number of recovered enqueues"/>
+    <arg name="numFiles"   type="uint16" desc="Number of journal files"/>
+    <arg name="numTxn"     type="uint32" desc="Number of recovered transactions"/>
+    <arg name="numTxnDeq"  type="uint32" desc="Number of recovered transactional dequeues"/>
+    <arg name="numTxnEnq"  type="uint32" desc="Number of recovered transactional enqueues"/>
+    <arg name="what"       type="sstr"   desc="Description of event"/>
+  </eventArguments>
+  <event name="enqThresholdExceeded" sev="warn"   args="jrnlId, what"/>
+  <event name="created"              sev="notice" args="jrnlId, fileSize, numFiles"/>
+  <event name="full"                 sev="error"  args="jrnlId, what"/>
+  <event name="recovered"            sev="notice" args="jrnlId, fileSize, numFiles, numEnq, numTxn, numTxnEnq, numTxnDeq"/>
+</schema>

Added: mgmt/trunk/rosemary/xml/qpid.xml
===================================================================
--- mgmt/trunk/rosemary/xml/qpid.xml	                        (rev 0)
+++ mgmt/trunk/rosemary/xml/qpid.xml	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,340 @@
+<schema package="org.apache.qpid.broker">
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+    http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+  <!-- Type information:
+
+       Numeric types with "_wm" suffix are watermarked numbers.  These are compound
+       values containing a current value, and a low and high water mark for the reporting
+       interval.  The low and high water marks are set to the current value at the
+       beginning of each interval and track the minimum and maximum values of the statistic
+       over the interval respectively.
+
+       Access rights for configuration elements:
+
+           RO => Read Only
+           RC => Read/Create, can be set at create time only, read-only thereafter
+           RW => Read/Write
+
+           If access rights are omitted for a property, they are assumed to be RO.
+
+  -->
+
+  <!-- Questions:  Does C++ broker round-robin dests on queues? -->
+
+  <!--
+  ===============================================================
+  System
+  ===============================================================
+  -->
+  <class name="System">
+    <property name="systemId" index="y" type="uuid" access="RC"/>
+
+    <property name="osName"   type="sstr" access="RO" desc="Operating System Name"/>
+    <property name="nodeName" type="sstr" access="RO" desc="Node Name"/>
+    <property name="release"  type="sstr" access="RO"/>
+    <property name="version"  type="sstr" access="RO"/>
+    <property name="machine"  type="sstr" access="RO"/>
+
+  </class>
+
+  <!--
+  ===============================================================
+  Broker
+  ===============================================================
+  -->
+  <class name="Broker">
+    <property name="systemRef"        type="objId"  references="System" access="RC" index="y" desc="System ID" parentRef="y"/>
+    <property name="port"             type="uint16" access="RC" index="y" desc="TCP Port for AMQP Service"/>
+    <property name="workerThreads"    type="uint16" access="RO" desc="Thread pool size"/>
+    <property name="maxConns"         type="uint16" access="RO" desc="Maximum allowed connections"/>
+    <property name="connBacklog"      type="uint16" access="RO" desc="Connection backlog limit for listening socket"/>
+    <property name="stagingThreshold" type="uint32" access="RO" desc="Broker stages messages over this size to disk"/>
+    <property name="mgmtPubInterval"  type="uint16" access="RW" unit="second" min="1" desc="Interval for management broadcasts"/>
+    <property name="version"          type="sstr"   access="RO" desc="Running software version"/>
+    <property name="dataDir"          type="sstr"   access="RO" optional="y" desc="Persistent configuration storage location"/>
+    <statistic name="uptime" type="deltaTime"/>
+
+    <method name="echo" desc="Request a response to test the path to the management broker">
+      <arg name="sequence" dir="IO" type="uint32" default="0"/>
+      <arg name="body"     dir="IO" type="lstr"   default=""/>
+    </method>
+
+    <method name="connect" desc="Establish a connection to another broker">
+      <arg name="host"          dir="I" type="sstr"/>
+      <arg name="port"          dir="I" type="uint32"/>
+      <arg name="durable"       dir="I" type="bool"/>
+      <arg name="authMechanism" dir="I" type="sstr"/>
+      <arg name="username"      dir="I" type="sstr"/>
+      <arg name="password"      dir="I" type="sstr"/>
+      <arg name="transport"     dir="I" type="sstr"/>
+    </method>
+
+    <method name="queueMoveMessages" desc="Move messages from one queue to another">
+      <arg name="srcQueue"          dir="I" type="sstr" desc="Source queue"/>
+      <arg name="destQueue"         dir="I" type="sstr" desc="Destination queue"/>
+      <arg name="qty"               dir="I" type="uint32" desc="# of messages to move. 0 means all messages"/>
+    </method>
+
+  </class>
+
+  <!--
+  ===============================================================
+  Management Agent
+  ===============================================================
+  -->
+  <class name="Agent">
+    <property name="connectionRef" type="objId"  references="Connection" access="RO" index="y"/>
+    <property name="label"         type="sstr"   access="RO"           desc="Label for agent"/>
+    <property name="registeredTo"  type="objId"  references="Broker" access="RO" desc="Broker agent is registered to"/>
+    <property name="systemId"      type="uuid"   access="RO"           desc="Identifier of system where agent resides"/>
+    <property name="brokerBank"    type="uint32" access="RO"           desc="Assigned object-id broker bank"/>
+    <property name="agentBank"     type="uint32" access="RO"           desc="Assigned object-id agent bank"/>
+  </class>
+
+  <!--
+  ===============================================================
+  Virtual Host
+  ===============================================================
+  -->
+  <class name="Vhost">
+    <property name="brokerRef"     type="objId" references="Broker" access="RC" index="y" parentRef="y"/>
+    <property name="name"          type="sstr"  access="RC" index="y"/>
+    <property name="federationTag" type="sstr"  access="RO"/>
+  </class>
+
+  <!--
+  ===============================================================
+  Queue
+  ===============================================================
+  -->
+  <class name="Queue">
+    <property name="vhostRef"   type="objId" references="Vhost" access="RC" index="y" parentRef="y"/>
+    <property name="name"       type="sstr"  access="RC" index="y"/>
+
+    <property name="durable"    type="bool"  access="RC"/>
+    <property name="autoDelete" type="bool"  access="RC"/>
+    <property name="exclusive"  type="bool"  access="RC"/>
+    <property name="arguments"  type="map"   access="RO" desc="Arguments supplied in queue.declare"/>
+
+    <statistic name="msgTotalEnqueues"    type="count64"  unit="message"     desc="Total messages enqueued"/>
+    <statistic name="msgTotalDequeues"    type="count64"  unit="message"     desc="Total messages dequeued"/>
+    <statistic name="msgTxnEnqueues"      type="count64"  unit="message"     desc="Transactional messages enqueued"/>
+    <statistic name="msgTxnDequeues"      type="count64"  unit="message"     desc="Transactional messages dequeued"/>
+    <statistic name="msgPersistEnqueues"  type="count64"  unit="message"     desc="Persistent messages enqueued"/>
+    <statistic name="msgPersistDequeues"  type="count64"  unit="message"     desc="Persistent messages dequeued"/>
+    <statistic name="msgDepth"            type="count32"  unit="message"     desc="Current size of queue in messages" assign="msgTotalEnqueues - msgTotalDequeues"/>
+    <statistic name="byteDepth"           type="count32"  unit="octet"       desc="Current size of queue in bytes"    assign="byteTotalEnqueues - byteTotalDequeues"/>
+    <statistic name="byteTotalEnqueues"   type="count64"  unit="octet"       desc="Total messages enqueued"/>
+    <statistic name="byteTotalDequeues"   type="count64"  unit="octet"       desc="Total messages dequeued"/>
+    <statistic name="byteTxnEnqueues"     type="count64"  unit="octet"       desc="Transactional messages enqueued"/>
+    <statistic name="byteTxnDequeues"     type="count64"  unit="octet"       desc="Transactional messages dequeued"/>
+    <statistic name="bytePersistEnqueues" type="count64"  unit="octet"       desc="Persistent messages enqueued"/>
+    <statistic name="bytePersistDequeues" type="count64"  unit="octet"       desc="Persistent messages dequeued"/>
+    <statistic name="consumerCount"       type="hilo32"   unit="consumer"    desc="Current consumers on queue"/>
+    <statistic name="bindingCount"        type="hilo32"   unit="binding"     desc="Current bindings"/>
+    <statistic name="unackedMessages"     type="hilo32"   unit="message"     desc="Messages consumed but not yet acked"/>
+    <statistic name="messageLatency"      type="mmaTime"  unit="nanosecond"  desc="Broker latency through this queue"/>
+
+    <method name="purge" desc="Discard all or some messages on a queue">
+      <arg name="request"          dir="I" type="uint32" desc="0 for all messages or n>0 for n messages"/>
+    </method>
+  </class>
+
+  <!--
+  ===============================================================
+  Exchange
+  ===============================================================
+  -->
+  <class name="Exchange">
+    <property name="vhostRef"   type="objId" references="Vhost" access="RC" index="y" parentRef="y"/>
+    <property name="name"       type="sstr"  access="RC" index="y"/>
+    <property name="type"       type="sstr"  access="RO"/>
+    <property name="durable"    type="bool"  access="RC"/>
+    <property name="arguments"  type="map"   access="RO" desc="Arguments supplied in exchange.declare"/>
+
+    <statistic name="producerCount" type="hilo32"  desc="Current producers on exchange"/>
+    <statistic name="bindingCount"  type="hilo32"  desc="Current bindings"/>
+    <statistic name="msgReceives"   type="count64" desc="Total messages received"/>
+    <statistic name="msgDrops"      type="count64" desc="Total messages dropped (no matching key)"/>
+    <statistic name="msgRoutes"     type="count64" desc="Total routed messages"/>
+    <statistic name="byteReceives"  type="count64" desc="Total bytes received"/>
+    <statistic name="byteDrops"     type="count64" desc="Total bytes dropped (no matching key)"/>
+    <statistic name="byteRoutes"    type="count64" desc="Total routed bytes"/>
+  </class>
+
+  <!--
+  ===============================================================
+  Binding
+  ===============================================================
+  -->
+  <class name="Binding">
+    <property name="exchangeRef" type="objId" references="Exchange" access="RC" index="y" parentRef="y"/>
+    <property name="queueRef"    type="objId" references="Queue"    access="RC" index="y"/>
+    <property name="bindingKey"  type="sstr"  access="RC" index="y"/>
+    <property name="arguments"   type="map"   access="RC"/>
+    <property name="origin"      type="sstr"  access="RO" optional="y"/>
+
+    <statistic name="msgMatched" type="count64"/>
+  </class>
+  
+  <!--
+  ===============================================================
+  Connection
+  ===============================================================
+  -->
+  <class name="Connection">
+    <property name="vhostRef" type="objId"  references="Vhost" access="RC" index="y" parentRef="y"/>
+    <property name="address"  type="sstr"   access="RC" index="y"/>
+    <property name="incoming" type="bool"   access="RC"/>
+    <property name="SystemConnection"   type="bool"   access="RC" desc="Infrastucture/ Inter-system connection (Cluster, Federation, ...)"/>
+    <property name="federationLink"     type="bool"   access="RO" desc="Is this a federation link"/>
+    <property name="authIdentity"       type="sstr"   access="RO" desc="authId of connection if authentication enabled"/>
+    <property name="remoteProcessName"  type="sstr"   access="RO" optional="y" desc="Name of executable running as remote client"/>
+    <property name="remotePid"          type="uint32" access="RO" optional="y" desc="Process ID of remote client"/>
+    <property name="remoteParentPid"    type="uint32" access="RO" optional="y" desc="Parent Process ID of remote client"/>
+    <statistic name="closing"          type="bool" desc="This client is closing by management request"/>
+    <statistic name="framesFromClient" type="count64"/>
+    <statistic name="framesToClient"   type="count64"/>
+    <statistic name="bytesFromClient"  type="count64"/>
+    <statistic name="bytesToClient"    type="count64"/>
+
+    <method name="close"/> 
+  </class>
+
+  <!--
+  ===============================================================
+  Link
+  ===============================================================
+  -->
+  <class name="Link">
+
+    This class represents an inter-broker connection.
+
+    <property name="vhostRef"  type="objId"  references="Vhost" access="RC" index="y" parentRef="y"/>
+    <property name="host"      type="sstr"   access="RC" index="y"/>
+    <property name="port"      type="uint16" access="RC" index="y"/>
+    <property name="transport" type="sstr"   access="RC"/>
+    <property name="durable"   type="bool"   access="RC"/>
+
+    <statistic name="state"       type="sstr" desc="Operational state of the link"/>
+    <statistic name="lastError"   type="sstr" desc="Reason link is not operational"/>
+
+    <method name="close"/> 
+
+    <method name="bridge" desc="Bridge messages over the link">
+      <arg name="durable"     dir="I" type="bool"/>
+      <arg name="src"         dir="I" type="sstr"/>
+      <arg name="dest"        dir="I" type="sstr"/>
+      <arg name="key"         dir="I" type="sstr"/>
+      <arg name="tag"         dir="I" type="sstr"/>
+      <arg name="excludes"    dir="I" type="sstr"/>
+      <arg name="srcIsQueue"  dir="I" type="bool"/>
+      <arg name="srcIsLocal"  dir="I" type="bool"/>
+      <arg name="dynamic"     dir="I" type="bool"/>
+      <arg name="sync"        dir="I" type="uint16"/>
+    </method>
+  </class>
+
+
+  <!--
+  ===============================================================
+  Bridge
+  ===============================================================
+  -->
+  <class name="Bridge">
+    <property name="linkRef"     type="objId"  references="Link" access="RC" index="y" parentRef="y"/>
+    <property name="channelId"   type="uint16" access="RC" index="y"/>
+    <property name="durable"     type="bool"   access="RC"/>
+    <property name="src"         type="sstr"   access="RC"/>
+    <property name="dest"        type="sstr"   access="RC"/>
+    <property name="key"         type="sstr"   access="RC"/>
+    <property name="srcIsQueue"  type="bool"   access="RC"/>
+    <property name="srcIsLocal"  type="bool"   access="RC"/>
+    <property name="tag"         type="sstr"   access="RC"/>
+    <property name="excludes"    type="sstr"   access="RC"/>
+    <property name="dynamic"     type="bool"   access="RC"/>
+    <property name="sync"        type="uint16" access="RC"/>
+    <method name="close"/> 
+  </class>
+
+
+  <!--
+  ===============================================================
+  Session
+  ===============================================================
+  -->
+  <class name="Session">
+    <property name="vhostRef"         type="objId"   references="Vhost" access="RC" index="y" parentRef="y"/>
+    <property name="name"             type="sstr"    access="RC" index="y"/>
+    <property name="channelId"        type="uint16"  access="RO"/>
+    <property name="connectionRef"    type="objId"   references="Connection" access="RO"/>
+    <property name="detachedLifespan" type="uint32"  access="RO" unit="second"/>
+    <property name="attached"         type="bool"    access="RO"/>
+    <property name="expireTime"       type="absTime" access="RO" optional="y"/>
+    <property name="maxClientRate"    type="uint32"  access="RO" unit="msgs/sec" optional="y"/>
+
+    <statistic name="framesOutstanding" type="count32"/>
+
+    <statistic name="TxnStarts"    type="count64"  unit="transaction" desc="Total transactions started "/>
+    <statistic name="TxnCommits"   type="count64"  unit="transaction" desc="Total transactions committed"/>
+    <statistic name="TxnRejects"   type="count64"  unit="transaction" desc="Total transactions rejected"/>
+    <statistic name="TxnCount"     type="count32"  unit="transaction" desc="Current pending transactions"/>
+
+    <statistic name="clientCredit" type="count32" unit="message" desc="Client message credit"/>
+
+    <method name="solicitAck"/>
+    <method name="detach"/>
+    <method name="resetLifespan"/>
+    <method name="close"/>
+  </class>
+
+  <eventArguments>
+    <arg name="altEx"   type="sstr"   desc="Name of the alternate exchange"/>
+    <arg name="args"    type="map"    desc="Supplemental arguments or parameters supplied"/>
+    <arg name="autoDel" type="bool"   desc="Created object is automatically deleted when no longer in use"/>
+    <arg name="dest"    type="sstr"   desc="Destination tag for a subscription"/>
+    <arg name="disp"    type="sstr"   desc="Disposition of a declaration: 'created' if object was created, 'existing' if object already existed"/>
+    <arg name="durable" type="bool"   desc="Created object is durable"/>
+    <arg name="exName"  type="sstr"   desc="Name of an exchange"/>
+    <arg name="exType"  type="sstr"   desc="Type of an exchange"/>
+    <arg name="excl"    type="bool"   desc="Created object is exclusive for the use of the owner only"/>
+    <arg name="key"     type="lstr"   desc="Key text used for routing or binding"/>
+    <arg name="qName"   type="sstr"   desc="Name of a queue"/>
+    <arg name="reason"  type="lstr"   desc="Reason for a failure"/>
+    <arg name="rhost"   type="sstr"   desc="Address (i.e. DNS name, IP address, etc.) of a remotely connected host"/>
+    <arg name="user"    type="sstr"   desc="Authentication identity"/>
+  </eventArguments>
+
+  <event name="clientConnect"     sev="inform" args="rhost, user"/>
+  <event name="clientConnectFail" sev="warn"   args="rhost, user, reason"/>
+  <event name="clientDisconnect"  sev="inform" args="rhost, user"/>
+  <event name="brokerLinkUp"      sev="inform" args="rhost"/>
+  <event name="brokerLinkDown"    sev="warn"   args="rhost"/>
+  <event name="queueDeclare"      sev="inform" args="rhost, user, qName, durable, excl, autoDel, args, disp"/>
+  <event name="queueDelete"       sev="inform" args="rhost, user, qName"/>
+  <event name="exchangeDeclare"   sev="inform" args="rhost, user, exName, exType, altEx, durable, autoDel, args, disp"/>
+  <event name="exchangeDelete"    sev="inform" args="rhost, user, exName"/>
+  <event name="bind"              sev="inform" args="rhost, user, exName, qName, key, args"/>
+  <event name="unbind"            sev="inform" args="rhost, user, exName, qName, key"/>
+  <event name="subscribe"         sev="inform" args="rhost, user, qName, dest, excl, args"/>
+  <event name="unsubscribe"       sev="inform" args="rhost, user, dest"/>
+</schema>
+

Added: mgmt/trunk/rosemary/xml/sesame.xml
===================================================================
--- mgmt/trunk/rosemary/xml/sesame.xml	                        (rev 0)
+++ mgmt/trunk/rosemary/xml/sesame.xml	2009-05-08 14:33:27 UTC (rev 3369)
@@ -0,0 +1,31 @@
+<schema package="com.redhat.sesame">
+
+  <class name="Sysimage">
+    <property name="uuid"    index="y" type="uuid" access="RC" desc="UUID of System Image"/>
+
+    <property name="osName"   type="sstr" access="RO" desc="Operating System Name"/>
+    <property name="nodeName" type="sstr" access="RO" desc="Node Name"/>
+    <property name="release"  type="sstr" access="RO"/>
+    <property name="version"  type="sstr" access="RO"/>
+    <property name="machine"  type="sstr" access="RO"/>
+    <property name="distro"   type="sstr" access="RO" optional="y"/>
+
+    <property name="memTotal"  type="uint32" access="RO" unit="kByte"/>
+    <property name="swapTotal" type="uint32" access="RO" unit="kByte"/>
+
+    The following statistics are gathered from /proc/meminfo
+
+    <statistic name="memFree"  type="uint32" unit="kByte"/>
+    <statistic name="swapFree" type="uint32" unit="kByte"/>
+
+    The following statistics are gathered from /proc/loadavg
+
+    <statistic name="loadAverage1Min"  type="float"/>
+    <statistic name="loadAverage5Min"  type="float"/>
+    <statistic name="loadAverage10Min" type="float"/>
+    <statistic name="procTotal"        type="uint32"/>
+    <statistic name="procRunning"      type="uint32"/>
+  </class>
+
+</schema>
+




More information about the rhmessaging-commits mailing list