WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Merge.

# HG changeset patch
# User shand@xxxxxxxxxxxxxxxxxxxxxxxx
# Node ID 3d40e2f509fcab64960646f94002ff52ec23a1f1
# Parent  9b35fada9e65417a72eae5cb7b7397b29cb8bdf1
# Parent  c77b066f864a4a8f59d70454e08daf4e1b4206c1
Merge.
---
 tools/python/xen/util/dictio.py   |   50 ++++++++++++++++++++++++++++++++++++++
 tools/python/xen/util/security.py |   22 ++++++----------
 tools/python/xen/xm/addlabel.py   |   18 ++++---------
 tools/python/xen/xm/getlabel.py   |   19 ++++++--------
 tools/python/xen/xm/resources.py  |   21 ++++-----------
 tools/python/xen/xm/rmlabel.py    |   20 ++++++---------
 6 files changed, 87 insertions(+), 63 deletions(-)

diff -r 9b35fada9e65 -r 3d40e2f509fc tools/python/xen/util/security.py
--- a/tools/python/xen/util/security.py Thu Jun 29 11:17:24 2006 +0100
+++ b/tools/python/xen/util/security.py Thu Jun 29 11:20:46 2006 +0100
@@ -22,10 +22,10 @@ import sys, os, string, re
 import sys, os, string, re
 import traceback
 import shutil
-#from xml.marshal import generic
 from xen.lowlevel import acm
 from xen.xend import sxp
 from xen.xend.XendLogging import log
+from xen.util import dictio
 
 #global directories and tools for security management
 policy_dir_prefix = "/etc/xen/acm-security/policies"
@@ -551,20 +551,16 @@ def get_res_label(resource):
     (label, policy) = default_res_label()
 
     # load the resource label file
-    configfile = res_label_filename
-    if not os.path.isfile(configfile):
+    res_label_cache = {}
+    try:
+        res_label_cache = dictio.dict_read("resources", res_label_filename)
+    except:
         log.info("Resource label file not found.")
         return default_res_label()
-#
-# Commented out pending replacement for xml.marshal.generic
-#
-#     fd = open(configfile, "rb")
-#     res_label_cache = generic.load(fd)
-#     fd.close()
-
-#     # find the resource information
-#     if res_label_cache.has_key(resource):
-#         (policy, label) = res_label_cache[resource]
+
+    # find the resource information
+    if res_label_cache.has_key(resource):
+        (policy, label) = res_label_cache[resource]
 
     return (label, policy)
 
diff -r 9b35fada9e65 -r 3d40e2f509fc tools/python/xen/xm/addlabel.py
--- a/tools/python/xen/xm/addlabel.py   Thu Jun 29 11:17:24 2006 +0100
+++ b/tools/python/xen/xm/addlabel.py   Thu Jun 29 11:20:46 2006 +0100
@@ -22,7 +22,7 @@ import sys, os
 import sys, os
 import string
 import traceback
-#from xml.marshal import generic
+from xen.util import dictio
 from xen.util import security
 
 def usage():
@@ -79,17 +79,13 @@ def add_resource_label(label, resource, 
             return
 
         # see if this resource is already in the file
+        access_control = {}
         file = security.res_label_filename
-        if not os.path.isfile(file):
+        try:
+            access_control = dictio.dict_read("resources", file)
+        except:
             print "Resource file not found, creating new file at:"
             print "%s" % (file)
-            fd = open(file, "w")
-            fd.close();
-            access_control = {}
-        else:
-            fd = open(file, "rb")
-#            access_control = generic.load(fd)
-            fd.close()
 
         if access_control.has_key(resource):
             security.err("This resource is already labeled.")
@@ -97,9 +93,7 @@ def add_resource_label(label, resource, 
         # write the data to file
         new_entry = { resource : tuple([policyref, label]) }
         access_control.update(new_entry)
-        fd = open(file, "wb")
-#        generic.dump(access_control, fd)
-        fd.close()
+        dictio.dict_write(access_control, "resources", file)
 
     except security.ACMError:
         pass
diff -r 9b35fada9e65 -r 3d40e2f509fc tools/python/xen/xm/getlabel.py
--- a/tools/python/xen/xm/getlabel.py   Thu Jun 29 11:17:24 2006 +0100
+++ b/tools/python/xen/xm/getlabel.py   Thu Jun 29 11:20:46 2006 +0100
@@ -21,7 +21,7 @@ import sys, os, re
 import sys, os, re
 import string
 import traceback
-#from xml.marshal import generic
+from xen.util import dictio
 from xen.util import security
 
 def usage():
@@ -33,17 +33,15 @@ def get_resource_label(resource):
 def get_resource_label(resource):
     """Gets the resource label
     """
+    # read in the resource file
+    file = security.res_label_filename
     try:
-        # read in the resource file
-        file = security.res_label_filename
-        if os.path.isfile(file):
-            fd = open(file, "rb")
-#            access_control = generic.load(fd)
-            fd.close()
-        else:
-            print "Resource label file not found"
-            return
+        access_control = dictio.dict_read("resources", file)
+    except:
+        print "Resource label file not found"
+        return
 
+    try:
         # get the entry and print label
         if access_control.has_key(resource):
             policy = access_control[resource][0]
@@ -100,7 +98,6 @@ def get_domain_label(configfile):
         data = data.strip()
         data = data.lstrip("[\'")
         data = data.rstrip("\']")
-        (p, l) = data.split(",")
         print data
 
     except security.ACMError:
diff -r 9b35fada9e65 -r 3d40e2f509fc tools/python/xen/xm/resources.py
--- a/tools/python/xen/xm/resources.py  Thu Jun 29 11:17:24 2006 +0100
+++ b/tools/python/xen/xm/resources.py  Thu Jun 29 11:20:46 2006 +0100
@@ -21,7 +21,7 @@ import sys, os
 import sys, os
 import string
 import traceback
-#from xml.marshal import generic
+from xen.util import dictio
 from xen.util import security
 
 def usage():
@@ -40,24 +40,15 @@ def print_resource_data(access_control):
         print "    label:  "+label
 
 
-def get_resource_data():
-    """Returns the resource dictionary.
-    """
-    file = security.res_label_filename
-    if not os.path.isfile(file):
+def main (argv):
+    try:
+        file = security.res_label_filename
+        access_control = dictio.dict_read("resources", file)
+    except:
         security.err("Resource file not found.")
 
-    fd = open(file, "rb")
-#    access_control = generic.load(fd)
-    fd.close()
-    return access_control
-
-
-def main (argv):
     try:
-        access_control = get_resource_data()
         print_resource_data(access_control)
-
     except security.ACMError:
         pass
     except:
diff -r 9b35fada9e65 -r 3d40e2f509fc tools/python/xen/xm/rmlabel.py
--- a/tools/python/xen/xm/rmlabel.py    Thu Jun 29 11:17:24 2006 +0100
+++ b/tools/python/xen/xm/rmlabel.py    Thu Jun 29 11:20:46 2006 +0100
@@ -21,7 +21,7 @@ import sys, os, re
 import sys, os, re
 import string
 import traceback
-#from xml.marshal import generic
+from xen.util import dictio
 from xen.util import security
 
 def usage():
@@ -36,22 +36,18 @@ def rm_resource_label(resource):
 def rm_resource_label(resource):
     """Removes a resource label from the global resource label file.
     """
+    # read in the resource file
+    file = security.res_label_filename
     try:
-        # read in the resource file
-        file = security.res_label_filename
-        if os.path.isfile(file):
-            fd = open(file, "rb")
-#            access_control = generic.load(fd)
-            fd.close()
-        else:
-            security.err("Resource file not found, cannot remove label!")
+        access_control = dictio.dict_read("resources", file)
+    except:
+        security.err("Resource file not found, cannot remove label!")
 
+    try:
         # remove the entry and update file
         if access_control.has_key(resource):
             del access_control[resource]
-            fd = open(file, "wb")
-#            generic.dump(access_control, fd)
-            fd.close()
+            dictio.dict_write(access_control, "resources", file)
         else:
             security.err("Label does not exist in resource label file.")
 
diff -r 9b35fada9e65 -r 3d40e2f509fc tools/python/xen/util/dictio.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/python/xen/util/dictio.py   Thu Jun 29 11:20:46 2006 +0100
@@ -0,0 +1,50 @@
+#===========================================================================
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser General Public
+# License as published by the Free Software Foundation.
+#
+# 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#============================================================================
+# Copyright (C) 2006 International Business Machines Corp.
+# Author: Bryan D. Payne <bdpayne@xxxxxxxxxx>
+#============================================================================
+
+
+def dict_read(dictname, filename):
+    """Loads <filename> and returns the dictionary named <dictname> from
+       the file.
+    """
+    dict = {}
+
+    # read in the config file
+    globs = {}
+    locs = {}
+    execfile(filename, globs, locs)
+
+    for (k, v) in locs.items():
+        if k == dictname:
+            dict = v
+            break
+
+    return dict
+
+def dict_write(dict, dictname, filename):
+    """Writes <dict> to <filename> using the name <dictname>.  If the file
+       contains any other data, it will be overwritten.
+    """
+    prefix = dictname + " = {\n"
+    suffix = "}\n"
+    fd = open(filename, "wb")
+    fd.write(prefix)
+    for key in dict:
+        line = "    '" + str(key) + "': " + str(dict[key]) + ",\n"
+        fd.write(line)
+    fd.write(suffix)
+    fd.close()

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>