Uploads operations to the given uploadUrl in incremental steps.

    Note: Each list of operations is expected to contain operations of the
    same type, similar to how one would normally send operations in an
    AdWords API Service request.

    Args:
      operations: one or more lists of operations as would be sent to the
        AdWords API for the associated service.
      is_last: a boolean indicating whether this is the final increment to be
        added to the batch job.

def UploadOperations(self, operations, is_last=False):
    """Uploads operations to the given uploadUrl in incremental steps.

    Note: Each list of operations is expected to contain operations of the
    same type, similar to how one would normally send operations in an
    AdWords API Service request.

    Args:
      operations: one or more lists of operations as would be sent to the
        AdWords API for the associated service.
      is_last: a boolean indicating whether this is the final increment to be
        added to the batch job.
    """
    if self._is_last:
      raise googleads.errors.AdWordsBatchJobServiceInvalidOperationError(
          'Can\'t add new operations to a completed incremental upload.')
    # Build the request
    req = self._request_builder.BuildUploadRequest(
        self._upload_url, operations,
        current_content_length=self._current_content_length, is_last=is_last)
    # Make the request, ignoring the urllib2.HTTPError raised due to HTTP status
    # code 308 (for resumable uploads).
    try:
      _batch_job_logger.debug('Outgoing request: %s %s %s',
                              req.get_full_url(), req.headers, req.data)

      self._url_opener.open(req)

      if _batch_job_logger.isEnabledFor(logging.INFO):
        _batch_job_logger.info('Request summary: %s',
                               self._ExtractRequestSummaryFields(req))
    except urllib2.HTTPError as e:
      if e.code != 308:
        if _batch_job_logger.isEnabledFor(logging.WARNING):
          _batch_job_logger.warning(
              'Request summary: %s',
              self._ExtractRequestSummaryFields(req, error=e))
        raise
    # Update upload status.
    self._current_content_length += len(req.data)
    self._is_last = is_last