{"action":"created","comment":{"url":"https://api.github.com/repos/openshift/origin/pulls/comments/68233319","id":68233319,"diff_hunk":"@@ -236,178 +248,88 @@ func (r *repository) Get(dgst digest.Digest) (*schema1.SignedManifest, error) {\n \t}\n \n \tref := imageapi.DockerImageReference{Namespace: r.namespace, Name: r.name, Registry: r.registryAddr}\n-\treturn r.manifestFromImageWithCachedLayers(image, ref.DockerClientDefaults().Exact())\n-}\n+\tmanifest, err := r.manifestFromImageWithCachedLayers(image, ref.DockerClientDefaults().Exact())\n \n-// Enumerate retrieves digests of manifest revisions in particular repository\n-func (r *repository) Enumerate() ([]digest.Digest, error) {\n-\tpanic(\"not implemented\")\n+\treturn manifest, err\n }\n \n-// GetByTag retrieves the named manifest with the provided tag\n-func (r *repository) GetByTag(tag string, options ...distribution.ManifestServiceOption) (*schema1.SignedManifest, error) {\n-\tfor _, opt := range options {\n-\t\tif err := opt(r); err != nil {\n-\t\t\treturn nil, err\n-\t\t}\n-\t}\n-\n-\t// find the image mapped to this tag\n-\timageStreamTag, err := r.getImageStreamTag(tag)\n-\tif err != nil {\n-\t\t// TODO: typed errors\n-\t\tcontext.GetLogger(r.ctx).Errorf(\"error getting ImageStreamTag %q: %v\", tag, err)\n-\t\treturn nil, err\n-\t}\n-\timage := &imageStreamTag.Image\n-\n-\tref, referenceErr := imageapi.ParseDockerImageReference(image.DockerImageReference)\n-\tif referenceErr == nil {\n-\t\tref.Namespace = r.namespace\n-\t\tref.Name = r.name\n-\t\tref.Registry = r.registryAddr\n-\t}\n-\tdefaultRef := ref.DockerClientDefaults()\n-\tcacheName := defaultRef.AsRepository().Exact()\n-\n-\t// if we have a local manifest, use it\n-\tif len(image.DockerImageManifest) > 0 {\n-\t\treturn r.manifestFromImageWithCachedLayers(image, cacheName)\n-\t}\n-\n-\tdgst, err := digest.ParseDigest(imageStreamTag.Image.Name)\n-\tif err != nil {\n-\t\tcontext.GetLogger(r.ctx).Errorf(\"error parsing digest %q: %v\", imageStreamTag.Image.Name, err)\n-\t\treturn nil, err\n-\t}\n-\n-\tif localImage, err := r.getImage(dgst); err != nil {\n-\t\t// if the image is managed by OpenShift and we cannot load the image, report an error\n-\t\tif image.Annotations[imageapi.ManagedByOpenShiftAnnotation] == \"true\" {\n-\t\t\tcontext.GetLogger(r.ctx).Errorf(\"error getting image %q: %v\", dgst.String(), err)\n-\t\t\treturn nil, err\n-\t\t}\n-\t} else {\n-\t\t// if we have a local manifest, use it\n-\t\tif len(localImage.DockerImageManifest) > 0 {\n-\t\t\treturn r.manifestFromImageWithCachedLayers(localImage, cacheName)\n-\t\t}\n-\t}\n-\n-\t// allow pullthrough to be disabled\n-\tif !r.pullthrough {\n-\t\treturn nil, distribution.ErrManifestBlobUnknown{Digest: dgst}\n-\t}\n-\n-\t// check the previous error here\n-\tif referenceErr != nil {\n-\t\tcontext.GetLogger(r.ctx).Errorf(\"error parsing image %q: %v\", image.DockerImageReference, referenceErr)\n-\t\treturn nil, referenceErr\n-\t}\n-\n-\treturn r.pullthroughGetByTag(image, ref, cacheName, options...)\n-}\n-\n-// pullthroughGetByTag attempts to load the given image manifest from the remote server defined by ref, using cacheName to store any cached layers.\n-func (r *repository) pullthroughGetByTag(image *imageapi.Image, ref imageapi.DockerImageReference, cacheName string, options ...distribution.ManifestServiceOption) (*schema1.SignedManifest, error) {\n-\tdefaultRef := ref.DockerClientDefaults()\n-\n-\tretriever := r.importContext()\n+// Put creates or updates the named manifest.\n+func (r *repository) Put(ctx context.Context, manifest distribution.Manifest, options ...distribution.ManifestServiceOption) (digest.Digest, error) {\n+\tvar canonical []byte\n \n-\trepo, err := retriever.Repository(r.ctx, defaultRef.RegistryURL(), defaultRef.RepositoryName(), false)\n+\t// Resolve the payload in the manifest.\n+\tmediatype, payload, err := manifest.Payload()\n \tif err != nil {\n-\t\tcontext.GetLogger(r.ctx).Errorf(\"error getting remote repository for image %q: %v\", image.DockerImageReference, err)\n-\t\treturn nil, err\n+\t\treturn digest.Digest(\"\"), err\n \t}\n \n-\t// get a manifest context\n-\tmanifests, err := repo.Manifests(r.ctx)\n-\tif err != nil {\n-\t\tcontext.GetLogger(r.ctx).Errorf(\"error getting manifests for image %q: %v\", image.DockerImageReference, err)\n-\t\treturn nil, err\n+\tswitch manifest.(type) {\n+\tcase *schema1.SignedManifest:\n+\t\tcanonical = manifest.(*schema1.SignedManifest).Canonical\n+\tcase *schema2.DeserializedManifest:\n+\t\tcanonical = payload\n+\tdefault:\n+\t\terr = fmt.Errorf(\"unrecognized manifest type %T\", manifest)\n+\t\treturn \"\", regapi.ErrorCodeManifestInvalid.WithDetail(err)\n \t}\n \n-\t// fetch this by image\n-\tif len(ref.ID) > 0 {\n-\t\tdgst, err := digest.ParseDigest(ref.ID)\n-\t\tif err != nil {\n-\t\t\tcontext.GetLogger(r.ctx).Errorf(\"error getting manifests for image %q: %v\", image.DockerImageReference, err)\n-\t\t\treturn nil, err\n+\tif !r.acceptschema2 {\n+\t\tif _, ok := manifest.(*schema1.SignedManifest); !ok {\n+\t\t\terr = fmt.Errorf(\"schema version 2 disabled\")\n+\t\t\treturn \"\", regapi.ErrorCodeManifestInvalid.WithDetail(err)\n \t\t}\n-\t\tmanifest, err := manifests.Get(dgst)\n-\t\tif err != nil {\n-\t\t\tcontext.GetLogger(r.ctx).Errorf(\"error getting manifest from remote server for image %q: %v\", image.DockerImageReference, err)\n-\t\t\treturn nil, err\n-\t\t}\n-\t\tr.rememberLayers(manifest, cacheName)\n-\t\treturn manifest, nil\n-\t}\n-\n-\t// fetch this by tag\n-\tmanifest, err := manifests.GetByTag(ref.Tag, options...)\n-\tif err != nil {\n-\t\tcontext.GetLogger(r.ctx).Errorf(\"error getting manifest from remote server for image %q: %v\", image.DockerImageReference, err)\n-\t\treturn nil, err\n-\t}\n-\n-\tr.rememberLayers(manifest, cacheName)\n-\treturn manifest, nil\n-}\n-\n-// Put creates or updates the named manifest.\n-func (r *repository) Put(manifest *schema1.SignedManifest) error {\n-\t// Resolve the payload in the manifest.\n-\tpayload, err := manifest.Payload()\n-\tif err != nil {\n-\t\treturn err\n \t}\n \n \t// Calculate digest\n-\tdgst, err := digest.FromBytes(payload)\n-\tif err != nil {\n-\t\treturn err\n-\t}\n+\tdgst := digest.FromBytes(canonical)\n \n \t// Upload to openshift\n \tism := imageapi.ImageStreamMapping{\n \t\tObjectMeta: kapi.ObjectMeta{\n \t\t\tNamespace: r.namespace,\n \t\t\tName:      r.name,\n \t\t},\n-\t\tTag: manifest.Tag,\n \t\tImage: imageapi.Image{\n \t\t\tObjectMeta: kapi.ObjectMeta{\n \t\t\t\tName: dgst.String(),\n \t\t\t\tAnnotations: map[string]string{\n \t\t\t\t\timageapi.ManagedByOpenShiftAnnotation: \"true\",\n \t\t\t\t},\n \t\t\t},\n-\t\t\tDockerImageReference: fmt.Sprintf(\"%s/%s/%s@%s\", r.registryAddr, r.namespace, r.name, dgst.String()),\n-\t\t\tDockerImageManifest:  string(manifest.Raw),\n+\t\t\tDockerImageReference:         fmt.Sprintf(\"%s/%s/%s@%s\", r.registryAddr, r.namespace, r.name, dgst.String()),\n+\t\t\tDockerImageManifest:          string(payload),\n+\t\t\tDockerImageManifestMediaType: mediatype,\n \t\t},\n \t}\n \n-\tif err := r.fillImageWithMetadata(manifest, &ism.Image); err != nil {\n-\t\treturn err\n+\tfor _, option := range options {\n+\t\tif opt, ok := option.(distribution.WithTagOption); ok {\n+\t\t\tism.Tag = opt.Tag\n+\t\t\tbreak\n+\t\t}\n \t}\n \n-\tif err := r.registryOSClient.ImageStreamMappings(r.namespace).Create(&ism); err != nil {\n+\tif err = r.fillImageWithMetadata(manifest, &ism.Image); err != nil {\n+\t\treturn digest.Digest(\"\"), err\n+\t}\n+\n+\tif err = r.registryOSClient.ImageStreamMappings(r.namespace).Create(&ism); err != nil {\n \t\t// if the error was that the image stream wasn't found, try to auto provision it\n \t\tstatusErr, ok := err.(*kerrors.StatusError)\n \t\tif !ok {\n \t\t\tcontext.GetLogger(r.ctx).Errorf(\"error creating ImageStreamMapping: %s\", err)\n-\t\t\treturn err\n+\t\t\treturn digest.Digest(\"\"), err","path":"pkg/dockerregistry/server/repositorymiddleware.go","position":null,"original_position":349,"commit_id":"738d71d605503469fcd37c31960f4d9d402c08f9","original_commit_id":"ec24dc45916293b39243c2869734ccc712404136","user":{"login":"miminar","id":1478803,"avatar_url":"https://avatars.githubusercontent.com/u/1478803?v=3","gravatar_id":"","url":"https://api.github.com/users/miminar","html_url":"https://github.com/miminar","followers_url":"https://api.github.com/users/miminar/followers","following_url":"https://api.github.com/users/miminar/following{/other_user}","gists_url":"https://api.github.com/users/miminar/gists{/gist_id}","starred_url":"https://api.github.com/users/miminar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/miminar/subscriptions","organizations_url":"https://api.github.com/users/miminar/orgs","repos_url":"https://api.github.com/users/miminar/repos","events_url":"https://api.github.com/users/miminar/events{/privacy}","received_events_url":"https://api.github.com/users/miminar/received_events","type":"User","site_admin":false},"body":"`s/digest.Digest(\"\")/\"\"/` - that's what upstream returns with `err != nil`.","created_at":"2016-06-23T13:26:14Z","updated_at":"2016-06-23T13:26:14Z","html_url":"https://github.com/openshift/origin/pull/8938#discussion_r68233319","pull_request_url":"https://api.github.com/repos/openshift/origin/pulls/8938","_links":{"self":{"href":"https://api.github.com/repos/openshift/origin/pulls/comments/68233319"},"html":{"href":"https://github.com/openshift/origin/pull/8938#discussion_r68233319"},"pull_request":{"href":"https://api.github.com/repos/openshift/origin/pulls/8938"}}},"pull_request":{"url":"https://api.github.com/repos/openshift/origin/pulls/8938","id":70680030,"html_url":"https://github.com/openshift/origin/pull/8938","diff_url":"https://github.com/openshift/origin/pull/8938.diff","patch_url":"https://github.com/openshift/origin/pull/8938.patch","issue_url":"https://api.github.com/repos/openshift/origin/issues/8938","number":8938,"state":"open","locked":false,"title":"Docker registry v2.4.0","user":{"login":"legionus","id":1690313,"avatar_url":"https://avatars.githubusercontent.com/u/1690313?v=3","gravatar_id":"","url":"https://api.github.com/users/legionus","html_url":"https://github.com/legionus","followers_url":"https://api.github.com/users/legionus/followers","following_url":"https://api.github.com/users/legionus/following{/other_user}","gists_url":"https://api.github.com/users/legionus/gists{/gist_id}","starred_url":"https://api.github.com/users/legionus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/legionus/subscriptions","organizations_url":"https://api.github.com/users/legionus/orgs","repos_url":"https://api.github.com/users/legionus/repos","events_url":"https://api.github.com/users/legionus/events{/privacy}","received_events_url":"https://api.github.com/users/legionus/received_events","type":"User","site_admin":false},"body":"@pweil- @mfojtik @soltysh @miminar ptal","created_at":"2016-05-19T11:46:27Z","updated_at":"2016-06-23T13:26:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5305f056d89e0b740645bafda0a4015a641b474d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/openshift/origin/pulls/8938/commits","review_comments_url":"https://api.github.com/repos/openshift/origin/pulls/8938/comments","review_comment_url":"https://api.github.com/repos/openshift/origin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openshift/origin/issues/8938/comments","statuses_url":"https://api.github.com/repos/openshift/origin/statuses/738d71d605503469fcd37c31960f4d9d402c08f9","head":{"label":"legionus:docker-registry-v2.4.0","ref":"docker-registry-v2.4.0","sha":"738d71d605503469fcd37c31960f4d9d402c08f9","user":{"login":"legionus","id":1690313,"avatar_url":"https://avatars.githubusercontent.com/u/1690313?v=3","gravatar_id":"","url":"https://api.github.com/users/legionus","html_url":"https://github.com/legionus","followers_url":"https://api.github.com/users/legionus/followers","following_url":"https://api.github.com/users/legionus/following{/other_user}","gists_url":"https://api.github.com/users/legionus/gists{/gist_id}","starred_url":"https://api.github.com/users/legionus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/legionus/subscriptions","organizations_url":"https://api.github.com/users/legionus/orgs","repos_url":"https://api.github.com/users/legionus/repos","events_url":"https://api.github.com/users/legionus/events{/privacy}","received_events_url":"https://api.github.com/users/legionus/received_events","type":"User","site_admin":false},"repo":{"id":49266113,"name":"origin","full_name":"legionus/origin","owner":{"login":"legionus","id":1690313,"avatar_url":"https://avatars.githubusercontent.com/u/1690313?v=3","gravatar_id":"","url":"https://api.github.com/users/legionus","html_url":"https://github.com/legionus","followers_url":"https://api.github.com/users/legionus/followers","following_url":"https://api.github.com/users/legionus/following{/other_user}","gists_url":"https://api.github.com/users/legionus/gists{/gist_id}","starred_url":"https://api.github.com/users/legionus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/legionus/subscriptions","organizations_url":"https://api.github.com/users/legionus/orgs","repos_url":"https://api.github.com/users/legionus/repos","events_url":"https://api.github.com/users/legionus/events{/privacy}","received_events_url":"https://api.github.com/users/legionus/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/legionus/origin","description":"OpenShift 3 - build, deploy, and manage your applications with Docker and Kubernetes","fork":true,"url":"https://api.github.com/repos/legionus/origin","forks_url":"https://api.github.com/repos/legionus/origin/forks","keys_url":"https://api.github.com/repos/legionus/origin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/legionus/origin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/legionus/origin/teams","hooks_url":"https://api.github.com/repos/legionus/origin/hooks","issue_events_url":"https://api.github.com/repos/legionus/origin/issues/events{/number}","events_url":"https://api.github.com/repos/legionus/origin/events","assignees_url":"https://api.github.com/repos/legionus/origin/assignees{/user}","branches_url":"https://api.github.com/repos/legionus/origin/branches{/branch}","tags_url":"https://api.github.com/repos/legionus/origin/tags","blobs_url":"https://api.github.com/repos/legionus/origin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/legionus/origin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/legionus/origin/git/refs{/sha}","trees_url":"https://api.github.com/repos/legionus/origin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/legionus/origin/statuses/{sha}","languages_url":"https://api.github.com/repos/legionus/origin/languages","stargazers_url":"https://api.github.com/repos/legionus/origin/stargazers","contributors_url":"https://api.github.com/repos/legionus/origin/contributors","subscribers_url":"https://api.github.com/repos/legionus/origin/subscribers","subscription_url":"https://api.github.com/repos/legionus/origin/subscription","commits_url":"https://api.github.com/repos/legionus/origin/commits{/sha}","git_commits_url":"https://api.github.com/repos/legionus/origin/git/commits{/sha}","comments_url":"https://api.github.com/repos/legionus/origin/comments{/number}","issue_comment_url":"https://api.github.com/repos/legionus/origin/issues/comments{/number}","contents_url":"https://api.github.com/repos/legionus/origin/contents/{+path}","compare_url":"https://api.github.com/repos/legionus/origin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/legionus/origin/merges","archive_url":"https://api.github.com/repos/legionus/origin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/legionus/origin/downloads","issues_url":"https://api.github.com/repos/legionus/origin/issues{/number}","pulls_url":"https://api.github.com/repos/legionus/origin/pulls{/number}","milestones_url":"https://api.github.com/repos/legionus/origin/milestones{/number}","notifications_url":"https://api.github.com/repos/legionus/origin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/legionus/origin/labels{/name}","releases_url":"https://api.github.com/repos/legionus/origin/releases{/id}","deployments_url":"https://api.github.com/repos/legionus/origin/deployments","created_at":"2016-01-08T10:32:30Z","updated_at":"2016-01-08T10:32:36Z","pushed_at":"2016-06-23T13:15:43Z","git_url":"git://github.com/legionus/origin.git","ssh_url":"git@github.com:legionus/origin.git","clone_url":"https://github.com/legionus/origin.git","svn_url":"https://github.com/legionus/origin","homepage":"http://www.openshift.org","size":273118,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":2,"forks":0,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"openshift:master","ref":"master","sha":"16bcdd0e49490976c2c942ed90b0de7db757a8cf","user":{"login":"openshift","id":792337,"avatar_url":"https://avatars.githubusercontent.com/u/792337?v=3","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"repo":{"id":22442668,"name":"origin","full_name":"openshift/origin","owner":{"login":"openshift","id":792337,"avatar_url":"https://avatars.githubusercontent.com/u/792337?v=3","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openshift/origin","description":"Enterprise-Ready Kubernetes for Developers","fork":false,"url":"https://api.github.com/repos/openshift/origin","forks_url":"https://api.github.com/repos/openshift/origin/forks","keys_url":"https://api.github.com/repos/openshift/origin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openshift/origin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openshift/origin/teams","hooks_url":"https://api.github.com/repos/openshift/origin/hooks","issue_events_url":"https://api.github.com/repos/openshift/origin/issues/events{/number}","events_url":"https://api.github.com/repos/openshift/origin/events","assignees_url":"https://api.github.com/repos/openshift/origin/assignees{/user}","branches_url":"https://api.github.com/repos/openshift/origin/branches{/branch}","tags_url":"https://api.github.com/repos/openshift/origin/tags","blobs_url":"https://api.github.com/repos/openshift/origin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openshift/origin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openshift/origin/git/refs{/sha}","trees_url":"https://api.github.com/repos/openshift/origin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openshift/origin/statuses/{sha}","languages_url":"https://api.github.com/repos/openshift/origin/languages","stargazers_url":"https://api.github.com/repos/openshift/origin/stargazers","contributors_url":"https://api.github.com/repos/openshift/origin/contributors","subscribers_url":"https://api.github.com/repos/openshift/origin/subscribers","subscription_url":"https://api.github.com/repos/openshift/origin/subscription","commits_url":"https://api.github.com/repos/openshift/origin/commits{/sha}","git_commits_url":"https://api.github.com/repos/openshift/origin/git/commits{/sha}","comments_url":"https://api.github.com/repos/openshift/origin/comments{/number}","issue_comment_url":"https://api.github.com/repos/openshift/origin/issues/comments{/number}","contents_url":"https://api.github.com/repos/openshift/origin/contents/{+path}","compare_url":"https://api.github.com/repos/openshift/origin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openshift/origin/merges","archive_url":"https://api.github.com/repos/openshift/origin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openshift/origin/downloads","issues_url":"https://api.github.com/repos/openshift/origin/issues{/number}","pulls_url":"https://api.github.com/repos/openshift/origin/pulls{/number}","milestones_url":"https://api.github.com/repos/openshift/origin/milestones{/number}","notifications_url":"https://api.github.com/repos/openshift/origin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openshift/origin/labels{/name}","releases_url":"https://api.github.com/repos/openshift/origin/releases{/id}","deployments_url":"https://api.github.com/repos/openshift/origin/deployments","created_at":"2014-07-30T20:04:05Z","updated_at":"2016-06-23T13:05:31Z","pushed_at":"2016-06-23T13:25:53Z","git_url":"git://github.com/openshift/origin.git","ssh_url":"git@github.com:openshift/origin.git","clone_url":"https://github.com/openshift/origin.git","svn_url":"https://github.com/openshift/origin","homepage":"http://www.openshift.org","size":516750,"stargazers_count":1404,"watchers_count":1404,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":840,"mirror_url":null,"open_issues_count":1053,"forks":840,"open_issues":1053,"watchers":1404,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openshift/origin/pulls/8938"},"html":{"href":"https://github.com/openshift/origin/pull/8938"},"issue":{"href":"https://api.github.com/repos/openshift/origin/issues/8938"},"comments":{"href":"https://api.github.com/repos/openshift/origin/issues/8938/comments"},"review_comments":{"href":"https://api.github.com/repos/openshift/origin/pulls/8938/comments"},"review_comment":{"href":"https://api.github.com/repos/openshift/origin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openshift/origin/pulls/8938/commits"},"statuses":{"href":"https://api.github.com/repos/openshift/origin/statuses/738d71d605503469fcd37c31960f4d9d402c08f9"}}}}
{"actor":{"display_login":"miminar"}}