1#!/usr/local/bin/python3.8 2from __future__ import (absolute_import, division, print_function) 3# Copyright 2019-2020 Fortinet, Inc. 4# 5# This program is free software: you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation, either version 3 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program. If not, see <https://www.gnu.org/licenses/>. 17 18__metaclass__ = type 19 20ANSIBLE_METADATA = {'status': ['preview'], 21 'supported_by': 'community', 22 'metadata_version': '1.1'} 23 24DOCUMENTATION = ''' 25--- 26module: fortios_system_snmp_community 27short_description: SNMP community configuration in Fortinet's FortiOS and FortiGate. 28description: 29 - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the 30 user to set and modify system_snmp feature and community category. 31 Examples include all parameters and values need to be adjusted to datasources before usage. 32 Tested with FOS v6.0.0 33version_added: "2.10" 34author: 35 - Link Zheng (@chillancezen) 36 - Jie Xue (@JieX19) 37 - Hongbin Lu (@fgtdev-hblu) 38 - Frank Shen (@frankshen01) 39 - Miguel Angel Munoz (@mamunozgonzalez) 40 - Nicolas Thomas (@thomnico) 41notes: 42 - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks 43 44requirements: 45 - ansible>=2.9.0 46options: 47 access_token: 48 description: 49 - Token-based authentication. 50 Generated from GUI of Fortigate. 51 type: str 52 required: false 53 enable_log: 54 description: 55 - Enable/Disable logging for task. 56 type: bool 57 required: false 58 default: false 59 vdom: 60 description: 61 - Virtual domain, among those defined previously. A vdom is a 62 virtual instance of the FortiGate that can be configured and 63 used as a different unit. 64 type: str 65 default: root 66 67 state: 68 description: 69 - Indicates whether to create or remove the object. 70 type: str 71 required: true 72 choices: 73 - present 74 - absent 75 system_snmp_community: 76 description: 77 - SNMP community configuration. 78 default: null 79 type: dict 80 suboptions: 81 events: 82 description: 83 - SNMP trap events. 84 type: list 85 choices: 86 - cpu-high 87 - mem-low 88 - log-full 89 - intf-ip 90 - vpn-tun-up 91 - vpn-tun-down 92 - ha-switch 93 - ha-hb-failure 94 - ips-signature 95 - ips-anomaly 96 - av-virus 97 - av-oversize 98 - av-pattern 99 - av-fragmented 100 - fm-if-change 101 - fm-conf-change 102 - bgp-established 103 - bgp-backward-transition 104 - ha-member-up 105 - ha-member-down 106 - ent-conf-change 107 - av-conserve 108 - av-bypass 109 - av-oversize-passed 110 - av-oversize-blocked 111 - ips-pkg-update 112 - ips-fail-open 113 - temperature-high 114 - voltage-alert 115 - power-supply-failure 116 - faz-disconnect 117 - fan-failure 118 - wc-ap-up 119 - wc-ap-down 120 - fswctl-session-up 121 - fswctl-session-down 122 - load-balance-real-server-down 123 - device-new 124 - per-cpu-high 125 - dhcp 126 - ospf-nbr-state-change 127 - ospf-virtnbr-state-change 128 hosts: 129 description: 130 - Configure IPv4 SNMP managers (hosts). 131 type: list 132 suboptions: 133 ha_direct: 134 description: 135 - Enable/disable direct management of HA cluster members. 136 type: str 137 choices: 138 - enable 139 - disable 140 host_type: 141 description: 142 - Control whether the SNMP manager sends SNMP queries, receives SNMP traps, or both. 143 type: str 144 choices: 145 - any 146 - query 147 - trap 148 id: 149 description: 150 - Host entry ID. 151 required: true 152 type: int 153 ip: 154 description: 155 - IPv4 address of the SNMP manager (host). 156 type: str 157 source_ip: 158 description: 159 - Source IPv4 address for SNMP traps. 160 type: str 161 hosts6: 162 description: 163 - Configure IPv6 SNMP managers. 164 type: list 165 suboptions: 166 ha_direct: 167 description: 168 - Enable/disable direct management of HA cluster members. 169 type: str 170 choices: 171 - enable 172 - disable 173 host_type: 174 description: 175 - Control whether the SNMP manager sends SNMP queries, receives SNMP traps, or both. 176 type: str 177 choices: 178 - any 179 - query 180 - trap 181 id: 182 description: 183 - Host6 entry ID. 184 required: true 185 type: int 186 ipv6: 187 description: 188 - SNMP manager IPv6 address prefix. 189 type: str 190 source_ipv6: 191 description: 192 - Source IPv6 address for SNMP traps. 193 type: str 194 id: 195 description: 196 - Community ID. 197 required: true 198 type: int 199 name: 200 description: 201 - Community name. 202 type: str 203 query_v1_port: 204 description: 205 - SNMP v1 query port . 206 type: int 207 query_v1_status: 208 description: 209 - Enable/disable SNMP v1 queries. 210 type: str 211 choices: 212 - enable 213 - disable 214 query_v2c_port: 215 description: 216 - SNMP v2c query port . 217 type: int 218 query_v2c_status: 219 description: 220 - Enable/disable SNMP v2c queries. 221 type: str 222 choices: 223 - enable 224 - disable 225 status: 226 description: 227 - Enable/disable this SNMP community. 228 type: str 229 choices: 230 - enable 231 - disable 232 trap_v1_lport: 233 description: 234 - SNMP v1 trap local port . 235 type: int 236 trap_v1_rport: 237 description: 238 - SNMP v1 trap remote port . 239 type: int 240 trap_v1_status: 241 description: 242 - Enable/disable SNMP v1 traps. 243 type: str 244 choices: 245 - enable 246 - disable 247 trap_v2c_lport: 248 description: 249 - SNMP v2c trap local port . 250 type: int 251 trap_v2c_rport: 252 description: 253 - SNMP v2c trap remote port . 254 type: int 255 trap_v2c_status: 256 description: 257 - Enable/disable SNMP v2c traps. 258 type: str 259 choices: 260 - enable 261 - disable 262''' 263 264EXAMPLES = ''' 265- hosts: fortigates 266 collections: 267 - fortinet.fortios 268 connection: httpapi 269 vars: 270 vdom: "root" 271 ansible_httpapi_use_ssl: yes 272 ansible_httpapi_validate_certs: no 273 ansible_httpapi_port: 443 274 tasks: 275 - name: SNMP community configuration. 276 fortios_system_snmp_community: 277 vdom: "{{ vdom }}" 278 state: "present" 279 access_token: "<your_own_value>" 280 system_snmp_community: 281 events: "cpu-high" 282 hosts: 283 - 284 ha_direct: "enable" 285 host_type: "any" 286 id: "7" 287 ip: "<your_own_value>" 288 source_ip: "84.230.14.43" 289 hosts6: 290 - 291 ha_direct: "enable" 292 host_type: "any" 293 id: "13" 294 ipv6: "<your_own_value>" 295 source_ipv6: "<your_own_value>" 296 id: "16" 297 name: "default_name_17" 298 query_v1_port: "18" 299 query_v1_status: "enable" 300 query_v2c_port: "20" 301 query_v2c_status: "enable" 302 status: "enable" 303 trap_v1_lport: "23" 304 trap_v1_rport: "24" 305 trap_v1_status: "enable" 306 trap_v2c_lport: "26" 307 trap_v2c_rport: "27" 308 trap_v2c_status: "enable" 309 310''' 311 312RETURN = ''' 313build: 314 description: Build number of the fortigate image 315 returned: always 316 type: str 317 sample: '1547' 318http_method: 319 description: Last method used to provision the content into FortiGate 320 returned: always 321 type: str 322 sample: 'PUT' 323http_status: 324 description: Last result given by FortiGate on last operation applied 325 returned: always 326 type: str 327 sample: "200" 328mkey: 329 description: Master key (id) used in the last call to FortiGate 330 returned: success 331 type: str 332 sample: "id" 333name: 334 description: Name of the table used to fulfill the request 335 returned: always 336 type: str 337 sample: "urlfilter" 338path: 339 description: Path of the table used to fulfill the request 340 returned: always 341 type: str 342 sample: "webfilter" 343revision: 344 description: Internal revision number 345 returned: always 346 type: str 347 sample: "17.0.2.10658" 348serial: 349 description: Serial number of the unit 350 returned: always 351 type: str 352 sample: "FGVMEVYYQT3AB5352" 353status: 354 description: Indication of the operation's result 355 returned: always 356 type: str 357 sample: "success" 358vdom: 359 description: Virtual domain used 360 returned: always 361 type: str 362 sample: "root" 363version: 364 description: Version of the FortiGate 365 returned: always 366 type: str 367 sample: "v5.6.3" 368 369''' 370from ansible.module_utils.basic import AnsibleModule 371from ansible.module_utils.connection import Connection 372from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import FortiOSHandler 373from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_legacy_fortiosapi 374from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import schema_to_module_spec 375from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_schema_versioning 376from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import FAIL_SOCKET_MSG 377from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import is_same_comparison 378from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import serialize 379 380 381def filter_system_snmp_community_data(json): 382 option_list = ['events', 'hosts', 'hosts6', 383 'id', 'name', 'query_v1_port', 384 'query_v1_status', 'query_v2c_port', 'query_v2c_status', 385 'status', 'trap_v1_lport', 'trap_v1_rport', 386 'trap_v1_status', 'trap_v2c_lport', 'trap_v2c_rport', 387 'trap_v2c_status'] 388 dictionary = {} 389 390 for attribute in option_list: 391 if attribute in json and json[attribute] is not None: 392 dictionary[attribute] = json[attribute] 393 394 return dictionary 395 396 397def flatten_single_path(data, path, index): 398 if not data or index == len(path) or path[index] not in data or not data[path[index]]: 399 return 400 401 if index == len(path) - 1: 402 data[path[index]] = ' '.join(str(elem) for elem in data[path[index]]) 403 elif isinstance(data[path[index]], list): 404 for value in data[path[index]]: 405 flatten_single_path(value, path, index + 1) 406 else: 407 flatten_single_path(data[path[index]], path, index + 1) 408 409 410def flatten_multilists_attributes(data): 411 multilist_attrs = [[u'events']] 412 413 for attr in multilist_attrs: 414 flatten_single_path(data, attr, 0) 415 416 return data 417 418 419def underscore_to_hyphen(data): 420 if isinstance(data, list): 421 for i, elem in enumerate(data): 422 data[i] = underscore_to_hyphen(elem) 423 elif isinstance(data, dict): 424 new_data = {} 425 for k, v in data.items(): 426 new_data[k.replace('_', '-')] = underscore_to_hyphen(v) 427 data = new_data 428 429 return data 430 431 432def system_snmp_community(data, fos, check_mode=False): 433 434 vdom = data['vdom'] 435 436 state = data['state'] 437 438 system_snmp_community_data = data['system_snmp_community'] 439 system_snmp_community_data = flatten_multilists_attributes(system_snmp_community_data) 440 filtered_data = underscore_to_hyphen(filter_system_snmp_community_data(system_snmp_community_data)) 441 442 # check_mode starts from here 443 if check_mode: 444 mkey = fos.get_mkey('system', 'interface', filtered_data, vdom=vdom) 445 current_data = fos.get('system', 'interface', vdom=vdom, mkey=mkey) 446 is_existed = current_data and current_data.get('http_status') == 200 \ 447 and isinstance(current_data.get('results'), list) \ 448 and len(current_data['results']) > 0 449 450 # 2. if it exists and the state is 'present' then compare current settings with desired 451 if state == 'present' or state is True: 452 if mkey is None: 453 return False, True, filtered_data 454 455 # if mkey exists then compare each other 456 # record exits and they're matched or not 457 if is_existed: 458 is_same = is_same_comparison( 459 serialize(current_data['results'][0]), serialize(filtered_data)) 460 return False, not is_same, filtered_data 461 462 # record does not exist 463 return False, True, filtered_data 464 465 if state == 'absent': 466 if mkey is None: 467 return False, False, filtered_data 468 469 if is_existed: 470 return False, True, filtered_data 471 return False, False, filtered_data 472 473 return True, False, {'reason: ': 'Must provide state parameter'} 474 475 if state == "present" or state is True: 476 return fos.set('system.snmp', 477 'community', 478 data=filtered_data, 479 vdom=vdom) 480 481 elif state == "absent": 482 return fos.delete('system.snmp', 483 'community', 484 mkey=filtered_data['id'], 485 vdom=vdom) 486 else: 487 fos._module.fail_json(msg='state must be present or absent!') 488 489 490def is_successful_status(status): 491 return status['status'] == "success" or \ 492 status['http_method'] == "DELETE" and status['http_status'] == 404 493 494 495def fortios_system_snmp(data, fos, check_mode): 496 497 if data['system_snmp_community']: 498 resp = system_snmp_community(data, fos, check_mode) 499 else: 500 fos._module.fail_json(msg='missing task body: %s' % ('system_snmp_community')) 501 if check_mode: 502 return resp 503 return not is_successful_status(resp), \ 504 resp['status'] == "success" and \ 505 (resp['revision_changed'] if 'revision_changed' in resp else True), \ 506 resp 507 508 509versioned_schema = { 510 "type": "list", 511 "children": { 512 "status": { 513 "type": "string", 514 "options": [ 515 { 516 "value": "enable", 517 "revisions": { 518 "v6.0.0": True, 519 "v7.0.0": True, 520 "v6.0.5": True, 521 "v6.4.4": True, 522 "v6.4.0": True, 523 "v6.4.1": True, 524 "v6.2.0": True, 525 "v6.2.3": True, 526 "v6.2.5": True, 527 "v6.2.7": True, 528 "v6.0.11": True 529 } 530 }, 531 { 532 "value": "disable", 533 "revisions": { 534 "v6.0.0": True, 535 "v7.0.0": True, 536 "v6.0.5": True, 537 "v6.4.4": True, 538 "v6.4.0": True, 539 "v6.4.1": True, 540 "v6.2.0": True, 541 "v6.2.3": True, 542 "v6.2.5": True, 543 "v6.2.7": True, 544 "v6.0.11": True 545 } 546 } 547 ], 548 "revisions": { 549 "v6.0.0": True, 550 "v7.0.0": True, 551 "v6.0.5": True, 552 "v6.4.4": True, 553 "v6.4.0": True, 554 "v6.4.1": True, 555 "v6.2.0": True, 556 "v6.2.3": True, 557 "v6.2.5": True, 558 "v6.2.7": True, 559 "v6.0.11": True 560 } 561 }, 562 "hosts6": { 563 "type": "list", 564 "children": { 565 "ipv6": { 566 "type": "string", 567 "revisions": { 568 "v6.0.0": True, 569 "v7.0.0": True, 570 "v6.0.5": True, 571 "v6.4.4": True, 572 "v6.4.0": True, 573 "v6.4.1": True, 574 "v6.2.0": True, 575 "v6.2.3": True, 576 "v6.2.5": True, 577 "v6.2.7": True, 578 "v6.0.11": True 579 } 580 }, 581 "host_type": { 582 "type": "string", 583 "options": [ 584 { 585 "value": "any", 586 "revisions": { 587 "v6.0.0": True, 588 "v7.0.0": True, 589 "v6.0.5": True, 590 "v6.4.4": True, 591 "v6.4.0": True, 592 "v6.4.1": True, 593 "v6.2.0": True, 594 "v6.2.3": True, 595 "v6.2.5": True, 596 "v6.2.7": True, 597 "v6.0.11": True 598 } 599 }, 600 { 601 "value": "query", 602 "revisions": { 603 "v6.0.0": True, 604 "v7.0.0": True, 605 "v6.0.5": True, 606 "v6.4.4": True, 607 "v6.4.0": True, 608 "v6.4.1": True, 609 "v6.2.0": True, 610 "v6.2.3": True, 611 "v6.2.5": True, 612 "v6.2.7": True, 613 "v6.0.11": True 614 } 615 }, 616 { 617 "value": "trap", 618 "revisions": { 619 "v6.0.0": True, 620 "v7.0.0": True, 621 "v6.0.5": True, 622 "v6.4.4": True, 623 "v6.4.0": True, 624 "v6.4.1": True, 625 "v6.2.0": True, 626 "v6.2.3": True, 627 "v6.2.5": True, 628 "v6.2.7": True, 629 "v6.0.11": True 630 } 631 } 632 ], 633 "revisions": { 634 "v6.0.0": True, 635 "v7.0.0": True, 636 "v6.0.5": True, 637 "v6.4.4": True, 638 "v6.4.0": True, 639 "v6.4.1": True, 640 "v6.2.0": True, 641 "v6.2.3": True, 642 "v6.2.5": True, 643 "v6.2.7": True, 644 "v6.0.11": True 645 } 646 }, 647 "ha_direct": { 648 "type": "string", 649 "options": [ 650 { 651 "value": "enable", 652 "revisions": { 653 "v6.0.0": True, 654 "v7.0.0": True, 655 "v6.0.5": True, 656 "v6.4.4": True, 657 "v6.4.0": True, 658 "v6.4.1": True, 659 "v6.2.0": True, 660 "v6.2.3": True, 661 "v6.2.5": True, 662 "v6.2.7": True, 663 "v6.0.11": True 664 } 665 }, 666 { 667 "value": "disable", 668 "revisions": { 669 "v6.0.0": True, 670 "v7.0.0": True, 671 "v6.0.5": True, 672 "v6.4.4": True, 673 "v6.4.0": True, 674 "v6.4.1": True, 675 "v6.2.0": True, 676 "v6.2.3": True, 677 "v6.2.5": True, 678 "v6.2.7": True, 679 "v6.0.11": True 680 } 681 } 682 ], 683 "revisions": { 684 "v6.0.0": True, 685 "v7.0.0": True, 686 "v6.0.5": True, 687 "v6.4.4": True, 688 "v6.4.0": True, 689 "v6.4.1": True, 690 "v6.2.0": True, 691 "v6.2.3": True, 692 "v6.2.5": True, 693 "v6.2.7": True, 694 "v6.0.11": True 695 } 696 }, 697 "source_ipv6": { 698 "type": "string", 699 "revisions": { 700 "v6.0.0": True, 701 "v7.0.0": True, 702 "v6.0.5": True, 703 "v6.4.4": True, 704 "v6.4.0": True, 705 "v6.4.1": True, 706 "v6.2.0": True, 707 "v6.2.3": True, 708 "v6.2.5": True, 709 "v6.2.7": True, 710 "v6.0.11": True 711 } 712 }, 713 "id": { 714 "type": "integer", 715 "revisions": { 716 "v6.0.0": True, 717 "v7.0.0": True, 718 "v6.0.5": True, 719 "v6.4.4": True, 720 "v6.4.0": True, 721 "v6.4.1": True, 722 "v6.2.0": True, 723 "v6.2.3": True, 724 "v6.2.5": True, 725 "v6.2.7": True, 726 "v6.0.11": True 727 } 728 } 729 }, 730 "revisions": { 731 "v6.0.0": True, 732 "v7.0.0": True, 733 "v6.0.5": True, 734 "v6.4.4": True, 735 "v6.4.0": True, 736 "v6.4.1": True, 737 "v6.2.0": True, 738 "v6.2.3": True, 739 "v6.2.5": True, 740 "v6.2.7": True, 741 "v6.0.11": True 742 } 743 }, 744 "name": { 745 "type": "string", 746 "revisions": { 747 "v6.0.0": True, 748 "v7.0.0": True, 749 "v6.0.5": True, 750 "v6.4.4": True, 751 "v6.4.0": True, 752 "v6.4.1": True, 753 "v6.2.0": True, 754 "v6.2.3": True, 755 "v6.2.5": True, 756 "v6.2.7": True, 757 "v6.0.11": True 758 } 759 }, 760 "query_v1_status": { 761 "type": "string", 762 "options": [ 763 { 764 "value": "enable", 765 "revisions": { 766 "v6.0.0": True, 767 "v7.0.0": True, 768 "v6.0.5": True, 769 "v6.4.4": True, 770 "v6.4.0": True, 771 "v6.4.1": True, 772 "v6.2.0": True, 773 "v6.2.3": True, 774 "v6.2.5": True, 775 "v6.2.7": True, 776 "v6.0.11": True 777 } 778 }, 779 { 780 "value": "disable", 781 "revisions": { 782 "v6.0.0": True, 783 "v7.0.0": True, 784 "v6.0.5": True, 785 "v6.4.4": True, 786 "v6.4.0": True, 787 "v6.4.1": True, 788 "v6.2.0": True, 789 "v6.2.3": True, 790 "v6.2.5": True, 791 "v6.2.7": True, 792 "v6.0.11": True 793 } 794 } 795 ], 796 "revisions": { 797 "v6.0.0": True, 798 "v7.0.0": True, 799 "v6.0.5": True, 800 "v6.4.4": True, 801 "v6.4.0": True, 802 "v6.4.1": True, 803 "v6.2.0": True, 804 "v6.2.3": True, 805 "v6.2.5": True, 806 "v6.2.7": True, 807 "v6.0.11": True 808 } 809 }, 810 "id": { 811 "type": "integer", 812 "revisions": { 813 "v6.0.0": True, 814 "v7.0.0": True, 815 "v6.0.5": True, 816 "v6.4.4": True, 817 "v6.4.0": True, 818 "v6.4.1": True, 819 "v6.2.0": True, 820 "v6.2.3": True, 821 "v6.2.5": True, 822 "v6.2.7": True, 823 "v6.0.11": True 824 } 825 }, 826 "trap_v2c_rport": { 827 "type": "integer", 828 "revisions": { 829 "v6.0.0": True, 830 "v7.0.0": True, 831 "v6.0.5": True, 832 "v6.4.4": True, 833 "v6.4.0": True, 834 "v6.4.1": True, 835 "v6.2.0": True, 836 "v6.2.3": True, 837 "v6.2.5": True, 838 "v6.2.7": True, 839 "v6.0.11": True 840 } 841 }, 842 "query_v1_port": { 843 "type": "integer", 844 "revisions": { 845 "v6.0.0": True, 846 "v7.0.0": True, 847 "v6.0.5": True, 848 "v6.4.4": True, 849 "v6.4.0": True, 850 "v6.4.1": True, 851 "v6.2.0": True, 852 "v6.2.3": True, 853 "v6.2.5": True, 854 "v6.2.7": True, 855 "v6.0.11": True 856 } 857 }, 858 "hosts": { 859 "type": "list", 860 "children": { 861 "ip": { 862 "type": "string", 863 "revisions": { 864 "v6.0.0": True, 865 "v7.0.0": True, 866 "v6.0.5": True, 867 "v6.4.4": True, 868 "v6.4.0": True, 869 "v6.4.1": True, 870 "v6.2.0": True, 871 "v6.2.3": True, 872 "v6.2.5": True, 873 "v6.2.7": True, 874 "v6.0.11": True 875 } 876 }, 877 "source_ip": { 878 "type": "string", 879 "revisions": { 880 "v6.0.0": True, 881 "v7.0.0": True, 882 "v6.0.5": True, 883 "v6.4.4": True, 884 "v6.4.0": True, 885 "v6.4.1": True, 886 "v6.2.0": True, 887 "v6.2.3": True, 888 "v6.2.5": True, 889 "v6.2.7": True, 890 "v6.0.11": True 891 } 892 }, 893 "id": { 894 "type": "integer", 895 "revisions": { 896 "v6.0.0": True, 897 "v7.0.0": True, 898 "v6.0.5": True, 899 "v6.4.4": True, 900 "v6.4.0": True, 901 "v6.4.1": True, 902 "v6.2.0": True, 903 "v6.2.3": True, 904 "v6.2.5": True, 905 "v6.2.7": True, 906 "v6.0.11": True 907 } 908 }, 909 "ha_direct": { 910 "type": "string", 911 "options": [ 912 { 913 "value": "enable", 914 "revisions": { 915 "v6.0.0": True, 916 "v7.0.0": True, 917 "v6.0.5": True, 918 "v6.4.4": True, 919 "v6.4.0": True, 920 "v6.4.1": True, 921 "v6.2.0": True, 922 "v6.2.3": True, 923 "v6.2.5": True, 924 "v6.2.7": True, 925 "v6.0.11": True 926 } 927 }, 928 { 929 "value": "disable", 930 "revisions": { 931 "v6.0.0": True, 932 "v7.0.0": True, 933 "v6.0.5": True, 934 "v6.4.4": True, 935 "v6.4.0": True, 936 "v6.4.1": True, 937 "v6.2.0": True, 938 "v6.2.3": True, 939 "v6.2.5": True, 940 "v6.2.7": True, 941 "v6.0.11": True 942 } 943 } 944 ], 945 "revisions": { 946 "v6.0.0": True, 947 "v7.0.0": True, 948 "v6.0.5": True, 949 "v6.4.4": True, 950 "v6.4.0": True, 951 "v6.4.1": True, 952 "v6.2.0": True, 953 "v6.2.3": True, 954 "v6.2.5": True, 955 "v6.2.7": True, 956 "v6.0.11": True 957 } 958 }, 959 "host_type": { 960 "type": "string", 961 "options": [ 962 { 963 "value": "any", 964 "revisions": { 965 "v6.0.0": True, 966 "v7.0.0": True, 967 "v6.0.5": True, 968 "v6.4.4": True, 969 "v6.4.0": True, 970 "v6.4.1": True, 971 "v6.2.0": True, 972 "v6.2.3": True, 973 "v6.2.5": True, 974 "v6.2.7": True, 975 "v6.0.11": True 976 } 977 }, 978 { 979 "value": "query", 980 "revisions": { 981 "v6.0.0": True, 982 "v7.0.0": True, 983 "v6.0.5": True, 984 "v6.4.4": True, 985 "v6.4.0": True, 986 "v6.4.1": True, 987 "v6.2.0": True, 988 "v6.2.3": True, 989 "v6.2.5": True, 990 "v6.2.7": True, 991 "v6.0.11": True 992 } 993 }, 994 { 995 "value": "trap", 996 "revisions": { 997 "v6.0.0": True, 998 "v7.0.0": True, 999 "v6.0.5": True, 1000 "v6.4.4": True, 1001 "v6.4.0": True, 1002 "v6.4.1": True, 1003 "v6.2.0": True, 1004 "v6.2.3": True, 1005 "v6.2.5": True, 1006 "v6.2.7": True, 1007 "v6.0.11": True 1008 } 1009 } 1010 ], 1011 "revisions": { 1012 "v6.0.0": True, 1013 "v7.0.0": True, 1014 "v6.0.5": True, 1015 "v6.4.4": True, 1016 "v6.4.0": True, 1017 "v6.4.1": True, 1018 "v6.2.0": True, 1019 "v6.2.3": True, 1020 "v6.2.5": True, 1021 "v6.2.7": True, 1022 "v6.0.11": True 1023 } 1024 } 1025 }, 1026 "revisions": { 1027 "v6.0.0": True, 1028 "v7.0.0": True, 1029 "v6.0.5": True, 1030 "v6.4.4": True, 1031 "v6.4.0": True, 1032 "v6.4.1": True, 1033 "v6.2.0": True, 1034 "v6.2.3": True, 1035 "v6.2.5": True, 1036 "v6.2.7": True, 1037 "v6.0.11": True 1038 } 1039 }, 1040 "trap_v1_status": { 1041 "type": "string", 1042 "options": [ 1043 { 1044 "value": "enable", 1045 "revisions": { 1046 "v6.0.0": True, 1047 "v7.0.0": True, 1048 "v6.0.5": True, 1049 "v6.4.4": True, 1050 "v6.4.0": True, 1051 "v6.4.1": True, 1052 "v6.2.0": True, 1053 "v6.2.3": True, 1054 "v6.2.5": True, 1055 "v6.2.7": True, 1056 "v6.0.11": True 1057 } 1058 }, 1059 { 1060 "value": "disable", 1061 "revisions": { 1062 "v6.0.0": True, 1063 "v7.0.0": True, 1064 "v6.0.5": True, 1065 "v6.4.4": True, 1066 "v6.4.0": True, 1067 "v6.4.1": True, 1068 "v6.2.0": True, 1069 "v6.2.3": True, 1070 "v6.2.5": True, 1071 "v6.2.7": True, 1072 "v6.0.11": True 1073 } 1074 } 1075 ], 1076 "revisions": { 1077 "v6.0.0": True, 1078 "v7.0.0": True, 1079 "v6.0.5": True, 1080 "v6.4.4": True, 1081 "v6.4.0": True, 1082 "v6.4.1": True, 1083 "v6.2.0": True, 1084 "v6.2.3": True, 1085 "v6.2.5": True, 1086 "v6.2.7": True, 1087 "v6.0.11": True 1088 } 1089 }, 1090 "trap_v1_lport": { 1091 "type": "integer", 1092 "revisions": { 1093 "v6.0.0": True, 1094 "v7.0.0": True, 1095 "v6.0.5": True, 1096 "v6.4.4": True, 1097 "v6.4.0": True, 1098 "v6.4.1": True, 1099 "v6.2.0": True, 1100 "v6.2.3": True, 1101 "v6.2.5": True, 1102 "v6.2.7": True, 1103 "v6.0.11": True 1104 } 1105 }, 1106 "trap_v2c_status": { 1107 "type": "string", 1108 "options": [ 1109 { 1110 "value": "enable", 1111 "revisions": { 1112 "v6.0.0": True, 1113 "v7.0.0": True, 1114 "v6.0.5": True, 1115 "v6.4.4": True, 1116 "v6.4.0": True, 1117 "v6.4.1": True, 1118 "v6.2.0": True, 1119 "v6.2.3": True, 1120 "v6.2.5": True, 1121 "v6.2.7": True, 1122 "v6.0.11": True 1123 } 1124 }, 1125 { 1126 "value": "disable", 1127 "revisions": { 1128 "v6.0.0": True, 1129 "v7.0.0": True, 1130 "v6.0.5": True, 1131 "v6.4.4": True, 1132 "v6.4.0": True, 1133 "v6.4.1": True, 1134 "v6.2.0": True, 1135 "v6.2.3": True, 1136 "v6.2.5": True, 1137 "v6.2.7": True, 1138 "v6.0.11": True 1139 } 1140 } 1141 ], 1142 "revisions": { 1143 "v6.0.0": True, 1144 "v7.0.0": True, 1145 "v6.0.5": True, 1146 "v6.4.4": True, 1147 "v6.4.0": True, 1148 "v6.4.1": True, 1149 "v6.2.0": True, 1150 "v6.2.3": True, 1151 "v6.2.5": True, 1152 "v6.2.7": True, 1153 "v6.0.11": True 1154 } 1155 }, 1156 "trap_v1_rport": { 1157 "type": "integer", 1158 "revisions": { 1159 "v6.0.0": True, 1160 "v7.0.0": True, 1161 "v6.0.5": True, 1162 "v6.4.4": True, 1163 "v6.4.0": True, 1164 "v6.4.1": True, 1165 "v6.2.0": True, 1166 "v6.2.3": True, 1167 "v6.2.5": True, 1168 "v6.2.7": True, 1169 "v6.0.11": True 1170 } 1171 }, 1172 "events": { 1173 "multiple_values": True, 1174 "type": "list", 1175 "options": [ 1176 { 1177 "value": "cpu-high", 1178 "revisions": { 1179 "v6.0.0": True, 1180 "v7.0.0": True, 1181 "v6.0.5": True, 1182 "v6.4.4": True, 1183 "v6.4.0": True, 1184 "v6.4.1": True, 1185 "v6.2.0": True, 1186 "v6.2.3": True, 1187 "v6.2.5": True, 1188 "v6.2.7": True, 1189 "v6.0.11": True 1190 } 1191 }, 1192 { 1193 "value": "mem-low", 1194 "revisions": { 1195 "v6.0.0": True, 1196 "v7.0.0": True, 1197 "v6.0.5": True, 1198 "v6.4.4": True, 1199 "v6.4.0": True, 1200 "v6.4.1": True, 1201 "v6.2.0": True, 1202 "v6.2.3": True, 1203 "v6.2.5": True, 1204 "v6.2.7": True, 1205 "v6.0.11": True 1206 } 1207 }, 1208 { 1209 "value": "log-full", 1210 "revisions": { 1211 "v6.0.0": True, 1212 "v7.0.0": True, 1213 "v6.0.5": True, 1214 "v6.4.4": True, 1215 "v6.4.0": True, 1216 "v6.4.1": True, 1217 "v6.2.0": True, 1218 "v6.2.3": True, 1219 "v6.2.5": True, 1220 "v6.2.7": True, 1221 "v6.0.11": True 1222 } 1223 }, 1224 { 1225 "value": "intf-ip", 1226 "revisions": { 1227 "v6.0.0": True, 1228 "v7.0.0": True, 1229 "v6.0.5": True, 1230 "v6.4.4": True, 1231 "v6.4.0": True, 1232 "v6.4.1": True, 1233 "v6.2.0": True, 1234 "v6.2.3": True, 1235 "v6.2.5": True, 1236 "v6.2.7": True, 1237 "v6.0.11": True 1238 } 1239 }, 1240 { 1241 "value": "vpn-tun-up", 1242 "revisions": { 1243 "v6.0.0": True, 1244 "v7.0.0": True, 1245 "v6.0.5": True, 1246 "v6.4.4": True, 1247 "v6.4.0": True, 1248 "v6.4.1": True, 1249 "v6.2.0": True, 1250 "v6.2.3": True, 1251 "v6.2.5": True, 1252 "v6.2.7": True, 1253 "v6.0.11": True 1254 } 1255 }, 1256 { 1257 "value": "vpn-tun-down", 1258 "revisions": { 1259 "v6.0.0": True, 1260 "v7.0.0": True, 1261 "v6.0.5": True, 1262 "v6.4.4": True, 1263 "v6.4.0": True, 1264 "v6.4.1": True, 1265 "v6.2.0": True, 1266 "v6.2.3": True, 1267 "v6.2.5": True, 1268 "v6.2.7": True, 1269 "v6.0.11": True 1270 } 1271 }, 1272 { 1273 "value": "ha-switch", 1274 "revisions": { 1275 "v6.0.0": True, 1276 "v7.0.0": True, 1277 "v6.0.5": True, 1278 "v6.4.4": True, 1279 "v6.4.0": True, 1280 "v6.4.1": True, 1281 "v6.2.0": True, 1282 "v6.2.3": True, 1283 "v6.2.5": True, 1284 "v6.2.7": True, 1285 "v6.0.11": True 1286 } 1287 }, 1288 { 1289 "value": "ha-hb-failure", 1290 "revisions": { 1291 "v6.0.0": True, 1292 "v7.0.0": True, 1293 "v6.0.5": True, 1294 "v6.4.4": True, 1295 "v6.4.0": True, 1296 "v6.4.1": True, 1297 "v6.2.0": True, 1298 "v6.2.3": True, 1299 "v6.2.5": True, 1300 "v6.2.7": True, 1301 "v6.0.11": True 1302 } 1303 }, 1304 { 1305 "value": "ips-signature", 1306 "revisions": { 1307 "v6.0.0": True, 1308 "v7.0.0": True, 1309 "v6.0.5": True, 1310 "v6.4.4": True, 1311 "v6.4.0": True, 1312 "v6.4.1": True, 1313 "v6.2.0": True, 1314 "v6.2.3": True, 1315 "v6.2.5": True, 1316 "v6.2.7": True, 1317 "v6.0.11": True 1318 } 1319 }, 1320 { 1321 "value": "ips-anomaly", 1322 "revisions": { 1323 "v6.0.0": True, 1324 "v7.0.0": True, 1325 "v6.0.5": True, 1326 "v6.4.4": True, 1327 "v6.4.0": True, 1328 "v6.4.1": True, 1329 "v6.2.0": True, 1330 "v6.2.3": True, 1331 "v6.2.5": True, 1332 "v6.2.7": True, 1333 "v6.0.11": True 1334 } 1335 }, 1336 { 1337 "value": "av-virus", 1338 "revisions": { 1339 "v6.0.0": True, 1340 "v7.0.0": True, 1341 "v6.0.5": True, 1342 "v6.4.4": True, 1343 "v6.4.0": True, 1344 "v6.4.1": True, 1345 "v6.2.0": True, 1346 "v6.2.3": True, 1347 "v6.2.5": True, 1348 "v6.2.7": True, 1349 "v6.0.11": True 1350 } 1351 }, 1352 { 1353 "value": "av-oversize", 1354 "revisions": { 1355 "v6.0.0": True, 1356 "v7.0.0": True, 1357 "v6.0.5": True, 1358 "v6.4.4": True, 1359 "v6.4.0": True, 1360 "v6.4.1": True, 1361 "v6.2.0": True, 1362 "v6.2.3": True, 1363 "v6.2.5": True, 1364 "v6.2.7": True, 1365 "v6.0.11": True 1366 } 1367 }, 1368 { 1369 "value": "av-pattern", 1370 "revisions": { 1371 "v6.0.0": True, 1372 "v7.0.0": True, 1373 "v6.0.5": True, 1374 "v6.4.4": True, 1375 "v6.4.0": True, 1376 "v6.4.1": True, 1377 "v6.2.0": True, 1378 "v6.2.3": True, 1379 "v6.2.5": True, 1380 "v6.2.7": True, 1381 "v6.0.11": True 1382 } 1383 }, 1384 { 1385 "value": "av-fragmented", 1386 "revisions": { 1387 "v6.0.0": True, 1388 "v7.0.0": True, 1389 "v6.0.5": True, 1390 "v6.4.4": True, 1391 "v6.4.0": True, 1392 "v6.4.1": True, 1393 "v6.2.0": True, 1394 "v6.2.3": True, 1395 "v6.2.5": True, 1396 "v6.2.7": True, 1397 "v6.0.11": True 1398 } 1399 }, 1400 { 1401 "value": "fm-if-change", 1402 "revisions": { 1403 "v6.0.0": True, 1404 "v7.0.0": True, 1405 "v6.0.5": True, 1406 "v6.4.4": True, 1407 "v6.4.0": True, 1408 "v6.4.1": True, 1409 "v6.2.0": True, 1410 "v6.2.3": True, 1411 "v6.2.5": True, 1412 "v6.2.7": True, 1413 "v6.0.11": True 1414 } 1415 }, 1416 { 1417 "value": "fm-conf-change", 1418 "revisions": { 1419 "v6.0.0": True, 1420 "v7.0.0": True, 1421 "v6.0.5": True, 1422 "v6.4.4": True, 1423 "v6.4.0": True, 1424 "v6.4.1": True, 1425 "v6.2.0": True, 1426 "v6.2.3": True, 1427 "v6.2.5": True, 1428 "v6.2.7": True, 1429 "v6.0.11": True 1430 } 1431 }, 1432 { 1433 "value": "bgp-established", 1434 "revisions": { 1435 "v6.0.0": True, 1436 "v7.0.0": True, 1437 "v6.0.5": True, 1438 "v6.4.4": True, 1439 "v6.4.0": True, 1440 "v6.4.1": True, 1441 "v6.2.0": True, 1442 "v6.2.3": True, 1443 "v6.2.5": True, 1444 "v6.2.7": True, 1445 "v6.0.11": True 1446 } 1447 }, 1448 { 1449 "value": "bgp-backward-transition", 1450 "revisions": { 1451 "v6.0.0": True, 1452 "v7.0.0": True, 1453 "v6.0.5": True, 1454 "v6.4.4": True, 1455 "v6.4.0": True, 1456 "v6.4.1": True, 1457 "v6.2.0": True, 1458 "v6.2.3": True, 1459 "v6.2.5": True, 1460 "v6.2.7": True, 1461 "v6.0.11": True 1462 } 1463 }, 1464 { 1465 "value": "ha-member-up", 1466 "revisions": { 1467 "v6.0.0": True, 1468 "v7.0.0": True, 1469 "v6.0.5": True, 1470 "v6.4.4": True, 1471 "v6.4.0": True, 1472 "v6.4.1": True, 1473 "v6.2.0": True, 1474 "v6.2.3": True, 1475 "v6.2.5": True, 1476 "v6.2.7": True, 1477 "v6.0.11": True 1478 } 1479 }, 1480 { 1481 "value": "ha-member-down", 1482 "revisions": { 1483 "v6.0.0": True, 1484 "v7.0.0": True, 1485 "v6.0.5": True, 1486 "v6.4.4": True, 1487 "v6.4.0": True, 1488 "v6.4.1": True, 1489 "v6.2.0": True, 1490 "v6.2.3": True, 1491 "v6.2.5": True, 1492 "v6.2.7": True, 1493 "v6.0.11": True 1494 } 1495 }, 1496 { 1497 "value": "ent-conf-change", 1498 "revisions": { 1499 "v6.0.0": True, 1500 "v7.0.0": True, 1501 "v6.0.5": True, 1502 "v6.4.4": True, 1503 "v6.4.0": True, 1504 "v6.4.1": True, 1505 "v6.2.0": True, 1506 "v6.2.3": True, 1507 "v6.2.5": True, 1508 "v6.2.7": True, 1509 "v6.0.11": True 1510 } 1511 }, 1512 { 1513 "value": "av-conserve", 1514 "revisions": { 1515 "v6.0.0": True, 1516 "v7.0.0": True, 1517 "v6.0.5": True, 1518 "v6.4.4": True, 1519 "v6.4.0": True, 1520 "v6.4.1": True, 1521 "v6.2.0": True, 1522 "v6.2.3": True, 1523 "v6.2.5": True, 1524 "v6.2.7": True, 1525 "v6.0.11": True 1526 } 1527 }, 1528 { 1529 "value": "av-bypass", 1530 "revisions": { 1531 "v6.0.0": True, 1532 "v7.0.0": True, 1533 "v6.0.5": True, 1534 "v6.4.4": True, 1535 "v6.4.0": True, 1536 "v6.4.1": True, 1537 "v6.2.0": True, 1538 "v6.2.3": True, 1539 "v6.2.5": True, 1540 "v6.2.7": True, 1541 "v6.0.11": True 1542 } 1543 }, 1544 { 1545 "value": "av-oversize-passed", 1546 "revisions": { 1547 "v6.0.0": True, 1548 "v7.0.0": True, 1549 "v6.0.5": True, 1550 "v6.4.4": True, 1551 "v6.4.0": True, 1552 "v6.4.1": True, 1553 "v6.2.0": True, 1554 "v6.2.3": True, 1555 "v6.2.5": True, 1556 "v6.2.7": True, 1557 "v6.0.11": True 1558 } 1559 }, 1560 { 1561 "value": "av-oversize-blocked", 1562 "revisions": { 1563 "v6.0.0": True, 1564 "v7.0.0": True, 1565 "v6.0.5": True, 1566 "v6.4.4": True, 1567 "v6.4.0": True, 1568 "v6.4.1": True, 1569 "v6.2.0": True, 1570 "v6.2.3": True, 1571 "v6.2.5": True, 1572 "v6.2.7": True, 1573 "v6.0.11": True 1574 } 1575 }, 1576 { 1577 "value": "ips-pkg-update", 1578 "revisions": { 1579 "v6.0.0": True, 1580 "v7.0.0": True, 1581 "v6.0.5": True, 1582 "v6.4.4": True, 1583 "v6.4.0": True, 1584 "v6.4.1": True, 1585 "v6.2.0": True, 1586 "v6.2.3": True, 1587 "v6.2.5": True, 1588 "v6.2.7": True, 1589 "v6.0.11": True 1590 } 1591 }, 1592 { 1593 "value": "ips-fail-open", 1594 "revisions": { 1595 "v6.0.0": True, 1596 "v7.0.0": True, 1597 "v6.0.5": True, 1598 "v6.4.4": True, 1599 "v6.4.0": True, 1600 "v6.4.1": True, 1601 "v6.2.0": True, 1602 "v6.2.3": True, 1603 "v6.2.5": True, 1604 "v6.2.7": True, 1605 "v6.0.11": True 1606 } 1607 }, 1608 { 1609 "value": "temperature-high", 1610 "revisions": { 1611 "v6.0.0": True, 1612 "v7.0.0": False, 1613 "v6.0.5": True, 1614 "v6.4.4": True, 1615 "v6.4.0": True, 1616 "v6.4.1": True, 1617 "v6.2.0": True, 1618 "v6.2.3": True, 1619 "v6.2.5": True, 1620 "v6.2.7": True, 1621 "v6.0.11": True 1622 } 1623 }, 1624 { 1625 "value": "voltage-alert", 1626 "revisions": { 1627 "v6.0.0": True, 1628 "v7.0.0": False, 1629 "v6.0.5": True, 1630 "v6.4.4": True, 1631 "v6.4.0": True, 1632 "v6.4.1": True, 1633 "v6.2.0": True, 1634 "v6.2.3": True, 1635 "v6.2.5": True, 1636 "v6.2.7": True, 1637 "v6.0.11": True 1638 } 1639 }, 1640 { 1641 "value": "power-supply-failure", 1642 "revisions": { 1643 "v6.0.0": True, 1644 "v7.0.0": False, 1645 "v6.0.5": True, 1646 "v6.4.4": True, 1647 "v6.4.0": True, 1648 "v6.4.1": True, 1649 "v6.2.0": True, 1650 "v6.2.3": True, 1651 "v6.2.5": True, 1652 "v6.2.7": True, 1653 "v6.0.11": True 1654 } 1655 }, 1656 { 1657 "value": "faz-disconnect", 1658 "revisions": { 1659 "v6.0.0": True, 1660 "v7.0.0": True, 1661 "v6.0.5": True, 1662 "v6.4.4": True, 1663 "v6.4.0": True, 1664 "v6.4.1": True, 1665 "v6.2.0": True, 1666 "v6.2.3": True, 1667 "v6.2.5": True, 1668 "v6.2.7": True, 1669 "v6.0.11": True 1670 } 1671 }, 1672 { 1673 "value": "fan-failure", 1674 "revisions": { 1675 "v6.0.0": True, 1676 "v7.0.0": False, 1677 "v6.0.5": True, 1678 "v6.4.4": True, 1679 "v6.4.0": True, 1680 "v6.4.1": True, 1681 "v6.2.0": True, 1682 "v6.2.3": True, 1683 "v6.2.5": True, 1684 "v6.2.7": True, 1685 "v6.0.11": True 1686 } 1687 }, 1688 { 1689 "value": "wc-ap-up", 1690 "revisions": { 1691 "v6.0.0": True, 1692 "v7.0.0": True, 1693 "v6.0.5": True, 1694 "v6.4.4": True, 1695 "v6.4.0": True, 1696 "v6.4.1": True, 1697 "v6.2.0": True, 1698 "v6.2.3": True, 1699 "v6.2.5": True, 1700 "v6.2.7": True, 1701 "v6.0.11": True 1702 } 1703 }, 1704 { 1705 "value": "wc-ap-down", 1706 "revisions": { 1707 "v6.0.0": True, 1708 "v7.0.0": True, 1709 "v6.0.5": True, 1710 "v6.4.4": True, 1711 "v6.4.0": True, 1712 "v6.4.1": True, 1713 "v6.2.0": True, 1714 "v6.2.3": True, 1715 "v6.2.5": True, 1716 "v6.2.7": True, 1717 "v6.0.11": True 1718 } 1719 }, 1720 { 1721 "value": "fswctl-session-up", 1722 "revisions": { 1723 "v6.0.0": True, 1724 "v7.0.0": True, 1725 "v6.0.5": True, 1726 "v6.4.4": True, 1727 "v6.4.0": True, 1728 "v6.4.1": True, 1729 "v6.2.0": True, 1730 "v6.2.3": True, 1731 "v6.2.5": True, 1732 "v6.2.7": True, 1733 "v6.0.11": True 1734 } 1735 }, 1736 { 1737 "value": "fswctl-session-down", 1738 "revisions": { 1739 "v6.0.0": True, 1740 "v7.0.0": True, 1741 "v6.0.5": True, 1742 "v6.4.4": True, 1743 "v6.4.0": True, 1744 "v6.4.1": True, 1745 "v6.2.0": True, 1746 "v6.2.3": True, 1747 "v6.2.5": True, 1748 "v6.2.7": True, 1749 "v6.0.11": True 1750 } 1751 }, 1752 { 1753 "value": "load-balance-real-server-down", 1754 "revisions": { 1755 "v6.0.0": True, 1756 "v7.0.0": True, 1757 "v6.0.5": True, 1758 "v6.4.4": True, 1759 "v6.4.0": True, 1760 "v6.4.1": True, 1761 "v6.2.0": True, 1762 "v6.2.3": True, 1763 "v6.2.5": True, 1764 "v6.2.7": True, 1765 "v6.0.11": True 1766 } 1767 }, 1768 { 1769 "value": "device-new", 1770 "revisions": { 1771 "v6.0.0": True, 1772 "v7.0.0": True, 1773 "v6.0.5": True, 1774 "v6.4.4": True, 1775 "v6.4.0": True, 1776 "v6.4.1": True, 1777 "v6.2.0": True, 1778 "v6.2.3": True, 1779 "v6.2.5": True, 1780 "v6.2.7": True, 1781 "v6.0.11": True 1782 } 1783 }, 1784 { 1785 "value": "per-cpu-high", 1786 "revisions": { 1787 "v6.0.0": True, 1788 "v7.0.0": True, 1789 "v6.0.5": True, 1790 "v6.4.4": True, 1791 "v6.4.0": True, 1792 "v6.4.1": True, 1793 "v6.2.0": True, 1794 "v6.2.3": True, 1795 "v6.2.5": True, 1796 "v6.2.7": True, 1797 "v6.0.11": True 1798 } 1799 }, 1800 { 1801 "value": "dhcp", 1802 "revisions": { 1803 "v6.4.4": True, 1804 "v7.0.0": True, 1805 "v6.4.0": True, 1806 "v6.4.1": True 1807 } 1808 }, 1809 { 1810 "value": "ospf-nbr-state-change", 1811 "revisions": { 1812 "v7.0.0": True 1813 } 1814 }, 1815 { 1816 "value": "ospf-virtnbr-state-change", 1817 "revisions": { 1818 "v7.0.0": True 1819 } 1820 } 1821 ], 1822 "revisions": { 1823 "v6.0.0": True, 1824 "v7.0.0": True, 1825 "v6.0.5": True, 1826 "v6.4.4": True, 1827 "v6.4.0": True, 1828 "v6.4.1": True, 1829 "v6.2.0": True, 1830 "v6.2.3": True, 1831 "v6.2.5": True, 1832 "v6.2.7": True, 1833 "v6.0.11": True 1834 } 1835 }, 1836 "query_v2c_status": { 1837 "type": "string", 1838 "options": [ 1839 { 1840 "value": "enable", 1841 "revisions": { 1842 "v6.0.0": True, 1843 "v7.0.0": True, 1844 "v6.0.5": True, 1845 "v6.4.4": True, 1846 "v6.4.0": True, 1847 "v6.4.1": True, 1848 "v6.2.0": True, 1849 "v6.2.3": True, 1850 "v6.2.5": True, 1851 "v6.2.7": True, 1852 "v6.0.11": True 1853 } 1854 }, 1855 { 1856 "value": "disable", 1857 "revisions": { 1858 "v6.0.0": True, 1859 "v7.0.0": True, 1860 "v6.0.5": True, 1861 "v6.4.4": True, 1862 "v6.4.0": True, 1863 "v6.4.1": True, 1864 "v6.2.0": True, 1865 "v6.2.3": True, 1866 "v6.2.5": True, 1867 "v6.2.7": True, 1868 "v6.0.11": True 1869 } 1870 } 1871 ], 1872 "revisions": { 1873 "v6.0.0": True, 1874 "v7.0.0": True, 1875 "v6.0.5": True, 1876 "v6.4.4": True, 1877 "v6.4.0": True, 1878 "v6.4.1": True, 1879 "v6.2.0": True, 1880 "v6.2.3": True, 1881 "v6.2.5": True, 1882 "v6.2.7": True, 1883 "v6.0.11": True 1884 } 1885 }, 1886 "trap_v2c_lport": { 1887 "type": "integer", 1888 "revisions": { 1889 "v6.0.0": True, 1890 "v7.0.0": True, 1891 "v6.0.5": True, 1892 "v6.4.4": True, 1893 "v6.4.0": True, 1894 "v6.4.1": True, 1895 "v6.2.0": True, 1896 "v6.2.3": True, 1897 "v6.2.5": True, 1898 "v6.2.7": True, 1899 "v6.0.11": True 1900 } 1901 }, 1902 "query_v2c_port": { 1903 "type": "integer", 1904 "revisions": { 1905 "v6.0.0": True, 1906 "v7.0.0": True, 1907 "v6.0.5": True, 1908 "v6.4.4": True, 1909 "v6.4.0": True, 1910 "v6.4.1": True, 1911 "v6.2.0": True, 1912 "v6.2.3": True, 1913 "v6.2.5": True, 1914 "v6.2.7": True, 1915 "v6.0.11": True 1916 } 1917 } 1918 }, 1919 "revisions": { 1920 "v6.0.0": True, 1921 "v7.0.0": True, 1922 "v6.0.5": True, 1923 "v6.4.4": True, 1924 "v6.4.0": True, 1925 "v6.4.1": True, 1926 "v6.2.0": True, 1927 "v6.2.3": True, 1928 "v6.2.5": True, 1929 "v6.2.7": True, 1930 "v6.0.11": True 1931 } 1932} 1933 1934 1935def main(): 1936 module_spec = schema_to_module_spec(versioned_schema) 1937 mkeyname = 'id' 1938 fields = { 1939 "access_token": {"required": False, "type": "str", "no_log": True}, 1940 "enable_log": {"required": False, "type": bool}, 1941 "vdom": {"required": False, "type": "str", "default": "root"}, 1942 "state": {"required": True, "type": "str", 1943 "choices": ["present", "absent"]}, 1944 "system_snmp_community": { 1945 "required": False, "type": "dict", "default": None, 1946 "options": { 1947 } 1948 } 1949 } 1950 for attribute_name in module_spec['options']: 1951 fields["system_snmp_community"]['options'][attribute_name] = module_spec['options'][attribute_name] 1952 if mkeyname and mkeyname == attribute_name: 1953 fields["system_snmp_community"]['options'][attribute_name]['required'] = True 1954 1955 check_legacy_fortiosapi() 1956 module = AnsibleModule(argument_spec=fields, 1957 supports_check_mode=True) 1958 1959 versions_check_result = None 1960 if module._socket_path: 1961 connection = Connection(module._socket_path) 1962 if 'access_token' in module.params: 1963 connection.set_option('access_token', module.params['access_token']) 1964 1965 if 'enable_log' in module.params: 1966 connection.set_option('enable_log', module.params['enable_log']) 1967 else: 1968 connection.set_option('enable_log', False) 1969 fos = FortiOSHandler(connection, module, mkeyname) 1970 versions_check_result = check_schema_versioning(fos, versioned_schema, "system_snmp_community") 1971 1972 is_error, has_changed, result = fortios_system_snmp(module.params, fos, module.check_mode) 1973 1974 else: 1975 module.fail_json(**FAIL_SOCKET_MSG) 1976 1977 if versions_check_result and versions_check_result['matched'] is False: 1978 module.warn("Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv") 1979 1980 if not is_error: 1981 if versions_check_result and versions_check_result['matched'] is False: 1982 module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result) 1983 else: 1984 module.exit_json(changed=has_changed, meta=result) 1985 else: 1986 if versions_check_result and versions_check_result['matched'] is False: 1987 module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result) 1988 else: 1989 module.fail_json(msg="Error in repo", meta=result) 1990 1991 1992if __name__ == '__main__': 1993 main() 1994