def testJobErrors(self):
    poller = command_utils.BqJobPoller(self.job_service, self.client.tables)
    job_ref = self.MakeJobReference()

    self.ExpectJob(job_ref, 'COPY', error_msg='FAILED COPY')
    with self.assertRaisesRegexp(waiter.OperationError, r'FAILED COPY'):
      waiter.WaitFor(poller=poller, operation_ref=job_ref,
                     message='COPYING TABLE')
      self.AssertOutputEquals('')
      self.AssertErrContains('FAILURE')
  def testOther(self):
    poller = command_utils.BqJobPoller(self.job_service, self.client.jobs)
    job_ref = self.MakeJobReference()

    expected = self.ExpectJob(job_ref, 'OTHER')
    actual = waiter.WaitFor(poller=poller,
                            operation_ref=job_ref,
                            message='OTHER JOB')
    self.assertEqual(expected, actual)
    self.AssertOutputEquals('')
    self.AssertErrContains('OTHER JOB')
  def testLoad(self):
    poller = command_utils.BqJobPoller(self.job_service, self.client.tables)
    job_ref = self.MakeJobReference()

    expected = self.ExpectJob(job_ref, 'LOAD')
    actual = waiter.WaitFor(poller=poller,
                            operation_ref=job_ref,
                            message='LOADING TABLE')
    self.assertEqual(expected, actual)
    self.AssertOutputEquals('')
    self.AssertErrContains('LOADING TABLE')
Ejemplo n.º 4
0
    def Run(self, args):
        job_id = hooks.JobIdProcessor(args.job_id)
        requests_type = hooks.GetApiMessage('BigqueryJobsInsertRequest')
        request = requests_type()
        project = args.project or properties.VALUES.core.project.Get(
            required=True)
        request.projectId = project
        request = hooks.ProcessTableCopyConfiguration(None, args, request)
        request = hooks.ProcessTableCopyOverwrite(None, args, request)
        arg_utils.SetFieldInMessage(request, 'job.jobReference.jobId', job_id)
        arg_utils.SetFieldInMessage(request, 'job.jobReference.projectId',
                                    project)

        client = hooks.GetApiClient()
        job_service = client.jobs
        job = client.jobs.Insert(request)

        source_ref = args.CONCEPTS.source.Parse()
        destination_ref = args.CONCEPTS.destination.Parse()
        copy_message = 'Copying {0}:{1} to {2}:{3}.'.format(
            source_ref.Parent().Name(), source_ref.Name(),
            destination_ref.Parent().Name(), destination_ref.Name())

        if not args. async:
            log.CreatedResource(job.id, kind='Job', details=copy_message)
            return job

        result_service = client.tables
        poller = command_utils.BqJobPoller(job_service, result_service)
        job_ref = resources.REGISTRY.Parse(job.jobReference.jobId,
                                           params={'projectId': project},
                                           collection='bigquery.jobs')
        result = waiter.WaitFor(poller=poller,
                                operation_ref=job_ref,
                                message=copy_message)

        log.status.Print('Copied {0}:{1} to {2}:{3}.'.format(
            source_ref.Parent().Name(), source_ref.Name(),
            destination_ref.Parent().Name(), destination_ref.Name()))
        return result