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_log_disk_filter
27short_description: Configure filters for local disk logging. Use these filters to determine the log messages to record according to severity and type in
28   Fortinet's FortiOS and FortiGate.
29description:
30    - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the
31      user to set and modify log_disk feature and filter category.
32      Examples include all parameters and values need to be adjusted to datasources before usage.
33      Tested with FOS v6.0.0
34version_added: "2.10"
35author:
36    - Link Zheng (@chillancezen)
37    - Jie Xue (@JieX19)
38    - Hongbin Lu (@fgtdev-hblu)
39    - Frank Shen (@frankshen01)
40    - Miguel Angel Munoz (@mamunozgonzalez)
41    - Nicolas Thomas (@thomnico)
42notes:
43    - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks
44
45requirements:
46    - ansible>=2.9.0
47options:
48    access_token:
49        description:
50            - Token-based authentication.
51              Generated from GUI of Fortigate.
52        type: str
53        required: false
54    enable_log:
55        description:
56            - Enable/Disable logging for task.
57        type: bool
58        required: false
59        default: false
60    vdom:
61        description:
62            - Virtual domain, among those defined previously. A vdom is a
63              virtual instance of the FortiGate that can be configured and
64              used as a different unit.
65        type: str
66        default: root
67
68    log_disk_filter:
69        description:
70            - Configure filters for local disk logging. Use these filters to determine the log messages to record according to severity and type.
71        default: null
72        type: dict
73        suboptions:
74            admin:
75                description:
76                    - Enable/disable admin login/logout logging.
77                type: str
78                choices:
79                    - enable
80                    - disable
81            anomaly:
82                description:
83                    - Enable/disable anomaly logging.
84                type: str
85                choices:
86                    - enable
87                    - disable
88            auth:
89                description:
90                    - Enable/disable firewall authentication logging.
91                type: str
92                choices:
93                    - enable
94                    - disable
95            cpu_memory_usage:
96                description:
97                    - Enable/disable CPU & memory usage logging every 5 minutes.
98                type: str
99                choices:
100                    - enable
101                    - disable
102            dhcp:
103                description:
104                    - Enable/disable DHCP service messages logging.
105                type: str
106                choices:
107                    - enable
108                    - disable
109            dlp_archive:
110                description:
111                    - Enable/disable DLP archive logging.
112                type: str
113                choices:
114                    - enable
115                    - disable
116            dns:
117                description:
118                    - Enable/disable detailed DNS event logging.
119                type: str
120                choices:
121                    - enable
122                    - disable
123            event:
124                description:
125                    - Enable/disable event logging.
126                type: str
127                choices:
128                    - enable
129                    - disable
130            filter:
131                description:
132                    - Disk log filter.
133                type: str
134            filter_type:
135                description:
136                    - Include/exclude logs that match the filter.
137                type: str
138                choices:
139                    - include
140                    - exclude
141            forward_traffic:
142                description:
143                    - Enable/disable forward traffic logging.
144                type: str
145                choices:
146                    - enable
147                    - disable
148            free_style:
149                description:
150                    - Free Style Filters
151                type: list
152                suboptions:
153                    category:
154                        description:
155                            - Log category.
156                        type: str
157                        choices:
158                            - traffic
159                            - event
160                            - virus
161                            - webfilter
162                            - attack
163                            - spam
164                            - anomaly
165                            - voip
166                            - dlp
167                            - app-ctrl
168                            - waf
169                            - gtp
170                            - dns
171                            - ssh
172                            - ssl
173                            - file-filter
174                            - icap
175                    filter:
176                        description:
177                            - Free style filter string.
178                        type: str
179                    filter_type:
180                        description:
181                            - Include/exclude logs that match the filter.
182                        type: str
183                        choices:
184                            - include
185                            - exclude
186                    id:
187                        description:
188                            - Entry ID.
189                        required: true
190                        type: int
191            gtp:
192                description:
193                    - Enable/disable GTP messages logging.
194                type: str
195                choices:
196                    - enable
197                    - disable
198            ha:
199                description:
200                    - Enable/disable HA logging.
201                type: str
202                choices:
203                    - enable
204                    - disable
205            ipsec:
206                description:
207                    - Enable/disable IPsec negotiation messages logging.
208                type: str
209                choices:
210                    - enable
211                    - disable
212            ldb_monitor:
213                description:
214                    - Enable/disable VIP real server health monitoring logging.
215                type: str
216                choices:
217                    - enable
218                    - disable
219            local_traffic:
220                description:
221                    - Enable/disable local in or out traffic logging.
222                type: str
223                choices:
224                    - enable
225                    - disable
226            multicast_traffic:
227                description:
228                    - Enable/disable multicast traffic logging.
229                type: str
230                choices:
231                    - enable
232                    - disable
233            netscan_discovery:
234                description:
235                    - Enable/disable netscan discovery event logging.
236                type: str
237            netscan_vulnerability:
238                description:
239                    - Enable/disable netscan vulnerability event logging.
240                type: str
241            notification:
242                description:
243                    - Enable/disable notification messages logging.
244                type: str
245                choices:
246                    - enable
247                    - disable
248            pattern:
249                description:
250                    - Enable/disable pattern update logging.
251                type: str
252                choices:
253                    - enable
254                    - disable
255            ppp:
256                description:
257                    - Enable/disable L2TP/PPTP/PPPoE logging.
258                type: str
259                choices:
260                    - enable
261                    - disable
262            radius:
263                description:
264                    - Enable/disable RADIUS messages logging.
265                type: str
266                choices:
267                    - enable
268                    - disable
269            severity:
270                description:
271                    - Log to disk every message above and including this severity level.
272                type: str
273                choices:
274                    - emergency
275                    - alert
276                    - critical
277                    - error
278                    - warning
279                    - notification
280                    - information
281                    - debug
282            sniffer_traffic:
283                description:
284                    - Enable/disable sniffer traffic logging.
285                type: str
286                choices:
287                    - enable
288                    - disable
289            ssh:
290                description:
291                    - Enable/disable SSH logging.
292                type: str
293                choices:
294                    - enable
295                    - disable
296            sslvpn_log_adm:
297                description:
298                    - Enable/disable SSL administrator login logging.
299                type: str
300                choices:
301                    - enable
302                    - disable
303            sslvpn_log_auth:
304                description:
305                    - Enable/disable SSL user authentication logging.
306                type: str
307                choices:
308                    - enable
309                    - disable
310            sslvpn_log_session:
311                description:
312                    - Enable/disable SSL session logging.
313                type: str
314                choices:
315                    - enable
316                    - disable
317            system:
318                description:
319                    - Enable/disable system activity logging.
320                type: str
321                choices:
322                    - enable
323                    - disable
324            vip_ssl:
325                description:
326                    - Enable/disable VIP SSL logging.
327                type: str
328                choices:
329                    - enable
330                    - disable
331            voip:
332                description:
333                    - Enable/disable VoIP logging.
334                type: str
335                choices:
336                    - enable
337                    - disable
338            wan_opt:
339                description:
340                    - Enable/disable WAN optimization event logging.
341                type: str
342                choices:
343                    - enable
344                    - disable
345            wireless_activity:
346                description:
347                    - Enable/disable wireless activity event logging.
348                type: str
349                choices:
350                    - enable
351                    - disable
352'''
353
354EXAMPLES = '''
355- hosts: fortigates
356  collections:
357    - fortinet.fortios
358  connection: httpapi
359  vars:
360   vdom: "root"
361   ansible_httpapi_use_ssl: yes
362   ansible_httpapi_validate_certs: no
363   ansible_httpapi_port: 443
364  tasks:
365  - name: Configure filters for local disk logging. Use these filters to determine the log messages to record according to severity and type.
366    fortios_log_disk_filter:
367      vdom:  "{{ vdom }}"
368      log_disk_filter:
369        admin: "enable"
370        anomaly: "enable"
371        auth: "enable"
372        cpu_memory_usage: "enable"
373        dhcp: "enable"
374        dlp_archive: "enable"
375        dns: "enable"
376        event: "enable"
377        filter: "<your_own_value>"
378        filter_type: "include"
379        forward_traffic: "enable"
380        free_style:
381         -
382            category: "traffic"
383            filter: "<your_own_value>"
384            filter_type: "include"
385            id:  "18"
386        gtp: "enable"
387        ha: "enable"
388        ipsec: "enable"
389        ldb_monitor: "enable"
390        local_traffic: "enable"
391        multicast_traffic: "enable"
392        netscan_discovery: "<your_own_value>"
393        netscan_vulnerability: "<your_own_value>"
394        notification: "enable"
395        pattern: "enable"
396        ppp: "enable"
397        radius: "enable"
398        severity: "emergency"
399        sniffer_traffic: "enable"
400        ssh: "enable"
401        sslvpn_log_adm: "enable"
402        sslvpn_log_auth: "enable"
403        sslvpn_log_session: "enable"
404        system: "enable"
405        vip_ssl: "enable"
406        voip: "enable"
407        wan_opt: "enable"
408        wireless_activity: "enable"
409
410'''
411
412RETURN = '''
413build:
414  description: Build number of the fortigate image
415  returned: always
416  type: str
417  sample: '1547'
418http_method:
419  description: Last method used to provision the content into FortiGate
420  returned: always
421  type: str
422  sample: 'PUT'
423http_status:
424  description: Last result given by FortiGate on last operation applied
425  returned: always
426  type: str
427  sample: "200"
428mkey:
429  description: Master key (id) used in the last call to FortiGate
430  returned: success
431  type: str
432  sample: "id"
433name:
434  description: Name of the table used to fulfill the request
435  returned: always
436  type: str
437  sample: "urlfilter"
438path:
439  description: Path of the table used to fulfill the request
440  returned: always
441  type: str
442  sample: "webfilter"
443revision:
444  description: Internal revision number
445  returned: always
446  type: str
447  sample: "17.0.2.10658"
448serial:
449  description: Serial number of the unit
450  returned: always
451  type: str
452  sample: "FGVMEVYYQT3AB5352"
453status:
454  description: Indication of the operation's result
455  returned: always
456  type: str
457  sample: "success"
458vdom:
459  description: Virtual domain used
460  returned: always
461  type: str
462  sample: "root"
463version:
464  description: Version of the FortiGate
465  returned: always
466  type: str
467  sample: "v5.6.3"
468
469'''
470from ansible.module_utils.basic import AnsibleModule
471from ansible.module_utils.connection import Connection
472from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import FortiOSHandler
473from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_legacy_fortiosapi
474from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import schema_to_module_spec
475from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_schema_versioning
476from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import FAIL_SOCKET_MSG
477from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import is_same_comparison
478from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import serialize
479
480
481def filter_log_disk_filter_data(json):
482    option_list = ['admin', 'anomaly', 'auth',
483                   'cpu_memory_usage', 'dhcp', 'dlp_archive',
484                   'dns', 'event', 'filter',
485                   'filter_type', 'forward_traffic', 'free_style',
486                   'gtp', 'ha', 'ipsec',
487                   'ldb_monitor', 'local_traffic', 'multicast_traffic',
488                   'netscan_discovery', 'netscan_vulnerability', 'notification',
489                   'pattern', 'ppp', 'radius',
490                   'severity', 'sniffer_traffic', 'ssh',
491                   'sslvpn_log_adm', 'sslvpn_log_auth', 'sslvpn_log_session',
492                   'system', 'vip_ssl', 'voip',
493                   'wan_opt', 'wireless_activity']
494    dictionary = {}
495
496    for attribute in option_list:
497        if attribute in json and json[attribute] is not None:
498            dictionary[attribute] = json[attribute]
499
500    return dictionary
501
502
503def underscore_to_hyphen(data):
504    if isinstance(data, list):
505        for i, elem in enumerate(data):
506            data[i] = underscore_to_hyphen(elem)
507    elif isinstance(data, dict):
508        new_data = {}
509        for k, v in data.items():
510            new_data[k.replace('_', '-')] = underscore_to_hyphen(v)
511        data = new_data
512
513    return data
514
515
516def log_disk_filter(data, fos):
517    vdom = data['vdom']
518    log_disk_filter_data = data['log_disk_filter']
519    filtered_data = underscore_to_hyphen(filter_log_disk_filter_data(log_disk_filter_data))
520
521    return fos.set('log.disk',
522                   'filter',
523                   data=filtered_data,
524                   vdom=vdom)
525
526
527def is_successful_status(status):
528    return status['status'] == "success" or \
529        status['http_method'] == "DELETE" and status['http_status'] == 404
530
531
532def fortios_log_disk(data, fos):
533
534    if data['log_disk_filter']:
535        resp = log_disk_filter(data, fos)
536    else:
537        fos._module.fail_json(msg='missing task body: %s' % ('log_disk_filter'))
538
539    return not is_successful_status(resp), \
540        resp['status'] == "success" and \
541        (resp['revision_changed'] if 'revision_changed' in resp else True), \
542        resp
543
544
545versioned_schema = {
546    "type": "dict",
547    "children": {
548        "free_style": {
549            "type": "list",
550            "children": {
551                "category": {
552                    "type": "string",
553                    "options": [
554                        {
555                            "value": "traffic",
556                            "revisions": {
557                                "v7.0.0": True
558                            }
559                        },
560                        {
561                            "value": "event",
562                            "revisions": {
563                                "v7.0.0": True
564                            }
565                        },
566                        {
567                            "value": "virus",
568                            "revisions": {
569                                "v7.0.0": True
570                            }
571                        },
572                        {
573                            "value": "webfilter",
574                            "revisions": {
575                                "v7.0.0": True
576                            }
577                        },
578                        {
579                            "value": "attack",
580                            "revisions": {
581                                "v7.0.0": True
582                            }
583                        },
584                        {
585                            "value": "spam",
586                            "revisions": {
587                                "v7.0.0": True
588                            }
589                        },
590                        {
591                            "value": "anomaly",
592                            "revisions": {
593                                "v7.0.0": True
594                            }
595                        },
596                        {
597                            "value": "voip",
598                            "revisions": {
599                                "v7.0.0": True
600                            }
601                        },
602                        {
603                            "value": "dlp",
604                            "revisions": {
605                                "v7.0.0": True
606                            }
607                        },
608                        {
609                            "value": "app-ctrl",
610                            "revisions": {
611                                "v7.0.0": True
612                            }
613                        },
614                        {
615                            "value": "waf",
616                            "revisions": {
617                                "v7.0.0": True
618                            }
619                        },
620                        {
621                            "value": "gtp",
622                            "revisions": {
623                                "v7.0.0": True
624                            }
625                        },
626                        {
627                            "value": "dns",
628                            "revisions": {
629                                "v7.0.0": True
630                            }
631                        },
632                        {
633                            "value": "ssh",
634                            "revisions": {
635                                "v7.0.0": True
636                            }
637                        },
638                        {
639                            "value": "ssl",
640                            "revisions": {
641                                "v7.0.0": True
642                            }
643                        },
644                        {
645                            "value": "file-filter",
646                            "revisions": {
647                                "v7.0.0": True
648                            }
649                        },
650                        {
651                            "value": "icap",
652                            "revisions": {
653                                "v7.0.0": True
654                            }
655                        }
656                    ],
657                    "revisions": {
658                        "v7.0.0": True
659                    }
660                },
661                "filter": {
662                    "type": "string",
663                    "revisions": {
664                        "v7.0.0": True
665                    }
666                },
667                "id": {
668                    "type": "integer",
669                    "revisions": {
670                        "v7.0.0": True
671                    }
672                },
673                "filter_type": {
674                    "type": "string",
675                    "options": [
676                        {
677                            "value": "include",
678                            "revisions": {
679                                "v7.0.0": True
680                            }
681                        },
682                        {
683                            "value": "exclude",
684                            "revisions": {
685                                "v7.0.0": True
686                            }
687                        }
688                    ],
689                    "revisions": {
690                        "v7.0.0": True
691                    }
692                }
693            },
694            "revisions": {
695                "v7.0.0": True
696            }
697        },
698        "wan_opt": {
699            "type": "string",
700            "options": [
701                {
702                    "value": "enable",
703                    "revisions": {
704                        "v6.0.0": True,
705                        "v6.0.5": 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                {
714                    "value": "disable",
715                    "revisions": {
716                        "v6.0.0": True,
717                        "v6.0.5": True,
718                        "v6.2.0": True,
719                        "v6.2.3": True,
720                        "v6.2.5": True,
721                        "v6.2.7": True,
722                        "v6.0.11": True
723                    }
724                }
725            ],
726            "revisions": {
727                "v6.0.0": True,
728                "v7.0.0": False,
729                "v6.0.5": True,
730                "v6.4.4": False,
731                "v6.4.0": False,
732                "v6.4.1": False,
733                "v6.2.0": True,
734                "v6.2.3": True,
735                "v6.2.5": True,
736                "v6.2.7": True,
737                "v6.0.11": True
738            }
739        },
740        "filter_type": {
741            "type": "string",
742            "options": [
743                {
744                    "value": "include",
745                    "revisions": {
746                        "v6.0.0": True,
747                        "v6.0.5": True,
748                        "v6.4.4": True,
749                        "v6.4.0": True,
750                        "v6.4.1": True,
751                        "v6.2.0": True,
752                        "v6.2.3": True,
753                        "v6.2.5": True,
754                        "v6.2.7": True,
755                        "v6.0.11": True
756                    }
757                },
758                {
759                    "value": "exclude",
760                    "revisions": {
761                        "v6.0.0": True,
762                        "v6.0.5": True,
763                        "v6.4.4": True,
764                        "v6.4.0": True,
765                        "v6.4.1": True,
766                        "v6.2.0": True,
767                        "v6.2.3": True,
768                        "v6.2.5": True,
769                        "v6.2.7": True,
770                        "v6.0.11": True
771                    }
772                }
773            ],
774            "revisions": {
775                "v6.0.0": True,
776                "v7.0.0": False,
777                "v6.0.5": True,
778                "v6.4.4": True,
779                "v6.4.0": True,
780                "v6.4.1": True,
781                "v6.2.0": True,
782                "v6.2.3": True,
783                "v6.2.5": True,
784                "v6.2.7": True,
785                "v6.0.11": True
786            }
787        },
788        "local_traffic": {
789            "type": "string",
790            "options": [
791                {
792                    "value": "enable",
793                    "revisions": {
794                        "v6.0.0": True,
795                        "v7.0.0": True,
796                        "v6.0.5": True,
797                        "v6.4.4": True,
798                        "v6.4.0": True,
799                        "v6.4.1": True,
800                        "v6.2.0": True,
801                        "v6.2.3": True,
802                        "v6.2.5": True,
803                        "v6.2.7": True,
804                        "v6.0.11": True
805                    }
806                },
807                {
808                    "value": "disable",
809                    "revisions": {
810                        "v6.0.0": True,
811                        "v7.0.0": True,
812                        "v6.0.5": True,
813                        "v6.4.4": True,
814                        "v6.4.0": True,
815                        "v6.4.1": True,
816                        "v6.2.0": True,
817                        "v6.2.3": True,
818                        "v6.2.5": True,
819                        "v6.2.7": True,
820                        "v6.0.11": True
821                    }
822                }
823            ],
824            "revisions": {
825                "v6.0.0": True,
826                "v7.0.0": True,
827                "v6.0.5": True,
828                "v6.4.4": True,
829                "v6.4.0": True,
830                "v6.4.1": True,
831                "v6.2.0": True,
832                "v6.2.3": True,
833                "v6.2.5": True,
834                "v6.2.7": True,
835                "v6.0.11": True
836            }
837        },
838        "netscan_vulnerability": {
839            "type": "string",
840            "revisions": {
841                "v6.0.0": True,
842                "v7.0.0": False,
843                "v6.0.5": True,
844                "v6.4.4": False,
845                "v6.4.0": False,
846                "v6.4.1": False,
847                "v6.2.0": False,
848                "v6.2.3": False,
849                "v6.2.5": False,
850                "v6.2.7": False,
851                "v6.0.11": True
852            }
853        },
854        "ppp": {
855            "type": "string",
856            "options": [
857                {
858                    "value": "enable",
859                    "revisions": {
860                        "v6.0.0": True,
861                        "v6.0.5": True,
862                        "v6.2.0": True,
863                        "v6.2.3": True,
864                        "v6.2.5": True,
865                        "v6.2.7": True,
866                        "v6.0.11": True
867                    }
868                },
869                {
870                    "value": "disable",
871                    "revisions": {
872                        "v6.0.0": True,
873                        "v6.0.5": True,
874                        "v6.2.0": True,
875                        "v6.2.3": True,
876                        "v6.2.5": True,
877                        "v6.2.7": True,
878                        "v6.0.11": True
879                    }
880                }
881            ],
882            "revisions": {
883                "v6.0.0": True,
884                "v7.0.0": False,
885                "v6.0.5": True,
886                "v6.4.4": False,
887                "v6.4.0": False,
888                "v6.4.1": False,
889                "v6.2.0": True,
890                "v6.2.3": True,
891                "v6.2.5": True,
892                "v6.2.7": True,
893                "v6.0.11": True
894            }
895        },
896        "radius": {
897            "type": "string",
898            "options": [
899                {
900                    "value": "enable",
901                    "revisions": {
902                        "v6.0.0": True,
903                        "v6.0.5": True,
904                        "v6.2.0": True,
905                        "v6.2.3": True,
906                        "v6.2.5": True,
907                        "v6.2.7": True,
908                        "v6.0.11": True
909                    }
910                },
911                {
912                    "value": "disable",
913                    "revisions": {
914                        "v6.0.0": True,
915                        "v6.0.5": True,
916                        "v6.2.0": True,
917                        "v6.2.3": True,
918                        "v6.2.5": True,
919                        "v6.2.7": True,
920                        "v6.0.11": True
921                    }
922                }
923            ],
924            "revisions": {
925                "v6.0.0": True,
926                "v7.0.0": False,
927                "v6.0.5": True,
928                "v6.4.4": False,
929                "v6.4.0": False,
930                "v6.4.1": False,
931                "v6.2.0": True,
932                "v6.2.3": True,
933                "v6.2.5": True,
934                "v6.2.7": True,
935                "v6.0.11": True
936            }
937        },
938        "event": {
939            "type": "string",
940            "options": [
941                {
942                    "value": "enable",
943                    "revisions": {
944                        "v6.0.0": True,
945                        "v6.0.5": True,
946                        "v6.2.0": True,
947                        "v6.2.3": True,
948                        "v6.2.5": True,
949                        "v6.2.7": True,
950                        "v6.0.11": True
951                    }
952                },
953                {
954                    "value": "disable",
955                    "revisions": {
956                        "v6.0.0": True,
957                        "v6.0.5": True,
958                        "v6.2.0": True,
959                        "v6.2.3": True,
960                        "v6.2.5": True,
961                        "v6.2.7": True,
962                        "v6.0.11": True
963                    }
964                }
965            ],
966            "revisions": {
967                "v6.0.0": True,
968                "v7.0.0": False,
969                "v6.0.5": True,
970                "v6.4.4": False,
971                "v6.4.0": False,
972                "v6.4.1": False,
973                "v6.2.0": True,
974                "v6.2.3": True,
975                "v6.2.5": True,
976                "v6.2.7": True,
977                "v6.0.11": True
978            }
979        },
980        "multicast_traffic": {
981            "type": "string",
982            "options": [
983                {
984                    "value": "enable",
985                    "revisions": {
986                        "v6.0.0": True,
987                        "v7.0.0": True,
988                        "v6.0.5": True,
989                        "v6.4.4": True,
990                        "v6.4.0": True,
991                        "v6.4.1": True,
992                        "v6.2.0": True,
993                        "v6.2.3": True,
994                        "v6.2.5": True,
995                        "v6.2.7": True,
996                        "v6.0.11": True
997                    }
998                },
999                {
1000                    "value": "disable",
1001                    "revisions": {
1002                        "v6.0.0": True,
1003                        "v7.0.0": True,
1004                        "v6.0.5": True,
1005                        "v6.4.4": True,
1006                        "v6.4.0": True,
1007                        "v6.4.1": True,
1008                        "v6.2.0": True,
1009                        "v6.2.3": True,
1010                        "v6.2.5": True,
1011                        "v6.2.7": True,
1012                        "v6.0.11": True
1013                    }
1014                }
1015            ],
1016            "revisions": {
1017                "v6.0.0": True,
1018                "v7.0.0": True,
1019                "v6.0.5": True,
1020                "v6.4.4": True,
1021                "v6.4.0": True,
1022                "v6.4.1": True,
1023                "v6.2.0": True,
1024                "v6.2.3": True,
1025                "v6.2.5": True,
1026                "v6.2.7": True,
1027                "v6.0.11": True
1028            }
1029        },
1030        "severity": {
1031            "type": "string",
1032            "options": [
1033                {
1034                    "value": "emergency",
1035                    "revisions": {
1036                        "v6.0.0": True,
1037                        "v7.0.0": True,
1038                        "v6.0.5": True,
1039                        "v6.4.4": True,
1040                        "v6.4.0": True,
1041                        "v6.4.1": True,
1042                        "v6.2.0": True,
1043                        "v6.2.3": True,
1044                        "v6.2.5": True,
1045                        "v6.2.7": True,
1046                        "v6.0.11": True
1047                    }
1048                },
1049                {
1050                    "value": "alert",
1051                    "revisions": {
1052                        "v6.0.0": True,
1053                        "v7.0.0": True,
1054                        "v6.0.5": True,
1055                        "v6.4.4": True,
1056                        "v6.4.0": True,
1057                        "v6.4.1": True,
1058                        "v6.2.0": True,
1059                        "v6.2.3": True,
1060                        "v6.2.5": True,
1061                        "v6.2.7": True,
1062                        "v6.0.11": True
1063                    }
1064                },
1065                {
1066                    "value": "critical",
1067                    "revisions": {
1068                        "v6.0.0": True,
1069                        "v7.0.0": True,
1070                        "v6.0.5": True,
1071                        "v6.4.4": True,
1072                        "v6.4.0": True,
1073                        "v6.4.1": True,
1074                        "v6.2.0": True,
1075                        "v6.2.3": True,
1076                        "v6.2.5": True,
1077                        "v6.2.7": True,
1078                        "v6.0.11": True
1079                    }
1080                },
1081                {
1082                    "value": "error",
1083                    "revisions": {
1084                        "v6.0.0": True,
1085                        "v7.0.0": True,
1086                        "v6.0.5": True,
1087                        "v6.4.4": True,
1088                        "v6.4.0": True,
1089                        "v6.4.1": True,
1090                        "v6.2.0": True,
1091                        "v6.2.3": True,
1092                        "v6.2.5": True,
1093                        "v6.2.7": True,
1094                        "v6.0.11": True
1095                    }
1096                },
1097                {
1098                    "value": "warning",
1099                    "revisions": {
1100                        "v6.0.0": True,
1101                        "v7.0.0": True,
1102                        "v6.0.5": True,
1103                        "v6.4.4": True,
1104                        "v6.4.0": True,
1105                        "v6.4.1": True,
1106                        "v6.2.0": True,
1107                        "v6.2.3": True,
1108                        "v6.2.5": True,
1109                        "v6.2.7": True,
1110                        "v6.0.11": True
1111                    }
1112                },
1113                {
1114                    "value": "notification",
1115                    "revisions": {
1116                        "v6.0.0": True,
1117                        "v7.0.0": True,
1118                        "v6.0.5": True,
1119                        "v6.4.4": True,
1120                        "v6.4.0": True,
1121                        "v6.4.1": True,
1122                        "v6.2.0": True,
1123                        "v6.2.3": True,
1124                        "v6.2.5": True,
1125                        "v6.2.7": True,
1126                        "v6.0.11": True
1127                    }
1128                },
1129                {
1130                    "value": "information",
1131                    "revisions": {
1132                        "v6.0.0": True,
1133                        "v7.0.0": True,
1134                        "v6.0.5": True,
1135                        "v6.4.4": True,
1136                        "v6.4.0": True,
1137                        "v6.4.1": True,
1138                        "v6.2.0": True,
1139                        "v6.2.3": True,
1140                        "v6.2.5": True,
1141                        "v6.2.7": True,
1142                        "v6.0.11": True
1143                    }
1144                },
1145                {
1146                    "value": "debug",
1147                    "revisions": {
1148                        "v6.0.0": True,
1149                        "v7.0.0": True,
1150                        "v6.0.5": True,
1151                        "v6.4.4": True,
1152                        "v6.4.0": True,
1153                        "v6.4.1": True,
1154                        "v6.2.0": True,
1155                        "v6.2.3": True,
1156                        "v6.2.5": True,
1157                        "v6.2.7": True,
1158                        "v6.0.11": True
1159                    }
1160                }
1161            ],
1162            "revisions": {
1163                "v6.0.0": True,
1164                "v7.0.0": True,
1165                "v6.0.5": True,
1166                "v6.4.4": True,
1167                "v6.4.0": True,
1168                "v6.4.1": True,
1169                "v6.2.0": True,
1170                "v6.2.3": True,
1171                "v6.2.5": True,
1172                "v6.2.7": True,
1173                "v6.0.11": True
1174            }
1175        },
1176        "sslvpn_log_session": {
1177            "type": "string",
1178            "options": [
1179                {
1180                    "value": "enable",
1181                    "revisions": {
1182                        "v6.0.0": True,
1183                        "v6.0.5": True,
1184                        "v6.2.0": True,
1185                        "v6.2.3": True,
1186                        "v6.2.5": True,
1187                        "v6.2.7": True,
1188                        "v6.0.11": True
1189                    }
1190                },
1191                {
1192                    "value": "disable",
1193                    "revisions": {
1194                        "v6.0.0": True,
1195                        "v6.0.5": True,
1196                        "v6.2.0": True,
1197                        "v6.2.3": True,
1198                        "v6.2.5": True,
1199                        "v6.2.7": True,
1200                        "v6.0.11": True
1201                    }
1202                }
1203            ],
1204            "revisions": {
1205                "v6.0.0": True,
1206                "v7.0.0": False,
1207                "v6.0.5": True,
1208                "v6.4.4": False,
1209                "v6.4.0": False,
1210                "v6.4.1": False,
1211                "v6.2.0": True,
1212                "v6.2.3": True,
1213                "v6.2.5": True,
1214                "v6.2.7": True,
1215                "v6.0.11": True
1216            }
1217        },
1218        "notification": {
1219            "type": "string",
1220            "options": [
1221                {
1222                    "value": "enable",
1223                    "revisions": {
1224                        "v6.0.0": True,
1225                        "v6.0.5": True,
1226                        "v6.2.0": True,
1227                        "v6.2.3": True,
1228                        "v6.2.5": True,
1229                        "v6.2.7": True,
1230                        "v6.0.11": True
1231                    }
1232                },
1233                {
1234                    "value": "disable",
1235                    "revisions": {
1236                        "v6.0.0": True,
1237                        "v6.0.5": True,
1238                        "v6.2.0": True,
1239                        "v6.2.3": True,
1240                        "v6.2.5": True,
1241                        "v6.2.7": True,
1242                        "v6.0.11": True
1243                    }
1244                }
1245            ],
1246            "revisions": {
1247                "v6.0.0": True,
1248                "v7.0.0": False,
1249                "v6.0.5": True,
1250                "v6.4.4": False,
1251                "v6.4.0": False,
1252                "v6.4.1": False,
1253                "v6.2.0": True,
1254                "v6.2.3": True,
1255                "v6.2.5": True,
1256                "v6.2.7": True,
1257                "v6.0.11": True
1258            }
1259        },
1260        "system": {
1261            "type": "string",
1262            "options": [
1263                {
1264                    "value": "enable",
1265                    "revisions": {
1266                        "v6.0.0": True,
1267                        "v6.0.5": True,
1268                        "v6.2.0": True,
1269                        "v6.2.3": True,
1270                        "v6.2.5": True,
1271                        "v6.2.7": True,
1272                        "v6.0.11": True
1273                    }
1274                },
1275                {
1276                    "value": "disable",
1277                    "revisions": {
1278                        "v6.0.0": True,
1279                        "v6.0.5": True,
1280                        "v6.2.0": True,
1281                        "v6.2.3": True,
1282                        "v6.2.5": True,
1283                        "v6.2.7": True,
1284                        "v6.0.11": True
1285                    }
1286                }
1287            ],
1288            "revisions": {
1289                "v6.0.0": True,
1290                "v7.0.0": False,
1291                "v6.0.5": True,
1292                "v6.4.4": False,
1293                "v6.4.0": False,
1294                "v6.4.1": False,
1295                "v6.2.0": True,
1296                "v6.2.3": True,
1297                "v6.2.5": True,
1298                "v6.2.7": True,
1299                "v6.0.11": True
1300            }
1301        },
1302        "gtp": {
1303            "type": "string",
1304            "options": [
1305                {
1306                    "value": "enable",
1307                    "revisions": {
1308                        "v6.0.0": True,
1309                        "v7.0.0": True,
1310                        "v6.0.5": True,
1311                        "v6.4.4": True,
1312                        "v6.4.0": True,
1313                        "v6.4.1": True,
1314                        "v6.2.0": True,
1315                        "v6.2.3": True,
1316                        "v6.2.5": True,
1317                        "v6.2.7": True,
1318                        "v6.0.11": True
1319                    }
1320                },
1321                {
1322                    "value": "disable",
1323                    "revisions": {
1324                        "v6.0.0": True,
1325                        "v7.0.0": True,
1326                        "v6.0.5": True,
1327                        "v6.4.4": True,
1328                        "v6.4.0": True,
1329                        "v6.4.1": True,
1330                        "v6.2.0": True,
1331                        "v6.2.3": True,
1332                        "v6.2.5": True,
1333                        "v6.2.7": True,
1334                        "v6.0.11": True
1335                    }
1336                }
1337            ],
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        "sniffer_traffic": {
1353            "type": "string",
1354            "options": [
1355                {
1356                    "value": "enable",
1357                    "revisions": {
1358                        "v6.0.0": True,
1359                        "v7.0.0": True,
1360                        "v6.0.5": True,
1361                        "v6.4.4": True,
1362                        "v6.4.0": True,
1363                        "v6.4.1": True,
1364                        "v6.2.0": True,
1365                        "v6.2.3": True,
1366                        "v6.2.5": True,
1367                        "v6.2.7": True,
1368                        "v6.0.11": True
1369                    }
1370                },
1371                {
1372                    "value": "disable",
1373                    "revisions": {
1374                        "v6.0.0": True,
1375                        "v7.0.0": True,
1376                        "v6.0.5": True,
1377                        "v6.4.4": True,
1378                        "v6.4.0": True,
1379                        "v6.4.1": True,
1380                        "v6.2.0": True,
1381                        "v6.2.3": True,
1382                        "v6.2.5": True,
1383                        "v6.2.7": True,
1384                        "v6.0.11": True
1385                    }
1386                }
1387            ],
1388            "revisions": {
1389                "v6.0.0": True,
1390                "v7.0.0": True,
1391                "v6.0.5": True,
1392                "v6.4.4": True,
1393                "v6.4.0": True,
1394                "v6.4.1": True,
1395                "v6.2.0": True,
1396                "v6.2.3": True,
1397                "v6.2.5": True,
1398                "v6.2.7": True,
1399                "v6.0.11": True
1400            }
1401        },
1402        "voip": {
1403            "type": "string",
1404            "options": [
1405                {
1406                    "value": "enable",
1407                    "revisions": {
1408                        "v6.0.0": True,
1409                        "v7.0.0": True,
1410                        "v6.0.5": True,
1411                        "v6.4.4": True,
1412                        "v6.4.0": True,
1413                        "v6.4.1": True,
1414                        "v6.2.0": True,
1415                        "v6.2.3": True,
1416                        "v6.2.5": True,
1417                        "v6.2.7": True,
1418                        "v6.0.11": True
1419                    }
1420                },
1421                {
1422                    "value": "disable",
1423                    "revisions": {
1424                        "v6.0.0": True,
1425                        "v7.0.0": True,
1426                        "v6.0.5": True,
1427                        "v6.4.4": True,
1428                        "v6.4.0": True,
1429                        "v6.4.1": True,
1430                        "v6.2.0": True,
1431                        "v6.2.3": True,
1432                        "v6.2.5": True,
1433                        "v6.2.7": True,
1434                        "v6.0.11": True
1435                    }
1436                }
1437            ],
1438            "revisions": {
1439                "v6.0.0": True,
1440                "v7.0.0": True,
1441                "v6.0.5": True,
1442                "v6.4.4": True,
1443                "v6.4.0": True,
1444                "v6.4.1": True,
1445                "v6.2.0": True,
1446                "v6.2.3": True,
1447                "v6.2.5": True,
1448                "v6.2.7": True,
1449                "v6.0.11": True
1450            }
1451        },
1452        "dns": {
1453            "type": "string",
1454            "options": [
1455                {
1456                    "value": "enable",
1457                    "revisions": {
1458                        "v6.0.11": True,
1459                        "v6.0.0": True,
1460                        "v6.0.5": True
1461                    }
1462                },
1463                {
1464                    "value": "disable",
1465                    "revisions": {
1466                        "v6.0.11": True,
1467                        "v6.0.0": True,
1468                        "v6.0.5": True
1469                    }
1470                }
1471            ],
1472            "revisions": {
1473                "v6.0.0": True,
1474                "v7.0.0": False,
1475                "v6.0.5": True,
1476                "v6.4.4": False,
1477                "v6.4.0": False,
1478                "v6.4.1": False,
1479                "v6.2.0": False,
1480                "v6.2.3": False,
1481                "v6.2.5": False,
1482                "v6.2.7": False,
1483                "v6.0.11": True
1484            }
1485        },
1486        "dhcp": {
1487            "type": "string",
1488            "options": [
1489                {
1490                    "value": "enable",
1491                    "revisions": {
1492                        "v6.0.0": True,
1493                        "v6.0.5": True,
1494                        "v6.2.0": True,
1495                        "v6.2.3": True,
1496                        "v6.2.5": True,
1497                        "v6.2.7": True,
1498                        "v6.0.11": True
1499                    }
1500                },
1501                {
1502                    "value": "disable",
1503                    "revisions": {
1504                        "v6.0.0": True,
1505                        "v6.0.5": True,
1506                        "v6.2.0": True,
1507                        "v6.2.3": True,
1508                        "v6.2.5": True,
1509                        "v6.2.7": True,
1510                        "v6.0.11": True
1511                    }
1512                }
1513            ],
1514            "revisions": {
1515                "v6.0.0": True,
1516                "v7.0.0": False,
1517                "v6.0.5": True,
1518                "v6.4.4": False,
1519                "v6.4.0": False,
1520                "v6.4.1": False,
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        "anomaly": {
1529            "type": "string",
1530            "options": [
1531                {
1532                    "value": "enable",
1533                    "revisions": {
1534                        "v6.0.0": True,
1535                        "v7.0.0": True,
1536                        "v6.0.5": True,
1537                        "v6.4.4": True,
1538                        "v6.4.0": True,
1539                        "v6.4.1": True,
1540                        "v6.2.0": True,
1541                        "v6.2.3": True,
1542                        "v6.2.5": True,
1543                        "v6.2.7": True,
1544                        "v6.0.11": True
1545                    }
1546                },
1547                {
1548                    "value": "disable",
1549                    "revisions": {
1550                        "v6.0.0": True,
1551                        "v7.0.0": True,
1552                        "v6.0.5": True,
1553                        "v6.4.4": True,
1554                        "v6.4.0": True,
1555                        "v6.4.1": True,
1556                        "v6.2.0": True,
1557                        "v6.2.3": True,
1558                        "v6.2.5": True,
1559                        "v6.2.7": True,
1560                        "v6.0.11": True
1561                    }
1562                }
1563            ],
1564            "revisions": {
1565                "v6.0.0": True,
1566                "v7.0.0": True,
1567                "v6.0.5": True,
1568                "v6.4.4": True,
1569                "v6.4.0": True,
1570                "v6.4.1": True,
1571                "v6.2.0": True,
1572                "v6.2.3": True,
1573                "v6.2.5": True,
1574                "v6.2.7": True,
1575                "v6.0.11": True
1576            }
1577        },
1578        "auth": {
1579            "type": "string",
1580            "options": [
1581                {
1582                    "value": "enable",
1583                    "revisions": {
1584                        "v6.0.0": True,
1585                        "v6.0.5": True,
1586                        "v6.2.0": True,
1587                        "v6.2.3": True,
1588                        "v6.2.5": True,
1589                        "v6.2.7": True,
1590                        "v6.0.11": True
1591                    }
1592                },
1593                {
1594                    "value": "disable",
1595                    "revisions": {
1596                        "v6.0.0": True,
1597                        "v6.0.5": True,
1598                        "v6.2.0": True,
1599                        "v6.2.3": True,
1600                        "v6.2.5": True,
1601                        "v6.2.7": True,
1602                        "v6.0.11": True
1603                    }
1604                }
1605            ],
1606            "revisions": {
1607                "v6.0.0": True,
1608                "v7.0.0": False,
1609                "v6.0.5": True,
1610                "v6.4.4": False,
1611                "v6.4.0": False,
1612                "v6.4.1": False,
1613                "v6.2.0": True,
1614                "v6.2.3": True,
1615                "v6.2.5": True,
1616                "v6.2.7": True,
1617                "v6.0.11": True
1618            }
1619        },
1620        "ldb_monitor": {
1621            "type": "string",
1622            "options": [
1623                {
1624                    "value": "enable",
1625                    "revisions": {
1626                        "v6.0.0": True,
1627                        "v6.0.5": True,
1628                        "v6.2.0": True,
1629                        "v6.2.3": True,
1630                        "v6.2.5": True,
1631                        "v6.2.7": True,
1632                        "v6.0.11": True
1633                    }
1634                },
1635                {
1636                    "value": "disable",
1637                    "revisions": {
1638                        "v6.0.0": True,
1639                        "v6.0.5": True,
1640                        "v6.2.0": True,
1641                        "v6.2.3": True,
1642                        "v6.2.5": True,
1643                        "v6.2.7": True,
1644                        "v6.0.11": True
1645                    }
1646                }
1647            ],
1648            "revisions": {
1649                "v6.0.0": True,
1650                "v7.0.0": False,
1651                "v6.0.5": True,
1652                "v6.4.4": False,
1653                "v6.4.0": False,
1654                "v6.4.1": False,
1655                "v6.2.0": True,
1656                "v6.2.3": True,
1657                "v6.2.5": True,
1658                "v6.2.7": True,
1659                "v6.0.11": True
1660            }
1661        },
1662        "ssh": {
1663            "type": "string",
1664            "options": [
1665                {
1666                    "value": "enable",
1667                    "revisions": {
1668                        "v6.0.11": True,
1669                        "v6.0.0": True,
1670                        "v6.0.5": True
1671                    }
1672                },
1673                {
1674                    "value": "disable",
1675                    "revisions": {
1676                        "v6.0.11": True,
1677                        "v6.0.0": True,
1678                        "v6.0.5": True
1679                    }
1680                }
1681            ],
1682            "revisions": {
1683                "v6.0.0": True,
1684                "v7.0.0": False,
1685                "v6.0.5": True,
1686                "v6.4.4": False,
1687                "v6.4.0": False,
1688                "v6.4.1": False,
1689                "v6.2.0": False,
1690                "v6.2.3": False,
1691                "v6.2.5": False,
1692                "v6.2.7": False,
1693                "v6.0.11": True
1694            }
1695        },
1696        "sslvpn_log_adm": {
1697            "type": "string",
1698            "options": [
1699                {
1700                    "value": "enable",
1701                    "revisions": {
1702                        "v6.0.0": True,
1703                        "v6.0.5": True,
1704                        "v6.2.0": True,
1705                        "v6.2.3": True,
1706                        "v6.2.5": True,
1707                        "v6.2.7": True,
1708                        "v6.0.11": True
1709                    }
1710                },
1711                {
1712                    "value": "disable",
1713                    "revisions": {
1714                        "v6.0.0": True,
1715                        "v6.0.5": True,
1716                        "v6.2.0": True,
1717                        "v6.2.3": True,
1718                        "v6.2.5": True,
1719                        "v6.2.7": True,
1720                        "v6.0.11": True
1721                    }
1722                }
1723            ],
1724            "revisions": {
1725                "v6.0.0": True,
1726                "v7.0.0": False,
1727                "v6.0.5": True,
1728                "v6.4.4": False,
1729                "v6.4.0": False,
1730                "v6.4.1": False,
1731                "v6.2.0": True,
1732                "v6.2.3": True,
1733                "v6.2.5": True,
1734                "v6.2.7": True,
1735                "v6.0.11": True
1736            }
1737        },
1738        "cpu_memory_usage": {
1739            "type": "string",
1740            "options": [
1741                {
1742                    "value": "enable",
1743                    "revisions": {
1744                        "v6.0.0": True,
1745                        "v6.0.5": True,
1746                        "v6.2.0": True,
1747                        "v6.2.3": True,
1748                        "v6.2.5": True,
1749                        "v6.2.7": True,
1750                        "v6.0.11": True
1751                    }
1752                },
1753                {
1754                    "value": "disable",
1755                    "revisions": {
1756                        "v6.0.0": True,
1757                        "v6.0.5": True,
1758                        "v6.2.0": True,
1759                        "v6.2.3": True,
1760                        "v6.2.5": True,
1761                        "v6.2.7": True,
1762                        "v6.0.11": True
1763                    }
1764                }
1765            ],
1766            "revisions": {
1767                "v6.0.0": True,
1768                "v7.0.0": False,
1769                "v6.0.5": True,
1770                "v6.4.4": False,
1771                "v6.4.0": False,
1772                "v6.4.1": False,
1773                "v6.2.0": True,
1774                "v6.2.3": True,
1775                "v6.2.5": True,
1776                "v6.2.7": True,
1777                "v6.0.11": True
1778            }
1779        },
1780        "netscan_discovery": {
1781            "type": "string",
1782            "revisions": {
1783                "v6.0.0": True,
1784                "v7.0.0": False,
1785                "v6.0.5": True,
1786                "v6.4.4": False,
1787                "v6.4.0": False,
1788                "v6.4.1": False,
1789                "v6.2.0": False,
1790                "v6.2.3": False,
1791                "v6.2.5": False,
1792                "v6.2.7": False,
1793                "v6.0.11": True
1794            }
1795        },
1796        "ha": {
1797            "type": "string",
1798            "options": [
1799                {
1800                    "value": "enable",
1801                    "revisions": {
1802                        "v6.0.0": True,
1803                        "v6.0.5": True,
1804                        "v6.2.0": True,
1805                        "v6.2.3": True,
1806                        "v6.2.5": True,
1807                        "v6.2.7": True,
1808                        "v6.0.11": True
1809                    }
1810                },
1811                {
1812                    "value": "disable",
1813                    "revisions": {
1814                        "v6.0.0": True,
1815                        "v6.0.5": True,
1816                        "v6.2.0": True,
1817                        "v6.2.3": True,
1818                        "v6.2.5": True,
1819                        "v6.2.7": True,
1820                        "v6.0.11": True
1821                    }
1822                }
1823            ],
1824            "revisions": {
1825                "v6.0.0": True,
1826                "v7.0.0": False,
1827                "v6.0.5": True,
1828                "v6.4.4": False,
1829                "v6.4.0": False,
1830                "v6.4.1": False,
1831                "v6.2.0": True,
1832                "v6.2.3": True,
1833                "v6.2.5": True,
1834                "v6.2.7": True,
1835                "v6.0.11": True
1836            }
1837        },
1838        "forward_traffic": {
1839            "type": "string",
1840            "options": [
1841                {
1842                    "value": "enable",
1843                    "revisions": {
1844                        "v6.0.0": True,
1845                        "v7.0.0": True,
1846                        "v6.0.5": True,
1847                        "v6.4.4": True,
1848                        "v6.4.0": True,
1849                        "v6.4.1": True,
1850                        "v6.2.0": True,
1851                        "v6.2.3": True,
1852                        "v6.2.5": True,
1853                        "v6.2.7": True,
1854                        "v6.0.11": True
1855                    }
1856                },
1857                {
1858                    "value": "disable",
1859                    "revisions": {
1860                        "v6.0.0": True,
1861                        "v7.0.0": True,
1862                        "v6.0.5": True,
1863                        "v6.4.4": True,
1864                        "v6.4.0": True,
1865                        "v6.4.1": True,
1866                        "v6.2.0": True,
1867                        "v6.2.3": True,
1868                        "v6.2.5": True,
1869                        "v6.2.7": True,
1870                        "v6.0.11": True
1871                    }
1872                }
1873            ],
1874            "revisions": {
1875                "v6.0.0": True,
1876                "v7.0.0": True,
1877                "v6.0.5": True,
1878                "v6.4.4": True,
1879                "v6.4.0": True,
1880                "v6.4.1": True,
1881                "v6.2.0": True,
1882                "v6.2.3": True,
1883                "v6.2.5": True,
1884                "v6.2.7": True,
1885                "v6.0.11": True
1886            }
1887        },
1888        "ipsec": {
1889            "type": "string",
1890            "options": [
1891                {
1892                    "value": "enable",
1893                    "revisions": {
1894                        "v6.0.0": True,
1895                        "v6.0.5": True,
1896                        "v6.2.0": True,
1897                        "v6.2.3": True,
1898                        "v6.2.5": True,
1899                        "v6.2.7": True,
1900                        "v6.0.11": True
1901                    }
1902                },
1903                {
1904                    "value": "disable",
1905                    "revisions": {
1906                        "v6.0.0": True,
1907                        "v6.0.5": True,
1908                        "v6.2.0": True,
1909                        "v6.2.3": True,
1910                        "v6.2.5": True,
1911                        "v6.2.7": True,
1912                        "v6.0.11": True
1913                    }
1914                }
1915            ],
1916            "revisions": {
1917                "v6.0.0": True,
1918                "v7.0.0": False,
1919                "v6.0.5": True,
1920                "v6.4.4": False,
1921                "v6.4.0": False,
1922                "v6.4.1": False,
1923                "v6.2.0": True,
1924                "v6.2.3": True,
1925                "v6.2.5": True,
1926                "v6.2.7": True,
1927                "v6.0.11": True
1928            }
1929        },
1930        "dlp_archive": {
1931            "type": "string",
1932            "options": [
1933                {
1934                    "value": "enable",
1935                    "revisions": {
1936                        "v6.0.0": True,
1937                        "v7.0.0": True,
1938                        "v6.0.5": True,
1939                        "v6.4.4": True,
1940                        "v6.4.0": True,
1941                        "v6.4.1": True,
1942                        "v6.2.0": True,
1943                        "v6.2.3": True,
1944                        "v6.2.5": True,
1945                        "v6.2.7": True,
1946                        "v6.0.11": True
1947                    }
1948                },
1949                {
1950                    "value": "disable",
1951                    "revisions": {
1952                        "v6.0.0": True,
1953                        "v7.0.0": True,
1954                        "v6.0.5": True,
1955                        "v6.4.4": True,
1956                        "v6.4.0": True,
1957                        "v6.4.1": True,
1958                        "v6.2.0": True,
1959                        "v6.2.3": True,
1960                        "v6.2.5": True,
1961                        "v6.2.7": True,
1962                        "v6.0.11": True
1963                    }
1964                }
1965            ],
1966            "revisions": {
1967                "v6.0.0": True,
1968                "v7.0.0": True,
1969                "v6.0.5": True,
1970                "v6.4.4": True,
1971                "v6.4.0": True,
1972                "v6.4.1": True,
1973                "v6.2.0": True,
1974                "v6.2.3": True,
1975                "v6.2.5": True,
1976                "v6.2.7": True,
1977                "v6.0.11": True
1978            }
1979        },
1980        "sslvpn_log_auth": {
1981            "type": "string",
1982            "options": [
1983                {
1984                    "value": "enable",
1985                    "revisions": {
1986                        "v6.0.0": True,
1987                        "v6.0.5": True,
1988                        "v6.2.0": True,
1989                        "v6.2.3": True,
1990                        "v6.2.5": True,
1991                        "v6.2.7": True,
1992                        "v6.0.11": True
1993                    }
1994                },
1995                {
1996                    "value": "disable",
1997                    "revisions": {
1998                        "v6.0.0": True,
1999                        "v6.0.5": True,
2000                        "v6.2.0": True,
2001                        "v6.2.3": True,
2002                        "v6.2.5": True,
2003                        "v6.2.7": True,
2004                        "v6.0.11": True
2005                    }
2006                }
2007            ],
2008            "revisions": {
2009                "v6.0.0": True,
2010                "v7.0.0": False,
2011                "v6.0.5": True,
2012                "v6.4.4": False,
2013                "v6.4.0": False,
2014                "v6.4.1": False,
2015                "v6.2.0": True,
2016                "v6.2.3": True,
2017                "v6.2.5": True,
2018                "v6.2.7": True,
2019                "v6.0.11": True
2020            }
2021        },
2022        "admin": {
2023            "type": "string",
2024            "options": [
2025                {
2026                    "value": "enable",
2027                    "revisions": {
2028                        "v6.0.0": True,
2029                        "v6.0.5": True,
2030                        "v6.2.0": True,
2031                        "v6.2.3": True,
2032                        "v6.2.5": True,
2033                        "v6.2.7": True,
2034                        "v6.0.11": True
2035                    }
2036                },
2037                {
2038                    "value": "disable",
2039                    "revisions": {
2040                        "v6.0.0": True,
2041                        "v6.0.5": True,
2042                        "v6.2.0": True,
2043                        "v6.2.3": True,
2044                        "v6.2.5": True,
2045                        "v6.2.7": True,
2046                        "v6.0.11": True
2047                    }
2048                }
2049            ],
2050            "revisions": {
2051                "v6.0.0": True,
2052                "v7.0.0": False,
2053                "v6.0.5": True,
2054                "v6.4.4": False,
2055                "v6.4.0": False,
2056                "v6.4.1": False,
2057                "v6.2.0": True,
2058                "v6.2.3": True,
2059                "v6.2.5": True,
2060                "v6.2.7": True,
2061                "v6.0.11": True
2062            }
2063        },
2064        "vip_ssl": {
2065            "type": "string",
2066            "options": [
2067                {
2068                    "value": "enable",
2069                    "revisions": {
2070                        "v6.0.0": True,
2071                        "v6.0.5": True,
2072                        "v6.2.0": True,
2073                        "v6.2.3": True,
2074                        "v6.2.5": True,
2075                        "v6.2.7": True,
2076                        "v6.0.11": True
2077                    }
2078                },
2079                {
2080                    "value": "disable",
2081                    "revisions": {
2082                        "v6.0.0": True,
2083                        "v6.0.5": True,
2084                        "v6.2.0": True,
2085                        "v6.2.3": True,
2086                        "v6.2.5": True,
2087                        "v6.2.7": True,
2088                        "v6.0.11": True
2089                    }
2090                }
2091            ],
2092            "revisions": {
2093                "v6.0.0": True,
2094                "v7.0.0": False,
2095                "v6.0.5": True,
2096                "v6.4.4": False,
2097                "v6.4.0": False,
2098                "v6.4.1": False,
2099                "v6.2.0": True,
2100                "v6.2.3": True,
2101                "v6.2.5": True,
2102                "v6.2.7": True,
2103                "v6.0.11": True
2104            }
2105        },
2106        "filter": {
2107            "type": "string",
2108            "revisions": {
2109                "v6.0.0": True,
2110                "v7.0.0": False,
2111                "v6.0.5": True,
2112                "v6.4.4": True,
2113                "v6.4.0": True,
2114                "v6.4.1": True,
2115                "v6.2.0": True,
2116                "v6.2.3": True,
2117                "v6.2.5": True,
2118                "v6.2.7": True,
2119                "v6.0.11": True
2120            }
2121        },
2122        "pattern": {
2123            "type": "string",
2124            "options": [
2125                {
2126                    "value": "enable",
2127                    "revisions": {
2128                        "v6.0.0": True,
2129                        "v6.0.5": True,
2130                        "v6.2.0": True,
2131                        "v6.2.3": True,
2132                        "v6.2.5": True,
2133                        "v6.2.7": True,
2134                        "v6.0.11": True
2135                    }
2136                },
2137                {
2138                    "value": "disable",
2139                    "revisions": {
2140                        "v6.0.0": True,
2141                        "v6.0.5": True,
2142                        "v6.2.0": True,
2143                        "v6.2.3": True,
2144                        "v6.2.5": True,
2145                        "v6.2.7": True,
2146                        "v6.0.11": True
2147                    }
2148                }
2149            ],
2150            "revisions": {
2151                "v6.0.0": True,
2152                "v7.0.0": False,
2153                "v6.0.5": True,
2154                "v6.4.4": False,
2155                "v6.4.0": False,
2156                "v6.4.1": False,
2157                "v6.2.0": True,
2158                "v6.2.3": True,
2159                "v6.2.5": True,
2160                "v6.2.7": True,
2161                "v6.0.11": True
2162            }
2163        },
2164        "wireless_activity": {
2165            "type": "string",
2166            "options": [
2167                {
2168                    "value": "enable",
2169                    "revisions": {
2170                        "v6.0.0": True,
2171                        "v6.0.5": True,
2172                        "v6.2.0": True,
2173                        "v6.2.3": True,
2174                        "v6.2.5": True,
2175                        "v6.2.7": True,
2176                        "v6.0.11": True
2177                    }
2178                },
2179                {
2180                    "value": "disable",
2181                    "revisions": {
2182                        "v6.0.0": True,
2183                        "v6.0.5": True,
2184                        "v6.2.0": True,
2185                        "v6.2.3": True,
2186                        "v6.2.5": True,
2187                        "v6.2.7": True,
2188                        "v6.0.11": True
2189                    }
2190                }
2191            ],
2192            "revisions": {
2193                "v6.0.0": True,
2194                "v7.0.0": False,
2195                "v6.0.5": True,
2196                "v6.4.4": False,
2197                "v6.4.0": False,
2198                "v6.4.1": False,
2199                "v6.2.0": True,
2200                "v6.2.3": True,
2201                "v6.2.5": True,
2202                "v6.2.7": True,
2203                "v6.0.11": True
2204            }
2205        }
2206    },
2207    "revisions": {
2208        "v6.0.0": True,
2209        "v7.0.0": True,
2210        "v6.0.5": True,
2211        "v6.4.4": True,
2212        "v6.4.0": True,
2213        "v6.4.1": True,
2214        "v6.2.0": True,
2215        "v6.2.3": True,
2216        "v6.2.5": True,
2217        "v6.2.7": True,
2218        "v6.0.11": True
2219    }
2220}
2221
2222
2223def main():
2224    module_spec = schema_to_module_spec(versioned_schema)
2225    mkeyname = None
2226    fields = {
2227        "access_token": {"required": False, "type": "str", "no_log": True},
2228        "enable_log": {"required": False, "type": bool},
2229        "vdom": {"required": False, "type": "str", "default": "root"},
2230        "log_disk_filter": {
2231            "required": False, "type": "dict", "default": None,
2232            "options": {
2233            }
2234        }
2235    }
2236    for attribute_name in module_spec['options']:
2237        fields["log_disk_filter"]['options'][attribute_name] = module_spec['options'][attribute_name]
2238        if mkeyname and mkeyname == attribute_name:
2239            fields["log_disk_filter"]['options'][attribute_name]['required'] = True
2240
2241    check_legacy_fortiosapi()
2242    module = AnsibleModule(argument_spec=fields,
2243                           supports_check_mode=False)
2244
2245    versions_check_result = None
2246    if module._socket_path:
2247        connection = Connection(module._socket_path)
2248        if 'access_token' in module.params:
2249            connection.set_option('access_token', module.params['access_token'])
2250
2251        if 'enable_log' in module.params:
2252            connection.set_option('enable_log', module.params['enable_log'])
2253        else:
2254            connection.set_option('enable_log', False)
2255        fos = FortiOSHandler(connection, module, mkeyname)
2256        versions_check_result = check_schema_versioning(fos, versioned_schema, "log_disk_filter")
2257
2258        is_error, has_changed, result = fortios_log_disk(module.params, fos)
2259
2260    else:
2261        module.fail_json(**FAIL_SOCKET_MSG)
2262
2263    if versions_check_result and versions_check_result['matched'] is False:
2264        module.warn("Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv")
2265
2266    if not is_error:
2267        if versions_check_result and versions_check_result['matched'] is False:
2268            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
2269        else:
2270            module.exit_json(changed=has_changed, meta=result)
2271    else:
2272        if versions_check_result and versions_check_result['matched'] is False:
2273            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
2274        else:
2275            module.fail_json(msg="Error in repo", meta=result)
2276
2277
2278if __name__ == '__main__':
2279    main()
2280