Example #1
0
  def post(self):
    """Handler for post requests to datastore_admin/copy.do.

    Jobs are executed and user is redirected to the get handler.
    """
    namespace = self.request.get('namespace')
    kinds = self.request.get_all('kind')
    (namespace_str, kinds_str) = utils.GetPrintableStrs(namespace, kinds)
    token = self.request.get('xsrf_token')
    remote_url = self.request.get('remote_url')
    extra_header = self.request.get('extra_header')

    jobs = []
    if not remote_url:
      parameters = [('error', 'Unspecified remote URL.')]
    elif not utils.ValidateXsrfToken(token, XSRF_ACTION):
      parameters = [('xsrf_error', '1')]
    else:
      try:


        if extra_header:
          extra_headers = dict([extra_header.split(':', 1)])
        else:
          extra_headers = None
        target_app = remote_api_put_stub.get_remote_appid(remote_url,
                                                          extra_headers)
        op = utils.StartOperation(
            'Copying %s%s to %s' % (kinds_str, namespace_str, target_app))
        name_template = 'Copy all %(kind)s objects%(namespace)s'
        mapper_params = {
            'target_app': target_app,
            'remote_url': remote_url,
            'extra_header': extra_header,
        }
        jobs = utils.RunMapForKinds(
            op.key(),
            kinds,
            name_template,
            self.COPY_HANDLER,
            self.INPUT_READER,
            None,
            mapper_params)

        error = ''


      except Exception, e:
        logging.exception('Handling exception.')
        error = self._HandleException(e)

      parameters = [('job', job) for job in jobs]
      if error:
        parameters.append(('error', error))
Example #2
0
  def post(self):
    """Handler for post requests to datastore_admin/copy.do.

    Jobs are executed and user is redirected to the get handler.
    """
    namespace = self.request.get('namespace')
    kinds = self.request.get_all('kind')
    (namespace_str, kinds_str) = utils.GetPrintableStrs(namespace, kinds)
    token = self.request.get('xsrf_token')
    remote_url = self.request.get('remote_url')
    extra_header = self.request.get('extra_header')

    jobs = []
    if not remote_url:
      parameters = [('error', 'Unspecified remote URL.')]
    elif not utils.ValidateXsrfToken(token, XSRF_ACTION):
      parameters = [('xsrf_error', '1')]
    else:
      try:


        if extra_header:
          extra_headers = dict([extra_header.split(':', 1)])
        else:
          extra_headers = None
        target_app = remote_api_put_stub.get_remote_appid(remote_url,
                                                          extra_headers)
        op = utils.StartOperation(
            'Copying %s%s to %s' % (kinds_str, namespace_str, target_app))
        name_template = 'Copy all %(kind)s objects%(namespace)s'
        mapper_params = {
            'target_app': target_app,
            'remote_url': remote_url,
            'extra_header': extra_header,
        }
        jobs = utils.RunMapForKinds(
            op.key(),
            kinds,
            name_template,
            self.COPY_HANDLER,
            self.INPUT_READER,
            None,
            mapper_params)

        error = ''


      except Exception, e:
        logging.exception('Handling exception.')
        error = self._HandleException(e)

      parameters = [('job', job) for job in jobs]
      if error:
        parameters.append(('error', error))
 def testGetAppid(self):
   """Sueccessfully get an appid."""
   remote_api_put_stub.random.random().AndReturn(float('0.%s' % self.rtok))
   response = "{app_id: %s, rtok: !!python/unicode '%s'}" % (
       self.app_id, self.rtok)
   remote_api_put_stub.urlfetch.fetch(
       self.remote_url + '?rtok=%s' % self.rtok, None, urlfetch.GET,
       {'X-appcfg-api-version': '1'}, follow_redirects=False
       ).AndReturn(MockUrlfetchResult(200, response))
   self.mox.ReplayAll()
   self.assertEqual(self.app_id,
                    remote_api_put_stub.get_remote_appid(self.remote_url, {}))
 def testGetAppid(self):
     """Sueccessfully get an appid."""
     remote_api_put_stub.random.random().AndReturn(float("0.%s" % self.rtok))
     response = "{app_id: %s, rtok: !!python/unicode '%s'}" % (self.app_id, self.rtok)
     remote_api_put_stub.urlfetch.fetch(
         self.remote_url + "?rtok=%s" % self.rtok,
         None,
         urlfetch.GET,
         {"X-appcfg-api-version": "1"},
         follow_redirects=False,
     ).AndReturn(MockUrlfetchResult(200, response))
     self.mox.ReplayAll()
     self.assertEqual(self.app_id, remote_api_put_stub.get_remote_appid(self.remote_url, {}))