3
^!
@ sh d dl mZ ddlmZ ddlmZ ddlmZmZ edddd gZ G d
d deZ
G dd
d
eZdS ) )
namedtuple )ContextWrapper)DiffResultDescriptor)
DifferenceWrapperZmodified_ibendportconZruleZ
added_contextZremoved_contextc @ s8 e Zd ZdZedZedZedZdd Zdd Z dS )IbendportconsDifferencez?Determine the difference in ibendportcons between two policies.diff_ibendportconsc C s | j jdj| | jdd | jj D dd | jj D \| _| _}g | _ x<|D ]4\}}t
|jt
|jkrT| j jt
||j|j qTW dS )z>Generate the difference in ibendportcons between the policies.zLGenerating ibendportcon differences from {0.left_policy} to {0.right_policy}c s s | ]}t |V qd S )N)IbendportconWrapper).0n r
$/usr/lib64/python3.6/ibendportcon.py 0 s z=IbendportconsDifference.diff_ibendportcons..c s s | ]}t |V qd S )N)r
)r r r
r
r r 1 s N)loginfoformatZ _set_diffZleft_policyZ
ibendportconsZright_policyadded_ibendportconsremoved_ibendportconsmodified_ibendportconsr contextappendmodified_ibendportcon_record)selfZmatched_ibendportconsZ left_ibepZ
right_ibepr
r
r r ' s z*IbendportconsDifference.diff_ibendportconsc C s" | j jd d| _d| _d| _dS )z%Reset diff results on policy changes.z"Resetting ibendportcon differencesN)r debugr r r )r r
r
r _reset_diffA s z#IbendportconsDifference._reset_diffN)
__name__
__module____qualname____doc__r r r r r r r
r
r
r r s r c @ s4 e Zd ZdZd
Zdd Zdd Zdd Zd
d ZdS )r
z/Wrap ibendportcon statements for diff purposes.nameportc C s$ || _ |j| _|j| _t|| _d S )N)originr r! hashkey)r Zoconr
r
r __init__O s zIbendportconWrapper.__init__c C s | j S )N)r$ )r r
r
r __hash__U s zIbendportconWrapper.__hash__c C s | j |j k S )N)r" )r otherr
r
r __lt__X s zIbendportconWrapper.__lt__c C s | j |j ko| j|jkS )N)r r! )r r' r
r
r __eq__[ s zIbendportconWrapper.__eq__N)r r! ) r r r r __slots__r% r&