.. versionadded:: 2019.2.0

    Load a list of configuration commands on the remote device, via Netmiko.

    .. warning::

        Please remember that ``netmiko`` does not have any rollback safeguards
        and any configuration change will be directly loaded into the running
        config if the platform doesn't have the concept of ``candidate`` config.

        On Junos, or other platforms that have this capability, the changes will
        not be loaded into the running config, and the user must set the
        ``commit`` argument to ``True`` to transfer the changes from the
        candidate into the running config before exiting.

    config_commands
        A list of configuration commands to be loaded on the remote device.

    config_file
        Read the configuration commands from a file. The file can equally be a
        template that can be rendered using the engine of choice (see
        ``template_engine``).

        This can be specified using the absolute path to the file, or using one
        of the following URL schemes:

        - ``salt://``, to fetch the file from the Salt fileserver.
        - ``http://`` or ``https://``
        - ``ftp://``
        - ``s3://``
        - ``swift://``

    exit_config_mode: ``True``
        Determines whether or not to exit config mode after complete.

    delay_factor: ``1``
        Factor to adjust delays.

    max_loops: ``150``
        Controls wait time in conjunction with delay_factor (default: ``150``).

    strip_prompt: ``False``
        Determines whether or not to strip the prompt (default: ``False``).

    strip_command: ``False``
        Determines whether or not to strip the command (default: ``False``).

    config_mode_command
        The command to enter into config mode.

    commit: ``False``
        Commit the configuration changes before exiting the config mode. This
        option is by default disabled, as many platforms don't have this
        capability natively.

    CLI Example:

    .. code-block:: bash

        salt '*' napalm.netmiko_config 'set system ntp peer 1.2.3.4' commit=True
        salt '*' napalm.netmiko_config https://bit.ly/2sgljCB

def netmiko_config(*config_commands, **kwargs):
    '''
    .. versionadded:: 2019.2.0

    Load a list of configuration commands on the remote device, via Netmiko.

    .. warning::

        Please remember that ``netmiko`` does not have any rollback safeguards
        and any configuration change will be directly loaded into the running
        config if the platform doesn't have the concept of ``candidate`` config.

        On Junos, or other platforms that have this capability, the changes will
        not be loaded into the running config, and the user must set the
        ``commit`` argument to ``True`` to transfer the changes from the
        candidate into the running config before exiting.

    config_commands
        A list of configuration commands to be loaded on the remote device.

    config_file
        Read the configuration commands from a file. The file can equally be a
        template that can be rendered using the engine of choice (see
        ``template_engine``).

        This can be specified using the absolute path to the file, or using one
        of the following URL schemes:

        - ``salt://``, to fetch the file from the Salt fileserver.
        - ``http://`` or ``https://``
        - ``ftp://``
        - ``s3://``
        - ``swift://``

    exit_config_mode: ``True``
        Determines whether or not to exit config mode after complete.

    delay_factor: ``1``
        Factor to adjust delays.

    max_loops: ``150``
        Controls wait time in conjunction with delay_factor (default: ``150``).

    strip_prompt: ``False``
        Determines whether or not to strip the prompt (default: ``False``).

    strip_command: ``False``
        Determines whether or not to strip the command (default: ``False``).

    config_mode_command
        The command to enter into config mode.

    commit: ``False``
        Commit the configuration changes before exiting the config mode. This
        option is by default disabled, as many platforms don't have this
        capability natively.

    CLI Example:

    .. code-block:: bash

        salt '*' napalm.netmiko_config 'set system ntp peer 1.2.3.4' commit=True
        salt '*' napalm.netmiko_config https://bit.ly/2sgljCB
    '''
    netmiko_kwargs = netmiko_args()
    kwargs.update(netmiko_kwargs)
    return __salt__['netmiko.send_config'](config_commands=config_commands,
                                           **kwargs)