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_wireless_controller_log
27short_description: Configure wireless controller event log filters 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 wireless_controller feature and log 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    wireless_controller_log:
68        description:
69            - Configure wireless controller event log filters.
70        default: null
71        type: dict
72        suboptions:
73            addrgrp_log:
74                description:
75                    - Lowest severity level to log address group message.
76                type: str
77                choices:
78                    - emergency
79                    - alert
80                    - critical
81                    - error
82                    - warning
83                    - notification
84                    - information
85                    - debug
86            ble_log:
87                description:
88                    - Lowest severity level to log BLE detection message.
89                type: str
90                choices:
91                    - emergency
92                    - alert
93                    - critical
94                    - error
95                    - warning
96                    - notification
97                    - information
98                    - debug
99            clb_log:
100                description:
101                    - Lowest severity level to log client load balancing message.
102                type: str
103                choices:
104                    - emergency
105                    - alert
106                    - critical
107                    - error
108                    - warning
109                    - notification
110                    - information
111                    - debug
112            dhcp_starv_log:
113                description:
114                    - Lowest severity level to log DHCP starvation event message.
115                type: str
116                choices:
117                    - emergency
118                    - alert
119                    - critical
120                    - error
121                    - warning
122                    - notification
123                    - information
124                    - debug
125            led_sched_log:
126                description:
127                    - Lowest severity level to log LED schedule event message.
128                type: str
129                choices:
130                    - emergency
131                    - alert
132                    - critical
133                    - error
134                    - warning
135                    - notification
136                    - information
137                    - debug
138            radio_event_log:
139                description:
140                    - Lowest severity level to log radio event message.
141                type: str
142                choices:
143                    - emergency
144                    - alert
145                    - critical
146                    - error
147                    - warning
148                    - notification
149                    - information
150                    - debug
151            rogue_event_log:
152                description:
153                    - Lowest severity level to log rogue AP event message.
154                type: str
155                choices:
156                    - emergency
157                    - alert
158                    - critical
159                    - error
160                    - warning
161                    - notification
162                    - information
163                    - debug
164            sta_event_log:
165                description:
166                    - Lowest severity level to log station event message.
167                type: str
168                choices:
169                    - emergency
170                    - alert
171                    - critical
172                    - error
173                    - warning
174                    - notification
175                    - information
176                    - debug
177            sta_locate_log:
178                description:
179                    - Lowest severity level to log station locate message.
180                type: str
181                choices:
182                    - emergency
183                    - alert
184                    - critical
185                    - error
186                    - warning
187                    - notification
188                    - information
189                    - debug
190            status:
191                description:
192                    - Enable/disable wireless event logging.
193                type: str
194                choices:
195                    - enable
196                    - disable
197            wids_log:
198                description:
199                    - Lowest severity level to log WIDS message.
200                type: str
201                choices:
202                    - emergency
203                    - alert
204                    - critical
205                    - error
206                    - warning
207                    - notification
208                    - information
209                    - debug
210            wtp_event_log:
211                description:
212                    - Lowest severity level to log WTP event message.
213                type: str
214                choices:
215                    - emergency
216                    - alert
217                    - critical
218                    - error
219                    - warning
220                    - notification
221                    - information
222                    - debug
223'''
224
225EXAMPLES = '''
226- hosts: fortigates
227  collections:
228    - fortinet.fortios
229  connection: httpapi
230  vars:
231   vdom: "root"
232   ansible_httpapi_use_ssl: yes
233   ansible_httpapi_validate_certs: no
234   ansible_httpapi_port: 443
235  tasks:
236  - name: Configure wireless controller event log filters.
237    fortios_wireless_controller_log:
238      vdom:  "{{ vdom }}"
239      wireless_controller_log:
240        addrgrp_log: "emergency"
241        ble_log: "emergency"
242        clb_log: "emergency"
243        dhcp_starv_log: "emergency"
244        led_sched_log: "emergency"
245        radio_event_log: "emergency"
246        rogue_event_log: "emergency"
247        sta_event_log: "emergency"
248        sta_locate_log: "emergency"
249        status: "enable"
250        wids_log: "emergency"
251        wtp_event_log: "emergency"
252
253'''
254
255RETURN = '''
256build:
257  description: Build number of the fortigate image
258  returned: always
259  type: str
260  sample: '1547'
261http_method:
262  description: Last method used to provision the content into FortiGate
263  returned: always
264  type: str
265  sample: 'PUT'
266http_status:
267  description: Last result given by FortiGate on last operation applied
268  returned: always
269  type: str
270  sample: "200"
271mkey:
272  description: Master key (id) used in the last call to FortiGate
273  returned: success
274  type: str
275  sample: "id"
276name:
277  description: Name of the table used to fulfill the request
278  returned: always
279  type: str
280  sample: "urlfilter"
281path:
282  description: Path of the table used to fulfill the request
283  returned: always
284  type: str
285  sample: "webfilter"
286revision:
287  description: Internal revision number
288  returned: always
289  type: str
290  sample: "17.0.2.10658"
291serial:
292  description: Serial number of the unit
293  returned: always
294  type: str
295  sample: "FGVMEVYYQT3AB5352"
296status:
297  description: Indication of the operation's result
298  returned: always
299  type: str
300  sample: "success"
301vdom:
302  description: Virtual domain used
303  returned: always
304  type: str
305  sample: "root"
306version:
307  description: Version of the FortiGate
308  returned: always
309  type: str
310  sample: "v5.6.3"
311
312'''
313from ansible.module_utils.basic import AnsibleModule
314from ansible.module_utils.connection import Connection
315from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import FortiOSHandler
316from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_legacy_fortiosapi
317from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import schema_to_module_spec
318from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_schema_versioning
319from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import FAIL_SOCKET_MSG
320from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import is_same_comparison
321from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import serialize
322
323
324def filter_wireless_controller_log_data(json):
325    option_list = ['addrgrp_log', 'ble_log', 'clb_log',
326                   'dhcp_starv_log', 'led_sched_log', 'radio_event_log',
327                   'rogue_event_log', 'sta_event_log', 'sta_locate_log',
328                   'status', 'wids_log', 'wtp_event_log']
329    dictionary = {}
330
331    for attribute in option_list:
332        if attribute in json and json[attribute] is not None:
333            dictionary[attribute] = json[attribute]
334
335    return dictionary
336
337
338def underscore_to_hyphen(data):
339    if isinstance(data, list):
340        for i, elem in enumerate(data):
341            data[i] = underscore_to_hyphen(elem)
342    elif isinstance(data, dict):
343        new_data = {}
344        for k, v in data.items():
345            new_data[k.replace('_', '-')] = underscore_to_hyphen(v)
346        data = new_data
347
348    return data
349
350
351def wireless_controller_log(data, fos):
352    vdom = data['vdom']
353    wireless_controller_log_data = data['wireless_controller_log']
354    filtered_data = underscore_to_hyphen(filter_wireless_controller_log_data(wireless_controller_log_data))
355
356    return fos.set('wireless-controller',
357                   'log',
358                   data=filtered_data,
359                   vdom=vdom)
360
361
362def is_successful_status(status):
363    return status['status'] == "success" or \
364        status['http_method'] == "DELETE" and status['http_status'] == 404
365
366
367def fortios_wireless_controller(data, fos):
368
369    if data['wireless_controller_log']:
370        resp = wireless_controller_log(data, fos)
371    else:
372        fos._module.fail_json(msg='missing task body: %s' % ('wireless_controller_log'))
373
374    return not is_successful_status(resp), \
375        resp['status'] == "success" and \
376        (resp['revision_changed'] if 'revision_changed' in resp else True), \
377        resp
378
379
380versioned_schema = {
381    "type": "dict",
382    "children": {
383        "status": {
384            "type": "string",
385            "options": [
386                {
387                    "value": "enable",
388                    "revisions": {
389                        "v7.0.0": True,
390                        "v6.4.4": True,
391                        "v6.4.0": True,
392                        "v6.4.1": True,
393                        "v6.2.0": True,
394                        "v6.2.3": True,
395                        "v6.2.5": True,
396                        "v6.2.7": True
397                    }
398                },
399                {
400                    "value": "disable",
401                    "revisions": {
402                        "v7.0.0": True,
403                        "v6.4.4": True,
404                        "v6.4.0": True,
405                        "v6.4.1": True,
406                        "v6.2.0": True,
407                        "v6.2.3": True,
408                        "v6.2.5": True,
409                        "v6.2.7": True
410                    }
411                }
412            ],
413            "revisions": {
414                "v7.0.0": True,
415                "v6.4.4": True,
416                "v6.4.0": True,
417                "v6.4.1": True,
418                "v6.2.0": True,
419                "v6.2.3": True,
420                "v6.2.5": True,
421                "v6.2.7": True
422            }
423        },
424        "sta_event_log": {
425            "type": "string",
426            "options": [
427                {
428                    "value": "emergency",
429                    "revisions": {
430                        "v7.0.0": True,
431                        "v6.4.4": True,
432                        "v6.4.0": True,
433                        "v6.4.1": True,
434                        "v6.2.0": True,
435                        "v6.2.3": True,
436                        "v6.2.5": True,
437                        "v6.2.7": True
438                    }
439                },
440                {
441                    "value": "alert",
442                    "revisions": {
443                        "v7.0.0": True,
444                        "v6.4.4": True,
445                        "v6.4.0": True,
446                        "v6.4.1": True,
447                        "v6.2.0": True,
448                        "v6.2.3": True,
449                        "v6.2.5": True,
450                        "v6.2.7": True
451                    }
452                },
453                {
454                    "value": "critical",
455                    "revisions": {
456                        "v7.0.0": True,
457                        "v6.4.4": True,
458                        "v6.4.0": True,
459                        "v6.4.1": True,
460                        "v6.2.0": True,
461                        "v6.2.3": True,
462                        "v6.2.5": True,
463                        "v6.2.7": True
464                    }
465                },
466                {
467                    "value": "error",
468                    "revisions": {
469                        "v7.0.0": True,
470                        "v6.4.4": True,
471                        "v6.4.0": True,
472                        "v6.4.1": True,
473                        "v6.2.0": True,
474                        "v6.2.3": True,
475                        "v6.2.5": True,
476                        "v6.2.7": True
477                    }
478                },
479                {
480                    "value": "warning",
481                    "revisions": {
482                        "v7.0.0": True,
483                        "v6.4.4": True,
484                        "v6.4.0": True,
485                        "v6.4.1": True,
486                        "v6.2.0": True,
487                        "v6.2.3": True,
488                        "v6.2.5": True,
489                        "v6.2.7": True
490                    }
491                },
492                {
493                    "value": "notification",
494                    "revisions": {
495                        "v7.0.0": True,
496                        "v6.4.4": True,
497                        "v6.4.0": True,
498                        "v6.4.1": True,
499                        "v6.2.0": True,
500                        "v6.2.3": True,
501                        "v6.2.5": True,
502                        "v6.2.7": True
503                    }
504                },
505                {
506                    "value": "information",
507                    "revisions": {
508                        "v7.0.0": True,
509                        "v6.4.4": True,
510                        "v6.4.0": True,
511                        "v6.4.1": True,
512                        "v6.2.0": True,
513                        "v6.2.3": True,
514                        "v6.2.5": True,
515                        "v6.2.7": True
516                    }
517                },
518                {
519                    "value": "debug",
520                    "revisions": {
521                        "v7.0.0": True,
522                        "v6.4.4": True,
523                        "v6.4.0": True,
524                        "v6.4.1": True,
525                        "v6.2.0": True,
526                        "v6.2.3": True,
527                        "v6.2.5": True,
528                        "v6.2.7": True
529                    }
530                }
531            ],
532            "revisions": {
533                "v7.0.0": True,
534                "v6.4.4": True,
535                "v6.4.0": True,
536                "v6.4.1": True,
537                "v6.2.0": True,
538                "v6.2.3": True,
539                "v6.2.5": True,
540                "v6.2.7": True
541            }
542        },
543        "radio_event_log": {
544            "type": "string",
545            "options": [
546                {
547                    "value": "emergency",
548                    "revisions": {
549                        "v7.0.0": True,
550                        "v6.4.4": True,
551                        "v6.4.0": True,
552                        "v6.4.1": True,
553                        "v6.2.0": True,
554                        "v6.2.3": True,
555                        "v6.2.5": True,
556                        "v6.2.7": True
557                    }
558                },
559                {
560                    "value": "alert",
561                    "revisions": {
562                        "v7.0.0": True,
563                        "v6.4.4": True,
564                        "v6.4.0": True,
565                        "v6.4.1": True,
566                        "v6.2.0": True,
567                        "v6.2.3": True,
568                        "v6.2.5": True,
569                        "v6.2.7": True
570                    }
571                },
572                {
573                    "value": "critical",
574                    "revisions": {
575                        "v7.0.0": True,
576                        "v6.4.4": True,
577                        "v6.4.0": True,
578                        "v6.4.1": True,
579                        "v6.2.0": True,
580                        "v6.2.3": True,
581                        "v6.2.5": True,
582                        "v6.2.7": True
583                    }
584                },
585                {
586                    "value": "error",
587                    "revisions": {
588                        "v7.0.0": True,
589                        "v6.4.4": True,
590                        "v6.4.0": True,
591                        "v6.4.1": True,
592                        "v6.2.0": True,
593                        "v6.2.3": True,
594                        "v6.2.5": True,
595                        "v6.2.7": True
596                    }
597                },
598                {
599                    "value": "warning",
600                    "revisions": {
601                        "v7.0.0": True,
602                        "v6.4.4": True,
603                        "v6.4.0": True,
604                        "v6.4.1": True,
605                        "v6.2.0": True,
606                        "v6.2.3": True,
607                        "v6.2.5": True,
608                        "v6.2.7": True
609                    }
610                },
611                {
612                    "value": "notification",
613                    "revisions": {
614                        "v7.0.0": True,
615                        "v6.4.4": True,
616                        "v6.4.0": True,
617                        "v6.4.1": True,
618                        "v6.2.0": True,
619                        "v6.2.3": True,
620                        "v6.2.5": True,
621                        "v6.2.7": True
622                    }
623                },
624                {
625                    "value": "information",
626                    "revisions": {
627                        "v7.0.0": True,
628                        "v6.4.4": True,
629                        "v6.4.0": True,
630                        "v6.4.1": True,
631                        "v6.2.0": True,
632                        "v6.2.3": True,
633                        "v6.2.5": True,
634                        "v6.2.7": True
635                    }
636                },
637                {
638                    "value": "debug",
639                    "revisions": {
640                        "v7.0.0": True,
641                        "v6.4.4": True,
642                        "v6.4.0": True,
643                        "v6.4.1": True,
644                        "v6.2.0": True,
645                        "v6.2.3": True,
646                        "v6.2.5": True,
647                        "v6.2.7": True
648                    }
649                }
650            ],
651            "revisions": {
652                "v7.0.0": True,
653                "v6.4.4": True,
654                "v6.4.0": True,
655                "v6.4.1": True,
656                "v6.2.0": True,
657                "v6.2.3": True,
658                "v6.2.5": True,
659                "v6.2.7": True
660            }
661        },
662        "clb_log": {
663            "type": "string",
664            "options": [
665                {
666                    "value": "emergency",
667                    "revisions": {
668                        "v7.0.0": True,
669                        "v6.4.4": True,
670                        "v6.4.0": True,
671                        "v6.4.1": True,
672                        "v6.2.0": True,
673                        "v6.2.3": True,
674                        "v6.2.5": True,
675                        "v6.2.7": True
676                    }
677                },
678                {
679                    "value": "alert",
680                    "revisions": {
681                        "v7.0.0": True,
682                        "v6.4.4": True,
683                        "v6.4.0": True,
684                        "v6.4.1": True,
685                        "v6.2.0": True,
686                        "v6.2.3": True,
687                        "v6.2.5": True,
688                        "v6.2.7": True
689                    }
690                },
691                {
692                    "value": "critical",
693                    "revisions": {
694                        "v7.0.0": True,
695                        "v6.4.4": True,
696                        "v6.4.0": True,
697                        "v6.4.1": True,
698                        "v6.2.0": True,
699                        "v6.2.3": True,
700                        "v6.2.5": True,
701                        "v6.2.7": True
702                    }
703                },
704                {
705                    "value": "error",
706                    "revisions": {
707                        "v7.0.0": True,
708                        "v6.4.4": True,
709                        "v6.4.0": True,
710                        "v6.4.1": True,
711                        "v6.2.0": True,
712                        "v6.2.3": True,
713                        "v6.2.5": True,
714                        "v6.2.7": True
715                    }
716                },
717                {
718                    "value": "warning",
719                    "revisions": {
720                        "v7.0.0": True,
721                        "v6.4.4": True,
722                        "v6.4.0": True,
723                        "v6.4.1": True,
724                        "v6.2.0": True,
725                        "v6.2.3": True,
726                        "v6.2.5": True,
727                        "v6.2.7": True
728                    }
729                },
730                {
731                    "value": "notification",
732                    "revisions": {
733                        "v7.0.0": 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                    }
742                },
743                {
744                    "value": "information",
745                    "revisions": {
746                        "v7.0.0": True,
747                        "v6.4.4": True,
748                        "v6.4.0": True,
749                        "v6.4.1": True,
750                        "v6.2.0": True,
751                        "v6.2.3": True,
752                        "v6.2.5": True,
753                        "v6.2.7": True
754                    }
755                },
756                {
757                    "value": "debug",
758                    "revisions": {
759                        "v7.0.0": True,
760                        "v6.4.4": True,
761                        "v6.4.0": True,
762                        "v6.4.1": True,
763                        "v6.2.0": True,
764                        "v6.2.3": True,
765                        "v6.2.5": True,
766                        "v6.2.7": True
767                    }
768                }
769            ],
770            "revisions": {
771                "v7.0.0": True,
772                "v6.4.4": True,
773                "v6.4.0": True,
774                "v6.4.1": True,
775                "v6.2.0": True,
776                "v6.2.3": True,
777                "v6.2.5": True,
778                "v6.2.7": True
779            }
780        },
781        "addrgrp_log": {
782            "type": "string",
783            "options": [
784                {
785                    "value": "emergency",
786                    "revisions": {
787                        "v7.0.0": True,
788                        "v6.4.4": True,
789                        "v6.4.0": True,
790                        "v6.4.1": True,
791                        "v6.2.0": True,
792                        "v6.2.3": True,
793                        "v6.2.5": True,
794                        "v6.2.7": True
795                    }
796                },
797                {
798                    "value": "alert",
799                    "revisions": {
800                        "v7.0.0": True,
801                        "v6.4.4": True,
802                        "v6.4.0": True,
803                        "v6.4.1": True,
804                        "v6.2.0": True,
805                        "v6.2.3": True,
806                        "v6.2.5": True,
807                        "v6.2.7": True
808                    }
809                },
810                {
811                    "value": "critical",
812                    "revisions": {
813                        "v7.0.0": True,
814                        "v6.4.4": True,
815                        "v6.4.0": True,
816                        "v6.4.1": True,
817                        "v6.2.0": True,
818                        "v6.2.3": True,
819                        "v6.2.5": True,
820                        "v6.2.7": True
821                    }
822                },
823                {
824                    "value": "error",
825                    "revisions": {
826                        "v7.0.0": True,
827                        "v6.4.4": True,
828                        "v6.4.0": True,
829                        "v6.4.1": True,
830                        "v6.2.0": True,
831                        "v6.2.3": True,
832                        "v6.2.5": True,
833                        "v6.2.7": True
834                    }
835                },
836                {
837                    "value": "warning",
838                    "revisions": {
839                        "v7.0.0": True,
840                        "v6.4.4": True,
841                        "v6.4.0": True,
842                        "v6.4.1": True,
843                        "v6.2.0": True,
844                        "v6.2.3": True,
845                        "v6.2.5": True,
846                        "v6.2.7": True
847                    }
848                },
849                {
850                    "value": "notification",
851                    "revisions": {
852                        "v7.0.0": True,
853                        "v6.4.4": True,
854                        "v6.4.0": True,
855                        "v6.4.1": True,
856                        "v6.2.0": True,
857                        "v6.2.3": True,
858                        "v6.2.5": True,
859                        "v6.2.7": True
860                    }
861                },
862                {
863                    "value": "information",
864                    "revisions": {
865                        "v7.0.0": True,
866                        "v6.4.4": True,
867                        "v6.4.0": True,
868                        "v6.4.1": True,
869                        "v6.2.0": True,
870                        "v6.2.3": True,
871                        "v6.2.5": True,
872                        "v6.2.7": True
873                    }
874                },
875                {
876                    "value": "debug",
877                    "revisions": {
878                        "v7.0.0": True,
879                        "v6.4.4": True,
880                        "v6.4.0": True,
881                        "v6.4.1": True,
882                        "v6.2.0": True,
883                        "v6.2.3": True,
884                        "v6.2.5": True,
885                        "v6.2.7": True
886                    }
887                }
888            ],
889            "revisions": {
890                "v7.0.0": True,
891                "v6.4.4": True,
892                "v6.4.0": True,
893                "v6.4.1": True,
894                "v6.2.0": True,
895                "v6.2.3": True,
896                "v6.2.5": True,
897                "v6.2.7": True
898            }
899        },
900        "dhcp_starv_log": {
901            "type": "string",
902            "options": [
903                {
904                    "value": "emergency",
905                    "revisions": {
906                        "v7.0.0": True,
907                        "v6.4.4": True,
908                        "v6.4.0": True,
909                        "v6.4.1": True,
910                        "v6.2.0": True,
911                        "v6.2.3": True,
912                        "v6.2.5": True,
913                        "v6.2.7": True
914                    }
915                },
916                {
917                    "value": "alert",
918                    "revisions": {
919                        "v7.0.0": True,
920                        "v6.4.4": True,
921                        "v6.4.0": True,
922                        "v6.4.1": True,
923                        "v6.2.0": True,
924                        "v6.2.3": True,
925                        "v6.2.5": True,
926                        "v6.2.7": True
927                    }
928                },
929                {
930                    "value": "critical",
931                    "revisions": {
932                        "v7.0.0": True,
933                        "v6.4.4": True,
934                        "v6.4.0": True,
935                        "v6.4.1": True,
936                        "v6.2.0": True,
937                        "v6.2.3": True,
938                        "v6.2.5": True,
939                        "v6.2.7": True
940                    }
941                },
942                {
943                    "value": "error",
944                    "revisions": {
945                        "v7.0.0": True,
946                        "v6.4.4": True,
947                        "v6.4.0": True,
948                        "v6.4.1": True,
949                        "v6.2.0": True,
950                        "v6.2.3": True,
951                        "v6.2.5": True,
952                        "v6.2.7": True
953                    }
954                },
955                {
956                    "value": "warning",
957                    "revisions": {
958                        "v7.0.0": True,
959                        "v6.4.4": True,
960                        "v6.4.0": True,
961                        "v6.4.1": True,
962                        "v6.2.0": True,
963                        "v6.2.3": True,
964                        "v6.2.5": True,
965                        "v6.2.7": True
966                    }
967                },
968                {
969                    "value": "notification",
970                    "revisions": {
971                        "v7.0.0": True,
972                        "v6.4.4": True,
973                        "v6.4.0": True,
974                        "v6.4.1": True,
975                        "v6.2.0": True,
976                        "v6.2.3": True,
977                        "v6.2.5": True,
978                        "v6.2.7": True
979                    }
980                },
981                {
982                    "value": "information",
983                    "revisions": {
984                        "v7.0.0": True,
985                        "v6.4.4": True,
986                        "v6.4.0": True,
987                        "v6.4.1": True,
988                        "v6.2.0": True,
989                        "v6.2.3": True,
990                        "v6.2.5": True,
991                        "v6.2.7": True
992                    }
993                },
994                {
995                    "value": "debug",
996                    "revisions": {
997                        "v7.0.0": True,
998                        "v6.4.4": True,
999                        "v6.4.0": True,
1000                        "v6.4.1": True,
1001                        "v6.2.0": True,
1002                        "v6.2.3": True,
1003                        "v6.2.5": True,
1004                        "v6.2.7": True
1005                    }
1006                }
1007            ],
1008            "revisions": {
1009                "v7.0.0": True,
1010                "v6.4.4": True,
1011                "v6.4.0": True,
1012                "v6.4.1": True,
1013                "v6.2.0": True,
1014                "v6.2.3": True,
1015                "v6.2.5": True,
1016                "v6.2.7": True
1017            }
1018        },
1019        "wtp_event_log": {
1020            "type": "string",
1021            "options": [
1022                {
1023                    "value": "emergency",
1024                    "revisions": {
1025                        "v7.0.0": True,
1026                        "v6.4.4": True,
1027                        "v6.4.0": True,
1028                        "v6.4.1": True,
1029                        "v6.2.0": True,
1030                        "v6.2.3": True,
1031                        "v6.2.5": True,
1032                        "v6.2.7": True
1033                    }
1034                },
1035                {
1036                    "value": "alert",
1037                    "revisions": {
1038                        "v7.0.0": 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                    }
1047                },
1048                {
1049                    "value": "critical",
1050                    "revisions": {
1051                        "v7.0.0": True,
1052                        "v6.4.4": True,
1053                        "v6.4.0": True,
1054                        "v6.4.1": True,
1055                        "v6.2.0": True,
1056                        "v6.2.3": True,
1057                        "v6.2.5": True,
1058                        "v6.2.7": True
1059                    }
1060                },
1061                {
1062                    "value": "error",
1063                    "revisions": {
1064                        "v7.0.0": 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                    }
1073                },
1074                {
1075                    "value": "warning",
1076                    "revisions": {
1077                        "v7.0.0": True,
1078                        "v6.4.4": True,
1079                        "v6.4.0": True,
1080                        "v6.4.1": True,
1081                        "v6.2.0": True,
1082                        "v6.2.3": True,
1083                        "v6.2.5": True,
1084                        "v6.2.7": True
1085                    }
1086                },
1087                {
1088                    "value": "notification",
1089                    "revisions": {
1090                        "v7.0.0": True,
1091                        "v6.4.4": True,
1092                        "v6.4.0": True,
1093                        "v6.4.1": True,
1094                        "v6.2.0": True,
1095                        "v6.2.3": True,
1096                        "v6.2.5": True,
1097                        "v6.2.7": True
1098                    }
1099                },
1100                {
1101                    "value": "information",
1102                    "revisions": {
1103                        "v7.0.0": True,
1104                        "v6.4.4": True,
1105                        "v6.4.0": True,
1106                        "v6.4.1": True,
1107                        "v6.2.0": True,
1108                        "v6.2.3": True,
1109                        "v6.2.5": True,
1110                        "v6.2.7": True
1111                    }
1112                },
1113                {
1114                    "value": "debug",
1115                    "revisions": {
1116                        "v7.0.0": True,
1117                        "v6.4.4": True,
1118                        "v6.4.0": True,
1119                        "v6.4.1": True,
1120                        "v6.2.0": True,
1121                        "v6.2.3": True,
1122                        "v6.2.5": True,
1123                        "v6.2.7": True
1124                    }
1125                }
1126            ],
1127            "revisions": {
1128                "v7.0.0": True,
1129                "v6.4.4": True,
1130                "v6.4.0": True,
1131                "v6.4.1": True,
1132                "v6.2.0": True,
1133                "v6.2.3": True,
1134                "v6.2.5": True,
1135                "v6.2.7": True
1136            }
1137        },
1138        "sta_locate_log": {
1139            "type": "string",
1140            "options": [
1141                {
1142                    "value": "emergency",
1143                    "revisions": {
1144                        "v7.0.0": True,
1145                        "v6.4.4": True,
1146                        "v6.4.0": True,
1147                        "v6.4.1": True,
1148                        "v6.2.0": True,
1149                        "v6.2.3": True,
1150                        "v6.2.5": True,
1151                        "v6.2.7": True
1152                    }
1153                },
1154                {
1155                    "value": "alert",
1156                    "revisions": {
1157                        "v7.0.0": True,
1158                        "v6.4.4": True,
1159                        "v6.4.0": True,
1160                        "v6.4.1": True,
1161                        "v6.2.0": True,
1162                        "v6.2.3": True,
1163                        "v6.2.5": True,
1164                        "v6.2.7": True
1165                    }
1166                },
1167                {
1168                    "value": "critical",
1169                    "revisions": {
1170                        "v7.0.0": True,
1171                        "v6.4.4": True,
1172                        "v6.4.0": True,
1173                        "v6.4.1": True,
1174                        "v6.2.0": True,
1175                        "v6.2.3": True,
1176                        "v6.2.5": True,
1177                        "v6.2.7": True
1178                    }
1179                },
1180                {
1181                    "value": "error",
1182                    "revisions": {
1183                        "v7.0.0": True,
1184                        "v6.4.4": True,
1185                        "v6.4.0": True,
1186                        "v6.4.1": True,
1187                        "v6.2.0": True,
1188                        "v6.2.3": True,
1189                        "v6.2.5": True,
1190                        "v6.2.7": True
1191                    }
1192                },
1193                {
1194                    "value": "warning",
1195                    "revisions": {
1196                        "v7.0.0": True,
1197                        "v6.4.4": True,
1198                        "v6.4.0": True,
1199                        "v6.4.1": True,
1200                        "v6.2.0": True,
1201                        "v6.2.3": True,
1202                        "v6.2.5": True,
1203                        "v6.2.7": True
1204                    }
1205                },
1206                {
1207                    "value": "notification",
1208                    "revisions": {
1209                        "v7.0.0": True,
1210                        "v6.4.4": True,
1211                        "v6.4.0": True,
1212                        "v6.4.1": True,
1213                        "v6.2.0": True,
1214                        "v6.2.3": True,
1215                        "v6.2.5": True,
1216                        "v6.2.7": True
1217                    }
1218                },
1219                {
1220                    "value": "information",
1221                    "revisions": {
1222                        "v7.0.0": True,
1223                        "v6.4.4": True,
1224                        "v6.4.0": True,
1225                        "v6.4.1": True,
1226                        "v6.2.0": True,
1227                        "v6.2.3": True,
1228                        "v6.2.5": True,
1229                        "v6.2.7": True
1230                    }
1231                },
1232                {
1233                    "value": "debug",
1234                    "revisions": {
1235                        "v7.0.0": True,
1236                        "v6.4.4": True,
1237                        "v6.4.0": True,
1238                        "v6.4.1": True,
1239                        "v6.2.0": True,
1240                        "v6.2.3": True,
1241                        "v6.2.5": True,
1242                        "v6.2.7": True
1243                    }
1244                }
1245            ],
1246            "revisions": {
1247                "v7.0.0": True,
1248                "v6.4.4": True,
1249                "v6.4.0": True,
1250                "v6.4.1": True,
1251                "v6.2.0": True,
1252                "v6.2.3": True,
1253                "v6.2.5": True,
1254                "v6.2.7": True
1255            }
1256        },
1257        "wids_log": {
1258            "type": "string",
1259            "options": [
1260                {
1261                    "value": "emergency",
1262                    "revisions": {
1263                        "v7.0.0": True,
1264                        "v6.4.4": True,
1265                        "v6.4.0": True,
1266                        "v6.4.1": True,
1267                        "v6.2.0": True,
1268                        "v6.2.3": True,
1269                        "v6.2.5": True,
1270                        "v6.2.7": True
1271                    }
1272                },
1273                {
1274                    "value": "alert",
1275                    "revisions": {
1276                        "v7.0.0": True,
1277                        "v6.4.4": True,
1278                        "v6.4.0": True,
1279                        "v6.4.1": True,
1280                        "v6.2.0": True,
1281                        "v6.2.3": True,
1282                        "v6.2.5": True,
1283                        "v6.2.7": True
1284                    }
1285                },
1286                {
1287                    "value": "critical",
1288                    "revisions": {
1289                        "v7.0.0": True,
1290                        "v6.4.4": True,
1291                        "v6.4.0": True,
1292                        "v6.4.1": True,
1293                        "v6.2.0": True,
1294                        "v6.2.3": True,
1295                        "v6.2.5": True,
1296                        "v6.2.7": True
1297                    }
1298                },
1299                {
1300                    "value": "error",
1301                    "revisions": {
1302                        "v7.0.0": True,
1303                        "v6.4.4": True,
1304                        "v6.4.0": True,
1305                        "v6.4.1": True,
1306                        "v6.2.0": True,
1307                        "v6.2.3": True,
1308                        "v6.2.5": True,
1309                        "v6.2.7": True
1310                    }
1311                },
1312                {
1313                    "value": "warning",
1314                    "revisions": {
1315                        "v7.0.0": True,
1316                        "v6.4.4": True,
1317                        "v6.4.0": True,
1318                        "v6.4.1": True,
1319                        "v6.2.0": True,
1320                        "v6.2.3": True,
1321                        "v6.2.5": True,
1322                        "v6.2.7": True
1323                    }
1324                },
1325                {
1326                    "value": "notification",
1327                    "revisions": {
1328                        "v7.0.0": True,
1329                        "v6.4.4": True,
1330                        "v6.4.0": True,
1331                        "v6.4.1": True,
1332                        "v6.2.0": True,
1333                        "v6.2.3": True,
1334                        "v6.2.5": True,
1335                        "v6.2.7": True
1336                    }
1337                },
1338                {
1339                    "value": "information",
1340                    "revisions": {
1341                        "v7.0.0": 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                    }
1350                },
1351                {
1352                    "value": "debug",
1353                    "revisions": {
1354                        "v7.0.0": True,
1355                        "v6.4.4": True,
1356                        "v6.4.0": True,
1357                        "v6.4.1": True,
1358                        "v6.2.0": True,
1359                        "v6.2.3": True,
1360                        "v6.2.5": True,
1361                        "v6.2.7": True
1362                    }
1363                }
1364            ],
1365            "revisions": {
1366                "v7.0.0": True,
1367                "v6.4.4": True,
1368                "v6.4.0": True,
1369                "v6.4.1": True,
1370                "v6.2.0": True,
1371                "v6.2.3": True,
1372                "v6.2.5": True,
1373                "v6.2.7": True
1374            }
1375        },
1376        "rogue_event_log": {
1377            "type": "string",
1378            "options": [
1379                {
1380                    "value": "emergency",
1381                    "revisions": {
1382                        "v7.0.0": True,
1383                        "v6.4.4": True,
1384                        "v6.4.0": True,
1385                        "v6.4.1": True,
1386                        "v6.2.0": True,
1387                        "v6.2.3": True,
1388                        "v6.2.5": True,
1389                        "v6.2.7": True
1390                    }
1391                },
1392                {
1393                    "value": "alert",
1394                    "revisions": {
1395                        "v7.0.0": True,
1396                        "v6.4.4": True,
1397                        "v6.4.0": True,
1398                        "v6.4.1": True,
1399                        "v6.2.0": True,
1400                        "v6.2.3": True,
1401                        "v6.2.5": True,
1402                        "v6.2.7": True
1403                    }
1404                },
1405                {
1406                    "value": "critical",
1407                    "revisions": {
1408                        "v7.0.0": True,
1409                        "v6.4.4": True,
1410                        "v6.4.0": True,
1411                        "v6.4.1": True,
1412                        "v6.2.0": True,
1413                        "v6.2.3": True,
1414                        "v6.2.5": True,
1415                        "v6.2.7": True
1416                    }
1417                },
1418                {
1419                    "value": "error",
1420                    "revisions": {
1421                        "v7.0.0": 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                    }
1430                },
1431                {
1432                    "value": "warning",
1433                    "revisions": {
1434                        "v7.0.0": True,
1435                        "v6.4.4": True,
1436                        "v6.4.0": True,
1437                        "v6.4.1": True,
1438                        "v6.2.0": True,
1439                        "v6.2.3": True,
1440                        "v6.2.5": True,
1441                        "v6.2.7": True
1442                    }
1443                },
1444                {
1445                    "value": "notification",
1446                    "revisions": {
1447                        "v7.0.0": True,
1448                        "v6.4.4": True,
1449                        "v6.4.0": True,
1450                        "v6.4.1": True,
1451                        "v6.2.0": True,
1452                        "v6.2.3": True,
1453                        "v6.2.5": True,
1454                        "v6.2.7": True
1455                    }
1456                },
1457                {
1458                    "value": "information",
1459                    "revisions": {
1460                        "v7.0.0": True,
1461                        "v6.4.4": True,
1462                        "v6.4.0": True,
1463                        "v6.4.1": True,
1464                        "v6.2.0": True,
1465                        "v6.2.3": True,
1466                        "v6.2.5": True,
1467                        "v6.2.7": True
1468                    }
1469                },
1470                {
1471                    "value": "debug",
1472                    "revisions": {
1473                        "v7.0.0": True,
1474                        "v6.4.4": True,
1475                        "v6.4.0": True,
1476                        "v6.4.1": True,
1477                        "v6.2.0": True,
1478                        "v6.2.3": True,
1479                        "v6.2.5": True,
1480                        "v6.2.7": True
1481                    }
1482                }
1483            ],
1484            "revisions": {
1485                "v7.0.0": 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            }
1494        },
1495        "ble_log": {
1496            "type": "string",
1497            "options": [
1498                {
1499                    "value": "emergency",
1500                    "revisions": {
1501                        "v7.0.0": 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                    }
1510                },
1511                {
1512                    "value": "alert",
1513                    "revisions": {
1514                        "v7.0.0": True,
1515                        "v6.4.4": True,
1516                        "v6.4.0": True,
1517                        "v6.4.1": True,
1518                        "v6.2.0": True,
1519                        "v6.2.3": True,
1520                        "v6.2.5": True,
1521                        "v6.2.7": True
1522                    }
1523                },
1524                {
1525                    "value": "critical",
1526                    "revisions": {
1527                        "v7.0.0": True,
1528                        "v6.4.4": True,
1529                        "v6.4.0": True,
1530                        "v6.4.1": True,
1531                        "v6.2.0": True,
1532                        "v6.2.3": True,
1533                        "v6.2.5": True,
1534                        "v6.2.7": True
1535                    }
1536                },
1537                {
1538                    "value": "error",
1539                    "revisions": {
1540                        "v7.0.0": True,
1541                        "v6.4.4": True,
1542                        "v6.4.0": True,
1543                        "v6.4.1": True,
1544                        "v6.2.0": True,
1545                        "v6.2.3": True,
1546                        "v6.2.5": True,
1547                        "v6.2.7": True
1548                    }
1549                },
1550                {
1551                    "value": "warning",
1552                    "revisions": {
1553                        "v7.0.0": True,
1554                        "v6.4.4": True,
1555                        "v6.4.0": True,
1556                        "v6.4.1": True,
1557                        "v6.2.0": True,
1558                        "v6.2.3": True,
1559                        "v6.2.5": True,
1560                        "v6.2.7": True
1561                    }
1562                },
1563                {
1564                    "value": "notification",
1565                    "revisions": {
1566                        "v7.0.0": True,
1567                        "v6.4.4": True,
1568                        "v6.4.0": True,
1569                        "v6.4.1": True,
1570                        "v6.2.0": True,
1571                        "v6.2.3": True,
1572                        "v6.2.5": True,
1573                        "v6.2.7": True
1574                    }
1575                },
1576                {
1577                    "value": "information",
1578                    "revisions": {
1579                        "v7.0.0": True,
1580                        "v6.4.4": True,
1581                        "v6.4.0": True,
1582                        "v6.4.1": True,
1583                        "v6.2.0": True,
1584                        "v6.2.3": True,
1585                        "v6.2.5": True,
1586                        "v6.2.7": True
1587                    }
1588                },
1589                {
1590                    "value": "debug",
1591                    "revisions": {
1592                        "v7.0.0": True,
1593                        "v6.4.4": True,
1594                        "v6.4.0": True,
1595                        "v6.4.1": True,
1596                        "v6.2.0": True,
1597                        "v6.2.3": True,
1598                        "v6.2.5": True,
1599                        "v6.2.7": True
1600                    }
1601                }
1602            ],
1603            "revisions": {
1604                "v7.0.0": True,
1605                "v6.4.4": True,
1606                "v6.4.0": True,
1607                "v6.4.1": True,
1608                "v6.2.0": True,
1609                "v6.2.3": True,
1610                "v6.2.5": True,
1611                "v6.2.7": True
1612            }
1613        },
1614        "led_sched_log": {
1615            "type": "string",
1616            "options": [
1617                {
1618                    "value": "emergency",
1619                    "revisions": {
1620                        "v7.0.0": True,
1621                        "v6.4.4": True,
1622                        "v6.4.0": True,
1623                        "v6.4.1": True,
1624                        "v6.2.0": True,
1625                        "v6.2.3": True,
1626                        "v6.2.5": True,
1627                        "v6.2.7": True
1628                    }
1629                },
1630                {
1631                    "value": "alert",
1632                    "revisions": {
1633                        "v7.0.0": True,
1634                        "v6.4.4": True,
1635                        "v6.4.0": True,
1636                        "v6.4.1": True,
1637                        "v6.2.0": True,
1638                        "v6.2.3": True,
1639                        "v6.2.5": True,
1640                        "v6.2.7": True
1641                    }
1642                },
1643                {
1644                    "value": "critical",
1645                    "revisions": {
1646                        "v7.0.0": True,
1647                        "v6.4.4": True,
1648                        "v6.4.0": True,
1649                        "v6.4.1": True,
1650                        "v6.2.0": True,
1651                        "v6.2.3": True,
1652                        "v6.2.5": True,
1653                        "v6.2.7": True
1654                    }
1655                },
1656                {
1657                    "value": "error",
1658                    "revisions": {
1659                        "v7.0.0": True,
1660                        "v6.4.4": True,
1661                        "v6.4.0": True,
1662                        "v6.4.1": True,
1663                        "v6.2.0": True,
1664                        "v6.2.3": True,
1665                        "v6.2.5": True,
1666                        "v6.2.7": True
1667                    }
1668                },
1669                {
1670                    "value": "warning",
1671                    "revisions": {
1672                        "v7.0.0": True,
1673                        "v6.4.4": True,
1674                        "v6.4.0": True,
1675                        "v6.4.1": True,
1676                        "v6.2.0": True,
1677                        "v6.2.3": True,
1678                        "v6.2.5": True,
1679                        "v6.2.7": True
1680                    }
1681                },
1682                {
1683                    "value": "notification",
1684                    "revisions": {
1685                        "v7.0.0": True,
1686                        "v6.4.4": True,
1687                        "v6.4.0": True,
1688                        "v6.4.1": True,
1689                        "v6.2.0": True,
1690                        "v6.2.3": True,
1691                        "v6.2.5": True,
1692                        "v6.2.7": True
1693                    }
1694                },
1695                {
1696                    "value": "information",
1697                    "revisions": {
1698                        "v7.0.0": True,
1699                        "v6.4.4": True,
1700                        "v6.4.0": True,
1701                        "v6.4.1": True,
1702                        "v6.2.0": True,
1703                        "v6.2.3": True,
1704                        "v6.2.5": True,
1705                        "v6.2.7": True
1706                    }
1707                },
1708                {
1709                    "value": "debug",
1710                    "revisions": {
1711                        "v7.0.0": True,
1712                        "v6.4.4": True,
1713                        "v6.4.0": True,
1714                        "v6.4.1": True,
1715                        "v6.2.0": True,
1716                        "v6.2.3": True,
1717                        "v6.2.5": True,
1718                        "v6.2.7": True
1719                    }
1720                }
1721            ],
1722            "revisions": {
1723                "v7.0.0": True,
1724                "v6.4.4": True,
1725                "v6.4.0": True,
1726                "v6.4.1": True,
1727                "v6.2.0": True,
1728                "v6.2.3": True,
1729                "v6.2.5": True,
1730                "v6.2.7": True
1731            }
1732        }
1733    },
1734    "revisions": {
1735        "v7.0.0": True,
1736        "v6.4.4": True,
1737        "v6.4.0": True,
1738        "v6.4.1": True,
1739        "v6.2.0": True,
1740        "v6.2.3": True,
1741        "v6.2.5": True,
1742        "v6.2.7": True
1743    }
1744}
1745
1746
1747def main():
1748    module_spec = schema_to_module_spec(versioned_schema)
1749    mkeyname = None
1750    fields = {
1751        "access_token": {"required": False, "type": "str", "no_log": True},
1752        "enable_log": {"required": False, "type": bool},
1753        "vdom": {"required": False, "type": "str", "default": "root"},
1754        "wireless_controller_log": {
1755            "required": False, "type": "dict", "default": None,
1756            "options": {
1757            }
1758        }
1759    }
1760    for attribute_name in module_spec['options']:
1761        fields["wireless_controller_log"]['options'][attribute_name] = module_spec['options'][attribute_name]
1762        if mkeyname and mkeyname == attribute_name:
1763            fields["wireless_controller_log"]['options'][attribute_name]['required'] = True
1764
1765    check_legacy_fortiosapi()
1766    module = AnsibleModule(argument_spec=fields,
1767                           supports_check_mode=False)
1768
1769    versions_check_result = None
1770    if module._socket_path:
1771        connection = Connection(module._socket_path)
1772        if 'access_token' in module.params:
1773            connection.set_option('access_token', module.params['access_token'])
1774
1775        if 'enable_log' in module.params:
1776            connection.set_option('enable_log', module.params['enable_log'])
1777        else:
1778            connection.set_option('enable_log', False)
1779        fos = FortiOSHandler(connection, module, mkeyname)
1780        versions_check_result = check_schema_versioning(fos, versioned_schema, "wireless_controller_log")
1781
1782        is_error, has_changed, result = fortios_wireless_controller(module.params, fos)
1783
1784    else:
1785        module.fail_json(**FAIL_SOCKET_MSG)
1786
1787    if versions_check_result and versions_check_result['matched'] is False:
1788        module.warn("Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv")
1789
1790    if not is_error:
1791        if versions_check_result and versions_check_result['matched'] is False:
1792            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
1793        else:
1794            module.exit_json(changed=has_changed, meta=result)
1795    else:
1796        if versions_check_result and versions_check_result['matched'] is False:
1797            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
1798        else:
1799            module.fail_json(msg="Error in repo", meta=result)
1800
1801
1802if __name__ == '__main__':
1803    main()
1804