|
|
|
---
|
|
|
|
- debug: msg="START connection={{ ansible_connection }} nxos_telemetry replaced sanity test"
|
|
|
|
|
|
|
|
- set_fact: source_interface="Loopback55"
|
|
|
|
when: imagetag and (major_version is version_compare('9.1', 'ge'))
|
|
|
|
|
|
|
|
- set_fact: command_list_length=27
|
|
|
|
- set_fact: command_list_length=28
|
|
|
|
when: imagetag and (major_version is version_compare('9.1', 'ge'))
|
|
|
|
|
|
|
|
- set_fact: dict_facts_length=6
|
|
|
|
- set_fact: dict_facts_length=7
|
|
|
|
when: imagetag and (major_version is version_compare('9.1', 'ge'))
|
|
|
|
|
|
|
|
- name: Setup - disable feature telemetry
|
|
|
|
nxos_feature: &setup_teardown
|
|
|
|
feature: telemetry
|
|
|
|
state: disabled
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: Setup - enable feature telemetry
|
|
|
|
nxos_feature:
|
|
|
|
feature: telemetry
|
|
|
|
state: enabled
|
|
|
|
|
|
|
|
- name: Setup - add initial telemetry config
|
|
|
|
cli_config:
|
|
|
|
config: |
|
|
|
|
telemetry
|
|
|
|
certificate test_cert host.example.com
|
|
|
|
destination-profile
|
|
|
|
use-vrf blue
|
|
|
|
use-compression gzip
|
|
|
|
destination-group 2
|
|
|
|
ip address 192.168.0.1 port 50001 protocol gRPC encoding GPB
|
|
|
|
ip address 192.168.0.2 port 60001 protocol gRPC encoding GPB
|
|
|
|
destination-group 10
|
|
|
|
ip address 192.168.0.1 port 50001 protocol gRPC encoding GPB
|
|
|
|
ip address 192.168.0.2 port 60001 protocol gRPC encoding GPB
|
|
|
|
ip address 192.168.1.1 port 55 protocol HTTP encoding JSON
|
|
|
|
ip address 192.168.1.2 port 100 protocol gRPC encoding GPB
|
|
|
|
destination-group 99
|
|
|
|
sensor-group 2
|
|
|
|
data-source NX-API
|
|
|
|
path "show bgp l2vpn evpn summary" depth unbounded query-condition foo filter-condition foo
|
|
|
|
sensor-group 8
|
|
|
|
data-source NX-API
|
|
|
|
path "show ip bgp neighbors" depth 0 query-condition foo filter-condition foo
|
|
|
|
sensor-group 55
|
|
|
|
data-source DME
|
|
|
|
path sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11] depth 0 query-condition foo filter-condition foo
|
|
|
|
path sys/ospf depth 0 query-condition foo filter-condition or(eq(ethpmPhysIf.operSt,"down"),eq(ethpmPhysIf.operSt,"up"))
|
|
|
|
sensor-group 77
|
|
|
|
subscription 44
|
|
|
|
dst-grp 2
|
|
|
|
dst-grp 10
|
|
|
|
snsr-grp 2 sample-interval 2000
|
|
|
|
snsr-grp 8 sample-interval 2000
|
|
|
|
subscription 55
|
|
|
|
dst-grp 10
|
|
|
|
snsr-grp 55 sample-interval 2000
|
|
|
|
subscription 99
|
|
|
|
dst-grp 2
|
|
|
|
dst-grp 99
|
|
|
|
snsr-grp 8 sample-interval 90000
|
|
|
|
snsr-grp 77 sample-interval 2000
|
|
|
|
- name: Setup - add initial source-interface telemetry config
|
|
|
|
cli_config:
|
|
|
|
config: |
|
|
|
|
telemetry
|
|
|
|
destination-profile
|
|
|
|
source-interface loopback55
|
|
|
|
when: imagetag and (major_version is version_compare('9.1', 'ge'))
|
|
|
|
|
|
|
|
- block:
|
|
|
|
- name: Gather Telemetry Facts Before Changes
|
|
|
|
nxos_facts: &facts
|
|
|
|
gather_subset:
|
|
|
|
- '!all'
|
|
|
|
- '!min'
|
|
|
|
gather_network_resources:
|
|
|
|
- telemetry
|
|
|
|
|
|
|
|
- name: Telemetry - replaced
|
|
|
|
nxos_telemetry: &replace
|
|
|
|
state: 'replaced'
|
|
|
|
config:
|
|
|
|
certificate:
|
|
|
|
key: /file_dir/new_server.key
|
|
|
|
hostname: newhost.example.com
|
|
|
|
vrf: management
|
|
|
|
compression: gzip
|
|
|
|
destination_groups:
|
|
|
|
- id: 2
|
|
|
|
destination:
|
|
|
|
ip: 192.168.0.1
|
|
|
|
port: 65001
|
|
|
|
protocol: grpc
|
|
|
|
encoding: gpb
|
|
|
|
- id: 2
|
|
|
|
destination:
|
|
|
|
ip: 192.168.0.3
|
|
|
|
port: 55001
|
|
|
|
protocol: grpc
|
|
|
|
encoding: gpb
|
|
|
|
sensor_groups:
|
|
|
|
- id: 100
|
|
|
|
data_source: NX-API
|
|
|
|
path:
|
|
|
|
name: '"show bgp l2vpn evpn summary"'
|
|
|
|
depth: unbounded
|
|
|
|
query_condition: foo
|
|
|
|
filter_condition: foo
|
|
|
|
subscriptions:
|
|
|
|
- id: 99
|
|
|
|
destination_group: 2
|
|
|
|
sensor_group:
|
|
|
|
id: 100
|
|
|
|
sample_interval: 2000
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "result.before|length == {{ dict_facts_length }}"
|
|
|
|
- "result.before.certificate|length == 2"
|
|
|
|
- "result.before.destination_groups|length == 7"
|
|
|
|
- "result.before.sensor_groups|length == 8"
|
|
|
|
- "result.before.subscriptions|length == 10"
|
|
|
|
- "'telemetry' in result.commands"
|
|
|
|
- "'no subscription 55' in result.commands"
|
|
|
|
- "'subscription 99' in result.commands"
|
|
|
|
- "'no dst-grp 99' in result.commands"
|
|
|
|
- "'no snsr-grp 8 sample-interval 90000' in result.commands"
|
|
|
|
- "'no snsr-grp 77 sample-interval 2000' in result.commands"
|
|
|
|
- "'no subscription 44' in result.commands"
|
|
|
|
- "'no sensor-group 55' in result.commands"
|
|
|
|
- "'no sensor-group 8' in result.commands"
|
|
|
|
- "'no sensor-group 2' in result.commands"
|
|
|
|
- "'no sensor-group 77' in result.commands"
|
|
|
|
- "'no destination-group 99' in result.commands"
|
|
|
|
- "'no destination-group 10' in result.commands"
|
|
|
|
- "'destination-group 2' in result.commands"
|
|
|
|
- "'no ip address 192.168.0.1 port 50001 protocol grpc encoding gpb' in result.commands"
|
|
|
|
- "'no ip address 192.168.0.2 port 60001 protocol grpc encoding gpb' in result.commands"
|
|
|
|
- "'destination-group 2' in result.commands"
|
|
|
|
- "'ip address 192.168.0.1 port 65001 protocol grpc encoding gpb' in result.commands"
|
|
|
|
- "'ip address 192.168.0.3 port 55001 protocol grpc encoding gpb' in result.commands"
|
|
|
|
- "'sensor-group 100' in result.commands"
|
|
|
|
- result.commands is search("path .*show bgp l2vpn evpn summary.* depth unbounded query-condition foo filter-condition foo")
|
|
|
|
- "'data-source NX-API' in result.commands"
|
|
|
|
- "'subscription 99' in result.commands"
|
|
|
|
- "'snsr-grp 100 sample-interval 2000' in result.commands"
|
|
|
|
- "'certificate /file_dir/new_server.key newhost.example.com' in result.commands"
|
|
|
|
- "'destination-profile' in result.commands"
|
|
|
|
- "'use-vrf management' in result.commands"
|
|
|
|
- "result.commands|length == {{ command_list_length }}"
|
|
|
|
|
|
|
|
# Source interface may or may not be included based on the image version.
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "'no source-interface loopback55' in result.commands"
|
|
|
|
when: imagetag and (major_version is version_compare('9.1', 'ge'))
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "(ansible_facts.network_resources.telemetry|dict2items)|symmetric_difference(result.before|dict2items)|length == 0"
|
|
|
|
|
|
|
|
- name: Gather Telemetry Facts After Changes
|
|
|
|
nxos_facts: *facts
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "(ansible_facts.network_resources.telemetry|dict2items)|symmetric_difference(result.after|dict2items)|length == 0"
|
|
|
|
|
|
|
|
- name: Telemetry - replaced - idempotence
|
|
|
|
nxos_telemetry: *replace
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == false"
|
|
|
|
- "result.commands|length == 0"
|
|
|
|
|
|
|
|
always:
|
|
|
|
- name: Teardown
|
|
|
|
nxos_feature: *setup_teardown
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- debug: msg="END connection={{ ansible_connection }} nxos_telemetry replaced sanity test"
|