Changeset 7691


Ignore:
Timestamp:
02/11/10 10:50:38 (9 years ago)
Author:
pjkersha
Message:

Completing new module for custom ESGF types needed for XACML.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/xacml/esg_ext.py

    r7683 r7691  
    1313log = logging.getLogger(__name__) 
    1414 
     15from ndg.xacml.core.functions.v1.bag import BagBase 
     16from ndg.xacml.core.functions.v1.at_least_one_member_of import \ 
     17    AtLeastOneMemberOfBase  
    1518from ndg.xacml.core.attributevalue import AttributeValueClassFactory 
     19from ndg.xacml.parsers import XMLParseError 
    1620from ndg.xacml.parsers.etree.attributevaluereader import ( 
    1721                                                DataTypeReaderClassFactory) 
    18 from ndg.xacml.core.context.result import Decision 
     22from ndg.xacml.parsers.etree import QName 
     23from ndg.xacml.parsers.etree.attributevaluereader import ( 
     24                                                DataTypeReaderClassFactory, 
     25                                                ETreeDataTypeReaderBase) 
    1926 
    2027 
    21 class GroupRoleAttributeValue(AttributeValue): 
    22     """Example Custom Attribute Value""" 
    23     IDENTIFIER = 'urn:grouprole' 
    24     TYPE = dict 
     28class ESGFGroupRoleAttributeValue(AttributeValue): 
     29    """Earth System Grid Federation Group/Role Attribute Value type 
     30     
     31    Attributes have the concept of a different groups and within those groups 
     32    roles indicating a function or privilege 
     33     
     34    @cvar IDENTIFIER: DataType for this attribute value type 
     35    @type IDENTIFIER: string 
     36    @cvar TYPE: Realisation as a Python type 
     37    @type TYPE: string 
     38    @cvar GROUPROLE_ELEMENT_LOCAL_NAME: XML element name for this type 
     39    @type GROUPROLE_ELEMENT_LOCAL_NAME: string 
     40    @cvar GROUP_ELEMENT_LOCAL_NAME: name of group XML sub-element 
     41    @type GROUP_ELEMENT_LOCAL_NAME: string 
     42    @cvar ROLE_ELEMENT_LOCAL_NAME: name of role XML sub-element 
     43    @type ROLE_ELEMENT_LOCAL_NAME: string 
     44    @cvar ROLE_DEFAULT_VALUE: default value for role name 
     45    @type ROLE_DEFAULT_VALUE: string 
     46    """ 
     47     
     48    IDENTIFIER = 'groupRole' 
     49    TYPE = tuple     
    2550    GROUPROLE_ELEMENT_LOCAL_NAME = 'groupRole' 
    2651    GROUP_ELEMENT_LOCAL_NAME = 'group' 
     
    2853    ROLE_DEFAULT_VALUE = 'default' 
    2954     
    30     __slots__ = ('group', 'role') 
     55    __slots__ = ('__group', '__role') 
    3156     
    3257    def __init__(self): 
    33         super(GroupRoleAttributeValue, self).__init__() 
    34         self.group = None 
    35         self.role = self.__class__.ROLE_DEFAULT_VALUE 
     58        """Add additional attributes to AttributeValue base type""" 
     59        super(ESGFGroupRoleAttributeValue, self).__init__() 
     60        self.__group = None 
     61        self.__role = self.__class__.ROLE_DEFAULT_VALUE 
     62        
     63    @property 
     64    def group(self): 
     65        """@return: group name 
     66        @rtype: basestring / NoneType 
     67        """  
     68        return self.__group 
     69     
     70    @property.setter 
     71    def group(self, value): 
     72        """@param value: new group value to set 
     73        @type value: basestring 
     74        """ 
     75        if not isinstance(value, basestring): 
     76            raise TypeError('Expecting string type for "group" attribute; got ' 
     77                            '%r' % type(value)) 
     78             
     79        self.__group = value 
     80          
     81    @property 
     82    def role(self): 
     83        """@return: role name 
     84        @rtype: basestring 
     85        """  
     86        return self.__role 
     87     
     88    @property.setter 
     89    def role(self, value): 
     90        """@param value: new role value to set 
     91        @type value: basestring 
     92        """ 
     93        if not isinstance(value, basestring): 
     94            raise TypeError('Expecting string type for "role" attribute; got ' 
     95                            '%r' % type(value)) 
    3696         
     97        return self.__role 
     98     
    3799    @property 
    38100    def value(self): 
     
    47109     
    48110 
    49 class GroupRoleBag(BagBase): 
    50     """Bag function for Group/Role custom attribute value type""" 
    51     TYPE = GroupRoleAttributeValue 
    52     FUNCTION_NS = 'urn:grouprole-bag' 
     111class ESGFGroupRoleBag(BagBase): 
     112    """Bag function for Earth System Grid Federation Group/Role custom attribute 
     113    value type""" 
     114    TYPE = ESGFGroupRoleAttributeValue 
     115    FUNCTION_NS = 'urn:esg:security:xacml:2.0:function:grouprole-bag' 
    53116 
    54117   
    55 class GroupRoleAtLeastOneMemberOf(AtLeastOneMemberOfBase): 
    56     """At least one member of function for Group/Role custom attribute value  
    57     type""" 
    58     TYPE = GroupRoleAttributeValue 
    59     FUNCTION_NS = 'urn:grouprole-bag' 
     118class ESGFGroupRoleAtLeastOneMemberOf(AtLeastOneMemberOfBase): 
     119    """At least one member of function for Earth System Grid Federation  
     120    Group/Role custom attribute value type""" 
     121    TYPE = ESGFGroupRoleAttributeValue 
     122    FUNCTION_NS = ('urn:esg:security:xacml:2.0:function:' 
     123                   'grouprole-at-least-one-member-of') 
    60124 
    61125     
    62 class ETreeGroupRoleDataTypeReader(ETreeDataTypeReaderBase): 
    63     """Example custom parser to read custom attribute value data type""" 
     126class ETreeESGFGroupRoleDataTypeReader(ETreeDataTypeReaderBase): 
     127    """ElementTree based parser for Earth System Grid Federation Group/Role 
     128    attribute value data type""" 
    64129     
    65130    @classmethod 
    66131    def parse(cls, elem, attributeValue): 
    67         """Parse ESG Group/Role type object 
     132        """Parse ESGF Group/Role type object using ElementTree 
    68133 
    69134        @param obj: input object to parse 
Note: See TracChangeset for help on using the changeset viewer.