Track+log some migration failures instead of actually failing
This commit is contained in:
		@@ -212,14 +212,27 @@ class Migrator:
 | 
			
		||||
			if confirmation == "MIGRATE":
 | 
			
		||||
				
 | 
			
		||||
				self.__logger.info("Confirmation received; Processing ... ")
 | 
			
		||||
				source_repos_successful = self._migrate_repos(
 | 
			
		||||
				source_repos_successful, source_repos_failed = self._migrate_repos(
 | 
			
		||||
					destination_org_name=destination_org,
 | 
			
		||||
					destination_repo_name=destination_repo_name,
 | 
			
		||||
					destination_topics=destination_topics,
 | 
			
		||||
					do_destination_copy_topics=do_destination_copy_topics,
 | 
			
		||||
					repos=repos_migrate
 | 
			
		||||
				)
 | 
			
		||||
				self.__logger.info(f"{len(source_repos_successful)} of {len(repos_migrate)} repos successfully migrated.")
 | 
			
		||||
				self.__logger.info(
 | 
			
		||||
					f"{len(source_repos_successful)} of {len(repos_migrate)} repos successfully migrated."
 | 
			
		||||
				)
 | 
			
		||||
				if len(source_repos_failed) > 0:
 | 
			
		||||
					self.__logger.error(f"Failed to migrate {len(source_repos_failed)} repos:")
 | 
			
		||||
					for repo, exception in source_repos_failed:
 | 
			
		||||
						self.__logger.error(
 | 
			
		||||
							f"> {repo.name}"
 | 
			
		||||
						)
 | 
			
		||||
					self.__logger.error(f"Captured exception data:")
 | 
			
		||||
					for repo, exception in source_repos_failed:
 | 
			
		||||
						self.__logger.error(
 | 
			
		||||
							f"Failed to migrate repo: {repo.name}\n> {exception}"
 | 
			
		||||
						)
 | 
			
		||||
				
 | 
			
		||||
				self._delete_migrated_repos(source_org_name=source_org, repos=source_repos_successful)
 | 
			
		||||
				
 | 
			
		||||
@@ -323,6 +336,7 @@ class Migrator:
 | 
			
		||||
		)
 | 
			
		||||
		
 | 
			
		||||
		source_repos_successful = []
 | 
			
		||||
		source_repos_failed = []
 | 
			
		||||
		for source_repo in repos:
 | 
			
		||||
			
 | 
			
		||||
			source_repo: giteapy.Repository
 | 
			
		||||
@@ -351,12 +365,28 @@ class Migrator:
 | 
			
		||||
			self.__logger.debug("Migrate body:")
 | 
			
		||||
			self.__logger.debug(migrate_body)
 | 
			
		||||
			
 | 
			
		||||
			destination_api = self._get_repo_api(
 | 
			
		||||
				hostname=self.__destination_host,
 | 
			
		||||
				port=self.__destination_port,
 | 
			
		||||
				token=self.__destination_token,
 | 
			
		||||
			)
 | 
			
		||||
			repo_new = destination_api.repo_migrate(body=migrate_body)
 | 
			
		||||
			try:
 | 
			
		||||
				destination_api = self._get_repo_api(
 | 
			
		||||
					hostname=self.__destination_host,
 | 
			
		||||
					port=self.__destination_port,
 | 
			
		||||
					token=self.__destination_token,
 | 
			
		||||
				)
 | 
			
		||||
			except giteapy.rest.ApiException as e:
 | 
			
		||||
				self.__logger.error(f"Failed to generate destination API: {e}")
 | 
			
		||||
				source_repos_failed.append(
 | 
			
		||||
					(source_repo, e)
 | 
			
		||||
				)
 | 
			
		||||
				continue
 | 
			
		||||
			
 | 
			
		||||
			try:
 | 
			
		||||
				repo_new = destination_api.repo_migrate(body=migrate_body)
 | 
			
		||||
			except giteapy.rest.ApiException as e:
 | 
			
		||||
				self.__logger.error(f"Failed to execute repo migration request via API: {e}")
 | 
			
		||||
				source_repos_failed.append(
 | 
			
		||||
					(source_repo, e)
 | 
			
		||||
				)
 | 
			
		||||
				continue
 | 
			
		||||
			
 | 
			
		||||
			self.__logger.debug(f"Migration result: {repo_new}")
 | 
			
		||||
			repo_new: giteapy.Repository
 | 
			
		||||
			
 | 
			
		||||
@@ -384,10 +414,14 @@ class Migrator:
 | 
			
		||||
			
 | 
			
		||||
			source_repos_successful.append(source_repo)
 | 
			
		||||
		
 | 
			
		||||
		return source_repos_successful
 | 
			
		||||
		return source_repos_successful, source_repos_failed
 | 
			
		||||
	
 | 
			
		||||
	def _delete_migrated_repos(self, source_org_name: str, repos: list[giteapy.Repository]):
 | 
			
		||||
		
 | 
			
		||||
		if len(repos) == 0:
 | 
			
		||||
			self.__logger.warning(f"Cannot delete any migrated repos because none were successful!")
 | 
			
		||||
			return
 | 
			
		||||
		
 | 
			
		||||
		repo_api = self._get_repo_api(
 | 
			
		||||
			hostname=self.__source_host,
 | 
			
		||||
			port=self.__source_port,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user