fix for nxos_ospf_vrf invalid cmd and ntp errors (#27977)
* fix for nxos_ospf_vrf invalid cmd * fix for nxos_ntp issues
This commit is contained in:
parent
19a6000d97
commit
9d84a4e530
20 changed files with 271 additions and 13 deletions
|
@ -135,16 +135,16 @@ import re
|
||||||
|
|
||||||
|
|
||||||
def execute_show_command(command, module, command_type='cli_show'):
|
def execute_show_command(command, module, command_type='cli_show'):
|
||||||
if module.params['transport'] == 'cli':
|
if 'show run' not in command:
|
||||||
if 'show run' not in command:
|
output = 'json'
|
||||||
command += ' | json'
|
else:
|
||||||
cmds = [command]
|
output = 'text'
|
||||||
body = run_commands(module, cmds)
|
|
||||||
elif module.params['transport'] == 'nxapi':
|
|
||||||
cmds = [command]
|
|
||||||
body = run_commands(module, cmds)
|
|
||||||
|
|
||||||
return body
|
commands = [{
|
||||||
|
'command': command,
|
||||||
|
'output': output,
|
||||||
|
}]
|
||||||
|
return run_commands(module, commands)
|
||||||
|
|
||||||
|
|
||||||
def flatten_list(command_lists):
|
def flatten_list(command_lists):
|
||||||
|
@ -170,7 +170,7 @@ def get_ntp_source(module):
|
||||||
else:
|
else:
|
||||||
source_type = 'source'
|
source_type = 'source'
|
||||||
source = output[0].split()[2].lower()
|
source = output[0].split()[2].lower()
|
||||||
except AttributeError:
|
except (AttributeError, IndexError):
|
||||||
source_type = None
|
source_type = None
|
||||||
source = None
|
source = None
|
||||||
|
|
||||||
|
@ -327,7 +327,6 @@ def main():
|
||||||
warnings = list()
|
warnings = list()
|
||||||
check_args(module, warnings)
|
check_args(module, warnings)
|
||||||
|
|
||||||
|
|
||||||
server = module.params['server'] or None
|
server = module.params['server'] or None
|
||||||
peer = module.params['peer'] or None
|
peer = module.params['peer'] or None
|
||||||
key_id = module.params['key_id']
|
key_id = module.params['key_id']
|
||||||
|
|
|
@ -146,7 +146,6 @@ from ansible.module_utils.netcfg import CustomNetworkConfig
|
||||||
|
|
||||||
PARAM_TO_COMMAND_KEYMAP = {
|
PARAM_TO_COMMAND_KEYMAP = {
|
||||||
'vrf': 'vrf',
|
'vrf': 'vrf',
|
||||||
'ospf': 'ospf',
|
|
||||||
'router_id': 'router-id',
|
'router_id': 'router-id',
|
||||||
'default_metric': 'default-metric',
|
'default_metric': 'default-metric',
|
||||||
'log_adjacency': 'log-adjacency-changes',
|
'log_adjacency': 'log-adjacency-changes',
|
||||||
|
|
|
@ -240,6 +240,14 @@
|
||||||
failed_modules: "{{ failed_modules }} + [ 'nxos_vxlan_vtep' ]"
|
failed_modules: "{{ failed_modules }} + [ 'nxos_vxlan_vtep' ]"
|
||||||
test_failed: true
|
test_failed: true
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- include_role:
|
||||||
|
name: nxos_ntp
|
||||||
|
when: "limit_to in ['*', 'nxos_ntp']"
|
||||||
|
rescue:
|
||||||
|
- set_fact:
|
||||||
|
failed_modules: "{{ failed_modules }} + [ 'nxos_ntp' ]"
|
||||||
|
test_failed: true
|
||||||
- block:
|
- block:
|
||||||
- include_role:
|
- include_role:
|
||||||
name: nxos_ospf
|
name: nxos_ospf
|
||||||
|
@ -249,6 +257,15 @@
|
||||||
failed_modules: "{{ failed_modules }} + [ 'nxos_ospf' ]"
|
failed_modules: "{{ failed_modules }} + [ 'nxos_ospf' ]"
|
||||||
test_failed: true
|
test_failed: true
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- include_role:
|
||||||
|
name: nxos_ospf_vrf
|
||||||
|
when: "limit_to in ['*', 'nxos_ospf_vrf']"
|
||||||
|
rescue:
|
||||||
|
- set_fact:
|
||||||
|
failed_modules: "{{ failed_modules }} + [ 'nxos_ospf_vrf' ]"
|
||||||
|
test_failed: true
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- include_role:
|
- include_role:
|
||||||
name: nxos_interface_ospf
|
name: nxos_interface_ospf
|
||||||
|
|
2
test/integration/targets/nxos_ntp/defaults/main.yaml
Normal file
2
test/integration/targets/nxos_ntp/defaults/main.yaml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
testcase: "*"
|
2
test/integration/targets/nxos_ntp/meta/main.yml
Normal file
2
test/integration/targets/nxos_ntp/meta/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
dependencies:
|
||||||
|
- prepare_nxos_tests
|
15
test/integration/targets/nxos_ntp/tasks/cli.yaml
Normal file
15
test/integration/targets/nxos_ntp/tasks/cli.yaml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
- name: collect all cli test cases
|
||||||
|
find:
|
||||||
|
paths: "{{ role_path }}/tests/cli"
|
||||||
|
patterns: "{{ testcase }}.yaml"
|
||||||
|
register: test_cases
|
||||||
|
|
||||||
|
- name: set test_items
|
||||||
|
set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
|
||||||
|
|
||||||
|
- name: run test case
|
||||||
|
include: "{{ test_case_to_run }}"
|
||||||
|
with_items: "{{ test_items }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: test_case_to_run
|
7
test/integration/targets/nxos_ntp/tasks/main.yaml
Normal file
7
test/integration/targets/nxos_ntp/tasks/main.yaml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
# Use block to ensure that both cli and nxapi tests
|
||||||
|
# will run even if there are failures or errors.
|
||||||
|
- block:
|
||||||
|
- { include: cli.yaml, tags: ['cli'] }
|
||||||
|
always:
|
||||||
|
- { include: nxapi.yaml, tags: ['nxapi'] }
|
28
test/integration/targets/nxos_ntp/tasks/nxapi.yaml
Normal file
28
test/integration/targets/nxos_ntp/tasks/nxapi.yaml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
- name: collect all nxapi test cases
|
||||||
|
find:
|
||||||
|
paths: "{{ role_path }}/tests/nxapi"
|
||||||
|
patterns: "{{ testcase }}.yaml"
|
||||||
|
register: test_cases
|
||||||
|
|
||||||
|
- name: set test_items
|
||||||
|
set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
|
||||||
|
|
||||||
|
- name: enable nxapi
|
||||||
|
nxos_config:
|
||||||
|
lines:
|
||||||
|
- feature nxapi
|
||||||
|
- nxapi http port 80
|
||||||
|
provider: "{{ cli }}"
|
||||||
|
|
||||||
|
- name: run test case
|
||||||
|
include: "{{ test_case_to_run }}"
|
||||||
|
with_items: "{{ test_items }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: test_case_to_run
|
||||||
|
|
||||||
|
- name: disable nxapi
|
||||||
|
nxos_config:
|
||||||
|
lines:
|
||||||
|
- no feature nxapi
|
||||||
|
provider: "{{ cli }}"
|
4
test/integration/targets/nxos_ntp/tests/cli/sanity.yaml
Normal file
4
test/integration/targets/nxos_ntp/tests/cli/sanity.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
- set_fact: connection="{{ cli }}"
|
||||||
|
|
||||||
|
- import_tasks: targets/nxos_ntp/tests/common/sanity.yaml
|
56
test/integration/targets/nxos_ntp/tests/common/sanity.yaml
Normal file
56
test/integration/targets/nxos_ntp/tests/common/sanity.yaml
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
---
|
||||||
|
- debug: msg="START TRANSPORT:{{ connection.transport }} nxos_ntp sanity test"
|
||||||
|
|
||||||
|
- name: Setup - Remove ntp if configured
|
||||||
|
nxos_ntp: &remove
|
||||||
|
server: 1.2.3.4
|
||||||
|
key_id: 32
|
||||||
|
prefer: disabled
|
||||||
|
vrf_name: management
|
||||||
|
source_addr: 5.5.5.5
|
||||||
|
state: absent
|
||||||
|
provider: "{{ connection }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- block:
|
||||||
|
|
||||||
|
- name: Configure ntp
|
||||||
|
nxos_ntp: &config
|
||||||
|
server: 1.2.3.4
|
||||||
|
key_id: 32
|
||||||
|
prefer: enabled
|
||||||
|
vrf_name: management
|
||||||
|
source_addr: 5.5.5.5
|
||||||
|
state: present
|
||||||
|
provider: "{{ connection }}"
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: &true
|
||||||
|
that:
|
||||||
|
- "result.changed == true"
|
||||||
|
|
||||||
|
- name: Idempotence Check
|
||||||
|
nxos_ntp: *config
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: &false
|
||||||
|
that:
|
||||||
|
- "result.changed == false"
|
||||||
|
|
||||||
|
- name: Remove ntp config
|
||||||
|
nxos_ntp: *remove
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: *true
|
||||||
|
|
||||||
|
- name: Remove Idempotence Check
|
||||||
|
nxos_ntp: *remove
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: *false
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Remove ntp config
|
||||||
|
nxos_ntp: *remove
|
||||||
|
|
||||||
|
- debug: msg="END TRANSPORT:{{ connection.transport }} nxos_ntp sanity test"
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
- set_fact: connection="{{ nxapi }}"
|
||||||
|
|
||||||
|
- import_tasks: targets/nxos_ntp/tests/common/sanity.yaml
|
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
testcase: "*"
|
2
test/integration/targets/nxos_ospf_vrf/meta/main.yml
Normal file
2
test/integration/targets/nxos_ospf_vrf/meta/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
dependencies:
|
||||||
|
- prepare_nxos_tests
|
15
test/integration/targets/nxos_ospf_vrf/tasks/cli.yaml
Normal file
15
test/integration/targets/nxos_ospf_vrf/tasks/cli.yaml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
- name: collect all cli test cases
|
||||||
|
find:
|
||||||
|
paths: "{{ role_path }}/tests/cli"
|
||||||
|
patterns: "{{ testcase }}.yaml"
|
||||||
|
register: test_cases
|
||||||
|
|
||||||
|
- name: set test_items
|
||||||
|
set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
|
||||||
|
|
||||||
|
- name: run test case
|
||||||
|
include: "{{ test_case_to_run }}"
|
||||||
|
with_items: "{{ test_items }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: test_case_to_run
|
7
test/integration/targets/nxos_ospf_vrf/tasks/main.yaml
Normal file
7
test/integration/targets/nxos_ospf_vrf/tasks/main.yaml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
# Use block to ensure that both cli and nxapi tests
|
||||||
|
# will run even if there are failures or errors.
|
||||||
|
- block:
|
||||||
|
- { include: cli.yaml, tags: ['cli'] }
|
||||||
|
always:
|
||||||
|
- { include: nxapi.yaml, tags: ['nxapi'] }
|
28
test/integration/targets/nxos_ospf_vrf/tasks/nxapi.yaml
Normal file
28
test/integration/targets/nxos_ospf_vrf/tasks/nxapi.yaml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
- name: collect all nxapi test cases
|
||||||
|
find:
|
||||||
|
paths: "{{ role_path }}/tests/nxapi"
|
||||||
|
patterns: "{{ testcase }}.yaml"
|
||||||
|
register: test_cases
|
||||||
|
|
||||||
|
- name: set test_items
|
||||||
|
set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
|
||||||
|
|
||||||
|
- name: enable nxapi
|
||||||
|
nxos_config:
|
||||||
|
lines:
|
||||||
|
- feature nxapi
|
||||||
|
- nxapi http port 80
|
||||||
|
provider: "{{ cli }}"
|
||||||
|
|
||||||
|
- name: run test case
|
||||||
|
include: "{{ test_case_to_run }}"
|
||||||
|
with_items: "{{ test_items }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: test_case_to_run
|
||||||
|
|
||||||
|
- name: disable nxapi
|
||||||
|
nxos_config:
|
||||||
|
lines:
|
||||||
|
- no feature nxapi
|
||||||
|
provider: "{{ cli }}"
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
- set_fact: connection="{{ cli }}"
|
||||||
|
|
||||||
|
- import_tasks: targets/nxos_ospf_vrf/tests/common/sanity.yaml
|
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
- debug: msg="START TRANSPORT:{{ connection.transport }} nxos_ospf_vrf sanity test"
|
||||||
|
|
||||||
|
- name: "Enable feature OSPF"
|
||||||
|
nxos_feature:
|
||||||
|
feature: ospf
|
||||||
|
state: enabled
|
||||||
|
provider: "{{ connection }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Configure ospf vrf
|
||||||
|
nxos_ospf_vrf: &config
|
||||||
|
ospf: 1
|
||||||
|
router_id: 1.1.1.1
|
||||||
|
timer_throttle_spf_start: 50
|
||||||
|
timer_throttle_spf_hold: 1000
|
||||||
|
timer_throttle_spf_max: 2000
|
||||||
|
timer_throttle_lsa_start: 60
|
||||||
|
timer_throttle_lsa_hold: 1100
|
||||||
|
timer_throttle_lsa_max: 3000
|
||||||
|
vrf: test
|
||||||
|
state: present
|
||||||
|
provider: "{{ connection }}"
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: &true
|
||||||
|
that:
|
||||||
|
- "result.changed == true"
|
||||||
|
|
||||||
|
- name: "Check Idempotence"
|
||||||
|
nxos_ospf_vrf: *config
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: &false
|
||||||
|
that:
|
||||||
|
- "result.changed == false"
|
||||||
|
|
||||||
|
rescue:
|
||||||
|
- name: "Disable feature OSPF"
|
||||||
|
nxos_feature:
|
||||||
|
feature: ospf
|
||||||
|
state: disabled
|
||||||
|
provider: "{{ connection }}"
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Unconfigure ospf vrf
|
||||||
|
nxos_ospf_vrf: &unconfig
|
||||||
|
ospf: 1
|
||||||
|
vrf: test
|
||||||
|
state: absent
|
||||||
|
provider: "{{ connection }}"
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: *true
|
||||||
|
|
||||||
|
- name: "Check Idempotence"
|
||||||
|
nxos_ospf_vrf: *unconfig
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert: *false
|
||||||
|
|
||||||
|
- debug: msg="END TRANSPORT:{{ connection.transport }} nxos_ospf_vrf sanity test"
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
- set_fact: connection="{{ nxapi }}"
|
||||||
|
|
||||||
|
- import_tasks: targets/nxos_ospf_vrf/tests/common/sanity.yaml
|
|
@ -59,7 +59,6 @@ class TestNxosOspfVrfModule(TestNxosModule):
|
||||||
sorted(['router ospf 1',
|
sorted(['router ospf 1',
|
||||||
'vrf test',
|
'vrf test',
|
||||||
'timers throttle lsa 60 1100 3000',
|
'timers throttle lsa 60 1100 3000',
|
||||||
'ospf 1',
|
|
||||||
'timers throttle spf 50 1000 2000',
|
'timers throttle spf 50 1000 2000',
|
||||||
'vrf test']))
|
'vrf test']))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue