'Creates a VPN Connection.
:param   vpn_customer_gateway: The VPN Customer Gateway (required).
:type    vpn_customer_gateway: :class:`CloudStackVpnCustomerGateway`
:param   vpn_gateway: The VPN Gateway (required).
:type    vpn_gateway: :class:`CloudStackVpnGateway`
:param   for_display: Display the Connection to the end user or not.
:type    for_display: ``str``
:param   passive: If True, sets the connection to be passive.
:type    passive: ``bool``
:rtype: :class: `CloudStackVpnConnection`'

def ex_create_vpn_connection(self, vpn_customer_gateway, vpn_gateway, for_display=None, passive=None):

    args = {'s2scustomergatewayid': vpn_customer_gateway.id, 's2svpngatewayid': vpn_gateway.id}
    if (for_display is not None):
        args['fordisplay'] = for_display
    if (passive is not None):
        args['passive'] = passive
    res = self._async_request(command='createVpnConnection', params=args, method='GET')
    item = res['vpnconnection']
    extra_map = RESOURCE_EXTRA_ATTRIBUTES_MAP['vpnconnection']
    return CloudStackVpnConnection(id=item['id'], passive=item['passive'], vpn_customer_gateway_id=vpn_customer_gateway.id, vpn_gateway_id=vpn_gateway.id, state=item['state'], driver=self, extra=self._get_extra_dict(item, extra_map))
