3 í«„^âã@sVddlZddlZddlmZddlmZddlmZddlm Z Gdd„deeƒZ dS) éNé)Ú MatchContext)ÚIbpkeyconRange)Ú PolicyQuery)Ú match_rangecsteZdZdZdZdZdZdZdZdZ ‡fdd„Z e dd„ƒZ e j dd„ƒZ e d d „ƒZej d d „ƒZd d „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$tt|ƒj|f|Žtjtƒ|_dS)N)ÚsuperrÚ__init__ÚloggingZ getLoggerÚ__name__Úlog)ÚselfÚpolicyÚkwargs)Ú __class__©ú&/usr/lib64/python3.6/ibpkeyconquery.pyr KszIbpkeyconQuery.__init__cCs|jS)N)Ú_pkeys)r rrrÚpkeysOszIbpkeyconQuery.pkeyscCs€|dk rvt|Ž}|jdks$|jdkr2tdj|ƒƒ‚|jdksF|jdkrTtdj|ƒƒ‚|j|jkrntdj|ƒƒ‚||_nd|_dS)Nrz.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})rZlowZhighÚ ValueErrorÚformatr)r ÚvalueZ pending_pkeysrrrrSs cCs|jS)N)Ú_subnet_prefix)r rrrÚ subnet_prefixiszIbpkeyconQuery.subnet_prefixcCs|rtj|ƒ|_nd|_dS)N)Ú ipaddressZ IPv6Addressr)r rrrrrmsccs®|jjdj|ƒƒ|jjdj|ƒƒ|jjdj|ƒƒ|j|jƒxf|jjƒD]X}|jdk rj|j|jkrjqN|jr’t |j|j|j |j |j |j ƒ r’qN|j|jƒs qN|VqNWdS)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_debugrZ ibpkeyconsrrrÚ pkeys_subsetÚ pkeys_overlapÚpkeys_supersetÚ pkeys_properZ_match_contextÚcontext)r ZpkrrrÚresultsts&    zIbpkeyconQuery.results)r Ú __module__Ú __qualname__Ú__doc__rrrrrr r ÚpropertyrÚsetterrr"Ú __classcell__rr)rrrs&   r) rr ZmixinsrZ policyreprZqueryrÚutilrrrrrrÚs