diff --git a/models/enterprise_sonic/copp/deleted_example_01.txt b/models/enterprise_sonic/copp/deleted_example_01.txt new file mode 100644 index 00000000..22122156 --- /dev/null +++ b/models/enterprise_sonic/copp/deleted_example_01.txt @@ -0,0 +1,38 @@ +# Using Deleted +# +# Before State: +# ------------- +# +# sonic# show copp actions +# CoPP action group copp-1 +# trap-action drop +# trap-priority 1 +# trap-queue 1 +# police cir 45 cbs 45 +# CoPP action group copp-2 +# trap-action forward +# trap-priority 2 +# trap-queue 2 +# police cir 90 cbs 90 +# Class-map trap-1 match-type copp + + - name: Delete CoPP configuration + dellemc.enterprise_sonic.sonic_copp: + config: + copp_groups: + - copp_name: 'copp-1' + trap_action: 'DROP' + cir: '45' + cbs: '45' + - copp_name: 'copp-2' + copp_traps: + - name: 'trap-1' + state: deleted + +# After State: +# ------------ +# +# sonic# show copp actions +# CoPP action group copp-1 +# trap-action drop +# police cir 45 cbs 45 diff --git a/models/enterprise_sonic/copp/merged_example_01.txt b/models/enterprise_sonic/copp/merged_example_01.txt new file mode 100644 index 00000000..1af650ce --- /dev/null +++ b/models/enterprise_sonic/copp/merged_example_01.txt @@ -0,0 +1,51 @@ +# Using Merged +# +# Before State: +# ------------- +# +# sonic# show copp actions +# (No "copp actions" configuration present) +# sonic# show copp classifiers +# (No "copp classifiers" configuration present) + + - name: Merge CoPP configuration + dellemc.enterprise_sonic.sonic_copp: + config: + copp_groups: + - copp_name: 'copp-1' + trap_priority: 1 + trap_action: 'DROP' + queue: 1 + cir: '45' + cbs: '45' + - copp_name: 'copp-2' + trap_priority: 2 + trap_action: 'FORWARD' + queue: 2 + cir: '90' + cbs: '90' + copp_traps: + - name: 'trap-1' + trap_ids: 'id1,id2,id3' + trap_group: 'copp-1' + state: merged + +# After State: +# ------------ +# +# sonic# show copp actions +# CoPP action group copp-1 +# trap-action drop +# trap-priority 1 +# trap-queue 1 +# police cir 45 cbs 45 +# CoPP action group copp-2 +# trap-action forward +# trap-priority 2 +# trap-queue 2 +# police cir 90 cbs 90 +# sonic# show copp classifiers +# Class-map trap-1 match-type copp +# protocol id1 +# protocol id2 +# protocol id3 diff --git a/models/enterprise_sonic/copp/overridden_example_01.txt b/models/enterprise_sonic/copp/overridden_example_01.txt new file mode 100644 index 00000000..d04da244 --- /dev/null +++ b/models/enterprise_sonic/copp/overridden_example_01.txt @@ -0,0 +1,39 @@ +# Using Overridden +# +# Before State: +# ------------- +# +# sonic# show copp actions +# CoPP action group copp-1 +# trap-action forward +# trap-priority 2 +# trap-queue 2 +# CoPP action group copp-3 +# trap-action drop +# trap-priority 3 +# trap-queue 3 +# police cir 1000 cbs 1000 +# Class-map trap-1 match-type copp +# protocol id1 + + - name: Override CoPP configuration + dellemc.enterprise_sonic.sonic_copp: + config: + copp_groups: + - copp_name: 'copp-4' + trap_priority: 4 + trap_action: 'FORWARD' + queue: 4 + cir: 200 + cbs: 200 + state: overridden + +# After State: +# ------------ +# +# sonic# show copp actions +# CoPP action group copp-4 +# trap-action forward +# trap-priority 4 +# trap-queue 4 +# police cir 200 cbs 200 diff --git a/models/enterprise_sonic/copp/replaced_example_01.txt b/models/enterprise_sonic/copp/replaced_example_01.txt new file mode 100644 index 00000000..00433c43 --- /dev/null +++ b/models/enterprise_sonic/copp/replaced_example_01.txt @@ -0,0 +1,63 @@ +# Using Replaced +# +# Before State: +# ------------- +# +# sonic# show copp actions +# CoPP action group copp-1 +# trap-action drop +# trap-priority 1 +# trap-queue 1 +# police cir 45 cbs 45 +# CoPP action group copp-2 +# trap-action forward +# trap-priority 2 +# trap-queue 2 +# police cir 55 cbs 55 +# sonic# show copp classifiers +# Class-map trap-1 match-type copp +# protocol id1 +# protocol id2 +# protocol id3 + + - name: Replace CoPP configuration + dellemc.enterprise_sonic.sonic_copp: + config: + copp_groups: + - copp_name: 'copp-1' + trap_priority: 2 + trap_action: 'FORWARD' + queue: 2 + - copp_name: 'copp-3' + trap_priority: 3 + trap_action: 'DROP' + queue: 3 + cir: '1000' + cbs: '1000' + copp_traps: + - name: 'trap-1' + trap_ids: 'id1' + trap_group: 'copp-2' + state: replaced + +# After State: +# ------------ +# +# sonic# show copp actions +# CoPP action group copp-1 +# trap-action forward +# trap-priority 2 +# trap-queue 2 +# CoPP action group copp-2 +# trap-action forward +# trap-priority 2 +# trap-queue 2 +# police cir 55 cbs 55 +# CoPP action group copp-3 +# trap-action drop +# trap-priority 3 +# trap-queue 3 +# police cir 1000 cbs 1000 +# sonic# show copp classifiers +# Class-map trap-1 match-type copp +# protocol id1 diff --git a/models/enterprise_sonic/copp/sonic_copp.yaml b/models/enterprise_sonic/copp/sonic_copp.yaml new file mode 100644 index 00000000..1a655153 --- /dev/null +++ b/models/enterprise_sonic/copp/sonic_copp.yaml @@ -0,0 +1,84 @@ +--- +GENERATOR_VERSION: '1.0' +NETWORK_OS: sonic +RESOURCE: copp +COPYRIGHT: Copyright 2024 Dell Inc. or its subsidiaries. All Rights Reserved. +DOCUMENTATION: | + module: sonic_copp + version_added: "2.1.0" + notes: + - Tested against Enterprise SONiC Distribution by Dell Technologies. + - Supports C(check_mode). + short_description: Manage CoPP configuration on SONiC + description: + - This module provides configuration management of CoPP for devices running SONiC + author: "Shade Talabi (@stalabi1)" + options: + config: + description: + - Specifies CoPP configurations + type: dict + suboptions: + copp_groups: + description: + - List of CoPP entries that comprise a CoPP group + type: list + elements: dict + suboptions: + copp_name: + description: + - Name of CoPP classifier + type: str + required: true + trap_priority: + description: + - CoPP trap priority + type: int + trap_action: + description: + - CoPP trap action + type: str + choices: ['copy', 'copy_cancel', 'deny', 'drop', 'forward', 'log', 'transit', 'trap'] + queue: + description: + - CoPP queue ID + type: int + cir: + description: + - Committed information rate in bps or pps (packets per second) + type: str + cbs: + description: + - Committed bucket size in packets or bytes + type: str + copp_traps: + description: + - List of CoPP entries that comprise a CoPP trap + type: list + elements: dict + version_added: 3.1.0 + suboptions: + name: + description: + - Name of CoPP trap + type: str + required: true + trap_ids: + description: + - Comma separated string of trap IDs + type: str + trap_group: + description: + - Name of CoPP group + type: str + state: + description: + - The state of the configuration after module completion + type: str + choices: ['merged', 'deleted', 'replaced', 'overridden'] + default: merged +EXAMPLES: + - deleted_example_01.txt + - merged_example_01.txt + - overridden_example_01.txt + - replaced_example_01.txt