def session_create(consul_url=None, token=None, **kwargs):
    '''
    Used to create a session.

    :param consul_url: The Consul server URL.
    :param lockdelay: Duration string using a "s" suffix for seconds.
                      The default is 15s.
    :param node: Must refer to a node that is already registered,
                 if specified. By default, the agent's own node
                 name is used.
    :param name: A human-readable name for the session
    :param checks: A list of associated health checks. It is highly
                   recommended that, if you override this list, you
                   include the default "serfHealth".
    :param behavior: Can be set to either release or delete. This controls
                     the behavior when a session is invalidated. By default,
                     this is release, causing any locks that are held to be
                     released. Changing this to delete causes any locks that
                     are held to be deleted. delete is useful for creating
                     ephemeral key/value entries.
    :param ttl: Session is invalidated if it is not renewed before
                the TTL expires
    :return: Boolean and message indicating success or failure.

    CLI Example:

    .. code-block:: bash

        salt '*' consul.session_create node='node1' name='my-session' behavior='delete' ttl='3600s'

    '''
    ret = {}
    if not consul_url:
        consul_url = _get_config()
        if not consul_url:
            log.error('No Consul URL found.')
            ret['message'] = 'No Consul URL found.'
            ret['res'] = False
            return ret
    data = {}

    if 'lockdelay' in kwargs:
        data['LockDelay'] = kwargs['lockdelay']

    if 'node' in kwargs:
        data['Node'] = kwargs['node']

    if 'name' in kwargs:
        data['Name'] = kwargs['name']
    else:
        raise SaltInvocationError('Required argument "name" is missing.')

    if 'checks' in kwargs:
        data['Touch'] = kwargs['touch']

    if 'behavior' in kwargs:
        if not kwargs['behavior'] in ('delete', 'release'):
            ret['message'] = ('Behavior must be ',
                              'either delete or release.')
            ret['res'] = False
            return ret
        data['Behavior'] = kwargs['behavior']

    if 'ttl' in kwargs:
        _ttl = kwargs['ttl']
        if six.text_type(_ttl).endswith('s'):
            _ttl = _ttl[:-1]

        if int(_ttl) < 0 or int(_ttl) > 3600:
            ret['message'] = ('TTL must be ',
                              'between 0 and 3600.')
            ret['res'] = False
            return ret
        data['TTL'] = '{0}s'.format(_ttl)

    function = 'session/create'
    res = _query(consul_url=consul_url,
                 function=function,
                 token=token,
                 method='PUT',
                 data=data)

    if res['res']:
        ret['res'] = True
        ret['message'] = 'Created session {0}.'.format(kwargs['name'])
    else:
        ret['res'] = False
        ret['message'] = 'Unable to create session {0}.'.format(kwargs['name'])
    return ret
Used to create a session.

    :param consul_url: The Consul server URL.
    :param lockdelay: Duration string using a "s" suffix for seconds.
                      The default is 15s.
    :param node: Must refer to a node that is already registered,
                 if specified. By default, the agent's own node
                 name is used.
    :param name: A human-readable name for the session
    :param checks: A list of associated health checks. It is highly
                   recommended that, if you override this list, you
                   include the default "serfHealth".
    :param behavior: Can be set to either release or delete. This controls
                     the behavior when a session is invalidated. By default,
                     this is release, causing any locks that are held to be
                     released. Changing this to delete causes any locks that
                     are held to be deleted. delete is useful for creating
                     ephemeral key/value entries.
    :param ttl: Session is invalidated if it is not renewed before
                the TTL expires
    :return: Boolean and message indicating success or failure.

    CLI Example:

    .. code-block:: bash

        salt '*' consul.session_create node='node1' name='my-session' behavior='delete' ttl='3600s'