3
^ @ sh d dl mZ ddlmZ ddlmZ ddlmZmZ edddd gZ G d
d deZ
G dd
d
eZdS ) )
namedtuple )ContextWrapper)DiffResultDescriptor)
DifferenceWrapperZmodified_nodeconZruleZ
added_contextZremoved_contextc @ s8 e Zd ZdZedZedZedZdd Zdd Z dS )NodeconsDifferencez:Determine the difference in nodecons between two policies.
diff_nodeconsc C s | j jdj| | jdd | jj D dd | jj D \| _| _}g | _ x<|D ]4\}}t
|jt
|jkrT| j jt
||j|j qTW dS )z9Generate the difference in nodecons between the policies.zGGenerating nodecon differences from {0.left_policy} to {0.right_policy}c s s | ]}t |V qd S )N)NodeconWrapper).0n r
/usr/lib64/python3.6/nodecon.py / s z3NodeconsDifference.diff_nodecons..c s s | ]}t |V qd S )N)r
)r r r
r
r r 0 s N)loginfoformatZ _set_diffZleft_policyZnodeconsZright_policyadded_nodeconsremoved_nodeconsmodified_nodeconsr contextappendmodified_nodecon_record)selfZmatched_nodeconsZleft_nodeconZ
right_nodeconr
r
r r ( s
z NodeconsDifference.diff_nodeconsc C s" | j jd d| _d| _d| _dS )z%Reset diff results on policy changes.zResetting nodecon differencesN)r debugr r r )r r
r
r _reset_diff? s zNodeconsDifference._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 nodecon statements for diff purposes.
ip_versionnetworkc C s$ || _ |j| _|j| _t|| _d S )N)originr r! hashkey)r Zoconr
r
r __init__M s zNodeconWrapper.__init__c C s | j S )N)r$ )r r
r
r __hash__S s zNodeconWrapper.__hash__c C s | j |j k S )N)r" )r otherr
r
r __lt__V s zNodeconWrapper.__lt__c C s | j |j ko| j|jkS )N)r r! )r r' r
r
r __eq__Y s zNodeconWrapper.__eq__N)r r! ) r r r r __slots__r% r&