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())
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())
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')
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)
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)
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')
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)
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)
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()
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()
def _Callback(): env_ref = parsers.ParseEnvironment(self.TEST_ENVIRONMENT_NAME) storage_util.Export( env_ref, 'subdir/*', 'subdir', release_track=self.track)