Author: tross
Date: Tue Sep 9 10:31:47 2008
New Revision: 693523
URL: http://svn.apache.org/viewvc?rev=693523&view=rev
Log:
QPID-1274 - qmf-gen can now generate code from multiple schema files. Uses
__file__ as a better way to locate data files. Added code generation for ACL
schema.
Added:
incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management-schema.xml
- copied, changed from r693071,
incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management_schema.xml
Removed:
incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management_schema.xml
Modified:
incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/Makefile
incubator/qpid/trunk/qpid/cpp/managementgen/qmf-gen
incubator/qpid/trunk/qpid/cpp/managementgen/qmf/generate.py
incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py
incubator/qpid/trunk/qpid/cpp/src/Makefile.am
Modified: incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/Makefile
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/Makefile?rev=693523&r1=693522&r2=693523&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/Makefile (original)
+++ incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/Makefile Tue Sep 9
10:31:47 2008
@@ -51,7 +51,7 @@
@$(MAKE)
gen:
- $(MGEN) $(SCHEMA_FILE) $(GEN_DIR)
+ $(MGEN) -o $(GEN_DIR) $(SCHEMA_FILE)
clean:
rm -rf $(GEN_DIR) $(OUT_FILE) *.d *.o
Modified: incubator/qpid/trunk/qpid/cpp/managementgen/qmf-gen
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/managementgen/qmf-gen?rev=693523&r1=693522&r2=693523&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/managementgen/qmf-gen (original)
+++ incubator/qpid/trunk/qpid/cpp/managementgen/qmf-gen Tue Sep 9 10:31:47 2008
@@ -24,27 +24,12 @@
from qmf.generate import Generator
from optparse import OptionParser
-dataPath = os.path.dirname(sys.argv[0]) + "/qmf/"
-defaultTypeFile = dataPath + "management-types.xml"
-defaultTemplateDir = dataPath + "templates"
-found = True
-
-try:
- s = os.stat(defaultTypeFile)
-except:
- found = False
-
-if not found:
- path = sys.path
- for item in path:
- if os.path.basename(item) == "site-packages":
- found = True
- dataPath = item + "/qmf/"
- defaultTypeFile = dataPath + "management-types.xml"
- defaultTemplateDir = dataPath + "templates"
+dataPath = os.path.dirname(Generator.getModulePath())
+defaultTypeFile = dataPath + "/management-types.xml"
+defaultTemplateDir = dataPath + "/templates"
# Set command line options
-usage = "usage: %prog [options] schema-document out-directory"
+usage = "usage: %prog [options] schema-document..."
parser = OptionParser (usage=usage)
parser.add_option ("-m", "--makefile", dest="makefile", metavar="FILE",
help="Makefile fragment")
@@ -52,26 +37,28 @@
help="Type descriptor file")
parser.add_option ("-d", "--templatedir", dest="templatedir", metavar="DIR",
default=defaultTemplateDir,
help="Template directory")
+parser.add_option ("-o", "--outputdir", dest="outputdir", metavar="DIR",
default="./",
+ help="Output directory")
(opts, args) = parser.parse_args ()
-if len (args) < 2:
- parser.error ("Too few arguments")
-
typefile = opts.typefile
templatedir = opts.templatedir
+outdir = opts.outputdir
+gen = Generator (outdir, templatedir)
-schemafile = args[0]
-outdir = args[1]
-
-gen = Generator (outdir, templatedir)
-schema = PackageSchema (typefile, schemafile, opts)
-
-gen.makeClassFiles ("Class.h", schema)
-gen.makeClassFiles ("Class.cpp", schema)
-gen.makeMethodFiles ("Args.h", schema)
-gen.makePackageFile ("Package.h", schema)
-gen.makePackageFile ("Package.cpp", schema)
+if len(args) == 0:
+ print "no input files"
+ parser.exit()
+
+for schemafile in args:
+ schema = PackageSchema (typefile, schemafile, opts)
+
+ gen.makeClassFiles ("Class.h", schema)
+ gen.makeClassFiles ("Class.cpp", schema)
+ gen.makeMethodFiles ("Args.h", schema)
+ gen.makePackageFile ("Package.h", schema)
+ gen.makePackageFile ("Package.cpp", schema)
if opts.makefile != None:
gen.makeSingleFile ("Makefile.mk", opts.makefile, force=True)
Modified: incubator/qpid/trunk/qpid/cpp/managementgen/qmf/generate.py
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/managementgen/qmf/generate.py?rev=693523&r1=693522&r2=693523&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/managementgen/qmf/generate.py (original)
+++ incubator/qpid/trunk/qpid/cpp/managementgen/qmf/generate.py Tue Sep 9
10:31:47 2008
@@ -298,3 +298,8 @@
self.templateFiles.append (templateFile)
stream = template.expand (makefile)
self.writeIfChanged (stream, target, force)
+
+ @staticmethod
+ def getModulePath():
+ return __file__
+
Modified: incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py?rev=693523&r1=693522&r2=693523&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py (original)
+++ incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py Tue Sep 9
10:31:47 2008
@@ -656,6 +656,7 @@
self.name = None
self.desc = None
self.args = []
+ self.defaultSeverity = None
attrs = node.attributes
for idx in range (attrs.length):
@@ -667,6 +668,9 @@
elif key == 'desc':
self.desc = val
+ elif key == 'defaultSeverity':
+ self.defaultSeverity = val
+
else:
raise ValueError ("Unknown attribute in event '%s'" % key)
Modified: incubator/qpid/trunk/qpid/cpp/src/Makefile.am
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/Makefile.am?rev=693523&r1=693522&r2=693523&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/Makefile.am (original)
+++ incubator/qpid/trunk/qpid/cpp/src/Makefile.am Tue Sep 9 10:31:47 2008
@@ -28,8 +28,9 @@
# Management generator.
mgen_dir=$(top_srcdir)/managementgen
-mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk \
- $(top_srcdir)/../specs/management-schema.xml gen/qpid/management
+mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk -o
gen/qpid/management \
+ $(top_srcdir)/../specs/management-schema.xml \
+ $(srcdir)/qpid/acl/management-schema.xml
$(srcdir)/managementgen.mk $(mgen_broker_cpp) $(dist_qpid_management_HEADERS):
mgen.timestamp
mgen.timestamp: $(mgen_generator)
Copied: incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management-schema.xml (from
r693071, incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management_schema.xml)
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management-schema.xml?p2=incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management-schema.xml&p1=incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management_schema.xml&r1=693071&r2=693523&rev=693523&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management_schema.xml (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/acl/management-schema.xml Tue Sep 9
10:31:47 2008
@@ -17,15 +17,32 @@
-->
<class name="plugin">
- <property name="brokerRef" type="objId"
references="qpid.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 Enfocing ACL"/>
- <property name="TransferACL" type="bool" access="RO"
desc="Any transfer ACL rules in force"/>
- <property name="LastACLLoad" type="absTime" access="RO"
desc="Timestamp last load of ACL"/>
- <statistic name="ACLDenyCount" type="count64" unit="record"
desc="Number of ACL requests denied"/>
+ <property name="brokerRef" type="objId" references="qpid.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="record"
desc="Number of ACL requests denied"/>
- <method name="reloadACLFile" desc="Reload the ACL file">
- </method>
+ <method name="reloadACLFile" desc="Reload the ACL file"/>
+
+ <event name="aclEvent" defaultSeverity="info" desc="Event generated by the
ACL policy">
+ <arg name="denied" type="bool"/>
+ <arg name="authId" type="sstr"/>
+ <arg name="action" type="sstr"/>
+ <arg name="objType" type="sstr"/>
+ <arg name="name" type="sstr"/>
+ <arg name="params" type="map"/>
+ </event>
+
+ <event name="fileLoaded" defaultSeverity="warning" desc="ACL file
successfully loaded - New policy in effect">
+ <arg name="authId" type="sstr" desc="Name of user who initiated the file
load"/>
+ </event>
+
+ <event name="fileNotLoaded" defaultSeverity="error" desc="Replacement ACL
file could not be loaded">
+ <arg name="authId" type="sstr" desc="Name of user who initiated the file
load"/>
+ <arg name="reason" type="sstr" desc="Reason for failure"/>
+ </event>
</class>
</schema>