{"action":"created","comment":{"url":"https://api.github.com/repos/containers/image/pulls/comments/151281859","pull_request_review_id":76965265,"id":151281859,"diff_hunk":"@@ -0,0 +1,82 @@\n+{\n+   \"schemaVersion\": 2,\n+   \"mediaType\": \"application/vnd.docker.distribution.manifest.list.v2+json\",\n+   \"manifests\": [\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 527,\n+         \"digest\": \"sha256:030fcb92e1487b18c974784dcc110a93147c9fc402188370fbfd17efabffc6af\",\n+         \"platform\": {\n+            \"architecture\": \"amd64\",\n+            \"os\": \"linux\"\n+         }\n+      },\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 527,\n+         \"digest\": \"sha256:9142d97ef280a7953cf1a85716de49a24cc1dd62776352afad67e635331ff77a\",\n+         \"platform\": {\n+            \"architecture\": \"arm\",\n+            \"os\": \"linux\",\n+            \"variant\": \"v5\"\n+         }\n+      },\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 527,\n+         \"digest\": \"sha256:b5dbad4bdb4444d919294afe49a095c23e86782f98cdf0aa286198ddb814b50b\",\n+         \"platform\": {\n+            \"architecture\": \"arm\",\n+            \"os\": \"linux\",\n+            \"variant\": \"v6\"\n+         }\n+      },\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 527,\n+         \"digest\": \"sha256:a8fe0549cac196f439de3bf2b57af14f7cd4e59915ccd524428f588628a4ef31\",\n+         \"platform\": {\n+            \"architecture\": \"arm\",\n+            \"os\": \"linux\",\n+            \"variant\": \"v7\"\n+         }\n+      },\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 527,\n+         \"digest\": \"sha256:dc472a59fb006797aa2a6bfb54cc9c57959bb0a6d11fadaa608df8c16dea39cf\",\n+         \"platform\": {\n+            \"architecture\": \"arm64\",\n+            \"os\": \"linux\",\n+            \"variant\": \"v8\"\n+         }\n+      },\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 527,\n+         \"digest\": \"sha256:9a33b9909e56b0a2092a65fb1b79ef6717fa160b1f084476b860418780e8d53b\",\n+         \"platform\": {\n+            \"architecture\": \"386\",\n+            \"os\": \"linux\"\n+         }\n+      },\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 528,\n+         \"digest\": \"sha256:59117d7c016fba6ede7f87991204bd672a1dca444102de66db632383507ed90b\",\n+         \"platform\": {\n+            \"architecture\": \"ppc64le\",\n+            \"os\": \"linux\"\n+         }\n+      },\n+      {\n+         \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n+         \"size\": 528,\n+         \"digest\": \"sha256:e5aa1b0a24620228b75382997a0977f609b3ca3a95533dafdef84c74cc8df642\",\n+         \"platform\": {\n+            \"architecture\": \"s390x\",\n+            \"os\": \"linux\"\n+         }\n+      }\n+   ]\n+}","path":"image/fixtures/schema2list.json","position":82,"original_position":82,"commit_id":"ff6008a477c5e54a2c6f9056f8c4016de4c7c5ee","original_commit_id":"00f4e20543feba58f4c4d47aaa2c90cde0956757","user":{"login":"mtrmac","id":7052838,"avatar_url":"https://avatars2.githubusercontent.com/u/7052838?v=4","gravatar_id":"","url":"https://api.github.com/users/mtrmac","html_url":"https://github.com/mtrmac","followers_url":"https://api.github.com/users/mtrmac/followers","following_url":"https://api.github.com/users/mtrmac/following{/other_user}","gists_url":"https://api.github.com/users/mtrmac/gists{/gist_id}","starred_url":"https://api.github.com/users/mtrmac/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtrmac/subscriptions","organizations_url":"https://api.github.com/users/mtrmac/orgs","repos_url":"https://api.github.com/users/mtrmac/repos","events_url":"https://api.github.com/users/mtrmac/events{/privacy}","received_events_url":"https://api.github.com/users/mtrmac/received_events","type":"User","site_admin":false},"body":"This is an actual `busybox` manifest coming from Docker Hub; it is most representative unmodified.","created_at":"2017-11-15T23:21:52Z","updated_at":"2017-11-15T23:21:53Z","html_url":"https://github.com/containers/image/pull/346#discussion_r151281859","pull_request_url":"https://api.github.com/repos/containers/image/pulls/346","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/containers/image/pulls/comments/151281859"},"html":{"href":"https://github.com/containers/image/pull/346#discussion_r151281859"},"pull_request":{"href":"https://api.github.com/repos/containers/image/pulls/346"}},"in_reply_to_id":151276283},"pull_request":{"url":"https://api.github.com/repos/containers/image/pulls/346","id":141429437,"html_url":"https://github.com/containers/image/pull/346","diff_url":"https://github.com/containers/image/pull/346.diff","patch_url":"https://github.com/containers/image/pull/346.patch","issue_url":"https://api.github.com/repos/containers/image/issues/346","number":346,"state":"open","locked":false,"title":"Support copying a single image from manifest lists","user":{"login":"mtrmac","id":7052838,"avatar_url":"https://avatars2.githubusercontent.com/u/7052838?v=4","gravatar_id":"","url":"https://api.github.com/users/mtrmac","html_url":"https://github.com/mtrmac","followers_url":"https://api.github.com/users/mtrmac/followers","following_url":"https://api.github.com/users/mtrmac/following{/other_user}","gists_url":"https://api.github.com/users/mtrmac/gists{/gist_id}","starred_url":"https://api.github.com/users/mtrmac/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtrmac/subscriptions","organizations_url":"https://api.github.com/users/mtrmac/orgs","repos_url":"https://api.github.com/users/mtrmac/repos","events_url":"https://api.github.com/users/mtrmac/events{/privacy}","received_events_url":"https://api.github.com/users/mtrmac/received_events","type":"User","site_admin":false},"body":"This teaches `copy.Image` to handle manifest lists, instead of failing, by choosing an image appropriate for the current system, and copying only that one.\r\n\r\nUltimately we want to copy the whole manifest list; this does not yet do that.\r\n\r\n**NOTE:** This is an alternative to #344, and should have a similar effect for Linux users. macOS users trying to access Linux images will instead start seeing errors like\r\n```\r\nError choosing an image from manifest list docker://busybox:latest: no image found in manifest list for architecture amd64, OS darwin \r\n```\r\nunless they explicitly make a `types.SystemContext{OSChoice:\"linux\"}` override. This may be fine for some uses, but the advertised use of `skopeo copy` for copying between docker/distribution registries suffers (until we implement a copy of the whole manifest list).\r\n\r\n`types.ImageSource` is modified to understand a set of images distinguished by an optional `instanceDigest`; (as opposed to creating new `types.ImageSource` instances for each image instance, this allows sharing state, e.g. `docker load`, or an unpacked archive, for all of the instances). Then `copy.Image` is split into a per-manifest-list initialization, and a per-image-instance copy operation, so the per-manifest-list part can choose a single instance if necessary.\r\n\r\n**NOTE:** One of the implications of this is that signature verification now happens _only_ for the individual instances; manifest list signatures are not required and not processed at all.\r\n\r\nThe overall diff is probably difficult to review, please see the individual commits, and read the individual commit messages messages for more detailed discussion:\r\n\r\n - Fix an incorrect variable reference in storageImageSource.GetSignatures\r\n - Move the core logic of types.Image.IsMultiImage to c/i/manifest\r\n - Remove types.Image.IsMultiImage\r\n - Do the isMultiImage decision already on an UnparsedImage, not an Image\r\n - Rename copy.imageCopier to copier\r\n - Split copy.imageCopier from copy.copier\r\n - Use copier and imageCopier instead of parameters and variables\r\n - Add copier.Printf\r\n - FIXME Replace GetTargetManifest by GetManifest(instanceDigest)\r\n - FIXME: Add a instanceDigest parameter to GetSignatures\r\n - Support instanceDigest in types.UnparsedImage and types.Image\r\n - Do not Close the ImageSource in UnparsedImage/Image\r\n - Split copier.copyOneImage from copy.Image\r\n - Finally, if the copy.Image source is a manifest list, copy a single instance\r\n - Add architecture/OS overrides to types.SystemContext\r\n - Revert \"Hotfix: Do not fetch manifest lists from Docker registries\"","created_at":"2017-09-16T02:41:26Z","updated_at":"2017-11-15T23:21:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1338bc04796b9e5ee721729ac2fbca3aa41164c3","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/containers/image/pulls/346/commits","review_comments_url":"https://api.github.com/repos/containers/image/pulls/346/comments","review_comment_url":"https://api.github.com/repos/containers/image/pulls/comments{/number}","comments_url":"https://api.github.com/repos/containers/image/issues/346/comments","statuses_url":"https://api.github.com/repos/containers/image/statuses/ff6008a477c5e54a2c6f9056f8c4016de4c7c5ee","head":{"label":"mtrmac:manifest-lists","ref":"manifest-lists","sha":"ff6008a477c5e54a2c6f9056f8c4016de4c7c5ee","user":{"login":"mtrmac","id":7052838,"avatar_url":"https://avatars2.githubusercontent.com/u/7052838?v=4","gravatar_id":"","url":"https://api.github.com/users/mtrmac","html_url":"https://github.com/mtrmac","followers_url":"https://api.github.com/users/mtrmac/followers","following_url":"https://api.github.com/users/mtrmac/following{/other_user}","gists_url":"https://api.github.com/users/mtrmac/gists{/gist_id}","starred_url":"https://api.github.com/users/mtrmac/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtrmac/subscriptions","organizations_url":"https://api.github.com/users/mtrmac/orgs","repos_url":"https://api.github.com/users/mtrmac/repos","events_url":"https://api.github.com/users/mtrmac/events{/privacy}","received_events_url":"https://api.github.com/users/mtrmac/received_events","type":"User","site_admin":false},"repo":{"id":62076230,"name":"image","full_name":"mtrmac/image","owner":{"login":"mtrmac","id":7052838,"avatar_url":"https://avatars2.githubusercontent.com/u/7052838?v=4","gravatar_id":"","url":"https://api.github.com/users/mtrmac","html_url":"https://github.com/mtrmac","followers_url":"https://api.github.com/users/mtrmac/followers","following_url":"https://api.github.com/users/mtrmac/following{/other_user}","gists_url":"https://api.github.com/users/mtrmac/gists{/gist_id}","starred_url":"https://api.github.com/users/mtrmac/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtrmac/subscriptions","organizations_url":"https://api.github.com/users/mtrmac/orgs","repos_url":"https://api.github.com/users/mtrmac/repos","events_url":"https://api.github.com/users/mtrmac/events{/privacy}","received_events_url":"https://api.github.com/users/mtrmac/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mtrmac/image","description":null,"fork":true,"url":"https://api.github.com/repos/mtrmac/image","forks_url":"https://api.github.com/repos/mtrmac/image/forks","keys_url":"https://api.github.com/repos/mtrmac/image/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mtrmac/image/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mtrmac/image/teams","hooks_url":"https://api.github.com/repos/mtrmac/image/hooks","issue_events_url":"https://api.github.com/repos/mtrmac/image/issues/events{/number}","events_url":"https://api.github.com/repos/mtrmac/image/events","assignees_url":"https://api.github.com/repos/mtrmac/image/assignees{/user}","branches_url":"https://api.github.com/repos/mtrmac/image/branches{/branch}","tags_url":"https://api.github.com/repos/mtrmac/image/tags","blobs_url":"https://api.github.com/repos/mtrmac/image/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mtrmac/image/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mtrmac/image/git/refs{/sha}","trees_url":"https://api.github.com/repos/mtrmac/image/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mtrmac/image/statuses/{sha}","languages_url":"https://api.github.com/repos/mtrmac/image/languages","stargazers_url":"https://api.github.com/repos/mtrmac/image/stargazers","contributors_url":"https://api.github.com/repos/mtrmac/image/contributors","subscribers_url":"https://api.github.com/repos/mtrmac/image/subscribers","subscription_url":"https://api.github.com/repos/mtrmac/image/subscription","commits_url":"https://api.github.com/repos/mtrmac/image/commits{/sha}","git_commits_url":"https://api.github.com/repos/mtrmac/image/git/commits{/sha}","comments_url":"https://api.github.com/repos/mtrmac/image/comments{/number}","issue_comment_url":"https://api.github.com/repos/mtrmac/image/issues/comments{/number}","contents_url":"https://api.github.com/repos/mtrmac/image/contents/{+path}","compare_url":"https://api.github.com/repos/mtrmac/image/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mtrmac/image/merges","archive_url":"https://api.github.com/repos/mtrmac/image/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mtrmac/image/downloads","issues_url":"https://api.github.com/repos/mtrmac/image/issues{/number}","pulls_url":"https://api.github.com/repos/mtrmac/image/pulls{/number}","milestones_url":"https://api.github.com/repos/mtrmac/image/milestones{/number}","notifications_url":"https://api.github.com/repos/mtrmac/image/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mtrmac/image/labels{/name}","releases_url":"https://api.github.com/repos/mtrmac/image/releases{/id}","deployments_url":"https://api.github.com/repos/mtrmac/image/deployments","created_at":"2016-06-27T17:54:58Z","updated_at":"2016-06-27T17:54:59Z","pushed_at":"2017-11-15T20:56:08Z","git_url":"git://github.com/mtrmac/image.git","ssh_url":"git@github.com:mtrmac/image.git","clone_url":"https://github.com/mtrmac/image.git","svn_url":"https://github.com/mtrmac/image","homepage":null,"size":3782,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"containers:master","ref":"master","sha":"dc98c2a0e2ac85e5f618c7d01df28a216c6f7218","user":{"login":"containers","id":5874934,"avatar_url":"https://avatars3.githubusercontent.com/u/5874934?v=4","gravatar_id":"","url":"https://api.github.com/users/containers","html_url":"https://github.com/containers","followers_url":"https://api.github.com/users/containers/followers","following_url":"https://api.github.com/users/containers/following{/other_user}","gists_url":"https://api.github.com/users/containers/gists{/gist_id}","starred_url":"https://api.github.com/users/containers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/containers/subscriptions","organizations_url":"https://api.github.com/users/containers/orgs","repos_url":"https://api.github.com/users/containers/repos","events_url":"https://api.github.com/users/containers/events{/privacy}","received_events_url":"https://api.github.com/users/containers/received_events","type":"Organization","site_admin":false},"repo":{"id":61739430,"name":"image","full_name":"containers/image","owner":{"login":"containers","id":5874934,"avatar_url":"https://avatars3.githubusercontent.com/u/5874934?v=4","gravatar_id":"","url":"https://api.github.com/users/containers","html_url":"https://github.com/containers","followers_url":"https://api.github.com/users/containers/followers","following_url":"https://api.github.com/users/containers/following{/other_user}","gists_url":"https://api.github.com/users/containers/gists{/gist_id}","starred_url":"https://api.github.com/users/containers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/containers/subscriptions","organizations_url":"https://api.github.com/users/containers/orgs","repos_url":"https://api.github.com/users/containers/repos","events_url":"https://api.github.com/users/containers/events{/privacy}","received_events_url":"https://api.github.com/users/containers/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/containers/image","description":"Work with containers' images","fork":false,"url":"https://api.github.com/repos/containers/image","forks_url":"https://api.github.com/repos/containers/image/forks","keys_url":"https://api.github.com/repos/containers/image/keys{/key_id}","collaborators_url":"https://api.github.com/repos/containers/image/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/containers/image/teams","hooks_url":"https://api.github.com/repos/containers/image/hooks","issue_events_url":"https://api.github.com/repos/containers/image/issues/events{/number}","events_url":"https://api.github.com/repos/containers/image/events","assignees_url":"https://api.github.com/repos/containers/image/assignees{/user}","branches_url":"https://api.github.com/repos/containers/image/branches{/branch}","tags_url":"https://api.github.com/repos/containers/image/tags","blobs_url":"https://api.github.com/repos/containers/image/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/containers/image/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/containers/image/git/refs{/sha}","trees_url":"https://api.github.com/repos/containers/image/git/trees{/sha}","statuses_url":"https://api.github.com/repos/containers/image/statuses/{sha}","languages_url":"https://api.github.com/repos/containers/image/languages","stargazers_url":"https://api.github.com/repos/containers/image/stargazers","contributors_url":"https://api.github.com/repos/containers/image/contributors","subscribers_url":"https://api.github.com/repos/containers/image/subscribers","subscription_url":"https://api.github.com/repos/containers/image/subscription","commits_url":"https://api.github.com/repos/containers/image/commits{/sha}","git_commits_url":"https://api.github.com/repos/containers/image/git/commits{/sha}","comments_url":"https://api.github.com/repos/containers/image/comments{/number}","issue_comment_url":"https://api.github.com/repos/containers/image/issues/comments{/number}","contents_url":"https://api.github.com/repos/containers/image/contents/{+path}","compare_url":"https://api.github.com/repos/containers/image/compare/{base}...{head}","merges_url":"https://api.github.com/repos/containers/image/merges","archive_url":"https://api.github.com/repos/containers/image/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/containers/image/downloads","issues_url":"https://api.github.com/repos/containers/image/issues{/number}","pulls_url":"https://api.github.com/repos/containers/image/pulls{/number}","milestones_url":"https://api.github.com/repos/containers/image/milestones{/number}","notifications_url":"https://api.github.com/repos/containers/image/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/containers/image/labels{/name}","releases_url":"https://api.github.com/repos/containers/image/releases{/id}","deployments_url":"https://api.github.com/repos/containers/image/deployments","created_at":"2016-06-22T17:46:41Z","updated_at":"2017-11-15T08:49:54Z","pushed_at":"2017-11-15T20:56:09Z","git_url":"git://github.com/containers/image.git","ssh_url":"git@github.com:containers/image.git","clone_url":"https://github.com/containers/image.git","svn_url":"https://github.com/containers/image","homepage":"","size":3602,"stargazers_count":103,"watchers_count":103,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":56,"mirror_url":null,"archived":false,"open_issues_count":56,"forks":56,"open_issues":56,"watchers":103,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/containers/image/pulls/346"},"html":{"href":"https://github.com/containers/image/pull/346"},"issue":{"href":"https://api.github.com/repos/containers/image/issues/346"},"comments":{"href":"https://api.github.com/repos/containers/image/issues/346/comments"},"review_comments":{"href":"https://api.github.com/repos/containers/image/pulls/346/comments"},"review_comment":{"href":"https://api.github.com/repos/containers/image/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/containers/image/pulls/346/commits"},"statuses":{"href":"https://api.github.com/repos/containers/image/statuses/ff6008a477c5e54a2c6f9056f8c4016de4c7c5ee"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"mtrmac"}}