mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
7.9 KiB
YAML
185 lines
7.9 KiB
YAML
---
|
|
- debug: msg="START connection={{ ansible_connection }} nxos_telemetry merged sanity test"
|
|
|
|
- set_fact: source_interface="Loopback55"
|
|
when: imagetag and (major_version is version_compare('9.1', 'ge'))
|
|
|
|
- set_fact: command_list_length=30
|
|
- set_fact: command_list_length=31
|
|
when: imagetag and (major_version is version_compare('9.1', 'ge'))
|
|
|
|
- name: Setup
|
|
nxos_feature: &setup_teardown
|
|
feature: telemetry
|
|
state: disabled
|
|
ignore_errors: yes
|
|
|
|
- block:
|
|
- name: Gather Telemetry Facts Before Changes
|
|
nxos_facts: &facts
|
|
gather_subset:
|
|
- '!all'
|
|
- '!min'
|
|
gather_network_resources:
|
|
- telemetry
|
|
|
|
- name: Telemetry - merged
|
|
nxos_telemetry: &merged
|
|
state: 'merged'
|
|
config:
|
|
certificate:
|
|
key: /bootflash/server.key
|
|
hostname: localhost
|
|
compression: gzip
|
|
source_interface: "{{source_interface|default(omit)}}"
|
|
vrf: management
|
|
destination_groups:
|
|
- id: 2
|
|
destination:
|
|
ip: 192.168.0.1
|
|
port: 50001
|
|
protocol: grpc
|
|
encoding: gpb
|
|
- { id: 2, destination: {ip: 192.168.0.2, port: 60001, protocol: gRPC, encoding: GPB}}
|
|
- { id: 10, destination: {ip: 192.168.0.1, port: 50001, protocol: Grpc, encoding: gPB}}
|
|
- { id: 10, destination: {ip: 192.168.0.2, port: 60001, protocol: gRPC, encoding: gpb}}
|
|
sensor_groups:
|
|
- { id: 8, data_source: NX-API, path: {name: sys/bgp, depth: 0, query_condition: foo, filter_condition: foo}}
|
|
- { id: 2, data_source: NX-API, path: {name: sys/bgp/inst, depth: unbounded, query_condition: foo, filter_condition: foo}}
|
|
- { id: 55, data_source: DME, path: {name: 'sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11]', depth: 0, query_condition: foo, filter_condition: foo}}
|
|
- { id: 55, data_source: DME, path: {name: sys/ospf, depth: 0, query_condition: foo, filter_condition: 'or(eq(ethpmPhysIf.operSt,"down"),eq(ethpmPhysIf.operSt,"up"))'}}
|
|
subscriptions:
|
|
- { id: 44, destination_group: 10, sensor_group: {id: 8, sample_interval: 2000}}
|
|
- { id: 44, destination_group: 2, sensor_group: {id: 2, sample_interval: 2000}}
|
|
- { id: 55, destination_group: 10, sensor_group: {id: 55, sample_interval: 2000}}
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- "result.changed == true"
|
|
- "result.before|length == 0"
|
|
- "'feature telemetry' in result.commands"
|
|
- "'telemetry' in result.commands"
|
|
- "'certificate /bootflash/server.key localhost' in result.commands"
|
|
- "'destination-profile' in result.commands"
|
|
- "'use-compression gzip' in result.commands"
|
|
- "'use-vrf management' in result.commands"
|
|
- "'destination-group 2' in result.commands"
|
|
- "'ip address 192.168.0.1 port 50001 protocol grpc encoding gpb' in result.commands"
|
|
- "'ip address 192.168.0.2 port 60001 protocol grpc encoding gpb' in result.commands"
|
|
- "'destination-group 10' in result.commands"
|
|
- "'ip address 192.168.0.1 port 50001 protocol grpc encoding gpb' in result.commands"
|
|
- "'ip address 192.168.0.2 port 60001 protocol grpc encoding gpb' in result.commands"
|
|
- "'sensor-group 8' in result.commands"
|
|
- "'data-source NX-API' in result.commands"
|
|
- "'path sys/bgp depth 0 query-condition foo filter-condition foo' in result.commands"
|
|
- "'sensor-group 2' in result.commands"
|
|
- "'data-source NX-API' in result.commands"
|
|
- "'path sys/bgp/inst depth unbounded query-condition foo filter-condition foo' in result.commands"
|
|
- "'sensor-group 55' in result.commands"
|
|
- "'data-source DME' in result.commands"
|
|
- "'path sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11] depth 0 query-condition foo filter-condition foo' in result.commands"
|
|
- "'path sys/ospf depth 0 query-condition foo filter-condition or(eq(ethpmPhysIf.operSt,\"down\"),eq(ethpmPhysIf.operSt,\"up\"))' in result.commands"
|
|
- "'subscription 44' in result.commands"
|
|
- "'dst-grp 10' in result.commands"
|
|
- "'dst-grp 2' in result.commands"
|
|
- "'snsr-grp 8 sample-interval 2000' in result.commands"
|
|
- "'snsr-grp 2 sample-interval 2000' in result.commands"
|
|
- "'subscription 55' in result.commands"
|
|
- "'dst-grp 10' in result.commands"
|
|
- "'snsr-grp 55 sample-interval 2000' in result.commands"
|
|
- "result.commands|length == {{ command_list_length }}"
|
|
|
|
# Source interface may or may not be included based on the image version.
|
|
- assert:
|
|
that:
|
|
- "'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 - merged - idempotence
|
|
nxos_telemetry: *merged
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- "result.changed == false"
|
|
- "result.commands|length == 0"
|
|
|
|
- name: Telemetry - change values
|
|
nxos_telemetry: &merged_change
|
|
state: 'merged'
|
|
config:
|
|
certificate:
|
|
key: /bootflash/local_server.key
|
|
hostname: localhost
|
|
compression: gzip
|
|
source_interface: "{{source_interface|default(omit)}}"
|
|
vrf: management
|
|
destination_groups:
|
|
- id: 2
|
|
destination:
|
|
ip: 192.168.0.1
|
|
port: 50001
|
|
protocol: grpc
|
|
encoding: gpb
|
|
- { id: 2, destination: {ip: 192.168.0.2, port: 60001, protocol: gRPC, encoding: GPB}}
|
|
- { id: 10, destination: {ip: 192.168.0.1, port: 50001, protocol: Grpc, encoding: gPB}}
|
|
- { id: 10, destination: {ip: 192.168.0.2, port: 60001, protocol: gRPC, encoding: gpb}}
|
|
sensor_groups:
|
|
- { id: 8, data_source: NX-API, path: {name: sys/bgp, depth: 0, query_condition: foo, filter_condition: foo}}
|
|
- { id: 2, data_source: NX-API, path: {name: sys/bgp/inst, depth: unbounded, query_condition: foo, filter_condition: foo}}
|
|
- { id: 55, data_source: DME, path: {name: 'sys/bgp/inst/dom-default/peer-[10.10.10.11]/ent-[10.10.10.11]', depth: 0, query_condition: foo, filter_condition: foo}}
|
|
- { id: 55, data_source: DME, path: {name: sys/ospf, depth: 0, query_condition: foo, filter_condition: 'or(eq(ethpmPhysIf.operSt,"down"),eq(ethpmPhysIf.operSt,"up"))'}}
|
|
subscriptions:
|
|
- { id: 44, destination_group: 10, sensor_group: {id: 8, sample_interval: 1000}}
|
|
- { id: 44, destination_group: 2, sensor_group: {id: 2, sample_interval: 2000}}
|
|
- { id: 55, destination_group: 10, sensor_group: {id: 55, sample_interval: 2000}}
|
|
register: result
|
|
|
|
# The step above should result in only the following changes:
|
|
# "commands": [
|
|
# "telemetry",
|
|
# "certificate /bootflash/local_server.key localhost",
|
|
# "subscription 44",
|
|
# "snsr-grp 8 sample-interval 1000"
|
|
# ],
|
|
|
|
- set_fact:
|
|
test_list:
|
|
- "telemetry"
|
|
- "certificate /bootflash/local_server.key localhost"
|
|
- "subscription 44"
|
|
- "snsr-grp 8 sample-interval 1000"
|
|
|
|
- assert:
|
|
that:
|
|
- "result.changed == true"
|
|
- "test_list|symmetric_difference(result.commands)|length == 0"
|
|
|
|
- name: Telemetry - change values - idempotent
|
|
nxos_telemetry: *merged_change
|
|
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 merged sanity test"
|