@ -427,7 +427,7 @@ class BaseAcl(object):
if self . acl_type :
if self . acl_type :
conf_str + = " <aclType></aclType> "
conf_str + = " <aclType></aclType> "
if self . acl_num :
if self . acl_num or self . acl_name . isdigit ( ) :
conf_str + = " <aclNumber></aclNumber> "
conf_str + = " <aclNumber></aclNumber> "
if self . acl_step :
if self . acl_step :
conf_str + = " <aclStep></aclStep> "
conf_str + = " <aclStep></aclStep> "
@ -444,12 +444,11 @@ class BaseAcl(object):
xml_str = recv_xml . replace ( ' \r ' , ' ' ) . replace ( ' \n ' , ' ' ) . \
xml_str = recv_xml . replace ( ' \r ' , ' ' ) . replace ( ' \n ' , ' ' ) . \
replace ( ' xmlns= " urn:ietf:params:xml:ns:netconf:base:1.0 " ' , " " ) . \
replace ( ' xmlns= " urn:ietf:params:xml:ns:netconf:base:1.0 " ' , " " ) . \
replace ( ' xmlns= " http://www.huawei.com/netconf/vrp " ' , " " )
replace ( ' xmlns= " http://www.huawei.com/netconf/vrp " ' , " " )
root = ElementTree . fromstring ( xml_str )
root = ElementTree . fromstring ( xml_str )
# parse acl
# parse acl
acl_info = root . findall (
acl_info = root . findall (
" data/ acl/aclGroups/aclGroup" )
" acl/aclGroups/aclGroup" )
if acl_info :
if acl_info :
for tmp in acl_info :
for tmp in acl_info :
tmp_dict = dict ( )
tmp_dict = dict ( )
@ -460,25 +459,46 @@ class BaseAcl(object):
self . cur_acl_cfg [ " acl_info " ] . append ( tmp_dict )
self . cur_acl_cfg [ " acl_info " ] . append ( tmp_dict )
if self . cur_acl_cfg [ " acl_info " ] :
if self . cur_acl_cfg [ " acl_info " ] :
find_list = list ( )
for tmp in self . cur_acl_cfg [ " acl_info " ] :
for tmp in self . cur_acl_cfg [ " acl_info " ] :
find_flag = True
cur_cfg_dict = dict ( )
exist_cfg_dict = dict ( )
if self . acl_name :
if self . acl_name . isdigit ( ) and tmp . get ( " aclNumber " ) :
cur_cfg_dict [ " aclNumber " ] = self . acl_name
exist_cfg_dict [ " aclNumber " ] = tmp . get ( " aclNumber " )
else :
cur_cfg_dict [ " aclNumOrName " ] = self . acl_name
exist_cfg_dict [ " aclNumOrName " ] = tmp . get ( " aclNumOrName " )
if self . acl_type :
cur_cfg_dict [ " aclType " ] = self . acl_type
exist_cfg_dict [ " aclType " ] = tmp . get ( " aclType " )
if self . acl_num :
cur_cfg_dict [ " aclNumber " ] = self . acl_num
exist_cfg_dict [ " aclNumber " ] = tmp . get ( " aclNumber " )
if self . acl_step :
cur_cfg_dict [ " aclStep " ] = self . acl_step
exist_cfg_dict [ " aclStep " ] = tmp . get ( " aclStep " )
if self . acl_description :
cur_cfg_dict [ " aclDescription " ] = self . acl_description
exist_cfg_dict [ " aclDescription " ] = tmp . get ( " aclDescription " )
if self . acl_name and tmp . get ( " aclNumOrName " ) != self . acl_name :
if cur_cfg_dict == exist_cfg_dict :
find_flag = False
find_bool = True
if self . acl_type and tmp . get ( " aclType " ) != self . acl_type :
else :
find_flag = False
find_bool = False
if self . acl_num and tmp . get ( " aclNumber " ) != self . acl_num :
find_list . append ( find_bool )
find_flag = False
if self . acl_step and tmp . get ( " aclStep " ) != self . acl_step :
find_flag = False
if self . acl_description and tmp . get ( " aclDescription " ) != self . acl_description :
find_flag = False
if find_flag :
for mem in find_list :
if mem :
find_flag = True
break
break
else :
else :
find_flag = False
find_flag = False
else :
find_flag = False
if self . state == " present " :
if self . state == " present " :
need_cfg = bool ( not find_flag )
need_cfg = bool ( not find_flag )
elif self . state == " delete_acl " :
elif self . state == " delete_acl " :
@ -593,7 +613,7 @@ class BaseAcl(object):
# parse base rule
# parse base rule
base_rule_info = root . findall (
base_rule_info = root . findall (
" data/ acl/aclGroups/aclGroup/aclRuleBas4s/aclRuleBas4" )
" acl/aclGroups/aclGroup/aclRuleBas4s/aclRuleBas4" )
if base_rule_info :
if base_rule_info :
for tmp in base_rule_info :
for tmp in base_rule_info :
tmp_dict = dict ( )
tmp_dict = dict ( )