3 í«„^â ã @ sV d dl Z d dlZddlmZ ddlmZ ddlmZ ddlm Z G dd„ deeƒZ dS ) é Né )ÚMatchContext)ÚIbpkeyconRange)ÚPolicyQuery)Úmatch_rangec st e Zd ZdZdZdZdZdZdZdZ ‡ fdd„Z edd„ ƒZej dd„ ƒZed d „ ƒZej dd „ ƒZdd „ Z‡ ZS )Ú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|Ž tjtƒ| _d S )N)Úsuperr Ú__init__ÚloggingZ getLoggerÚ__name__Úlog)ÚselfÚpolicyÚkwargs)Ú __class__© ú&/usr/lib64/python3.6/ibpkeyconquery.pyr K s zIbpkeyconQuery.__init__c C s | j S )N)Ú_pkeys)r r r r ÚpkeysO s zIbpkeyconQuery.pkeysc C s€ |d k rvt |Ž }|jdk s$|jdk r2tdj|ƒƒ‚|jdksF|jdkrTtdj|ƒƒ‚|j|jkrntdj|ƒƒ‚|| _nd | _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 ZlowZhighÚ 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 zIbpkeyconQuery.subnet_prefixc C s |rt j|ƒ| _nd | _d S )N)Ú ipaddressZIPv6Addressr )r r r r r r m s c c s® | j jdj| ƒƒ | j jdj| ƒƒ | j jdj| ƒƒ | j| j ƒ xf| jjƒ D ]X}| jdk rj| j|jkrjqN| jr’t |j| j| j | j| j| j ƒ r’qN| j|jƒs qN|V qNW dS )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 Zpkr r r Úresultst s&