text: #!/usr/bin/python
  from __future__ import absolute_import, division, print_function
  # Copyright 2019-2021 Fortinet, Inc.
  #
  # This program is free software: you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
  # along with this program.  If not, see <https://www.gnu.org/licenses/>.
  
  __metaclass__ = type
  
  ANSIBLE_METADATA = {'status': ['preview'],
                      'supported_by': 'community',
                      'metadata_version': '1.1'}
  
  DOCUMENTATION = '''
  ---
  module: fmgr_firewall_vip64
  short_description: Configure IPv6 to IPv4 virtual IPs.
  description:
      - This module is able to configure a FortiManager device.
      - Examples include all parameters and values which need to be adjusted to data sources before usage.
  
  version_added: "2.10"
  author:
      - Link Zheng (@chillancezen)
      - Jie Xue (@JieX19)
      - Frank Shen (@fshen01)
      - Hongbin Lu (@fgtdev-hblu)
  notes:
      - Running in workspace locking mode is supported in this FortiManager module, the top
        level parameters workspace_locking_adom and workspace_locking_timeout help do the work.
      - To create or update an object, use state present directive.
      - To delete an object, use state absent directive.
      - Normally, running one module can fail when a non-zero rc is returned. you can also override
        the conditions to fail or succeed with parameters rc_failed and rc_succeeded
  
  options:
      enable_log:
          description: Enable/Disable logging for task
          required: false
          type: bool
          default: false
      proposed_method:
          description: The overridden method for the underlying Json RPC request
          required: false
          type: str
          choices:
            - update
            - set
            - add
      bypass_validation:
          description: only set to True when module schema diffs with FortiManager API structure, module continues to execute without validating parameters
          required: false
          type: bool
          default: false
      workspace_locking_adom:
          description: the adom to lock for FortiManager running in workspace mode, the value can be global and others including root
          required: false
          type: str
      workspace_locking_timeout:
          description: the maximum time in seconds to wait for other user to release the workspace lock
          required: false
          type: int
          default: 300
      state:
          description: the directive to create, update or delete an object
          type: str
          required: true
          choices:
            - present
            - absent
      rc_succeeded:
          description: the rc codes list with which the conditions to succeed will be overriden
          type: list
          required: false
      rc_failed:
          description: the rc codes list with which the conditions to fail will be overriden
          type: list
          required: false
      adom:
          description: the parameter (adom) in requested url
          type: str
          required: true
      firewall_vip64:
          description: the top level parameters set
          required: false
          type: dict
          suboptions:
              arp-reply:
                  type: str
                  description: 'Enable ARP reply.'
                  choices:
                      - 'disable'
                      - 'enable'
              color:
                  type: int
                  description: 'Color of icon on the GUI.'
              comment:
                  type: str
                  description: 'Comment.'
              dynamic_mapping:
                  description: 'Dynamic_Mapping.'
                  type: list
                  suboptions:
                      _scope:
                          description: '_Scope.'
                          type: list
                          suboptions:
                              name:
                                  type: str
                                  description: 'Name.'
                              vdom:
                                  type: str
                                  description: 'Vdom.'
                      arp-reply:
                          type: str
                          description: 'Enable ARP reply.'
                          choices:
                              - 'disable'
                              - 'enable'
                      color:
                          type: int
                          description: 'Color of icon on the GUI.'
                      comment:
                          type: str
                          description: 'Comment.'
                      extip:
                          type: str
                          description: 'Start-external-IP [-end-external-IP].'
                      extport:
                          type: str
                          description: 'External service port.'
                      id:
                          type: int
                          description: 'Custom defined id.'
                      ldb-method:
                          type: str
                          description: 'Load balance method.'
                          choices:
                              - 'static'
                              - 'round-robin'
                              - 'weighted'
                              - 'least-session'
                              - 'least-rtt'
                              - 'first-alive'
                      mappedip:
                          type: str
                          description: 'Start-mapped-IP [-end-mapped-IP].'
                      mappedport:
                          type: str
                          description: 'Mapped service port.'
                      monitor:
                          type: str
                          description: 'Health monitors.'
                      portforward:
                          type: str
                          description: 'Enable port forwarding.'
                          choices:
                              - 'disable'
                              - 'enable'
                      protocol:
                          type: str
                          description: 'Mapped port protocol.'
                          choices:
                              - 'tcp'
                              - 'udp'
                      server-type:
                          type: str
                          description: 'Server type.'
                          choices:
                              - 'http'
                              - 'tcp'
                              - 'udp'
                              - 'ip'
                      src-filter:
                          description: 'Source IP6 filter (x:x:x:x:x:x:x:x/x).'
                          type: str
                      type:
                          type: str
                          description: 'VIP type: static NAT or server load balance.'
                          choices:
                              - 'static-nat'
                              - 'server-load-balance'
                      uuid:
                          type: str
                          description: 'Universally Unique Identifier (UUID; automatically assigned but can be manually reset).'
              extip:
                  type: str
                  description: 'Start-external-IP [-end-external-IP].'
              extport:
                  type: str
                  description: 'External service port.'
              id:
                  type: int
                  description: 'Custom defined id.'
              ldb-method:
                  type: str
                  description: 'Load balance method.'
                  choices:
                      - 'static'
                      - 'round-robin'
                      - 'weighted'
                      - 'least-session'
                      - 'least-rtt'
                      - 'first-alive'
              mappedip:
                  type: str
                  description: 'Start-mapped-IP [-end-mapped-IP].'
              mappedport:
                  type: str
                  description: 'Mapped service port.'
              monitor:
                  type: str
                  description: 'Health monitors.'
              name:
                  type: str
                  description: 'VIP64 name.'
              portforward:
                  type: str
                  description: 'Enable port forwarding.'
                  choices:
                      - 'disable'
                      - 'enable'
              protocol:
                  type: str
                  description: 'Mapped port protocol.'
                  choices:
                      - 'tcp'
                      - 'udp'
              realservers:
                  description: 'Realservers.'
                  type: list
                  suboptions:
                      client-ip:
                          type: str
                          description: 'Restrict server to a client IP in this range.'
                      healthcheck:
                          type: str
                          description: 'Per server health check.'
                          choices:
                              - 'disable'
                              - 'enable'
                              - 'vip'
                      holddown-interval:
                          type: int
                          description: 'Hold down interval.'
                      id:
                          type: int
                          description: 'Real server ID.'
                      ip:
                          type: str
                          description: 'Mapped server IP.'
                      max-connections:
                          type: int
                          description: 'Maximum number of connections allowed to server.'
                      monitor:
                          type: str
                          description: 'Health monitors.'
                      port:
                          type: int
                          description: 'Mapped server port.'
                      status:
                          type: str
                          description: 'Server administrative status.'
                          choices:
                              - 'active'
                              - 'standby'
                              - 'disable'
                      weight:
                          type: int
                          description: 'Weight.'
              server-type:
                  type: str
                  description: 'Server type.'
                  choices:
                      - 'http'
                      - 'tcp'
                      - 'udp'
                      - 'ip'
              src-filter:
                  description: 'Source IP6 filter (x:x:x:x:x:x:x:x/x).'
                  type: str
              type:
                  type: str
                  description: 'VIP type: static NAT.'
                  choices:
                      - 'static-nat'
                      - 'server-load-balance'
              uuid:
                  type: str
                  description: 'Universally Unique Identifier (UUID; automatically assigned but can be manually reset).'
  
  '''
  
  EXAMPLES = '''
   - name: gathering fortimanager facts
     hosts: fortimanager00
     gather_facts: no
     connection: httpapi
     collections:
       - fortinet.fortimanager
     vars:
       ansible_httpapi_use_ssl: True
       ansible_httpapi_validate_certs: False
       ansible_httpapi_port: 443
     tasks:
      - name: retrieve all the IPv6 to IPv4 virtual IPs
        fmgr_fact:
          facts:
              selector: 'firewall_vip64'
              params:
                  adom: 'ansible'
                  vip64: ''
   - hosts: fortimanager00
     collections:
       - fortinet.fortimanager
     connection: httpapi
     vars:
        ansible_httpapi_use_ssl: True
        ansible_httpapi_validate_certs: False
        ansible_httpapi_port: 443
     tasks:
      - name: Configure IPv6 to IPv4 virtual IPs.
        fmgr_firewall_vip64:
           bypass_validation: False
           adom: ansible
           state: present
           firewall_vip64:
              arp-reply: enable
              color: 1
              comment: 'anisble-comment'
              id: 1
              name: 'ansible-test-vip64'
  
  '''
  
  RETURN = '''
  request_url:
      description: The full url requested
      returned: always
      type: str
      sample: /sys/login/user
  response_code:
      description: The status of api request
      returned: always
      type: int
      sample: 0
  response_message:
      description: The descriptive message of the api response
      type: str
      returned: always
      sample: OK.
  
  '''
  from ansible.module_utils.basic import AnsibleModule
  from ansible.module_utils.connection import Connection
  from ansible_collections.fortinet.fortimanager.plugins.module_utils.napi import NAPIManager
  from ansible_collections.fortinet.fortimanager.plugins.module_utils.napi import check_galaxy_version
  from ansible_collections.fortinet.fortimanager.plugins.module_utils.napi import check_parameter_bypass
  
  
  def main():
      jrpc_urls = [
          '/pm/config/adom/{adom}/obj/firewall/vip64',
          '/pm/config/global/obj/firewall/vip64'
      ]
  
      perobject_jrpc_urls = [
          '/pm/config/adom/{adom}/obj/firewall/vip64/{vip64}',
          '/pm/config/global/obj/firewall/vip64/{vip64}'
      ]
  
      url_params = ['adom']
      module_primary_key = 'name'
      module_arg_spec = {
          'enable_log': {
              'type': 'bool',
              'required': False,
              'default': False
          },
          'forticloud_access_token': {
              'type': 'str',
              'required': False,
              'no_log': True
          },
          'proposed_method': {
              'type': 'str',
              'required': False,
              'choices': [
                  'set',
                  'update',
                  'add'
              ]
          },
          'bypass_validation': {
              'type': 'bool',
              'required': False,
              'default': False
          },
          'workspace_locking_adom': {
              'type': 'str',
              'required': False
          },
          'workspace_locking_timeout': {
              'type': 'int',
              'required': False,
              'default': 300
          },
          'rc_succeeded': {
              'required': False,
              'type': 'list'
          },
          'rc_failed': {
              'required': False,
              'type': 'list'
          },
          'state': {
              'type': 'str',
              'required': True,
              'choices': [
                  'present',
                  'absent'
              ]
          },
          'adom': {
              'required': True,
              'type': 'str'
          },
          'firewall_vip64': {
              'required': False,
              'type': 'dict',
              'revision': {
                  '6.0.0': True,
                  '6.2.1': True,
                  '6.2.3': True,
                  '6.2.5': True,
                  '6.4.0': True,
                  '6.4.2': True,
                  '6.4.5': True,
                  '7.0.0': True
              },
              'options': {
                  'arp-reply': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'choices': [
                          'disable',
                          'enable'
                      ],
                      'type': 'str'
                  },
                  'color': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'int'
                  },
                  'comment': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'dynamic_mapping': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'list',
                      'options': {
                          '_scope': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'list',
                              'options': {
                                  'name': {
                                      'required': False,
                                      'revision': {
                                          '6.0.0': True,
                                          '6.2.1': True,
                                          '6.2.3': True,
                                          '6.2.5': True,
                                          '6.4.0': True,
                                          '6.4.2': True,
                                          '6.4.5': True,
                                          '7.0.0': True
                                      },
                                      'type': 'str'
                                  },
                                  'vdom': {
                                      'required': False,
                                      'revision': {
                                          '6.0.0': True,
                                          '6.2.1': True,
                                          '6.2.3': True,
                                          '6.2.5': True,
                                          '6.4.0': True,
                                          '6.4.2': True,
                                          '6.4.5': True,
                                          '7.0.0': True
                                      },
                                      'type': 'str'
                                  }
                              }
                          },
                          'arp-reply': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'disable',
                                  'enable'
                              ],
                              'type': 'str'
                          },
                          'color': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'int'
                          },
                          'comment': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'extip': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'extport': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'id': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'int'
                          },
                          'ldb-method': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'static',
                                  'round-robin',
                                  'weighted',
                                  'least-session',
                                  'least-rtt',
                                  'first-alive'
                              ],
                              'type': 'str'
                          },
                          'mappedip': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'mappedport': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'monitor': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'portforward': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'disable',
                                  'enable'
                              ],
                              'type': 'str'
                          },
                          'protocol': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'tcp',
                                  'udp'
                              ],
                              'type': 'str'
                          },
                          'server-type': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'http',
                                  'tcp',
                                  'udp',
                                  'ip'
                              ],
                              'type': 'str'
                          },
                          'src-filter': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'type': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'static-nat',
                                  'server-load-balance'
                              ],
                              'type': 'str'
                          },
                          'uuid': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          }
                      }
                  },
                  'extip': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'extport': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'id': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'int'
                  },
                  'ldb-method': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'choices': [
                          'static',
                          'round-robin',
                          'weighted',
                          'least-session',
                          'least-rtt',
                          'first-alive'
                      ],
                      'type': 'str'
                  },
                  'mappedip': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'mappedport': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'monitor': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'name': {
                      'required': True,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'portforward': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'choices': [
                          'disable',
                          'enable'
                      ],
                      'type': 'str'
                  },
                  'protocol': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'choices': [
                          'tcp',
                          'udp'
                      ],
                      'type': 'str'
                  },
                  'realservers': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'list',
                      'options': {
                          'client-ip': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'healthcheck': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'disable',
                                  'enable',
                                  'vip'
                              ],
                              'type': 'str'
                          },
                          'holddown-interval': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'int'
                          },
                          'id': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'int'
                          },
                          'ip': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'max-connections': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'int'
                          },
                          'monitor': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'str'
                          },
                          'port': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'int'
                          },
                          'status': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'choices': [
                                  'active',
                                  'standby',
                                  'disable'
                              ],
                              'type': 'str'
                          },
                          'weight': {
                              'required': False,
                              'revision': {
                                  '6.0.0': True,
                                  '6.2.1': True,
                                  '6.2.3': True,
                                  '6.2.5': True,
                                  '6.4.0': True,
                                  '6.4.2': True,
                                  '6.4.5': True,
                                  '7.0.0': True
                              },
                              'type': 'int'
                          }
                      }
                  },
                  'server-type': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'choices': [
                          'http',
                          'tcp',
                          'udp',
                          'ip'
                      ],
                      'type': 'str'
                  },
                  'src-filter': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  },
                  'type': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'choices': [
                          'static-nat',
                          'server-load-balance'
                      ],
                      'type': 'str'
                  },
                  'uuid': {
                      'required': False,
                      'revision': {
                          '6.0.0': True,
                          '6.2.1': True,
                          '6.2.3': True,
                          '6.2.5': True,
                          '6.4.0': True,
                          '6.4.2': True,
                          '6.4.5': True,
                          '7.0.0': True
                      },
                      'type': 'str'
                  }
              }
  
          }
      }
  
      params_validation_blob = []
      check_galaxy_version(module_arg_spec)
      module = AnsibleModule(argument_spec=check_parameter_bypass(module_arg_spec, 'firewall_vip64'),
                             supports_check_mode=False)
  
      fmgr = None
      if module._socket_path:
          connection = Connection(module._socket_path)
          connection.set_option('enable_log', module.params['enable_log'] if 'enable_log' in module.params else False)
          connection.set_option('forticloud_access_token',
                                module.params['forticloud_access_token'] if 'forticloud_access_token' in module.params else None)
          fmgr = NAPIManager(jrpc_urls, perobject_jrpc_urls, module_primary_key, url_params, module, connection, top_level_schema_name='data')
          fmgr.validate_parameters(params_validation_blob)
          fmgr.process_curd(argument_specs=module_arg_spec)
      else:
          module.fail_json(msg='MUST RUN IN HTTPAPI MODE')
      module.exit_json(meta=module.params)
  
  
  if __name__ == '__main__':
      main()
  