def ListDockerTags(args): """Lists Docker tags.""" resource = _ParseDockerImagePath(args.IMAGE_PATH) client = ar_requests.GetClient() messages = ar_requests.GetMessages() img_list = [] if isinstance(resource, DockerRepo): log.status.Print( "Listing items under project {}, location {}, repository {}.\n". format(resource.project, resource.location, resource.repo)) for pkg in ar_requests.ListPackages(client, messages, resource.GetRepositoryName()): img_list.append(DockerImage(resource, pkg.name.split("/")[-1])) elif isinstance(resource, DockerImage): log.status.Print( "Listing items under project {}, location {}, repository {}.\n". format(resource.docker_repo.project, resource.docker_repo.location, resource.docker_repo.repo)) img_list.append(resource) tag_list = [] for img in img_list: for tag in ar_requests.ListTags(client, messages, img.GetPackageName()): tag_list.append({ "tag": tag.name, "image": img.GetDockerString(), "version": tag.version, }) return tag_list
def _GetDockerPackagesAndVersions(docker_repo, include_tags, is_nested=False): """Gets a list of packages with versions for a Docker repository.""" client = ar_requests.GetClient() messages = ar_requests.GetMessages() img_list = [] for pkg in ar_requests.ListPackages(client, messages, docker_repo.GetRepositoryName()): parts = pkg.name.split("/") if len(parts) != 8: raise ar_exceptions.ArtifactRegistryError( "Internal error. Corrupted package name: {}".format(pkg.name)) img = DockerImage(DockerRepo(parts[1], parts[3], parts[5]), parts[7]) img_list.extend(_GetDockerVersions(img, include_tags, is_nested)) return img_list