Ejemplo n.º 1
0
 def Run(self, args):
     env_ref = args.CONCEPTS.environment.Parse()
     source_path = posixpath.join(Export.SUBDIR_BASE,
                                  (args.source or '*').strip(posixpath.sep))
     return storage_util.Export(env_ref, [source_path],
                                args.destination,
                                release_track=self.ReleaseTrack())
Ejemplo n.º 2
0
 def Run(self, args):
     storage_util.WarnIfWildcardIsPresent(args.source, '--source')
     env_ref = args.CONCEPTS.environment.Parse()
     source_path = posixpath.join(Export.SUBDIR_BASE,
                                  (args.source or '*').strip(posixpath.sep))
     return storage_util.Export(env_ref,
                                source_path,
                                args.destination,
                                release_track=self.ReleaseTrack())
Ejemplo n.º 3
0
 def testExportDestDoesNotExist(self):
   env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)
   self.ExpectEnvironmentGet(
       self.TEST_PROJECT,
       self.TEST_LOCATION,
       self.TEST_ENVIRONMENT_ID,
       response=self.MakeEnvironmentWithBucket())
   with self.AssertRaisesExceptionMatches(
       command_util.Error, 'Destination for export must be a directory.'):
     storage_util.Export(
         env_ref, 'dags/source', '/my/fake/path')
Ejemplo n.º 4
0
 def testExportSourceIsFileDestIsLocal(self):
   env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)
   self.ExpectEnvironmentGet(
       self.TEST_PROJECT,
       self.TEST_LOCATION,
       self.TEST_ENVIRONMENT_ID,
       response=self.MakeEnvironmentWithBucket())
   self.ExpectObjectGet(self.object_refs[0])
   self._ExpectCopyFileFromGcs(self.object_refs[0])
   storage_util.Export(
       env_ref, 'dags/source/a.txt', self.export_dir)
Ejemplo n.º 5
0
  def testExportLocalDestinationIsNotDirectory(self, isdir_mock, exec_mock):
    self.ExpectEnvironmentGet(
        self.TEST_PROJECT,
        self.TEST_LOCATION,
        self.TEST_ENVIRONMENT_ID,
        response=self.MakeEnvironmentWithBucket())

    with self.AssertRaisesExceptionMatches(
        command_util.Error, 'must be a directory'):
      env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)
      storage_util.Export(
          env_ref, 'subdir/*', 'subdir', release_track=self.track)
Ejemplo n.º 6
0
 def testExportSourceIsFileDestIsGcs(self):
   env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)
   self.ExpectEnvironmentGet(
       self.TEST_PROJECT,
       self.TEST_LOCATION,
       self.TEST_ENVIRONMENT_ID,
       response=self.MakeEnvironmentWithBucket())
   self.ExpectObjectGet(self.object_refs[0])
   self.ExpectCopy(
       self.object_refs[0],
       gcs_util.ObjectReference(self.other_bucket, 'dest/a.txt'))
   storage_util.Export(
       env_ref, 'dags/source/a.txt', self.other_bucket_path + '/dest')
Ejemplo n.º 7
0
  def testExportSourceIsDirDestIsLocal(self):
    env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)
    self.ExpectEnvironmentGet(
        self.TEST_PROJECT,
        self.TEST_LOCATION,
        self.TEST_ENVIRONMENT_ID,
        response=self.MakeEnvironmentWithBucket())

    self.list_response.items.append(
        self.storage_messages.Object(name='dags/'))
    self.ExpectObjectList(
        self.test_gcs_bucket, 'dags/', responses=[self.list_response])
    for obj_ref in self.object_refs:
      self._ExpectCopyFileFromGcs(obj_ref)
    storage_util.Export(
        env_ref, 'dags/*', self.export_dir)
Ejemplo n.º 8
0
  def testExportSourceIsDirDestAlreadyExists(self):
    env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)
    self.ExpectEnvironmentGet(
        self.TEST_PROJECT,
        self.TEST_LOCATION,
        self.TEST_ENVIRONMENT_ID,
        response=self.MakeEnvironmentWithBucket())

    self.list_response.items.append(
        self.storage_messages.Object(name='dags/'))
    self.ExpectObjectList(
        self.test_gcs_bucket, 'dags/', responses=[self.list_response])
    for obj_ref in self.object_refs:
      self._ExpectCopyFileFromGcs(obj_ref)

    # Create a file that will be overwritten.
    self.file = self.Touch(
        self.temp_path,
        os.path.join('dest', self.source_dir, 'a.txt'),
        makedirs=True)
    storage_util.Export(
        env_ref, 'dags/*', self.export_dir)
Ejemplo n.º 9
0
  def testExportSuccessful(self, isdir_mock, exec_mock):
    """Tests successful Export call."""
    source = 'c/d'
    env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)

    self.ExpectEnvironmentGet(
        self.TEST_PROJECT,
        self.TEST_LOCATION,
        self.TEST_ENVIRONMENT_ID,
        response=self.MakeEnvironmentWithBucket())

    fake_exec = kubectl_util.FakeExec()
    exec_mock.side_effect = fake_exec

    fake_exec.AddCallback(
        0,
        self.MakeGsutilExecCallback(
            ['-m', 'cp', '-r']
            + [posixpath.join(self.test_gcs_bucket_path, source)]
            + ['subdir']))

    storage_util.Export(env_ref, source, 'subdir', release_track=self.track)
    fake_exec.Verify()
Ejemplo n.º 10
0
  def testExportGcsDestinationHasSlashAdded(self, isdir_mock, exec_mock):
    """Tests that a trailing slash is automatically added to gs:// dests."""
    source = 'c/d'
    env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)

    self.ExpectEnvironmentGet(
        self.TEST_PROJECT,
        self.TEST_LOCATION,
        self.TEST_ENVIRONMENT_ID,
        response=self.MakeEnvironmentWithBucket())

    fake_exec = kubectl_util.FakeExec()
    exec_mock.side_effect = fake_exec

    fake_exec.AddCallback(
        0,
        self.MakeGsutilExecCallback(
            ['-m', 'cp', '-r']
            + [posixpath.join(self.test_gcs_bucket_path, source)]
            + ['gs://subdir/']))

    storage_util.Export(
        env_ref, source, 'gs://subdir', release_track=self.track)
    fake_exec.Verify()
Ejemplo n.º 11
0
 def _Callback():
   env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME)
   storage_util.Export(
       env_ref, 'subdir/*', 'subdir', release_track=self.track)