Handle the non-root perms case specifically too
							parent
							
								
									8f22ccd5ef
								
							
						
					
					
						commit
						d6ffe1ba7a
					
				|  | @ -23,7 +23,6 @@ from typing import ( | ||||||
|     # Any, |     # Any, | ||||||
| ) | ) | ||||||
| from contextlib import asynccontextmanager as acm | from contextlib import asynccontextmanager as acm | ||||||
| from requests.exceptions import ConnectionError |  | ||||||
| # import time | # import time | ||||||
| 
 | 
 | ||||||
| import trio | import trio | ||||||
|  | @ -32,6 +31,8 @@ import tractor | ||||||
| import docker | import docker | ||||||
| import json | import json | ||||||
| from docker.models.containers import Container | from docker.models.containers import Container | ||||||
|  | from docker.errors import DockerException | ||||||
|  | from requests.exceptions import ConnectionError | ||||||
| 
 | 
 | ||||||
| from ..log import get_logger  # , get_console_log | from ..log import get_logger  # , get_console_log | ||||||
| from ..config import _config_dir | from ..config import _config_dir | ||||||
|  | @ -87,24 +88,31 @@ async def open_docker( | ||||||
| 
 | 
 | ||||||
| ) -> docker.DockerClient: | ) -> docker.DockerClient: | ||||||
| 
 | 
 | ||||||
|  |     client: Optional[docker.DockerClient] = None | ||||||
|     try: |     try: | ||||||
|         client = docker.DockerClient( |         client = docker.DockerClient( | ||||||
|             base_url=url, |             base_url=url, | ||||||
|             **kwargs |             **kwargs | ||||||
|         ) if url else docker.from_env(**kwargs) |         ) if url else docker.from_env(**kwargs) | ||||||
|     except ( |         yield client | ||||||
|         ConnectionError, |     except ConnectionError: | ||||||
|         docker.errors.DockerException, |         # prolly no daemon started | ||||||
|     ): |  | ||||||
|         raise DockerNotStarted('!?!?') |         raise DockerNotStarted('!?!?') | ||||||
| 
 | 
 | ||||||
|     try: |     except DockerException as err: | ||||||
|         yield client |         # could be more specific so let's check if it's just perms. | ||||||
|  |         if 'PermissionError' in err.args[0]: | ||||||
|  |             raise DockerException('You dint run as root yo!') | ||||||
|  | 
 | ||||||
|  |         # not perms? | ||||||
|  |         raise | ||||||
|  | 
 | ||||||
|     finally: |     finally: | ||||||
|         # for c in client.containers.list(): |         if client: | ||||||
|         #     c.kill() |             # for c in client.containers.list(): | ||||||
|         client.close() |             #     c.kill() | ||||||
|         # client.api._custom_adapter.close() |             client.close() | ||||||
|  |             # client.api._custom_adapter.close() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # async def waitfor( | # async def waitfor( | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue