[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |