docs: def create_queue(self, queue_name, metadata=None, fail_on_exist=False, timeout=None):
          '''
          Creates a queue under the given account.
  
          :param str queue_name:
              The name of the queue to create. A queue name must be from 3 through 
              63 characters long and may only contain lowercase letters, numbers, 
              and the dash (-) character. The first and last letters in the queue 
              must be alphanumeric. The dash (-) character cannot be the first or 
              last character. Consecutive dash characters are not permitted in the 
              queue name.
          :param metadata:
              A dict containing name-value pairs to associate with the queue as 
              metadata. Note that metadata names preserve the case with which they 
              were created, but are case-insensitive when set or read. 
          :type metadata: a dict mapping str to str 
          :param bool fail_on_exist:
              Specifies whether to throw an exception if the queue already exists.
          :param int timeout:
              The server timeout, expressed in seconds.
          :return:
              A boolean indicating whether the queue was created. If fail_on_exist 
              was set to True, this will throw instead of returning false.
          :rtype: bool
          '''
          _validate_not_none('queue_name', queue_name)
          request = HTTPRequest()
          request.method = 'PUT'
          request.host = self._get_host()
          request.path = _get_path(queue_name)
          request.query = [('timeout', _int_to_str(timeout))]
          request.headers = [('x-ms-meta-name-values', metadata)]
          if not fail_on_exist:
              try:
                  response = self._perform_request(request)
                  if response.status == _HTTP_RESPONSE_NO_CONTENT:
                      return False
                  return True
              except AzureHttpError as ex:
                  _dont_fail_on_exist(ex)
                  return False
          else:
              response = self._perform_request(request)
              if response.status == _HTTP_RESPONSE_NO_CONTENT:
                  raise AzureConflictHttpError(
                      _ERROR_CONFLICT.format(response.message), response.status)
              return True