From dfa5ca58acab9c5f78218e89f9761f2b1b33c38a Mon Sep 17 00:00:00 2001 From: Rohit Thakur Date: Wed, 27 Mar 2024 15:06:42 +0530 Subject: [PATCH] [Major Changes] Remove Deprecated Modules (#506) * [Major Changes] Remove deprecated modules Signed-off-by: rohitthakur2590 * Update docs Signed-off-by: rohitthakur2590 * update sanity fixes Signed-off-by: rohitthakur2590 * remove tests for deprecated modules Signed-off-by: rohitthakur2590 * update changelog and meta Signed-off-by: rohitthakur2590 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update mock.py --------- Signed-off-by: rohitthakur2590 Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- README.md | 1 - changelogs/fragments/remove_deprecated.yaml | 5 + ...pernetworks.junos.junos_logging_module.rst | 487 ------------------ meta/runtime.yml | 9 - plugins/modules/junos_logging.py | 403 --------------- .../integration/targets/junos_logging/aliases | 0 .../targets/junos_logging/defaults/main.yaml | 2 - .../targets/junos_logging/meta/main.yml | 3 - .../targets/junos_logging/tasks/main.yaml | 3 - .../targets/junos_logging/tasks/netconf.yaml | 21 - .../junos_logging/tests/netconf/basic.yaml | 407 --------------- 11 files changed, 5 insertions(+), 1336 deletions(-) create mode 100644 changelogs/fragments/remove_deprecated.yaml delete mode 100644 docs/junipernetworks.junos.junos_logging_module.rst delete mode 100644 plugins/modules/junos_logging.py delete mode 100644 tests/integration/targets/junos_logging/aliases delete mode 100644 tests/integration/targets/junos_logging/defaults/main.yaml delete mode 100644 tests/integration/targets/junos_logging/meta/main.yml delete mode 100644 tests/integration/targets/junos_logging/tasks/main.yaml delete mode 100644 tests/integration/targets/junos_logging/tasks/netconf.yaml delete mode 100644 tests/integration/targets/junos_logging/tests/netconf/basic.yaml diff --git a/README.md b/README.md index abbab4a6..241cc366 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,6 @@ Name | Description [junipernetworks.junos.junos_lag_interfaces](https://github.com/ansible-collections/junipernetworks.junos/blob/main/docs/junipernetworks.junos.junos_lag_interfaces_module.rst)|Link Aggregation Juniper JUNOS resource module [junipernetworks.junos.junos_lldp_global](https://github.com/ansible-collections/junipernetworks.junos/blob/main/docs/junipernetworks.junos.junos_lldp_global_module.rst)|LLDP resource module [junipernetworks.junos.junos_lldp_interfaces](https://github.com/ansible-collections/junipernetworks.junos/blob/main/docs/junipernetworks.junos.junos_lldp_interfaces_module.rst)|LLDP interfaces resource module -[junipernetworks.junos.junos_logging](https://github.com/ansible-collections/junipernetworks.junos/blob/main/docs/junipernetworks.junos.junos_logging_module.rst)|Manage logging on network devices [junipernetworks.junos.junos_logging_global](https://github.com/ansible-collections/junipernetworks.junos/blob/main/docs/junipernetworks.junos.junos_logging_global_module.rst)|Manage logging configuration on Junos devices. [junipernetworks.junos.junos_netconf](https://github.com/ansible-collections/junipernetworks.junos/blob/main/docs/junipernetworks.junos.junos_netconf_module.rst)|Configures the Junos Netconf system service [junipernetworks.junos.junos_ntp_global](https://github.com/ansible-collections/junipernetworks.junos/blob/main/docs/junipernetworks.junos.junos_ntp_global_module.rst)|Manage NTP configuration on Junos devices. diff --git a/changelogs/fragments/remove_deprecated.yaml b/changelogs/fragments/remove_deprecated.yaml new file mode 100644 index 00000000..b4ca4257 --- /dev/null +++ b/changelogs/fragments/remove_deprecated.yaml @@ -0,0 +1,5 @@ +--- +major_changes: + - "This release removes previously deprecated modules from this collection. Please refer to the **Removed Features** section for details." +removed_features: + - Remove deprected junos_logging module which is replaced by junos_logging_global resource module. diff --git a/docs/junipernetworks.junos.junos_logging_module.rst b/docs/junipernetworks.junos.junos_logging_module.rst deleted file mode 100644 index 7274d565..00000000 --- a/docs/junipernetworks.junos.junos_logging_module.rst +++ /dev/null @@ -1,487 +0,0 @@ -.. _junipernetworks.junos.junos_logging_module: - - -*********************************** -junipernetworks.junos.junos_logging -*********************************** - -**Manage logging on network devices** - - -Version added: 1.0.0 - -.. contents:: - :local: - :depth: 1 - -DEPRECATED ----------- -:Removed in collection release after 2023-08-01 -:Why: Updated module released with more functionality. -:Alternative: junos_logging_global - - - -Synopsis --------- -- This module provides declarative management of logging on Juniper JUNOS devices. - - - -Requirements ------------- -The below requirements are needed on the host that executes this module. - -- ncclient (>=v0.5.2) - - -Parameters ----------- - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterChoices/DefaultsComments
-
- active - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes ←
  • -
-
-
Specifies whether or not the configuration is active or deactivated
-
-
- aggregate - -
- list - / elements=dictionary -
-
- -
List of logging definitions.
-
-
- active - -
- boolean -
-
-
    Choices: -
  • no
  • -
  • yes
  • -
-
-
Specifies whether or not the configuration is active or deactivated
-
-
- dest - -
- string -
-
-
    Choices: -
  • console
  • -
  • host
  • -
  • file
  • -
  • user
  • -
-
-
Destination of the logs.
-
-
- facility - -
- string -
-
- -
Set logging facility.
-
-
- files - -
- integer -
-
- -
Number of files to be archived, this is applicable if value of dest is file. The acceptable value is in range from 1 to 1000.
-
-
- level - -
- string -
-
- -
Set logging severity levels.
-
-
- name - -
- string -
-
- -
If value of dest is file it indicates file-name, for user it indicates username and for host indicates the host name to be notified.
-
-
- rotate_frequency - -
- integer -
-
- -
Rotate log frequency in minutes, this is applicable if value of dest is file. The acceptable value is in range of 1 to 59. This controls the frequency after which log file is rotated.
-
-
- size - -
- integer -
-
- -
Size of the file in archive, this is applicable if value of dest is file. The acceptable value is in range from 65536 to 1073741824 bytes.
-
-
- state - -
- string -
-
-
    Choices: -
  • present
  • -
  • absent
  • -
-
-
State of the logging configuration.
-
-
- dest - -
- string -
-
-
    Choices: -
  • console
  • -
  • host
  • -
  • file
  • -
  • user
  • -
-
-
Destination of the logs.
-
-
- facility - -
- string -
-
- -
Set logging facility.
-
-
- files - -
- integer -
-
- -
Number of files to be archived, this is applicable if value of dest is file. The acceptable value is in range from 1 to 1000.
-
-
- level - -
- string -
-
- -
Set logging severity levels.
-
-
- name - -
- string -
-
- -
If value of dest is file it indicates file-name, for user it indicates username and for host indicates the host name to be notified.
-
-
- rotate_frequency - -
- integer -
-
- -
Rotate log frequency in minutes, this is applicable if value of dest is file. The acceptable value is in range of 1 to 59. This controls the frequency after which log file is rotated.
-
-
- size - -
- integer -
-
- -
Size of the file in archive, this is applicable if value of dest is file. The acceptable value is in range from 65536 to 1073741824 bytes.
-
-
- state - -
- string -
-
-
    Choices: -
  • present ←
  • -
  • absent
  • -
-
-
State of the logging configuration.
-
-
- - -Notes ------ - -.. note:: - - This module requires the netconf system service be enabled on the remote device being managed. - - Tested against vSRX JUNOS version 15.1X49-D15.4, vqfx-10000 JUNOS Version 15.1X53-D60.4. - - Recommended connection is ``netconf``. See `the Junos OS Platform Options <../network/user_guide/platform_junos.html>`_. - - This module also works with ``local`` connections for legacy playbooks. - - For information on using CLI and netconf see the :ref:`Junos OS Platform Options guide ` - - For more information on using Ansible to manage network devices see the :ref:`Ansible Network Guide ` - - For more information on using Ansible to manage Juniper network devices see https://www.ansible.com/ansible-juniper. - - - -Examples --------- - -.. code-block:: yaml - - - name: configure console logging - junipernetworks.junos.junos_logging: - dest: console - facility: any - level: critical - - - name: remove console logging configuration - junipernetworks.junos.junos_logging: - dest: console - state: absent - - - name: configure file logging - junipernetworks.junos.junos_logging: - dest: file - name: test - facility: pfe - level: error - - - name: configure logging parameter - junipernetworks.junos.junos_logging: - files: 30 - size: 65536 - rotate_frequency: 10 - - - name: Configure file logging using aggregate - junipernetworks.junos.junos_logging: - dest: file - aggregate: - - name: test-1 - facility: pfe - level: critical - - name: test-2 - facility: kernel - level: emergency - active: true - - - name: Delete file logging using aggregate - junipernetworks.junos.junos_logging: - aggregate: - - {dest: file, name: test-1, facility: pfe, level: critical} - - {dest: file, name: test-2, facility: kernel, level: emergency} - state: absent - - - -Return Values -------------- -Common return values are documented `here `_, the following are the fields unique to this module: - -.. raw:: html - - - - - - - - - - - - -
KeyReturnedDescription
-
- diff.prepared - -
- string -
-
when configuration is changed and diff option is enabled. -
Configuration difference before and after applying change.
-
-
Sample:
-
[edit system syslog] + [edit system syslog] - file interactive-commands { ... } - + file test { + pfe critical; + }
-
-

- - -Status ------- - - -- This module will be removed in a release after 2023-08-01. *[deprecated]* -- For more information see `DEPRECATED`_. - - -Authors -~~~~~~~ - -- Ganesh Nalawade (@ganeshrn) diff --git a/meta/runtime.yml b/meta/runtime.yml index e4911ee5..4bc0093f 100644 --- a/meta/runtime.yml +++ b/meta/runtime.yml @@ -54,15 +54,6 @@ plugin_routing: redirect: junipernetworks.junos.junos_routing_options lldp_interfaces: redirect: junipernetworks.junos.junos_lldp_interfaces - logging: - redirect: junipernetworks.junos.junos_logging - deprecation: - removal_date: "2023-08-01" - warning_text: See the plugin documentation for more details - junos_logging: - deprecation: - removal_date: "2023-08-01" - warning_text: See the plugin documentation for more details netconf: redirect: junipernetworks.junos.junos_netconf ospfv2: diff --git a/plugins/modules/junos_logging.py b/plugins/modules/junos_logging.py deleted file mode 100644 index 8f736d05..00000000 --- a/plugins/modules/junos_logging.py +++ /dev/null @@ -1,403 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -# (c) 2017, Ansible by Red Hat, inc -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function - - -__metaclass__ = type - - -DOCUMENTATION = """ -module: junos_logging -author: Ganesh Nalawade (@ganeshrn) -short_description: Manage logging on network devices -description: -- This module provides declarative management of logging on Juniper JUNOS devices. -version_added: 1.0.0 -extends_documentation_fragment: -- junipernetworks.junos.junos -deprecated: - alternative: junos_logging_global - why: Updated module released with more functionality. - removed_at_date: '2023-08-01' -options: - dest: - description: - - Destination of the logs. - choices: - - console - - host - - file - - user - type: str - name: - description: - - If value of C(dest) is I(file) it indicates file-name, for I(user) it indicates - username and for I(host) indicates the host name to be notified. - type: str - facility: - description: - - Set logging facility. - type: str - level: - description: - - Set logging severity levels. - type: str - aggregate: - description: - - List of logging definitions. - type: list - elements: dict - suboptions: - dest: - description: - - Destination of the logs. - choices: - - console - - host - - file - - user - type: str - name: - description: - - If value of C(dest) is I(file) it indicates file-name, for I(user) it indicates - username and for I(host) indicates the host name to be notified. - type: str - facility: - description: - - Set logging facility. - type: str - level: - description: - - Set logging severity levels. - type: str - state: - description: - - State of the logging configuration. - type: str - choices: - - present - - absent - active: - description: - - Specifies whether or not the configuration is active or deactivated - type: bool - rotate_frequency: - description: - - Rotate log frequency in minutes, this is applicable if value of I(dest) is C(file). - The acceptable value is in range of 1 to 59. This controls the frequency after - which log file is rotated. - type: int - required: false - size: - description: - - Size of the file in archive, this is applicable if value of I(dest) is C(file). - The acceptable value is in range from 65536 to 1073741824 bytes. - type: int - required: false - files: - description: - - Number of files to be archived, this is applicable if value of I(dest) is C(file). - The acceptable value is in range from 1 to 1000. - type: int - required: false - state: - description: - - State of the logging configuration. - default: present - type: str - choices: - - present - - absent - active: - description: - - Specifies whether or not the configuration is active or deactivated - default: true - type: bool - rotate_frequency: - description: - - Rotate log frequency in minutes, this is applicable if value of I(dest) is C(file). - The acceptable value is in range of 1 to 59. This controls the frequency after - which log file is rotated. - type: int - required: false - size: - description: - - Size of the file in archive, this is applicable if value of I(dest) is C(file). - The acceptable value is in range from 65536 to 1073741824 bytes. - required: false - type: int - files: - description: - - Number of files to be archived, this is applicable if value of I(dest) is C(file). - The acceptable value is in range from 1 to 1000. - type: int - required: false -requirements: -- ncclient (>=v0.5.2) -notes: -- This module requires the netconf system service be enabled on the remote device - being managed. -- Tested against vSRX JUNOS version 15.1X49-D15.4, vqfx-10000 JUNOS Version 15.1X53-D60.4. -- Recommended connection is C(netconf). See L(the Junos OS Platform Options,../network/user_guide/platform_junos.html). -- This module also works with C(local) connections for legacy playbooks. -""" - -EXAMPLES = """ -- name: configure console logging - junipernetworks.junos.junos_logging: - dest: console - facility: any - level: critical - -- name: remove console logging configuration - junipernetworks.junos.junos_logging: - dest: console - state: absent - -- name: configure file logging - junipernetworks.junos.junos_logging: - dest: file - name: test - facility: pfe - level: error - -- name: configure logging parameter - junipernetworks.junos.junos_logging: - files: 30 - size: 65536 - rotate_frequency: 10 - -- name: Configure file logging using aggregate - junipernetworks.junos.junos_logging: - dest: file - aggregate: - - name: test-1 - facility: pfe - level: critical - - name: test-2 - facility: kernel - level: emergency - active: true - -- name: Delete file logging using aggregate - junipernetworks.junos.junos_logging: - aggregate: - - {dest: file, name: test-1, facility: pfe, level: critical} - - {dest: file, name: test-2, facility: kernel, level: emergency} - state: absent -""" - -RETURN = """ -diff.prepared: - description: Configuration difference before and after applying change. - returned: when configuration is changed and diff option is enabled. - type: str - sample: > - [edit system syslog] - + [edit system syslog] - file interactive-commands { ... } - + file test { - + pfe critical; - + } -""" -import collections - -from copy import deepcopy - -from ansible.module_utils._text import to_text -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.common.validation import check_required_if -from ansible_collections.ansible.netcommon.plugins.module_utils.network.common.utils import ( - remove_default_spec, -) - -from ansible_collections.junipernetworks.junos.plugins.module_utils.network.junos.junos import ( - commit_configuration, - discard_changes, - load_config, - locked_config, - map_obj_to_ele, - map_params_to_obj, - to_param_list, - tostring, -) - - -USE_PERSISTENT_CONNECTION = True - - -def validate_files(value, module): - if value and not 1 <= value <= 1000: - module.fail_json(msg="files must be between 1 and 1000") - - -def validate_size(value, module): - if value and not 65536 <= value <= 1073741824: - module.fail_json(msg="size must be between 65536 and 1073741824") - - -def validate_rotate_frequency(value, module): - if value and not 1 <= value <= 59: - module.fail_json(msg="rotate_frequency must be between 1 and 59") - - -def validate_param_values(module, obj, param=None): - if not param: - param = module.params - for key in obj: - # validate the param value (if validator func exists) - validator = globals().get("validate_%s" % key) - if callable(validator): - validator(param.get(key), module) - - -def main(): - """main entry point for module execution""" - element_spec = dict( - dest=dict(choices=["console", "host", "file", "user"]), - name=dict(), - facility=dict(), - level=dict(), - rotate_frequency=dict(type="int"), - size=dict(type="int"), - files=dict(type="int"), - state=dict(default="present", choices=["present", "absent"]), - active=dict(default=True, type="bool"), - ) - - aggregate_spec = deepcopy(element_spec) - - # remove default in aggregate spec, to handle common arguments - remove_default_spec(aggregate_spec) - - argument_spec = dict( - aggregate=dict(type="list", elements="dict", options=aggregate_spec), - ) - - argument_spec.update(element_spec) - - required_if = [ - ("dest", "host", ["name", "facility", "level"]), - ("dest", "file", ["name", "facility", "level"]), - ("dest", "user", ["name", "facility", "level"]), - ("dest", "console", ["facility", "level"]), - ] - - module = AnsibleModule( - argument_spec=argument_spec, - required_if=required_if, - supports_check_mode=True, - ) - - warnings = list() - result = {"changed": False} - - if warnings: - result["warnings"] = warnings - - params = to_param_list(module) - - requests = list() - for param in params: - # if key doesn't exist in the item, get it from module.params - for key in param: - if param.get(key) is None: - param[key] = module.params[key] - - try: - check_required_if(required_if, param) - except TypeError as exc: - module.fail_json(to_text(exc)) - - item = param.copy() - dest = item.get("dest") - if dest == "console" and item.get("name"): - module.fail_json( - msg="%s and %s are mutually exclusive" % ("console", "name"), - ) - - top = "system/syslog" - is_facility_key = False - field_top = None - if dest: - if dest == "console": - field_top = dest - is_facility_key = True - else: - field_top = dest + "/contents" - is_facility_key = False - - param_to_xpath_map = collections.OrderedDict() - param_to_xpath_map.update( - [ - ("name", {"xpath": "name", "is_key": True, "top": dest}), - ( - "facility", - { - "xpath": "name", - "is_key": is_facility_key, - "top": field_top, - }, - ), - ( - "size", - { - "xpath": "size", - "leaf_only": True, - "is_key": True, - "top": "archive", - }, - ), - ( - "files", - { - "xpath": "files", - "leaf_only": True, - "is_key": True, - "top": "archive", - }, - ), - ( - "rotate_frequency", - {"xpath": "log-rotate-frequency", "leaf_only": True}, - ), - ], - ) - - if item.get("level"): - param_to_xpath_map["level"] = { - "xpath": item.get("level"), - "tag_only": True, - "top": field_top, - } - - validate_param_values(module, param_to_xpath_map, param=item) - - want = map_params_to_obj(module, param_to_xpath_map, param=item) - requests.append(map_obj_to_ele(module, want, top, param=item)) - - diff = None - with locked_config(module): - for req in requests: - diff = load_config(module, tostring(req), warnings, action="merge") - - commit = not module.check_mode - if diff: - if commit: - commit_configuration(module) - else: - discard_changes(module) - result["changed"] = True - - if module._diff: - result["diff"] = {"prepared": diff} - - module.exit_json(**result) - - -if __name__ == "__main__": - main() diff --git a/tests/integration/targets/junos_logging/aliases b/tests/integration/targets/junos_logging/aliases deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/integration/targets/junos_logging/defaults/main.yaml b/tests/integration/targets/junos_logging/defaults/main.yaml deleted file mode 100644 index 5f709c5a..00000000 --- a/tests/integration/targets/junos_logging/defaults/main.yaml +++ /dev/null @@ -1,2 +0,0 @@ ---- -testcase: "*" diff --git a/tests/integration/targets/junos_logging/meta/main.yml b/tests/integration/targets/junos_logging/meta/main.yml deleted file mode 100644 index d80f5fbf..00000000 --- a/tests/integration/targets/junos_logging/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -dependencies: - - prepare_junos_tests diff --git a/tests/integration/targets/junos_logging/tasks/main.yaml b/tests/integration/targets/junos_logging/tasks/main.yaml deleted file mode 100644 index eace31d3..00000000 --- a/tests/integration/targets/junos_logging/tasks/main.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- name: Invoke netconf - ansible.builtin.include_tasks: netconf.yaml diff --git a/tests/integration/targets/junos_logging/tasks/netconf.yaml b/tests/integration/targets/junos_logging/tasks/netconf.yaml deleted file mode 100644 index 6071adcf..00000000 --- a/tests/integration/targets/junos_logging/tasks/netconf.yaml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- name: Collect all netconf test cases - ansible.builtin.find: - paths: "{{ role_path }}/tests/netconf" - patterns: "{{ testcase }}.yaml" - register: test_cases - connection: local - -- name: Set test_items - ansible.builtin.set_fact: - test_items: "{{ test_cases.files | map(attribute='path') | list }}" - -- name: Run test case (connection=ansible.netcommon.netconf) - ansible.builtin.include_tasks: "{{ test_case_to_run }}" - with_items: "{{ test_items }}" - loop_control: - loop_var: test_case_to_run - vars: - ansible_connection: ansible.netcommon.netconf - tags: - - netconf diff --git a/tests/integration/targets/junos_logging/tests/netconf/basic.yaml b/tests/integration/targets/junos_logging/tests/netconf/basic.yaml deleted file mode 100644 index 030ce9e6..00000000 --- a/tests/integration/targets/junos_logging/tests/netconf/basic.yaml +++ /dev/null @@ -1,407 +0,0 @@ ---- -- ansible.builtin.debug: - msg="START junos_logging netconf/basic.yaml on connection={{ ansible_connection - }}" - -- name: setup - remove file logging - junipernetworks.junos.junos_logging: - dest: file - name: test - facility: pfe - level: error - state: absent - -- name: Create file logging - register: result - junipernetworks.junos.junos_logging: - dest: file - name: test_file - facility: pfe - level: error - state: present - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'test_file' in config.xml" - - "'pfe' in config.xml" - - "'' in config.xml" - -- name: Create file logging (idempotent) - register: result - junipernetworks.junos.junos_logging: - dest: file - name: test_file - facility: pfe - level: error - state: present - -- ansible.builtin.assert: - that: - - result.changed == false - -- name: Deactivate logging configuration - register: result - junipernetworks.junos.junos_logging: - dest: file - name: test_file - facility: pfe - level: error - state: present - active: false - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - ''''' in config.xml' - - ''''' in config.xml' - -- name: Activate logging configuration - register: result - junipernetworks.junos.junos_logging: - dest: file - name: test_file - facility: pfe - level: error - state: present - active: true - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'test_file' in config.xml" - - "'pfe' in config.xml" - - "'' in config.xml" - -- name: Delete logging configuration - register: result - junipernetworks.junos.junos_logging: - dest: file - name: test_file - facility: pfe - level: error - state: absent - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'test_file' not in config.xml" - -- name: Configure console logging - register: result - junipernetworks.junos.junos_logging: - dest: console - facility: kernel - level: emergency - state: present - active: true - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'' in config.xml" - - "'kernel' in config.xml" - - "'' in config.xml" - -- name: Configure console logging (idempotent) - register: result - junipernetworks.junos.junos_logging: - dest: console - facility: kernel - level: emergency - state: present - active: true - -- ansible.builtin.assert: - that: - - result.changed == false - -- name: Disable console logging - register: result - junipernetworks.junos.junos_logging: - dest: console - facility: kernel - level: emergency - state: present - active: false - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - ''''' in config.xml' - -- name: Delete console logging - register: result - junipernetworks.junos.junos_logging: - dest: console - facility: kernel - level: emergency - state: absent - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'' not in config.xml" - -- name: Configure logging parameters - register: result - junipernetworks.junos.junos_logging: - size: 65536 - files: 40 - rotate_frequency: 20 - state: present - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'64k' in config.xml" - - "'40' in config.xml" - - "'20' in config.xml" - -- name: Configure logging parameters (idempotent) - register: result - junipernetworks.junos.junos_logging: - size: 65536 - files: 40 - rotate_frequency: 20 - state: present - active: true - -- ansible.builtin.assert: - that: - - result.changed == false - -- name: Disable logging parameters - register: result - junipernetworks.junos.junos_logging: - size: 65536 - files: 40 - rotate_frequency: 20 - state: present - active: false - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - '''64k'' in config.xml' - - '''40'' in config.xml' - - "'20'\ - \ in config.xml" - -- name: Activate logging parameters - register: result - junipernetworks.junos.junos_logging: - size: 65536 - files: 40 - rotate_frequency: 20 - state: present - active: true - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'64k' in config.xml" - - "'40' in config.xml" - - "'20' in config.xml" - -- name: Delete logging parameters - register: result - junipernetworks.junos.junos_logging: - size: 65536 - files: 40 - rotate_frequency: 20 - state: absent - -- name: Get running configuration - register: config - junipernetworks.junos.junos_rpc: - rpc: get-configuration - -- ansible.builtin.assert: - that: - - result.changed == true - - "'64k' not in config.xml" - - "'40' not in config.xml" - - "'20' not in config.xml" - -- name: Seup file logging using aggregate - register: result - junipernetworks.junos.junos_logging: - aggregate: - - dest: file - name: test-1 - facility: pfe - level: critical - state: absent - - - dest: file - name: test-2 - facility: kernel - level: emergency - state: absent - -- name: Configure file logging using aggregate - register: result - junipernetworks.junos.junos_logging: - aggregate: - - dest: file - name: test-1 - facility: pfe - level: critical - active: true - - - dest: file - name: test-2 - facility: kernel - level: emergency - active: true - -- ansible.builtin.assert: - that: - - result.changed == true - - result.diff.prepared is search("\+ *file test-1") - - result.diff.prepared is search("\+ *pfe critical") - - result.diff.prepared is search("\+ *file test-2") - - result.diff.prepared is search("\+ *kernel emergency") - -- name: Deactivate file logging configuration using aggregate - register: result - junipernetworks.junos.junos_logging: - aggregate: - - dest: file - name: test-1 - facility: pfe - level: critical - - - dest: file - name: test-2 - facility: kernel - level: emergency - active: false - -- ansible.builtin.assert: - that: - - result.changed == true - - result.diff.prepared is search("! *inactive[:] file test-1") - - result.diff.prepared is search("! *inactive[:] pfe") - - result.diff.prepared is search("! *inactive[:] file test-2") - - result.diff.prepared is search("! *inactive[:] kernel") - -- name: activate file logging configuration using aggregate - register: result - junipernetworks.junos.junos_logging: - aggregate: - - dest: file - name: test-1 - facility: pfe - level: critical - - - dest: file - name: test-2 - facility: kernel - level: emergency - active: true - -- ansible.builtin.assert: - that: - - result.changed == true - - result.diff.prepared is search("! *active[:] file test-1") - - result.diff.prepared is search("! *active[:] pfe") - - result.diff.prepared is search("! *active[:] file test-2") - - result.diff.prepared is search("! *active[:] kernel") - -- name: Delete file logging using aggregate - register: result - junipernetworks.junos.junos_logging: - aggregate: - - dest: file - name: test-1 - facility: pfe - level: critical - - - dest: file - name: test-2 - facility: kernel - level: emergency - state: absent - -- ansible.builtin.assert: - that: - - result.changed == true - - result.diff.prepared is search("\- *file test-1") - - result.diff.prepared is search("\- *pfe critical") - - result.diff.prepared is search("\- *file test-2") - - result.diff.prepared is search("\- *kernel emergency") - -- name: Delete file logging using aggregate (idempotent) - register: result - junipernetworks.junos.junos_logging: - aggregate: - - dest: file - name: test-1 - facility: pfe - level: critical - - - dest: file - name: test-2 - facility: kernel - level: emergency - state: absent - -- ansible.builtin.assert: - that: - - result.changed == false - -- ansible.builtin.debug: - msg="END junos_logging netconf/basic.yaml on connection={{ ansible_connection - }}"