{"action":"created","comment":{"url":"https://api.github.com/repos/giantswarm/statusresource/pulls/comments/207464804","pull_request_review_id":143082015,"id":207464804,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzQ2NDgwNA==","diff_hunk":"@@ -2,8 +2,112 @@ package statusresource\n \n import (\n \t\"context\"\n+\t\"fmt\"\n+\t\"time\"\n+\n+\t\"github.com/cenkalti/backoff\"\n+\t\"github.com/giantswarm/microerror\"\n+\t\"github.com/giantswarm/operatorkit/controller/context/finalizerskeptcontext\"\n+\t\"github.com/giantswarm/operatorkit/controller/context/reconciliationcanceledcontext\"\n+\t\"k8s.io/apimachinery/pkg/api/meta\"\n+\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n )\n \n func (r *Resource) EnsureDeleted(ctx context.Context, obj interface{}) error {\n+\tr.logger.LogCtx(ctx, \"level\", \"debug\", \"message\", \"patching CR status\")\n+\n+\t// We process the status updates within its own backoff here to gurantee its\n+\t// execution independent of any eventual retries via the retry resource. It\n+\t// might happen that the reconciled object is not the latest version so any\n+\t// patch would fail. In case the patch fails we retry until we succeed. The\n+\t// steps of the backoff operation are as follows.\n+\t//\n+\t//     Fetch latest version of runtime object.\n+\t//     Compute patches for runtime object.\n+\t//     Apply computed list of patches.\n+\t//\n+\t// In case there are no patches we do not need to do anything. So we prevent\n+\t// unnecessary API calls.\n+\tvar modified bool\n+\t{\n+\t\to := func() error {\n+\t\t\taccessor, err := meta.Accessor(obj)\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\n+\t\t\tnewObj, err := r.restClient.Get().AbsPath(accessor.GetSelfLink()).Do().Get()\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\n+\t\t\tnewAccessor, err := meta.Accessor(newObj)\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\n+\t\t\tpatches, err := r.computeDeleteEventPatches(ctx, newAccessor, newObj)\n+\t\t\tif err != nil {\n+\t\t\t\treturn microerror.Mask(err)\n+\t\t\t}\n+\n+\t\t\tif len(patches) > 0 {\n+\t\t\t\terr := r.applyPatches(ctx, newAccessor, patches)\n+\t\t\t\tif err != nil {\n+\t\t\t\t\treturn microerror.Mask(err)\n+\t\t\t\t}\n+\n+\t\t\t\tmodified = true\n+\t\t\t}\n+\n+\t\t\treturn nil\n+\t\t}\n+\t\tb := backoff.NewExponentialBackOff()\n+\t\tn := func(err error, d time.Duration) {\n+\t\t\tr.logger.LogCtx(ctx, \"level\", \"warning\", \"message\", \"retrying status patching due to error\", \"stack\", fmt.Sprintf(\"%#v\", err))\n+\t\t}\n+\n+\t\terr := backoff.RetryNotify(o, b, n)\n+\t\tif err != nil {\n+\t\t\treturn microerror.Mask(err)\n+\t\t}\n+\t}\n+\n+\tif modified {\n+\t\tr.logger.LogCtx(ctx, \"level\", \"debug\", \"message\", \"patched CR status\")\n+\n+\t\tr.logger.LogCtx(ctx, \"level\", \"debug\", \"message\", \"canceling reconciliation\")\n+\t\treconciliationcanceledcontext.SetCanceled(ctx)\n+\n+\t\tr.logger.LogCtx(ctx, \"level\", \"debug\", \"message\", \"keeping finalizers\")\n+\t\tfinalizerskeptcontext.SetKept(ctx)\n+\t} else {\n+\t\tr.logger.LogCtx(ctx, \"level\", \"debug\", \"message\", \"did not patch CR status\")\n+\t}\n+\n \treturn nil\n }\n+\n+func (r *Resource) computeDeleteEventPatches(ctx context.Context, accessor metav1.Object, obj interface{}) ([]Patch, error) {\n+\tclusterStatus, err := r.clusterStatusFunc(obj)\n+\tif err != nil {\n+\t\treturn nil, microerror.Mask(err)\n+\t}\n+\n+\tvar patches []Patch\n+\n+\t// Ensure the cluster is set into a deleting status on the delete event.\n+\t{\n+\t\tnotDeleting := !clusterStatus.HasDeletingCondition()\n+\n+\t\tif notDeleting {\n+\t\t\tpatches = append(patches, Patch{\n+\t\t\t\tOp:    \"replace\",\n+\t\t\t\tPath:  \"/status/cluster/conditions\",\n+\t\t\t\tValue: clusterStatus.WithDeletingCondition(),\n+\t\t\t})\n+\t\t}\n+\t}\n+\n+\treturn patches, nil\n+}","path":"delete.go","position":112,"original_position":112,"commit_id":"4c0a5607c2cb29bcd7be16980ad48b41f5cb2b06","original_commit_id":"4c0a5607c2cb29bcd7be16980ad48b41f5cb2b06","user":{"login":"xh3b4sd","id":552769,"node_id":"MDQ6VXNlcjU1Mjc2OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/552769?v=4","gravatar_id":"","url":"https://api.github.com/users/xh3b4sd","html_url":"https://github.com/xh3b4sd","followers_url":"https://api.github.com/users/xh3b4sd/followers","following_url":"https://api.github.com/users/xh3b4sd/following{/other_user}","gists_url":"https://api.github.com/users/xh3b4sd/gists{/gist_id}","starred_url":"https://api.github.com/users/xh3b4sd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xh3b4sd/subscriptions","organizations_url":"https://api.github.com/users/xh3b4sd/orgs","repos_url":"https://api.github.com/users/xh3b4sd/repos","events_url":"https://api.github.com/users/xh3b4sd/events{/privacy}","received_events_url":"https://api.github.com/users/xh3b4sd/received_events","type":"User","site_admin":false},"body":"Still thinking about this. Just added the helpers for consistency. Lets see. ","created_at":"2018-08-03T07:41:20Z","updated_at":"2018-08-03T07:41:20Z","html_url":"https://github.com/giantswarm/statusresource/pull/12#discussion_r207464804","pull_request_url":"https://api.github.com/repos/giantswarm/statusresource/pulls/12","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/giantswarm/statusresource/pulls/comments/207464804"},"html":{"href":"https://github.com/giantswarm/statusresource/pull/12#discussion_r207464804"},"pull_request":{"href":"https://api.github.com/repos/giantswarm/statusresource/pulls/12"}},"in_reply_to_id":207441438},"pull_request":{"url":"https://api.github.com/repos/giantswarm/statusresource/pulls/12","id":205861764,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA1ODYxNzY0","html_url":"https://github.com/giantswarm/statusresource/pull/12","diff_url":"https://github.com/giantswarm/statusresource/pull/12.diff","patch_url":"https://github.com/giantswarm/statusresource/pull/12.patch","issue_url":"https://api.github.com/repos/giantswarm/statusresource/issues/12","number":12,"state":"open","locked":false,"title":"implements management of deleting cluster status","user":{"login":"xh3b4sd","id":552769,"node_id":"MDQ6VXNlcjU1Mjc2OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/552769?v=4","gravatar_id":"","url":"https://api.github.com/users/xh3b4sd","html_url":"https://github.com/xh3b4sd","followers_url":"https://api.github.com/users/xh3b4sd/followers","following_url":"https://api.github.com/users/xh3b4sd/following{/other_user}","gists_url":"https://api.github.com/users/xh3b4sd/gists{/gist_id}","starred_url":"https://api.github.com/users/xh3b4sd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xh3b4sd/subscriptions","organizations_url":"https://api.github.com/users/xh3b4sd/orgs","repos_url":"https://api.github.com/users/xh3b4sd/repos","events_url":"https://api.github.com/users/xh3b4sd/events{/privacy}","received_events_url":"https://api.github.com/users/xh3b4sd/received_events","type":"User","site_admin":false},"body":"Towards https://github.com/giantswarm/giantswarm/pull/2209. ","created_at":"2018-08-02T21:07:49Z","updated_at":"2018-08-03T07:41:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"66b53e84ac0258d46d40f7bd132d10c153524f40","assignee":{"login":"xh3b4sd","id":552769,"node_id":"MDQ6VXNlcjU1Mjc2OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/552769?v=4","gravatar_id":"","url":"https://api.github.com/users/xh3b4sd","html_url":"https://github.com/xh3b4sd","followers_url":"https://api.github.com/users/xh3b4sd/followers","following_url":"https://api.github.com/users/xh3b4sd/following{/other_user}","gists_url":"https://api.github.com/users/xh3b4sd/gists{/gist_id}","starred_url":"https://api.github.com/users/xh3b4sd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xh3b4sd/subscriptions","organizations_url":"https://api.github.com/users/xh3b4sd/orgs","repos_url":"https://api.github.com/users/xh3b4sd/repos","events_url":"https://api.github.com/users/xh3b4sd/events{/privacy}","received_events_url":"https://api.github.com/users/xh3b4sd/received_events","type":"User","site_admin":false},"assignees":[{"login":"xh3b4sd","id":552769,"node_id":"MDQ6VXNlcjU1Mjc2OQ==","avatar_url":"https://avatars3.githubusercontent.com/u/552769?v=4","gravatar_id":"","url":"https://api.github.com/users/xh3b4sd","html_url":"https://github.com/xh3b4sd","followers_url":"https://api.github.com/users/xh3b4sd/followers","following_url":"https://api.github.com/users/xh3b4sd/following{/other_user}","gists_url":"https://api.github.com/users/xh3b4sd/gists{/gist_id}","starred_url":"https://api.github.com/users/xh3b4sd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xh3b4sd/subscriptions","organizations_url":"https://api.github.com/users/xh3b4sd/orgs","repos_url":"https://api.github.com/users/xh3b4sd/repos","events_url":"https://api.github.com/users/xh3b4sd/events{/privacy}","received_events_url":"https://api.github.com/users/xh3b4sd/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/giantswarm/statusresource/pulls/12/commits","review_comments_url":"https://api.github.com/repos/giantswarm/statusresource/pulls/12/comments","review_comment_url":"https://api.github.com/repos/giantswarm/statusresource/pulls/comments{/number}","comments_url":"https://api.github.com/repos/giantswarm/statusresource/issues/12/comments","statuses_url":"https://api.github.com/repos/giantswarm/statusresource/statuses/4c0a5607c2cb29bcd7be16980ad48b41f5cb2b06","head":{"label":"giantswarm:deletion","ref":"deletion","sha":"4c0a5607c2cb29bcd7be16980ad48b41f5cb2b06","user":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"repo":{"id":139154199,"node_id":"MDEwOlJlcG9zaXRvcnkxMzkxNTQxOTk=","name":"statusresource","full_name":"giantswarm/statusresource","owner":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/giantswarm/statusresource","description":"Package statusresource implements primitives for CR status management within Giant Swarm Kubernetes guest clusters.","fork":false,"url":"https://api.github.com/repos/giantswarm/statusresource","forks_url":"https://api.github.com/repos/giantswarm/statusresource/forks","keys_url":"https://api.github.com/repos/giantswarm/statusresource/keys{/key_id}","collaborators_url":"https://api.github.com/repos/giantswarm/statusresource/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/giantswarm/statusresource/teams","hooks_url":"https://api.github.com/repos/giantswarm/statusresource/hooks","issue_events_url":"https://api.github.com/repos/giantswarm/statusresource/issues/events{/number}","events_url":"https://api.github.com/repos/giantswarm/statusresource/events","assignees_url":"https://api.github.com/repos/giantswarm/statusresource/assignees{/user}","branches_url":"https://api.github.com/repos/giantswarm/statusresource/branches{/branch}","tags_url":"https://api.github.com/repos/giantswarm/statusresource/tags","blobs_url":"https://api.github.com/repos/giantswarm/statusresource/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/giantswarm/statusresource/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/giantswarm/statusresource/git/refs{/sha}","trees_url":"https://api.github.com/repos/giantswarm/statusresource/git/trees{/sha}","statuses_url":"https://api.github.com/repos/giantswarm/statusresource/statuses/{sha}","languages_url":"https://api.github.com/repos/giantswarm/statusresource/languages","stargazers_url":"https://api.github.com/repos/giantswarm/statusresource/stargazers","contributors_url":"https://api.github.com/repos/giantswarm/statusresource/contributors","subscribers_url":"https://api.github.com/repos/giantswarm/statusresource/subscribers","subscription_url":"https://api.github.com/repos/giantswarm/statusresource/subscription","commits_url":"https://api.github.com/repos/giantswarm/statusresource/commits{/sha}","git_commits_url":"https://api.github.com/repos/giantswarm/statusresource/git/commits{/sha}","comments_url":"https://api.github.com/repos/giantswarm/statusresource/comments{/number}","issue_comment_url":"https://api.github.com/repos/giantswarm/statusresource/issues/comments{/number}","contents_url":"https://api.github.com/repos/giantswarm/statusresource/contents/{+path}","compare_url":"https://api.github.com/repos/giantswarm/statusresource/compare/{base}...{head}","merges_url":"https://api.github.com/repos/giantswarm/statusresource/merges","archive_url":"https://api.github.com/repos/giantswarm/statusresource/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/giantswarm/statusresource/downloads","issues_url":"https://api.github.com/repos/giantswarm/statusresource/issues{/number}","pulls_url":"https://api.github.com/repos/giantswarm/statusresource/pulls{/number}","milestones_url":"https://api.github.com/repos/giantswarm/statusresource/milestones{/number}","notifications_url":"https://api.github.com/repos/giantswarm/statusresource/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/giantswarm/statusresource/labels{/name}","releases_url":"https://api.github.com/repos/giantswarm/statusresource/releases{/id}","deployments_url":"https://api.github.com/repos/giantswarm/statusresource/deployments","created_at":"2018-06-29T13:41:59Z","updated_at":"2018-08-02T16:12:03Z","pushed_at":"2018-08-02T21:12:17Z","git_url":"git://github.com/giantswarm/statusresource.git","ssh_url":"git@github.com:giantswarm/statusresource.git","clone_url":"https://github.com/giantswarm/statusresource.git","svn_url":"https://github.com/giantswarm/statusresource","homepage":null,"size":6373,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"giantswarm:master","ref":"master","sha":"5d95c771c4418aafa95ba5f2fb451d647c5de568","user":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"repo":{"id":139154199,"node_id":"MDEwOlJlcG9zaXRvcnkxMzkxNTQxOTk=","name":"statusresource","full_name":"giantswarm/statusresource","owner":{"login":"giantswarm","id":7556340,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc1NTYzNDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7556340?v=4","gravatar_id":"","url":"https://api.github.com/users/giantswarm","html_url":"https://github.com/giantswarm","followers_url":"https://api.github.com/users/giantswarm/followers","following_url":"https://api.github.com/users/giantswarm/following{/other_user}","gists_url":"https://api.github.com/users/giantswarm/gists{/gist_id}","starred_url":"https://api.github.com/users/giantswarm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/giantswarm/subscriptions","organizations_url":"https://api.github.com/users/giantswarm/orgs","repos_url":"https://api.github.com/users/giantswarm/repos","events_url":"https://api.github.com/users/giantswarm/events{/privacy}","received_events_url":"https://api.github.com/users/giantswarm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/giantswarm/statusresource","description":"Package statusresource implements primitives for CR status management within Giant Swarm Kubernetes guest clusters.","fork":false,"url":"https://api.github.com/repos/giantswarm/statusresource","forks_url":"https://api.github.com/repos/giantswarm/statusresource/forks","keys_url":"https://api.github.com/repos/giantswarm/statusresource/keys{/key_id}","collaborators_url":"https://api.github.com/repos/giantswarm/statusresource/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/giantswarm/statusresource/teams","hooks_url":"https://api.github.com/repos/giantswarm/statusresource/hooks","issue_events_url":"https://api.github.com/repos/giantswarm/statusresource/issues/events{/number}","events_url":"https://api.github.com/repos/giantswarm/statusresource/events","assignees_url":"https://api.github.com/repos/giantswarm/statusresource/assignees{/user}","branches_url":"https://api.github.com/repos/giantswarm/statusresource/branches{/branch}","tags_url":"https://api.github.com/repos/giantswarm/statusresource/tags","blobs_url":"https://api.github.com/repos/giantswarm/statusresource/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/giantswarm/statusresource/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/giantswarm/statusresource/git/refs{/sha}","trees_url":"https://api.github.com/repos/giantswarm/statusresource/git/trees{/sha}","statuses_url":"https://api.github.com/repos/giantswarm/statusresource/statuses/{sha}","languages_url":"https://api.github.com/repos/giantswarm/statusresource/languages","stargazers_url":"https://api.github.com/repos/giantswarm/statusresource/stargazers","contributors_url":"https://api.github.com/repos/giantswarm/statusresource/contributors","subscribers_url":"https://api.github.com/repos/giantswarm/statusresource/subscribers","subscription_url":"https://api.github.com/repos/giantswarm/statusresource/subscription","commits_url":"https://api.github.com/repos/giantswarm/statusresource/commits{/sha}","git_commits_url":"https://api.github.com/repos/giantswarm/statusresource/git/commits{/sha}","comments_url":"https://api.github.com/repos/giantswarm/statusresource/comments{/number}","issue_comment_url":"https://api.github.com/repos/giantswarm/statusresource/issues/comments{/number}","contents_url":"https://api.github.com/repos/giantswarm/statusresource/contents/{+path}","compare_url":"https://api.github.com/repos/giantswarm/statusresource/compare/{base}...{head}","merges_url":"https://api.github.com/repos/giantswarm/statusresource/merges","archive_url":"https://api.github.com/repos/giantswarm/statusresource/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/giantswarm/statusresource/downloads","issues_url":"https://api.github.com/repos/giantswarm/statusresource/issues{/number}","pulls_url":"https://api.github.com/repos/giantswarm/statusresource/pulls{/number}","milestones_url":"https://api.github.com/repos/giantswarm/statusresource/milestones{/number}","notifications_url":"https://api.github.com/repos/giantswarm/statusresource/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/giantswarm/statusresource/labels{/name}","releases_url":"https://api.github.com/repos/giantswarm/statusresource/releases{/id}","deployments_url":"https://api.github.com/repos/giantswarm/statusresource/deployments","created_at":"2018-06-29T13:41:59Z","updated_at":"2018-08-02T16:12:03Z","pushed_at":"2018-08-02T21:12:17Z","git_url":"git://github.com/giantswarm/statusresource.git","ssh_url":"git@github.com:giantswarm/statusresource.git","clone_url":"https://github.com/giantswarm/statusresource.git","svn_url":"https://github.com/giantswarm/statusresource","homepage":null,"size":6373,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/giantswarm/statusresource/pulls/12"},"html":{"href":"https://github.com/giantswarm/statusresource/pull/12"},"issue":{"href":"https://api.github.com/repos/giantswarm/statusresource/issues/12"},"comments":{"href":"https://api.github.com/repos/giantswarm/statusresource/issues/12/comments"},"review_comments":{"href":"https://api.github.com/repos/giantswarm/statusresource/pulls/12/comments"},"review_comment":{"href":"https://api.github.com/repos/giantswarm/statusresource/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/giantswarm/statusresource/pulls/12/commits"},"statuses":{"href":"https://api.github.com/repos/giantswarm/statusresource/statuses/4c0a5607c2cb29bcd7be16980ad48b41f5cb2b06"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"xh3b4sd"}}