salt.modules.ciscoconfparse_mod

Execution module for ciscoconfparse

New in version 2019.2.0.

This module can be used for basic configuration parsing, audit or validation for a variety of network platforms having Cisco IOS style configuration (one space indentation), including: Cisco IOS, Cisco Nexus, Cisco IOS-XR, Cisco IOS-XR, Cisco ASA, Arista EOS, Brocade, HP Switches, Dell PowerConnect Switches, or Extreme Networks devices. In newer versions, ciscoconfparse provides support for brace-delimited configuration style as well, for platforms such as: Juniper Junos, Palo Alto, or F5 Networks.

See http://www.pennington.net/py/ciscoconfparse/index.html for further details.

depends:

ciscoconfparse

This module depends on the Python library with the same name, ciscoconfparse - to install execute: pip install ciscoconfparse.

salt.modules.ciscoconfparse_mod.filter_lines(config=None, config_path=None, parent_regex=None, child_regex=None, saltenv='base')

Return a list of detailed matches, for the configuration blocks (parent-child relationship) whose parent respects the regular expressions configured via the parent_regex argument, and the child matches the child_regex regular expression. The result is a list of dictionaries with the following keys:

  • match: a boolean value that tells whether child_regex matched any children lines.

  • parent: the parent line (as text).

  • child: the child line (as text). If no child line matched, this field will be None.

Note that the return list contains the elements that matched the parent condition, the parent_regex regular expression. Therefore, the parent field will always have a valid value, while match and child may default to False and None respectively when there is not child match.

CLI Example:

salt '*' ciscoconfparse.filter_lines config_path=https://bit.ly/2mAdq7z parent_regex='Gigabit' child_regex='shutdown'

Example output (for the example above):

[
    {
        'parent': 'interface GigabitEthernet1',
        'match': False,
        'child': None
    },
    {
        'parent': 'interface GigabitEthernet2',
        'match': True,
        'child': ' shutdown'
    },
    {
        'parent': 'interface GigabitEthernet3',
        'match': True,
        'child': ' shutdown'
    }
]
salt.modules.ciscoconfparse_mod.find_lines(config=None, config_path=None, regex=None, saltenv='base')

Return all the lines (as text) that match the expression in the regex argument.

config

The configuration sent as text.

Note

This argument is ignored when config_path is specified.

config_path

The absolute or remote path to the file with the configuration to be parsed. This argument supports the usual Salt filesystem URIs, e.g., salt://, https://, ftp://, s3://, etc.

regex

The regular expression to match the lines against.

saltenv: base

Salt fileserver environment from which to retrieve the file. This argument is ignored when config_path is not a salt:// URL.

CLI Example:

salt '*' ciscoconfparse.find_lines config_path=https://bit.ly/2mAdq7z regex='ip address'

Output example:

cisco-ios-router:
     -  ip address dhcp
     -  ip address 172.20.0.1 255.255.255.0
     -  no ip address
salt.modules.ciscoconfparse_mod.find_lines_w_child(config=None, config_path=None, parent_regex=None, child_regex=None, ignore_ws=False, saltenv='base')

Return a list of parent lines (as text) matching the regular expression parent_regex that have children lines matching child_regex.

config

The configuration sent as text.

Note

This argument is ignored when config_path is specified.

config_path

The absolute or remote path to the file with the configuration to be parsed. This argument supports the usual Salt filesystem URIs, e.g., salt://, https://, ftp://, s3://, etc.

parent_regex

The regular expression to match the parent lines against.

child_regex

The regular expression to match the child lines against.

ignore_ws: False

Whether to ignore the white spaces.

saltenv: base

Salt fileserver environment from which to retrieve the file. This argument is ignored when config_path is not a salt:// URL.

CLI Example:

salt '*' ciscoconfparse.find_lines_w_child config_path=https://bit.ly/2mAdq7z parent_line='line con' child_line='stopbits'
salt '*' ciscoconfparse.find_lines_w_child config_path=https://bit.ly/2uIRxau parent_regex='ge-(.*)' child_regex='unit \d+'
salt.modules.ciscoconfparse_mod.find_lines_wo_child(config=None, config_path=None, parent_regex=None, child_regex=None, ignore_ws=False, saltenv='base')

Return a list of parent ciscoconfparse.IOSCfgLine lines as text, which matched the parent_regex and whose children did not match child_regex. Only the parent ciscoconfparse.IOSCfgLine text lines will be returned. For simplicity, this method only finds oldest ancestors without immediate children that match.

config

The configuration sent as text.

Note

This argument is ignored when config_path is specified.

config_path

The absolute or remote path to the file with the configuration to be parsed. This argument supports the usual Salt filesystem URIs, e.g., salt://, https://, ftp://, s3://, etc.

parent_regex

The regular expression to match the parent lines against.

child_regex

The regular expression to match the child lines against.

ignore_ws: False

Whether to ignore the white spaces.

saltenv: base

Salt fileserver environment from which to retrieve the file. This argument is ignored when config_path is not a salt:// URL.

CLI Example:

salt '*' ciscoconfparse.find_lines_wo_child config_path=https://bit.ly/2mAdq7z parent_line='line con' child_line='stopbits'
salt.modules.ciscoconfparse_mod.find_objects(config=None, config_path=None, regex=None, saltenv='base')

Return all the line objects that match the expression in the regex argument.

Warning

This function is mostly valuable when invoked from other Salt components (i.e., execution modules, states, templates etc.). For CLI usage, please consider using ciscoconfparse.find_lines

config

The configuration sent as text.

Note

This argument is ignored when config_path is specified.

config_path

The absolute or remote path to the file with the configuration to be parsed. This argument supports the usual Salt filesystem URIs, e.g., salt://, https://, ftp://, s3://, etc.

regex

The regular expression to match the lines against.

saltenv: base

Salt fileserver environment from which to retrieve the file. This argument is ignored when config_path is not a salt:// URL.

Usage example:

objects = __salt__['ciscoconfparse.find_objects'](config_path='salt://path/to/config.txt',
                                                  regex='Gigabit')
for obj in objects:
    print(obj.text)
salt.modules.ciscoconfparse_mod.find_objects_w_child(config=None, config_path=None, parent_regex=None, child_regex=None, ignore_ws=False, saltenv='base')

Parse through the children of all parent lines matching parent_regex, and return a list of child objects, which matched the child_regex.

Warning

This function is mostly valuable when invoked from other Salt components (i.e., execution modules, states, templates etc.). For CLI usage, please consider using ciscoconfparse.find_lines_w_child

config

The configuration sent as text.

Note

This argument is ignored when config_path is specified.

config_path

The absolute or remote path to the file with the configuration to be parsed. This argument supports the usual Salt filesystem URIs, e.g., salt://, https://, ftp://, s3://, etc.

parent_regex

The regular expression to match the parent lines against.

child_regex

The regular expression to match the child lines against.

ignore_ws: False

Whether to ignore the white spaces.

saltenv: base

Salt fileserver environment from which to retrieve the file. This argument is ignored when config_path is not a salt:// URL.

Usage example:

objects = __salt__['ciscoconfparse.find_objects_w_child'](config_path='https://bit.ly/2mAdq7z',
                                                          parent_regex='line con',
                                                          child_regex='stopbits')
for obj in objects:
    print(obj.text)
salt.modules.ciscoconfparse_mod.find_objects_wo_child(config=None, config_path=None, parent_regex=None, child_regex=None, ignore_ws=False, saltenv='base')

Return a list of parent ciscoconfparse.IOSCfgLine objects, which matched the parent_regex and whose children did not match child_regex. Only the parent ciscoconfparse.IOSCfgLine objects will be returned. For simplicity, this method only finds oldest ancestors without immediate children that match.

Warning

This function is mostly valuable when invoked from other Salt components (i.e., execution modules, states, templates etc.). For CLI usage, please consider using ciscoconfparse.find_lines_wo_child

config

The configuration sent as text.

Note

This argument is ignored when config_path is specified.

config_path

The absolute or remote path to the file with the configuration to be parsed. This argument supports the usual Salt filesystem URIs, e.g., salt://, https://, ftp://, s3://, etc.

parent_regex

The regular expression to match the parent lines against.

child_regex

The regular expression to match the child lines against.

ignore_ws: False

Whether to ignore the white spaces.

saltenv: base

Salt fileserver environment from which to retrieve the file. This argument is ignored when config_path is not a salt:// URL.

Usage example:

objects = __salt__['ciscoconfparse.find_objects_wo_child'](config_path='https://bit.ly/2mAdq7z',
                                                           parent_regex='line con',
                                                           child_regex='stopbits')
for obj in objects:
    print(obj.text)