Skip to content
Snippets Groups Projects
Commit 70eb75ec authored by Aleksandr Kurbatov's avatar Aleksandr Kurbatov
Browse files

delete extra folder

accidentaly added
parent 5cd75ddf
No related branches found
No related tags found
1 merge request!116Cleanup
Pipeline #85882 passed
---
- name: Load variables from pre and post check results
ansible.builtin.include_vars:
dir: vars
files_matching: "{{ check_id }}.yml"
- name: TEST Print PRE interface statistics
ansible.builtin.debug:
var: pre_check
when: verb == 'pre_check'
- name: TEST Print POST interface statistics
ansible.builtin.debug:
var: post_check
when: verb == 'post_check'
- name: Get the interface status
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.interface_status == 'up'"
fail_msg: "FAIL: physical interface is DOWN"
success_msg: "PASS: physical interface is UP"
failed_when: false
- name: Check the interface input errors
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.input_error_count <= {{ input_error_count_threshold }}"
fail_msg: "FAIL: input errors detected"
success_msg: "PASS: no input errors detected"
failed_when: false
- name: Check the interface output errors
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.output_error_count <= {{ output_error_count_threshold }}"
fail_msg: "FAIL: output errors detected"
success_msg: "PASS: no output errors detected"
failed_when: false
- name: Check the interface FEC statistics
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_ccw_count is defined"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_ccw_count.0.data <= {{ fec_ccw_count_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_ccw_error_rate.0.data == {{ fec_ccw_error_rate_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_nccw_count.0.data == {{ fec_nccw_count_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_fec_statistics.fec_nccw_error_rate.0.data == {{ fec_nccw_error_rate_threshold }}"
fail_msg: "FAIL: FEC statistics errors detected or FEC statistics not found - please check results in relevant yaml file"
success_msg: "PASS: no FEC statistics errors detected"
failed_when: false
- name: Check the interface PCS statistics
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.ethernet_pcs_statistics_bit_error_secs | int <= {{ pcs_bit_error_seconds_threshold }}"
- "{{ verb }}.{{ check_id }}.ethernet_pcs_statistics_errored_blocks_secs | int <= {{ pcs_bit_error_blocks_seconds_threshold }}"
fail_msg: "FAIL: PCS statistics errors detected"
success_msg: "PASS: PCS statistics errors are below threshold"
failed_when: false
- name: Check the optical levels output Tx power low threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.output_power_dbm > {{ min_tx_power_dbm }}"
fail_msg: "FAIL: Low Tx output power detected (dBm)"
success_msg: "PASS: Tx Output power above minimum threshold (dBm) "
failed_when: false
- name: Check the optical levels output Tx power high threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.output_power_dbm < {{ max_tx_power_dbm }}"
fail_msg: "FAIL: High Tx output power detected (dBm)"
success_msg: "PASS: Tx Output power below maximum threshold (dBm) "
failed_when: false
- name: Check the optical levels input Rx power low threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.rx_signal_avg_power_dbm > {{ min_rx_power_dbm }}"
fail_msg: "FAIL: Low Rx signal power detected (dBm)"
success_msg: "PASS: Rx signal power above minimum threshold (dBm) "
failed_when: false
- name: Check the optical levels input Rx power high threshold (dBm)
ansible.builtin.assert:
that:
- "{{ verb }}.{{ check_id }}.rx_signal_avg_power_dbm < {{ max_rx_power_dbm }}"
fail_msg: "FAIL: High Rx signal power detected (dBm)"
success_msg: "PASS: Rx signal power below maximum threshold (dBm) "
failed_when: false
---
- name: Get output file information
ansible.builtin.stat:
path: roles/check_demarcation_point/vars/{{ check_id }}.yml
register: file_status
- name: Load variables from pre and post check results
ansible.builtin.include_vars:
dir: vars
files_matching: "{{ check_id }}.yml"
- name: Check if PRE and POST measurements exist prior to compare command
ansible.builtin.assert:
that:
- "pre_check.{{ check_id }} is defined"
- "post_check.{{ check_id }} is defined"
fail_msg: "FAIL: PRE and POST measurements have not been performed before COMPARE"
success_msg: "PASS: PRE and POST values exist "
- name: Compare PRE and POST interface status
ansible.builtin.assert:
that:
- "pre_check.{{ check_id }}.interface_status == post_check.{{ check_id }}.interface_status"
fail_msg: "FAIL: Interface status on PRE and post POST is not equal"
success_msg: "PASS: Interface status PRE and POST check is equal "
- name: Compare PRE and POST interface input errors
ansible.builtin.assert:
that:
- "{{ pre_check[check_id].input_error_count | int }} <= {{ post_check[check_id].input_error_count | int }}"
fail_msg: "WARNING: Interface input errors have been increased"
success_msg: "PASS: Interface input errors have not been increased "
failed_when: false
- name: Compare PRE and POST interface output errors
ansible.builtin.assert:
that:
- "{{ pre_check[check_id].output_error_count | int }} <= {{ post_check[check_id].output_error_count | int }}"
fail_msg: "WARNING: Interface output errors have been increased"
success_msg: "PASS: Interface output errors have not been increased "
failed_when: false
- name: Set facts
ansible.builtin.set_fact:
tx_power_dbm_post: "{{ post_check[check_id].output_power_dbm }}"
tx_power_dbm_pre: "{{ pre_check[check_id].output_power_dbm }}"
rx_power_dbm_post: "{{ post_check[check_id].rx_signal_avg_power_dbm }}"
rx_power_dbm_pre: "{{ pre_check[check_id].rx_signal_avg_power_dbm }}"
input_error_count_post: "{{ post_check[check_id].input_error_count }}"
input_error_count_pre: "{{ pre_check[check_id].input_error_count }}"
output_error_count_post: "{{ post_check[check_id].output_error_count }}"
output_error_count_pre: "{{ pre_check[check_id].output_error_count }}"
when:
- pre_check[check_id] is defined
- post_check[check_id] is defined
- name: Set facts calculate diffs
ansible.builtin.set_fact:
tx_power_dbm_diff: "{{ '{:0.2f}'.format(tx_power_dbm_post | float - tx_power_dbm_pre | float) }}"
rx_power_dbm_diff: "{{ '{:0.2f}'.format(rx_power_dbm_post | float - rx_power_dbm_pre | float) }}"
input_error_count_diff: "{{ input_error_count_post | int - input_error_count_pre | int }}"
output_error_count_diff: "{{ output_error_count_post | int - output_error_count_pre | int }}"
- name: Add PRE and POST comparison values to yaml
ansible.builtin.blockinfile:
path: "roles/check_demarcation_point/vars/{{ check_id }}.yml"
marker: "# {mark} -------------- DIFFS (POST - PRE) ----------------------------- #"
block: |
{{ verb + ':' }}
{{ check_id + ':' }}
{{ 'tx_power_diff:' }} {{ tx_power_dbm_diff }}
{{ 'rx_power_diff:' }} {{ rx_power_dbm_diff }}
{{ 'input_error_count_diff:' }} {{ input_error_count_diff }}
{{ 'output_error_count_diff:' }} {{ output_error_count_diff }}
when:
- pre_check[check_id] is defined
- post_check[check_id] is defined
- file_status.stat.exists
- name: Check if Rx power in POST check is way lower than PRE check (above permitted threshold)
ansible.builtin.assert:
that:
- "{{ rx_power_dbm_diff | float }} > {{ rx_power_allowed_diff | float }} "
fail_msg: "WARNING: Rx Power (dBm) diff between pre/post check is bigger than allowed threshold."
success_msg: "PASS: Rx Power (dBm) diff between pre/post check is normal."
failed_when: false
- name: Check if Tx power in POST check is way lower than PRE check (above permitted threshold)
ansible.builtin.assert:
that:
- "{{ tx_power_dbm_diff | float }} > {{ tx_power_allowed_diff | float }} "
fail_msg: "WARNING: Rx Power (dBm) diff between pre/post check is bigger than allowed threshold."
success_msg: "PASS: Rx Power (dBm) diff between pre/post check is normal."
failed_when: false
- name: Check if input_errors increase diff between PRE and POST checks is above permitted threshold
ansible.builtin.assert:
that:
- "{{ input_error_count_diff | int }} < {{ input_error_count_threshold | int }} "
fail_msg: "WARNING: Input errors count in POST check have been increased above threshold."
success_msg: "PASS: Input errors count diffs between PRE and POST check is normal."
failed_when: false
- name: Check if output_errors increase diff between PRE and POST checks is above permitted threshold
ansible.builtin.assert:
that:
- "{{ output_error_count_diff | int }} < {{ output_error_count_threshold | int }} "
fail_msg: "WARNING: Output errors count in POST check have been increased above threshold."
success_msg: "PASS: Output errors count diffs between PRE and POST check is normal."
failed_when: false
\ No newline at end of file
---
- name: Get output file information
ansible.builtin.stat:
path: roles/check_demarcation_point/vars/{{ check_id }}.yml
register: file_status
- name: Creating a yaml file with pre_check results content
ansible.builtin.copy:
content: |
{{ '---' }}
{{ verb + ':' }}
{{ check_id + ':' }}
{{ 'interface:' }} {{ interface }}
{{ 'device:' }} {{ inventory_hostname }}
{{ 'interface_status:' }} {{ interface_status }}
{{ 'input_error_count:' }} {{ input_error_count }}
{{ 'output_error_count:' }} {{ output_error_count }}
{{ 'ethernet_pcs_statistics_bit_error_secs:' }} {{ ethernet_pcs_statistics_bit_error_secs }}
{{ 'ethernet_pcs_statistics_errored_blocks_secs:' }} {{ ethernet_pcs_statistics_errored_blocks_secs }}
{{ 'ethernet_fec_statistics:' }} {{ ethernet_fec_statistics }}
{{ 'output_power_dbm:' }} {{ output_power_dbm }}
{{ 'rx_signal_avg_power_dbm:' }} {{ rx_signal_avg_power_dbm }}
dest: "roles/check_demarcation_point/vars/{{ check_id }}.yml"
mode: '0660'
when:
- not file_status.stat.exists
- name: Add post_check parameters to yaml
ansible.builtin.blockinfile:
path: "roles/check_demarcation_point/vars/{{ check_id }}.yml"
marker: "# {mark} -------------- POST CHECKS ----------------------------- #"
block: |
{{ verb + ':' }}
{{ check_id + ':' }}
{{ 'interface:' }} {{ interface }}
{{ 'device:' }} {{ inventory_hostname }}
{{ 'interface_status:' }} {{ interface_status }}
{{ 'input_error_count:' }} {{ input_error_count }}
{{ 'output_error_count:' }} {{ output_error_count }}
{{ 'ethernet_pcs_statistics_bit_error_secs:' }} {{ ethernet_pcs_statistics_bit_error_secs }}
{{ 'ethernet_pcs_statistics_errored_blocks_secs:' }} {{ ethernet_pcs_statistics_errored_blocks_secs }}
{{ 'ethernet_fec_statistics:' }} {{ ethernet_fec_statistics }}
{{ 'output_power_dbm:' }} {{ output_power_dbm }}
{{ 'rx_signal_avg_power_dbm:' }} {{ rx_signal_avg_power_dbm }}
when:
- verb == 'post_check'
- file_status.stat.exists
---
###############################################################################################################
# The playbook does the following:
#
# - Runs the command show 'interface statistics {{ interface }}' and gets the json output
# - From json output it retrieves the apporpriate metrics (status,input/output errors, FEC errors, PCS errors)
# - Saves the metrics in relevant variable names.
#
###############################################################################################################
- name: Print input from user (DEBUG)
ansible.builtin.debug:
msg:
- "type of check is: {{ verb }}"
- "interface input from user is: {{ interface }}"
- "Vendor input from user is: {{ vendor }}"
- "check_id input from user is: {{ check_id }}"
- name: Get Junos attributes for interface {{ interface }}
junipernetworks.junos.junos_command:
commands: "show interface statistics {{ interface }}"
display: json
register: interface_status
when: vendor == 'juniper'
- name: Manipulate the interface attributes
ansible.builtin.set_fact:
interface_status: "{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface'].0['oper-status'].0['data']| default(False) }}"
input_error_count: "{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface'].0['input-error-count'].0['data']| default(False) }}"
output_error_count: >-
{{
interface_status.stdout_lines.0['interface-information']
.0['physical-interface'].0['output-error-count'].0['data'] | default(False)
}}
ethernet_pcs_statistics_bit_error_secs: >-
"{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface']
.0['ethernet-pcs-statistics'].0['bit-error-seconds'].0['data']| default(False)
}}"
ethernet_pcs_statistics_errored_blocks_secs: >-
"{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface']
.0['ethernet-pcs-statistics'].0['errored-blocks-seconds'].0['data']| default(False) }}"
ethernet_fec_statistics: "{{ interface_status.stdout_lines.0['interface-information'].0['physical-interface'].0['ethernet-fec-statistics'].0
| default(False) }}"
when: vendor == 'juniper'
- name: Print interface statistics
ansible.builtin.debug:
var: print_variables
vars:
print_variables:
interface_status: "{{ interface_status }}"
input_error_count: "{{ input_error_count }}"
output_error_count: "{{ output_error_count }}"
ethernet_pcs_statistics_bit_error_secs: "{{ ethernet_pcs_statistics_bit_error_secs }}"
ethernet_pcs_statistics_errored_blocks_secs: "{{ ethernet_pcs_statistics_errored_blocks_secs }}"
ethernet_fec_statistics: "{{ ethernet_fec_statistics }}"
---
###############################################################################################################
# The playbook does the following:
#
#
# - Runs the command 'show interfaces diagnostics optics {{ interface }} | no-more' and gets the json output
# - From json output it retrieves the apporpriate metrics for optical levels
# - Saves the metrics in relevant variable names
###############################################################################################################
- name: Get Junos attributes for optical levels of interface {{ interface }}
junipernetworks.junos.junos_command:
commands: "show interfaces diagnostics optics {{ interface }} | no-more"
display: json
register: optical_status
when: vendor == 'juniper'
- name: Manipulate the optical results attributes
ansible.builtin.set_fact:
output_power_dbm: >-
{{
optical_status.stdout_lines.0['interface-information']
.0['physical-interface'].0['optics-diagnostics']
.0['laser-output-power-dbm'].0['data'] | default(False)
}}
rx_signal_avg_power_dbm: >-
{{
optical_status.stdout_lines.0['interface-information']
.0['physical-interface'].0['optics-diagnostics']
.0['rx-signal-avg-optical-power-dbm'].0['data'] | default(False)
}}
when: vendor == 'juniper'
- name: Print optical levels statistics
ansible.builtin.debug:
var: print_variables
vars:
print_variables:
output_power_dbm: "{{ output_power_dbm }}"
rx_signal_avg_power_dbm: "{{ rx_signal_avg_power_dbm }}"
---
- name: Print the usage
ansible.builtin.debug:
msg:
- "Required arguments: 'verb', 'interface', 'vendor' and 'check_id' are required."
- "Allowed verbs: 'pre_check', 'post_check', 'compare'. Use: -e 'verb=$verb'"
- "Allowed interface: user_input Use: -e 'interface=$interface'"
- "Allowed vendors: 'juniper', 'cisco'. Use: -e 'vendor=$vendor'"
- "Allowed check_id: user_input Use: -e 'check_id=$check_id'"
when:
- (verb is not defined) or (interface is not defined) or (vendor is not defined) or (check_id is not defined)
- name: End playbook
ansible.builtin.meta: end_play
when:
- (verb is not defined) or (interface is not defined) or (vendor is not defined) or (check_id is not defined)
- name: Include task get_ifstatus
ansible.builtin.include_tasks: get_ifstatus.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task get_optical_levels
ansible.builtin.include_tasks: get_optical_levels.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task create_file
ansible.builtin.include_tasks: create_file.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task checks
ansible.builtin.include_tasks: checks.yaml
when:
- verb in ['pre_check','post_check']
- name: Include task compare
ansible.builtin.include_tasks: compare.yaml
when:
- verb == 'compare'
---
# vars file for demarcation_point checks
dryrun: "True"
verbs:
- "pre_check"
- "post_check"
- "compare"
vendors:
- "juniper"
- "cisco"
# config_objects:
# - "trunk_interface"
# - "isis"
# - "isis_interface"
# - "ldp_interface"
# - "lldp_interface"
# - "trunk_deprovision"
---
min_tx_power_dbm: -8
max_tx_power_dbm: 0
min_rx_power_dbm: -10
max_rx_power_dbm: -0.5
rx_power_allowed_diff: -2
tx_power_allowed_diff: -2
input_error_count_threshold: 3
output_error_count_threshold: 3
fec_ccw_count_threshold: 0
fec_ccw_error_rate_threshold: 0
fec_nccw_count_threshold: 0
fec_nccw_error_rate_threshold: 0
pcs_bit_error_seconds_threshold: 20
pcs_bit_error_blocks_seconds_threshold: 20
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment