def set_container_metadata(self, container_name, metadata=None,<EOL>lease_id=None, if_modified_since=None, timeout=None):
_validate_not_none('<STR_LIT>', container_name)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT>'<EOL>request.host_locations = self._get_host_locations()<EOL>request.path = _get_path(container_name)<EOL>request.query = {<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>'<STR_LIT>': _int_to_str(timeout),<EOL>}<EOL>request.headers = {<EOL>'<STR_LIT>': _datetime_to_utc_string(if_modified_since),<EOL>'<STR_LIT>': _to_str(lease_id),<EOL>}<EOL>_add_metadata_headers(metadata, request)<EOL>return self._perform_request(request, _parse_base_properties)<EOL>
Sets one or more user-defined name-value pairs for the specified
container. Each call to this operation replaces all existing metadata
attached to the container. To remove all metadata from the container,
call this operation with no metadata dict.

:param str container_name:
    Name of existing container.
:param metadata:
    A dict containing name-value pairs to associate with the container as 
    metadata. Example: {'category':'test'}
:type metadata: a dict mapping str to str
:param str lease_id:
    If specified, set_container_metadata only succeeds if the
    container's lease is active and matches this ID.
: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 int timeout:
    The timeout parameter is expressed in seconds.
:return: ETag and last modified properties for the updated Container
:rtype: :class:`~azure.storage.blob.models.ResourceProperties`