def delete_ipv4_acl_rule_bulk(self, **kwargs): """ Delete ACL rules from IPv4 ACL. Args: acl_name (str): Name of the access list. seq_ids(string): Range of ACL sequence rules. Returns: True, False or None for Success, failure and no-change respectively for each seq_ids. Examples: >>> from pyswitch.device import Device >>> with Device(conn=conn, auth=auth, connection_type='NETCONF') as dev: >>> print dev.acl.create_acl(acl_name='Acl_1', acl_type='standard', address_type='ip') >>> print dev.acl.add_ip_acl_rule(acl_name='Acl_1', acl_rules = [{"seq_id": 10, "action": "permit", "source": "host 192.168.0.3") """ # Validate required and accepted parameters params_validator.validate_params_slx_nos_delete_acl_rule(**kwargs) # Parse params acl_name = self.ap.parse_acl_name(**kwargs) callback = kwargs.pop('callback', self._callback) acl = self._get_acl_info(acl_name, get_seqs=True) acl_type = acl['type'] address_type = acl['protocol'] if address_type != 'ip': raise ValueError("IPv4 Rule can not be added to non-ip ACL." "ACL {} is of type {}".format( acl_name, address_type)) seq_range = self.ap.parse_seq_id_by_range(acl['seq_ids'], **kwargs) user_data_list = [{'seq_id': seq_id} for seq_id in seq_range] # send the rules in a chunk of Acl.RULE_CHUNK_SIZE chunks = [ user_data_list[i:i + SlxNosAcl.RULE_CHUNK_SIZE] for i in xrange(0, len(user_data_list), SlxNosAcl.RULE_CHUNK_SIZE) ] for chunk in chunks: t = jinja2.Template(acl_template.acl_rule_ipx_delete_bulk) config = t.render(address_type=address_type, acl_type=acl_type, acl_name=acl_name, user_data_list=chunk) config = ' '.join(config.split()) try: callback(config) except Exception as rpc_err: raise ValueError(rpc_err) return True
def delete_ipv6_acl_rule(self, **kwargs): # Validate required and accepted parameters params_validator.validate_params_slx_nos_delete_acl_rule(**kwargs) self.delete_acl_rule(**kwargs)