def _lease_blob_impl(self, container_name, blob_name,<EOL>lease_action, lease_id,<EOL>lease_duration, lease_break_period,<EOL>proposed_lease_id, if_modified_since,<EOL>if_unmodified_since, if_match, if_none_match, timeout=None):
_validate_not_none('<STR_LIT>', container_name)<EOL>_validate_not_none('<STR_LIT>', blob_name)<EOL>_validate_not_none('<STR_LIT>', lease_action)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT>'<EOL>request.host_locations = self._get_host_locations()<EOL>request.path = _get_path(container_name, blob_name)<EOL>request.query = {<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>'<STR_LIT>': _int_to_str(timeout),<EOL>}<EOL>request.headers = {<EOL>'<STR_LIT>': _to_str(lease_id),<EOL>'<STR_LIT>': _to_str(lease_action),<EOL>'<STR_LIT>': _to_str(lease_duration),<EOL>'<STR_LIT>': _to_str(lease_break_period),<EOL>'<STR_LIT>': _to_str(proposed_lease_id),<EOL>'<STR_LIT>': _datetime_to_utc_string(if_modified_since),<EOL>'<STR_LIT>': _datetime_to_utc_string(if_unmodified_since),<EOL>'<STR_LIT>': _to_str(if_match),<EOL>'<STR_LIT>': _to_str(if_none_match),<EOL>}<EOL>return self._perform_request(request, _parse_lease)<EOL>
Establishes and manages a lease on a blob for write and delete operations.
The Lease Blob operation can be called in one of five modes:
    Acquire, to request a new lease.
    Renew, to renew an existing lease.
    Change, to change the ID of an existing lease.
    Release, to free the lease if it is no longer needed so that another
        client may immediately acquire a lease against the blob.
    Break, to end the lease but ensure that another client cannot acquire
        a new lease until the current lease period has expired.

:param str container_name:
    Name of existing container.
:param str blob_name:
    Name of existing blob.
:param str lease_action:
    Possible _LeaseActions acquire|renew|release|break|change
:param str lease_id:
    Required if the blob has an active lease.
:param int lease_duration:
    Specifies the duration of the lease, in seconds, or negative one
    (-1) for a lease that never expires. A non-infinite lease can be
    between 15 and 60 seconds. A lease duration cannot be changed
    using renew or change.
:param int lease_break_period:
    For a break operation, this is the proposed duration of
    seconds that the lease should continue before it is broken, between
    0 and 60 seconds. This break period is only used if it is shorter
    than the time remaining on the lease. If longer, the time remaining
    on the lease is used. A new lease will not be available before the
    break period has expired, but the lease may be held for longer than
    the break period. If this header does not appear with a break
    operation, a fixed-duration lease breaks after the remaining lease
    period elapses, and an infinite lease breaks immediately.
:param str proposed_lease_id:
    Optional for acquire, required for change. Proposed lease ID, in a
    GUID string format. The Blob service returns 400 (Invalid request)
    if the proposed lease ID is not in the correct format. 
:param datetime if_modified_since:
    A DateTime value. Azure expects the date value passed in to be UTC.
    If timezone is included, any non-UTC datetimes will be converted to UTC.
    If a date is passed in without timezone info, it is assumed to be UTC. 
    Specify this header to perform the operation only
    if the resource has been modified since the specified time.
:param datetime if_unmodified_since:
    A DateTime value. Azure expects the date value passed in to be UTC.
    If timezone is included, any non-UTC datetimes will be converted to UTC.
    If a date is passed in without timezone info, it is assumed to be UTC.
    Specify this header to perform the operation only if
    the resource has not been modified since the specified date/time.
:param str if_match:
    An ETag value, or the wildcard character (*). Specify this header to perform
    the operation only if the resource's ETag matches the value specified.
:param str if_none_match:
    An ETag value, or the wildcard character (*). Specify this header
    to perform the operation only if the resource's ETag does not match
    the value specified. Specify the wildcard character (*) to perform
    the operation only if the resource does not exist, and fail the
    operation if it does exist.
:param int timeout:
    The timeout parameter is expressed in seconds.
:return:
    Response headers returned from the service call.
:rtype: dict(str, str)