xend: Reworked initialization of XSPolicy administration class

Rather than picking up the current policy from the managed policies
file the hypervisor is asked for the name of the current policy.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
This commit is contained in:
Keir Fraser committed 2007-10-25 09:23:27 +01:00
1 parent 61d0b64c6c
commit 9c14bd9596
1 file changed
+13 -28
+13 -28
View File
@@ -28,7 +28,6 @@ from xen.util.xspolicy import XSPolicy
from xen.util.acmpolicy import ACMPolicy
from xen.xend.XendError import SecurityError
XS_MANAGED_POLICIES_FILE = "/etc/xen/acm-security/policies/managed_policies"
class XSPolicyAdmin:
""" The class that handles the managed policies in the system.
@@ -45,28 +44,19 @@ class XSPolicyAdmin:
on the system (currently '1')
"""
self.maxpolicies = maxpolicies
try:
self.policies = dictio.dict_read("managed_policies",
XS_MANAGED_POLICIES_FILE)
except Exception, e:
self.policies = {}
self.policies = {}
self.xsobjs = {}
for ref, data in self.policies.items():
name = data[0]
typ = data[1]
try:
if typ == xsconstants.ACM_POLICY_ID:
try:
self.xsobjs[ref] = ACMPolicy(name=name, ref=ref)
except Exception, e:
del self.policies[ref]
else:
del self.policies[ref]
except Exception, e:
log.error("XSPolicyAdmin: Could not find policy '%s': %s" %
(name, str(e)))
del self.policies[ref]
act_pol_name = self.get_hv_loaded_policy_name()
ref = uuid.createString()
try:
self.xsobjs[ref] = ACMPolicy(name=act_pol_name, ref=ref)
self.policies[ref] = (act_pol_name, xsconstants.ACM_POLICY_ID)
except Exception, e:
log.error("Could not find XML representation of policy '%s': "
"%s" % (act_pol_name,e))
log.debug("XSPolicyAdmin: Known policies: %s" % self.policies)
def isXSEnabled(self):
@@ -113,6 +103,7 @@ class XSPolicyAdmin:
if rc == 0:
self.rm_bootpolicy()
irc = self.activate_xspolicy(loadedpol, flags)
# policy is loaded; if setting the boot flag fails it's ok.
return (loadedpol, rc, errors)
try:
@@ -166,9 +157,6 @@ class XSPolicyAdmin:
xsconstants.ACM_POLICY_ID]) }
self.policies.update(new_entry)
self.xsobjs[ref] = acmpol
dictio.dict_write(self.policies,
"managed_policies",
XS_MANAGED_POLICIES_FILE)
return (acmpol, xsconstants.XSERR_SUCCESS, errors)
def make_boot_policy(self, acmpol):
@@ -217,9 +205,6 @@ class XSPolicyAdmin:
if rc == xsconstants.XSERR_SUCCESS or force:
del self.policies[ref]
del self.xsobjs[ref]
dictio.dict_write(self.policies,
"managed_policies",
XS_MANAGED_POLICIES_FILE)
rc = xsconstants.XSERR_SUCCESS
return rc
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.