3 ^' @shddlmZddlmZddlmZddlmZmZedddd gZ Gd d d eZ Gd d d eZ dS)) namedtuple)ContextWrapper)DiffResultDescriptor) DifferenceWrapperZmodified_ibpkeyconZruleZ added_contextZremoved_contextc@s8eZdZdZedZedZedZddZddZ dS)IbpkeyconsDifferencez0sz7IbpkeyconsDifference.diff_ibpkeycons..css|]}t|VqdS)N)r )r r r r rr1sN)loginfoformatZ _set_diffZ left_policyZ ibpkeyconsZ right_policyadded_ibpkeyconsremoved_ibpkeyconsmodified_ibpkeyconsrcontextappendmodified_ibpkeycon_record)selfZmatched_ibpkeyconsZ left_ibpkeyZ right_ibpkeyr r rr 's z$IbpkeyconsDifference.diff_ibpkeyconscCs"|jjdd|_d|_d|_dS)z%Reset diff results on policy changes.zResetting ibpkeycon differencesN)rdebugrrr)rr r r _reset_diffAs z IbpkeyconsDifference._reset_diffN) __name__ __module__ __qualname____doc__rrrrr rr r r rrs rc@s4eZdZdZdZddZddZd d Zd d Zd S)r z,Wrap ibpkeycon statements for diff purposes. subnet_prefixlowhighcCs*||_|j|_|j\|_|_t||_dS)N)originr Zpkeysr!r"hashkey)rZoconr r r__init__OszIbpkeyconWrapper.__init__cCs|jS)N)r%)rr r r__hash__UszIbpkeyconWrapper.__hash__cCs |j|jkS)N)r#)rotherr r r__lt__XszIbpkeyconWrapper.__lt__cCs$|j|jko"|j|jko"|j|jkS)N)r r!r")rr(r r r__eq__[s  zIbpkeyconWrapper.__eq__N)r r!r") rrrr __slots__r&r'r)r*r r r rr Is r N) collectionsrrrZ descriptorsr differencerrrrr r r r rs   *