{"action":"created","comment":{"url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/comments/196456707","pull_request_review_id":130010765,"id":196456707,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NjQ1NjcwNw==","diff_hunk":"@@ -0,0 +1,119 @@\n+package v1\n+\n+import (\n+\t\"context\"\n+\n+\t\"github.com/cenkalti/backoff\"\n+\t\"github.com/giantswarm/apiextensions/pkg/clientset/versioned\"\n+\t\"github.com/giantswarm/microerror\"\n+\t\"github.com/giantswarm/micrologger\"\n+\t\"github.com/giantswarm/operatorkit/controller\"\n+\t\"github.com/giantswarm/operatorkit/controller/resource/metricsresource\"\n+\t\"github.com/giantswarm/operatorkit/controller/resource/retryresource\"\n+\n+\t\"github.com/giantswarm/cluster-operator/service/controller/network/v1/key\"\n+\t\"github.com/giantswarm/cluster-operator/service/controller/network/v1/resource/ipam\"\n+)\n+\n+const (\n+\t// ResourceRetries presents number of retries for failed Resource\n+\t// operation before giving up.\n+\tResourceRetries uint64 = 3\n+)\n+\n+// ResourceSetConfig contains necessary dependencies and settings for\n+// ClusterNetworkConfig controller ResourceSet configuration.\n+type ResourceSetConfig struct {\n+\tG8sClient versioned.Interface\n+\tLogger    micrologger.Logger\n+\n+\tProjectName string\n+}\n+\n+// NewResourceSet returns a configured ClusterNetworkConfig controller ResourceSet.\n+func NewResourceSet(config ResourceSetConfig) (*controller.ResourceSet, error) {\n+\tvar err error\n+\n+\tif config.G8sClient == nil {\n+\t\treturn nil, microerror.Maskf(invalidConfigError, \"%T.G8sClient must not be empty\", config)\n+\t}\n+\tif config.Logger == nil {\n+\t\treturn nil, microerror.Maskf(invalidConfigError, \"%T.Logger must not be empty\", config)\n+\t}\n+\tif config.ProjectName == \"\" {\n+\t\treturn nil, microerror.Maskf(invalidConfigError, \"%T.ProjectName must not be empty\", config)\n+\t}\n+\n+\tvar ipamResource controller.Resource\n+\t{\n+\t\tc := ipam.Config{\n+\t\t\tG8sClient: config.G8sClient,\n+\t\t\tLogger:    config.Logger,\n+\t\t}\n+\n+\t\tipamResource, err = ipam.New(c)\n+\t\tif err != nil {\n+\t\t\treturn nil, microerror.Mask(err)\n+\t\t}\n+\t}\n+\n+\tresources := []controller.Resource{\n+\t\tipamResource,\n+\t}\n+\n+\t// Wrap resources with retry and metrics.\n+\t{\n+\t\tretryWrapConfig := retryresource.WrapConfig{}\n+\n+\t\tretryWrapConfig.BackOffFactory = func() backoff.BackOff { return backoff.WithMaxTries(backoff.NewExponentialBackOff(), ResourceRetries) }\n+\t\tretryWrapConfig.Logger = config.Logger\n+\n+\t\tresources, err = retryresource.Wrap(resources, retryWrapConfig)\n+\t\tif err != nil {\n+\t\t\treturn nil, microerror.Mask(err)\n+\t\t}\n+\n+\t\tmetricsWrapConfig := metricsresource.WrapConfig{}\n+\n+\t\tmetricsWrapConfig.Name = config.ProjectName\n+\n+\t\tresources, err = metricsresource.Wrap(resources, metricsWrapConfig)\n+\t\tif err != nil {\n+\t\t\treturn nil, microerror.Mask(err)\n+\t\t}\n+\t}\n+\n+\tinitCtxFunc := func(ctx context.Context, obj interface{}) (context.Context, error) {","path":"service/controller/network/v1/resource_set.go","position":86,"original_position":86,"commit_id":"4704f91ebd37c5da4807977f62765627cfa61ff9","original_commit_id":"4704f91ebd37c5da4807977f62765627cfa61ff9","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":"AFAIK the context init function is optional. You can just drop it when you do not need it. ","created_at":"2018-06-19T14:49:48Z","updated_at":"2018-06-19T14:50:30Z","html_url":"https://github.com/giantswarm/cluster-operator/pull/151#discussion_r196456707","pull_request_url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/comments/196456707"},"html":{"href":"https://github.com/giantswarm/cluster-operator/pull/151#discussion_r196456707"},"pull_request":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151"}}},"pull_request":{"url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151","id":195448277,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk1NDQ4Mjc3","html_url":"https://github.com/giantswarm/cluster-operator/pull/151","diff_url":"https://github.com/giantswarm/cluster-operator/pull/151.diff","patch_url":"https://github.com/giantswarm/cluster-operator/pull/151.patch","issue_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues/151","number":151,"state":"open","locked":false,"title":"Add network controller","user":{"login":"tuommaki","id":1947505,"node_id":"MDQ6VXNlcjE5NDc1MDU=","avatar_url":"https://avatars3.githubusercontent.com/u/1947505?v=4","gravatar_id":"","url":"https://api.github.com/users/tuommaki","html_url":"https://github.com/tuommaki","followers_url":"https://api.github.com/users/tuommaki/followers","following_url":"https://api.github.com/users/tuommaki/following{/other_user}","gists_url":"https://api.github.com/users/tuommaki/gists{/gist_id}","starred_url":"https://api.github.com/users/tuommaki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tuommaki/subscriptions","organizations_url":"https://api.github.com/users/tuommaki/orgs","repos_url":"https://api.github.com/users/tuommaki/repos","events_url":"https://api.github.com/users/tuommaki/events{/privacy}","received_events_url":"https://api.github.com/users/tuommaki/received_events","type":"User","site_admin":false},"body":"Network controller takes care of guest cluster network configuration related responsibilities such as IPAM. This controller is watching for `ClusterNetworkConfig` CRs.\r\n\r\nTowards https://github.com/giantswarm/giantswarm/issues/2148\r\n\r\nApiextensions PR must be merged before this: https://github.com/giantswarm/apiextensions/pull/89\r\nKubernetes apiserver feature flag `CustomResourceSubresources=true` must be also enabled before merging this.","created_at":"2018-06-18T08:05:52Z","updated_at":"2018-06-19T14:50:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4bf56de3fa4a0a9bf90669d63798401c4ad6687c","assignee":{"login":"tuommaki","id":1947505,"node_id":"MDQ6VXNlcjE5NDc1MDU=","avatar_url":"https://avatars3.githubusercontent.com/u/1947505?v=4","gravatar_id":"","url":"https://api.github.com/users/tuommaki","html_url":"https://github.com/tuommaki","followers_url":"https://api.github.com/users/tuommaki/followers","following_url":"https://api.github.com/users/tuommaki/following{/other_user}","gists_url":"https://api.github.com/users/tuommaki/gists{/gist_id}","starred_url":"https://api.github.com/users/tuommaki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tuommaki/subscriptions","organizations_url":"https://api.github.com/users/tuommaki/orgs","repos_url":"https://api.github.com/users/tuommaki/repos","events_url":"https://api.github.com/users/tuommaki/events{/privacy}","received_events_url":"https://api.github.com/users/tuommaki/received_events","type":"User","site_admin":false},"assignees":[{"login":"tuommaki","id":1947505,"node_id":"MDQ6VXNlcjE5NDc1MDU=","avatar_url":"https://avatars3.githubusercontent.com/u/1947505?v=4","gravatar_id":"","url":"https://api.github.com/users/tuommaki","html_url":"https://github.com/tuommaki","followers_url":"https://api.github.com/users/tuommaki/followers","following_url":"https://api.github.com/users/tuommaki/following{/other_user}","gists_url":"https://api.github.com/users/tuommaki/gists{/gist_id}","starred_url":"https://api.github.com/users/tuommaki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tuommaki/subscriptions","organizations_url":"https://api.github.com/users/tuommaki/orgs","repos_url":"https://api.github.com/users/tuommaki/repos","events_url":"https://api.github.com/users/tuommaki/events{/privacy}","received_events_url":"https://api.github.com/users/tuommaki/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151/commits","review_comments_url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151/comments","review_comment_url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/comments{/number}","comments_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues/151/comments","statuses_url":"https://api.github.com/repos/giantswarm/cluster-operator/statuses/4704f91ebd37c5da4807977f62765627cfa61ff9","head":{"label":"giantswarm:add-network-controller","ref":"add-network-controller","sha":"4704f91ebd37c5da4807977f62765627cfa61ff9","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":113968263,"node_id":"MDEwOlJlcG9zaXRvcnkxMTM5NjgyNjM=","name":"cluster-operator","full_name":"giantswarm/cluster-operator","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/cluster-operator","description":"The cluster-operator is an in-cluster agent that handles Giant Swarm guest cluster specific resources.","fork":false,"url":"https://api.github.com/repos/giantswarm/cluster-operator","forks_url":"https://api.github.com/repos/giantswarm/cluster-operator/forks","keys_url":"https://api.github.com/repos/giantswarm/cluster-operator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/giantswarm/cluster-operator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/giantswarm/cluster-operator/teams","hooks_url":"https://api.github.com/repos/giantswarm/cluster-operator/hooks","issue_events_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues/events{/number}","events_url":"https://api.github.com/repos/giantswarm/cluster-operator/events","assignees_url":"https://api.github.com/repos/giantswarm/cluster-operator/assignees{/user}","branches_url":"https://api.github.com/repos/giantswarm/cluster-operator/branches{/branch}","tags_url":"https://api.github.com/repos/giantswarm/cluster-operator/tags","blobs_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/refs{/sha}","trees_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/giantswarm/cluster-operator/statuses/{sha}","languages_url":"https://api.github.com/repos/giantswarm/cluster-operator/languages","stargazers_url":"https://api.github.com/repos/giantswarm/cluster-operator/stargazers","contributors_url":"https://api.github.com/repos/giantswarm/cluster-operator/contributors","subscribers_url":"https://api.github.com/repos/giantswarm/cluster-operator/subscribers","subscription_url":"https://api.github.com/repos/giantswarm/cluster-operator/subscription","commits_url":"https://api.github.com/repos/giantswarm/cluster-operator/commits{/sha}","git_commits_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/commits{/sha}","comments_url":"https://api.github.com/repos/giantswarm/cluster-operator/comments{/number}","issue_comment_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues/comments{/number}","contents_url":"https://api.github.com/repos/giantswarm/cluster-operator/contents/{+path}","compare_url":"https://api.github.com/repos/giantswarm/cluster-operator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/giantswarm/cluster-operator/merges","archive_url":"https://api.github.com/repos/giantswarm/cluster-operator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/giantswarm/cluster-operator/downloads","issues_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues{/number}","pulls_url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls{/number}","milestones_url":"https://api.github.com/repos/giantswarm/cluster-operator/milestones{/number}","notifications_url":"https://api.github.com/repos/giantswarm/cluster-operator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/giantswarm/cluster-operator/labels{/name}","releases_url":"https://api.github.com/repos/giantswarm/cluster-operator/releases{/id}","deployments_url":"https://api.github.com/repos/giantswarm/cluster-operator/deployments","created_at":"2017-12-12T09:10:47Z","updated_at":"2018-06-18T08:43:43Z","pushed_at":"2018-06-19T13:00:39Z","git_url":"git://github.com/giantswarm/cluster-operator.git","ssh_url":"git@github.com:giantswarm/cluster-operator.git","clone_url":"https://github.com/giantswarm/cluster-operator.git","svn_url":"https://github.com/giantswarm/cluster-operator","homepage":null,"size":32321,"stargazers_count":1,"watchers_count":1,"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":2,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":2,"watchers":1,"default_branch":"master"}},"base":{"label":"giantswarm:master","ref":"master","sha":"4c171e4fdeb3636cfe80170d9ad032dd96fb52ca","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":113968263,"node_id":"MDEwOlJlcG9zaXRvcnkxMTM5NjgyNjM=","name":"cluster-operator","full_name":"giantswarm/cluster-operator","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/cluster-operator","description":"The cluster-operator is an in-cluster agent that handles Giant Swarm guest cluster specific resources.","fork":false,"url":"https://api.github.com/repos/giantswarm/cluster-operator","forks_url":"https://api.github.com/repos/giantswarm/cluster-operator/forks","keys_url":"https://api.github.com/repos/giantswarm/cluster-operator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/giantswarm/cluster-operator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/giantswarm/cluster-operator/teams","hooks_url":"https://api.github.com/repos/giantswarm/cluster-operator/hooks","issue_events_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues/events{/number}","events_url":"https://api.github.com/repos/giantswarm/cluster-operator/events","assignees_url":"https://api.github.com/repos/giantswarm/cluster-operator/assignees{/user}","branches_url":"https://api.github.com/repos/giantswarm/cluster-operator/branches{/branch}","tags_url":"https://api.github.com/repos/giantswarm/cluster-operator/tags","blobs_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/refs{/sha}","trees_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/giantswarm/cluster-operator/statuses/{sha}","languages_url":"https://api.github.com/repos/giantswarm/cluster-operator/languages","stargazers_url":"https://api.github.com/repos/giantswarm/cluster-operator/stargazers","contributors_url":"https://api.github.com/repos/giantswarm/cluster-operator/contributors","subscribers_url":"https://api.github.com/repos/giantswarm/cluster-operator/subscribers","subscription_url":"https://api.github.com/repos/giantswarm/cluster-operator/subscription","commits_url":"https://api.github.com/repos/giantswarm/cluster-operator/commits{/sha}","git_commits_url":"https://api.github.com/repos/giantswarm/cluster-operator/git/commits{/sha}","comments_url":"https://api.github.com/repos/giantswarm/cluster-operator/comments{/number}","issue_comment_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues/comments{/number}","contents_url":"https://api.github.com/repos/giantswarm/cluster-operator/contents/{+path}","compare_url":"https://api.github.com/repos/giantswarm/cluster-operator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/giantswarm/cluster-operator/merges","archive_url":"https://api.github.com/repos/giantswarm/cluster-operator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/giantswarm/cluster-operator/downloads","issues_url":"https://api.github.com/repos/giantswarm/cluster-operator/issues{/number}","pulls_url":"https://api.github.com/repos/giantswarm/cluster-operator/pulls{/number}","milestones_url":"https://api.github.com/repos/giantswarm/cluster-operator/milestones{/number}","notifications_url":"https://api.github.com/repos/giantswarm/cluster-operator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/giantswarm/cluster-operator/labels{/name}","releases_url":"https://api.github.com/repos/giantswarm/cluster-operator/releases{/id}","deployments_url":"https://api.github.com/repos/giantswarm/cluster-operator/deployments","created_at":"2017-12-12T09:10:47Z","updated_at":"2018-06-18T08:43:43Z","pushed_at":"2018-06-19T13:00:39Z","git_url":"git://github.com/giantswarm/cluster-operator.git","ssh_url":"git@github.com:giantswarm/cluster-operator.git","clone_url":"https://github.com/giantswarm/cluster-operator.git","svn_url":"https://github.com/giantswarm/cluster-operator","homepage":null,"size":32321,"stargazers_count":1,"watchers_count":1,"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":2,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":2,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151"},"html":{"href":"https://github.com/giantswarm/cluster-operator/pull/151"},"issue":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/issues/151"},"comments":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/issues/151/comments"},"review_comments":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151/comments"},"review_comment":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/pulls/151/commits"},"statuses":{"href":"https://api.github.com/repos/giantswarm/cluster-operator/statuses/4704f91ebd37c5da4807977f62765627cfa61ff9"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"xh3b4sd"}}