async def rescan_images(self, registry: str = None, *, reporter: ProgressReporter = None) -> None: if registry is None: registries = [] data = await self.etcd.get_prefix('config/docker/registry') for key, val in data.items(): if key: registries.append(etcd_unquote(key)) else: registries = [registry] coros = [] for registry in registries: log.info('Scanning kernel images from the registry "{0}"', registry) registry_info = await self.etcd.get_prefix( f'config/docker/registry/{etcd_quote(registry)}') if not registry_info: log.error('Unknown registry: "{0}"', registry) continue coros.append( self._rescan_images_single_registry(registry, registry_info, reporter)) await asyncio.gather(*coros)
def unquote(cli_ctx, value): ''' Unquote the given string used as a URL piece in etcd keys. ''' print(etcd_unquote(value))
async def _scan_reverse_aliases(self): aliases = await self.etcd.get_prefix('images/_aliases') result = defaultdict(list) for key, value in aliases.items(): result[value].append(etcd_unquote(key)) return result
async def _scan_reverse_aliases(self) -> Mapping[str, List[str]]: aliases = await self.etcd.get_prefix('images/_aliases') result: DefaultDict[str, List[str]] = defaultdict(list) for key, value in aliases.items(): result[value].append(etcd_unquote(key)) return dict(result)
def unquote(cli_ctx: CLIContext, value) -> None: ''' Unquote the given string used as a URL piece in etcd keys. ''' print(etcd_unquote(value))