mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
Add support for removing/replacing a policy from the running system. This operation is only successful if currently running VMs would also be allowed to run under the new policy. Removing the current policy means that the default policy is installed, which then only has support for a single VM label and STE type (SystemManagement) and is the same policy that the system starts up with when no policy is chosen. Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
#============================================================================
|
|
# 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@us.ibm.com>
|
|
#============================================================================
|
|
|
|
"""List the resource label information from the global resource label file
|
|
"""
|
|
import sys
|
|
from xen.util import dictio
|
|
from xen.util import security
|
|
from xen.util import xsconstants
|
|
from xen.xm.opts import OptionError
|
|
from xen.xm import main as xm_main
|
|
from xen.xm.main import server
|
|
|
|
def help():
|
|
return """
|
|
This program lists information for each resource in the
|
|
global resource label file."""
|
|
|
|
def print_resource_data(access_control):
|
|
"""Prints out a resource dictionary to stdout
|
|
"""
|
|
for resource in access_control:
|
|
tmp = access_control[resource]
|
|
if len(tmp) == 2:
|
|
policytype = xsconstants.ACM_POLICY_ID
|
|
(policy, label) = access_control[resource]
|
|
elif len(tmp) == 3:
|
|
policytype, policy, label = access_control[resource]
|
|
print resource
|
|
print " type: "+ policytype
|
|
print " policy: "+ policy
|
|
print " label: "+ label
|
|
|
|
def main (argv):
|
|
if len(argv) > 1:
|
|
raise OptionError("No arguments required")
|
|
|
|
if xm_main.serverType == xm_main.SERVER_XEN_API:
|
|
access_control = server.xenapi.XSPolicy.get_labeled_resources()
|
|
for key, value in access_control.items():
|
|
access_control[key] = tuple(value.split(':'))
|
|
else:
|
|
try:
|
|
filename = security.res_label_filename
|
|
access_control = dictio.dict_read("resources", filename)
|
|
except:
|
|
raise OptionError("Resource file not found")
|
|
|
|
print_resource_data(access_control)
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
main(sys.argv)
|
|
except Exception, e:
|
|
sys.stderr.write('Error: %s\n' % str(e))
|
|
sys.exit(-1)
|