libkas: Terminate kas on _repo_fetch_async errors
This behavior got lost through 0bdd7a8d52. Specifically, errors during
git clone no longer shut down kas. Fix this by reporting back an error
code from _repo_fetch_async and terminate in repos_fetch if it's
non-zero.
Drop the return value of repos_fetch - no caller expects any.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Daniel Wagner
					
				
			
			
				
	
			
			
			
						parent
						
							9f4af22ac6
						
					
				
				
					commit
					264be71ebe
				
			@@ -157,7 +157,7 @@ def _repo_fetch_async(config, repo):
 | 
			
		||||
        Start asynchronous repository fetch.
 | 
			
		||||
    """
 | 
			
		||||
    if repo.git_operation_disabled:
 | 
			
		||||
        return
 | 
			
		||||
        return 0
 | 
			
		||||
 | 
			
		||||
    if not os.path.exists(repo.path):
 | 
			
		||||
        os.makedirs(os.path.dirname(repo.path), exist_ok=True)
 | 
			
		||||
@@ -173,7 +173,7 @@ def _repo_fetch_async(config, repo):
 | 
			
		||||
                                             cwd=config.kas_work_dir)
 | 
			
		||||
        if retc == 0:
 | 
			
		||||
            logging.info('Repository %s cloned', repo.name)
 | 
			
		||||
        return
 | 
			
		||||
        return retc
 | 
			
		||||
 | 
			
		||||
    # Does refspec exist in the current repository?
 | 
			
		||||
    (retc, output) = yield from run_cmd_async(['/usr/bin/git',
 | 
			
		||||
@@ -186,7 +186,7 @@ def _repo_fetch_async(config, repo):
 | 
			
		||||
    if retc == 0:
 | 
			
		||||
        logging.info('Repository %s already contains %s as %s',
 | 
			
		||||
                     repo.name, repo.refspec, output.strip())
 | 
			
		||||
        return
 | 
			
		||||
        return retc
 | 
			
		||||
 | 
			
		||||
    # No it is missing, try to fetch
 | 
			
		||||
    (retc, output) = yield from run_cmd_async(['/usr/bin/git',
 | 
			
		||||
@@ -199,18 +199,27 @@ def _repo_fetch_async(config, repo):
 | 
			
		||||
                        repo.name, output)
 | 
			
		||||
    else:
 | 
			
		||||
        logging.info('Repository %s updated', repo.name)
 | 
			
		||||
    return 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def repos_fetch(config, repos):
 | 
			
		||||
    """
 | 
			
		||||
        Fetches the list of repositories to the kas_work_dir.
 | 
			
		||||
    """
 | 
			
		||||
    cmds = []
 | 
			
		||||
    tasks = []
 | 
			
		||||
    for repo in repos:
 | 
			
		||||
        cmds.append(_repo_fetch_async(config, repo))
 | 
			
		||||
        if hasattr(asyncio, 'ensure_future'):
 | 
			
		||||
            task = asyncio.ensure_future(_repo_fetch_async(config, repo))
 | 
			
		||||
        else:
 | 
			
		||||
            task = asyncio.async(_repo_fetch_async(config, repo))
 | 
			
		||||
        tasks.append(task)
 | 
			
		||||
 | 
			
		||||
    loop = asyncio.get_event_loop()
 | 
			
		||||
    return loop.run_until_complete(asyncio.wait(cmds))
 | 
			
		||||
    loop.run_until_complete(asyncio.wait(tasks))
 | 
			
		||||
 | 
			
		||||
    for task in tasks:
 | 
			
		||||
        if task.result():
 | 
			
		||||
            sys.exit(task.result())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def repo_checkout(config, repo):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user