
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
^                 @   sV   d dl Z d dlZddlmZ ddlmZ ddlmZ ddlm	Z	 G dd deeZ
dS )	    N   )MatchContext)IbpkeyconRange)PolicyQuery)match_rangec                   st   e Zd ZdZdZdZdZdZdZdZ	 fddZ
edd Zejdd Zed	d
 Zejdd
 Zdd Z  ZS )IbpkeyconQuerya   
    Infiniband pkey context query.

    Parameter:
    policy          The policy to query.

    Keyword Parameters/Class attributes:
    subnet_prefix   A subnet prefix to match.
    pkeys           A 2-tuple of the pkey range to match. (Set both to
                    the same value for a single pkey)
    pkeys_subset    If true, the criteria will match if it is a subset
                    of the ibpkeycon's range.
    pkeys_overlap   If true, the criteria will match if it overlaps
                    any of the ibpkeycon's range.
    pkeys_superset  If true, the criteria will match if it is a superset
                    of the ibpkeycon's range.
    pkeys_proper    If true, use proper superset/subset operations.
                    No effect if not using set operations.
    user            The criteria to match the context's user.
    user_regex      If true, regular expression matching
                    will be used on the user.
    role            The criteria to match the context's role.
    role_regex      If true, regular expression matching
                    will be used on the role.
    type_           The criteria to match the context's type.
    type_regex      If true, regular expression matching
                    will be used on the type.
    range_          The criteria to match the context's range.
    range_subset    If true, the criteria will match if it is a subset
                    of the context's range.
    range_overlap   If true, the criteria will match if it overlaps
                    any of the context's range.
    range_superset  If true, the criteria will match if it is a superset
                    of the context's range.
    range_proper    If true, use proper superset/subset operations.
                    No effect if not using set operations.
    NFc                s$   t t| j|f| tjt| _d S )N)superr   __init__loggingZ	getLogger__name__log)selfpolicykwargs)	__class__ &/usr/lib64/python3.6/ibpkeyconquery.pyr	   K   s    zIbpkeyconQuery.__init__c             C   s   | j S )N)_pkeys)r   r   r   r   pkeysO   s    zIbpkeyconQuery.pkeysc             C   s   |d k	rvt | }|jdk s$|jdk r2tdj||jdksF|jdkrTtdj||j|jkrntdj||| _nd | _d S )Nr   z.Pkeys must be positive: {0.low:#x}-{0.high:#x}i  z/Pkeys maximum is 0xffff: {0.low:#x}-{0.high:#x}zGThe low pkey must be smaller than the high pkey: {0.low:#x}-{0.high:#x})r   ZlowZhigh
ValueErrorformatr   )r   valueZpending_pkeysr   r   r   r   S   s    c             C   s   | j S )N)_subnet_prefix)r   r   r   r   subnet_prefixi   s    zIbpkeyconQuery.subnet_prefixc             C   s   |rt j|| _nd | _d S )N)	ipaddressZIPv6Addressr   )r   r   r   r   r   r   m   s    c             c   s   | j jdj|  | j jdj|  | j jdj|  | j| j  xf| jj D ]X}| jdk	rj| j|jkrjqN| jrt	|j| j| j
| j| j| j rqN| j|jsqN|V  qNW dS )z/Generator which yields all matching ibpkeycons.z,Generating ibpkeycon results from {0.policy}z Subnet Prefix: {0.subnet_prefix}z~Pkeys: {0.pkeys}, overlap: {0.pkeys_overlap}, subset: {0.pkeys_subset}, superset: {0.pkeys_superset}, proper: {0.pkeys_proper}N)r   infor   debugZ_match_context_debugr   Z
ibpkeyconsr   r   r   pkeys_subsetpkeys_overlappkeys_supersetpkeys_properZ_match_contextcontext)r   Zpkr   r   r   resultst   s&    

zIbpkeyconQuery.results)r   
__module____qualname____doc__r   r   r   r   r   r    r	   propertyr   setterr   r"   __classcell__r   r   )r   r   r      s   &r   )r   r
   Zmixinsr   Z	policyrepr   Zqueryr   utilr   r   r   r   r   r   <module>   s   