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>


Reply via email to