nxos_gir timeout fixes (#66043)

* nxos_gir timeout fixes

* additional setup/teardown cleanups for sanity test

* Add timeout extension comment to module header

* lint

* rework logic to use action plugin
This commit is contained in:
Chris Van Heuveln 2020-01-20 02:15:49 -05:00 committed by Nilashish Chakraborty
parent 986be77337
commit 7fabb28d22
3 changed files with 41 additions and 26 deletions

View file

@ -29,6 +29,7 @@ version_added: "2.2"
short_description: Trigger a graceful removal or insertion (GIR) of the switch.
description:
- Trigger a graceful removal or insertion (GIR) of the switch.
- GIR processing may take more than 2 minutes. Timeout settings are automatically extended to 200s when user timeout settings are insufficient.
author:
- Gabriele Gerbino (@GGabriele)
notes:

View file

@ -25,6 +25,7 @@ import sys
from ansible import constants as C
from ansible.plugins.action.network import ActionModule as ActionNetworkModule
from ansible.module_utils.connection import Connection
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.nxos.nxos import nxos_provider_spec
from ansible.utils.display import Display
@ -81,6 +82,15 @@ class ActionModule(ActionNetworkModule):
display.warning('transport is unnecessary when using %s and will be ignored' % self._play_context.connection)
del self._task.args['transport']
if module_name == 'nxos_gir':
conn = Connection(self._connection.socket_path)
persistent_command_timeout = conn.get_option('persistent_command_timeout')
gir_timeout = 200
if persistent_command_timeout < gir_timeout:
conn.set_option('persistent_command_timeout', gir_timeout)
msg = "timeout value extended to %ss for nxos_gir" % gir_timeout
display.warning(msg)
elif self._play_context.connection == 'local':
provider = load_provider(nxos_provider_spec, self._task.args)
transport = provider['transport'] or 'cli'

View file

@ -1,13 +1,20 @@
---
- debug: msg="START connection={{ ansible_connection }} nxos_gir sanity test"
- set_fact: gir_run='{{ true if (platform is not search("N35")) else false }}'
- set_fact: gir_run="true"
- set_fact: gir_run="false"
when: platform is search("N35")
#- name: "Setup"
# nxos_gir: &setup
# system_mode_maintenance: false
# ignore_errors: yes
- name: Setup0
nxos_config: &cleanup0
lines:
- no system mode maintenance timeout 30
- no configure maintenance profile normal-mode
- no configure maintenance profile maintenance-mode
match: none
ignore_errors: yes
- name: Setup1
nxos_gir:
system_mode_maintenance: false
ignore_errors: yes
- block:
- name: "Put system in maintenance mode with reload reset reason"
@ -68,12 +75,12 @@
- assert: *false
# - name: "Put system in maintenance mode"
# nxos_gir: &configure_system_mode_maintenance
# system_mode_maintenance: true
# register: result
#
# - assert: *true
- name: "Put system in maintenance mode"
nxos_gir: &configure_system_mode_maintenance
system_mode_maintenance: true
register: result
- assert: *true
when: gir_run
@ -88,21 +95,18 @@
action: delete_all
ignore_errors: yes
- name: "Remove other config1"
nxos_config:
lines: no configure maintenance profile normal-mode
match: none
- name: Teardown0
nxos_config: *cleanup0
ignore_errors: yes
- name: "Remove other config2"
nxos_config:
lines: no configure maintenance profile maintenance-mode
match: none
- name: "Put system back in normal mode"
nxos_gir:
system_mode_maintenance: false
# Try again if cli is blocking while changing modes
retries: 3
delay: 30
register: result
until: result is not failed
ignore_errors: yes
# - name: "Put system back in normal mode"
# nxos_gir: *setup
# register: result
# ignore_errors: yes
- debug: msg="END connection={{ ansible_connection }} nxos_gir sanity test"