def create_share(self, share_name, metadata=None, quota=None,<EOL>fail_on_exist=False, timeout=None):
_validate_not_none('<STR_LIT>', share_name)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT>'<EOL>request.host_locations = self._get_host_locations()<EOL>request.path = _get_path(share_name)<EOL>request.query = {<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>'<STR_LIT>': _int_to_str(timeout),<EOL>}<EOL>request.headers = {<EOL>'<STR_LIT>': _int_to_str(quota)<EOL>}<EOL>_add_metadata_headers(metadata, request)<EOL>if not fail_on_exist:<EOL><INDENT>try:<EOL><INDENT>self._perform_request(request, expected_errors=[_SHARE_ALREADY_EXISTS_ERROR_CODE])<EOL>return True<EOL><DEDENT>except AzureHttpError as ex:<EOL><INDENT>_dont_fail_on_exist(ex)<EOL>return False<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self._perform_request(request)<EOL>return True<EOL><DEDENT>
Creates a new share under the specified account. If the share
with the same name already exists, the operation fails on the
service. By default, the exception is swallowed by the client.
To expose the exception, specify True for fail_on_exists.

:param str share_name:
    Name of share to create.
:param metadata:
    A dict with name_value pairs to associate with the
    share as metadata. Example:{'Category':'test'}
:type metadata: dict(str, str)
:param int quota:
    Specifies the maximum size of the share, in gigabytes. Must be 
    greater than 0, and less than or equal to 5TB (5120).
:param bool fail_on_exist:
    Specify whether to throw an exception when the share exists.
    False by default.
:param int timeout:
    The timeout parameter is expressed in seconds.
:return: True if share is created, False if share already exists.
:rtype: bool