{"action":"created","comment":{"url":"https://api.github.com/repos/openshift/openshift-azure/pulls/comments/213874943","pull_request_review_id":150803301,"id":213874943,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMzg3NDk0Mw==","diff_hunk":"@@ -0,0 +1,231 @@\n+package main\n+\n+import (\n+\t\"context\"\n+\n+\t\"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute\"\n+\t\"github.com/Azure/go-autorest/autorest/azure/auth\"\n+\t\"github.com/Azure/go-autorest/autorest/to\"\n+\n+\t\"github.com/openshift/openshift-azure/pkg/api\"\n+\t\"github.com/openshift/openshift-azure/pkg/log\"\n+)\n+\n+func update(cs *api.OpenShiftManagedCluster, p api.Plugin) error {\n+\tauthorizer, err := auth.NewAuthorizerFromEnvironment()\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\tssc := compute.NewVirtualMachineScaleSetsClient(cs.Properties.AzProfile.SubscriptionID)\n+\tssc.Authorizer = authorizer\n+\tvmc := compute.NewVirtualMachineScaleSetVMsClient(cs.Properties.AzProfile.SubscriptionID)\n+\tvmc.Authorizer = authorizer\n+\n+\tctx := context.Background()\n+\n+\terr = updateInPlace(ctx, cs, p, ssc, vmc, api.AgentPoolProfileRoleMaster)\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\t// TODO: updatePlusOne isn't good enough to avoid interruption on our infra\n+\t// nodes.\n+\terr = updatePlusOne(ctx, cs, p, ssc, vmc, api.AgentPoolProfileRoleInfra)\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\terr = updatePlusOne(ctx, cs, p, ssc, vmc, api.AgentPoolProfileRoleCompute)\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\treturn nil\n+}\n+\n+func getCount(cs *api.OpenShiftManagedCluster, role api.AgentPoolProfileRole) int {\n+\tfor _, app := range cs.Properties.AgentPoolProfiles {\n+\t\tif app.Role == role {\n+\t\t\treturn app.Count\n+\t\t}\n+\t}\n+\n+\tpanic(\"invalid role\")\n+}\n+\n+func listVMs(ctx context.Context, cs *api.OpenShiftManagedCluster, vmc compute.VirtualMachineScaleSetVMsClient, role api.AgentPoolProfileRole) ([]compute.VirtualMachineScaleSetVM, error) {\n+\tvmPages, err := vmc.List(ctx, cs.Properties.AzProfile.ResourceGroup, \"ss-\"+string(role), \"\", \"\", \"\")\n+\tif err != nil {\n+\t\treturn nil, err\n+\t}\n+\n+\tvar vms []compute.VirtualMachineScaleSetVM\n+\tfor vmPages.NotDone() {\n+\t\tvms = append(vms, vmPages.Values()...)\n+\n+\t\terr = vmPages.Next()\n+\t\tif err != nil {\n+\t\t\treturn nil, err\n+\t\t}\n+\t}\n+\n+\treturn vms, nil\n+}\n+\n+// updatePlusOne creates an extra VM, then runs updateInPlace, then removes the\n+// extra VM.\n+func updatePlusOne(ctx context.Context, cs *api.OpenShiftManagedCluster, p api.Plugin, ssc compute.VirtualMachineScaleSetsClient, vmc compute.VirtualMachineScaleSetVMsClient, role api.AgentPoolProfileRole) error {\n+\tcount := getCount(cs, role)\n+\n+\t// store a list of all the VM instances now, so that if we end up creating\n+\t// new ones (in the crash recovery case, we might not), we can detect which\n+\t// they are\n+\tvms, err := listVMs(ctx, cs, vmc, role)\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\tvmsBefore := map[string]struct{}{}\n+\tfor _, vm := range vms {\n+\t\tvmsBefore[*vm.InstanceID] = struct{}{}\n+\t}\n+\n+\tlog.Infof(\"setting ss-%s capacity to %d\", role, count+1)\n+\tfuture, err := ssc.Update(ctx, cs.Properties.AzProfile.ResourceGroup, \"ss-\"+string(role), compute.VirtualMachineScaleSetUpdate{\n+\t\tSku: &compute.Sku{\n+\t\t\tCapacity: to.Int64Ptr(int64(count) + 1),\n+\t\t},\n+\t})\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\terr = future.WaitForCompletion(ctx, ssc.Client)\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\tvms, err = listVMs(ctx, cs, vmc, role)\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\t// wait for newly created VMs to reach readiness (n.b. one alternative to\n+\t// this approach would be for the CSE to not return until the node is\n+\t// ready, but that is also problematic)\n+\tfor _, vm := range vms {\n+\t\tif _, found := vmsBefore[*vm.InstanceID]; !found {\n+\t\t\tlog.Infof(\"waiting for %s to be ready\", *vm.VirtualMachineScaleSetVMProperties.OsProfile.ComputerName)\n+\t\t\terr = p.WaitForReady(ctx, cs, role, *vm.VirtualMachineScaleSetVMProperties.OsProfile.ComputerName)\n+\t\t\tif err != nil {\n+\t\t\t\treturn err\n+\t\t\t}\n+\t\t}\n+\t}\n+\n+\terr = updateInPlace(ctx, cs, p, ssc, vmc, role)\n+\tif err != nil {\n+\t\treturn err\n+\t}\n+\n+\t// remove surplus VMs\n+\tfor _, vm := range vms[count:] {\n+\t\tlog.Infof(\"draining %s\", *vm.VirtualMachineScaleSetVMProperties.OsProfile.ComputerName)\n+\t\terr = p.Drain(ctx, cs, role, *vm.VirtualMachineScaleSetVMProperties.OsProfile.ComputerName)\n+\t\tif err != nil {\n+\t\t\treturn err\n+\t\t}\n+\n+\t\tlog.Infof(\"deleting %s\", *vm.VirtualMachineScaleSetVMProperties.OsProfile.ComputerName)\n+\t\tfuture, err := vmc.Delete(ctx, cs.Properties.AzProfile.ResourceGroup, \"ss-\"+string(role), *vm.InstanceID)\n+\t\tif err != nil {\n+\t\t\treturn err\n+\t\t}\n+\n+\t\terr = future.WaitForCompletion(ctx, vmc.Client)","path":"cmd/createorupdate/update.go","position":146,"original_position":146,"commit_id":"e27d5c61da0e330819acd8cd2fa01790ff6d83b3","original_commit_id":"e27d5c61da0e330819acd8cd2fa01790ff6d83b3","user":{"login":"jim-minter","id":1038301,"node_id":"MDQ6VXNlcjEwMzgzMDE=","avatar_url":"https://avatars2.githubusercontent.com/u/1038301?v=4","gravatar_id":"","url":"https://api.github.com/users/jim-minter","html_url":"https://github.com/jim-minter","followers_url":"https://api.github.com/users/jim-minter/followers","following_url":"https://api.github.com/users/jim-minter/following{/other_user}","gists_url":"https://api.github.com/users/jim-minter/gists{/gist_id}","starred_url":"https://api.github.com/users/jim-minter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jim-minter/subscriptions","organizations_url":"https://api.github.com/users/jim-minter/orgs","repos_url":"https://api.github.com/users/jim-minter/repos","events_url":"https://api.github.com/users/jim-minter/events{/privacy}","received_events_url":"https://api.github.com/users/jim-minter/received_events","type":"User","site_admin":false},"body":"Nasty.  We should be taking that up with MSFT.\r\nIf we don't wait for VMs to delete we will unblock the next RP operation on the cluster straightaway and that could cause us quite confusing problems.","created_at":"2018-08-30T00:37:17Z","updated_at":"2018-08-30T00:37:17Z","html_url":"https://github.com/openshift/openshift-azure/pull/238#discussion_r213874943","pull_request_url":"https://api.github.com/repos/openshift/openshift-azure/pulls/238","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-azure/pulls/comments/213874943"},"html":{"href":"https://github.com/openshift/openshift-azure/pull/238#discussion_r213874943"},"pull_request":{"href":"https://api.github.com/repos/openshift/openshift-azure/pulls/238"}},"in_reply_to_id":213218922},"pull_request":{"url":"https://api.github.com/repos/openshift/openshift-azure/pulls/238","id":210013145,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEwMDEzMTQ1","html_url":"https://github.com/openshift/openshift-azure/pull/238","diff_url":"https://github.com/openshift/openshift-azure/pull/238.diff","patch_url":"https://github.com/openshift/openshift-azure/pull/238.patch","issue_url":"https://api.github.com/repos/openshift/openshift-azure/issues/238","number":238,"state":"closed","locked":false,"title":"Upgrade","user":{"login":"jim-minter","id":1038301,"node_id":"MDQ6VXNlcjEwMzgzMDE=","avatar_url":"https://avatars2.githubusercontent.com/u/1038301?v=4","gravatar_id":"","url":"https://api.github.com/users/jim-minter","html_url":"https://github.com/jim-minter","followers_url":"https://api.github.com/users/jim-minter/followers","following_url":"https://api.github.com/users/jim-minter/following{/other_user}","gists_url":"https://api.github.com/users/jim-minter/gists{/gist_id}","starred_url":"https://api.github.com/users/jim-minter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jim-minter/subscriptions","organizations_url":"https://api.github.com/users/jim-minter/orgs","repos_url":"https://api.github.com/users/jim-minter/repos","events_url":"https://api.github.com/users/jim-minter/events{/privacy}","received_events_url":"https://api.github.com/users/jim-minter/received_events","type":"User","site_admin":false},"body":"@pweil- @mjudeikis @kargakis building on #231: upgrade.  I believe this PR has a cleaner/simpler approach compared to #138.\r\n\r\nfixes #215\r\nfixes #223","created_at":"2018-08-22T03:47:56Z","updated_at":"2018-08-30T00:37:17Z","closed_at":"2018-08-24T15:24:01Z","merged_at":"2018-08-24T15:24:01Z","merge_commit_sha":"c9e49f1e81dc3baf6f347685f8883fd096a4707c","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1006544929,"node_id":"MDU6TGFiZWwxMDA2NTQ0OTI5","url":"https://api.github.com/repos/openshift/openshift-azure/labels/approved","name":"approved","color":"0ffa16","default":false},{"id":1006545045,"node_id":"MDU6TGFiZWwxMDA2NTQ1MDQ1","url":"https://api.github.com/repos/openshift/openshift-azure/labels/lgtm","name":"lgtm","color":"15dd18","default":false},{"id":1006543190,"node_id":"MDU6TGFiZWwxMDA2NTQzMTkw","url":"https://api.github.com/repos/openshift/openshift-azure/labels/size/XXL","name":"size/XXL","color":"ee0000","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/openshift/openshift-azure/pulls/238/commits","review_comments_url":"https://api.github.com/repos/openshift/openshift-azure/pulls/238/comments","review_comment_url":"https://api.github.com/repos/openshift/openshift-azure/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openshift/openshift-azure/issues/238/comments","statuses_url":"https://api.github.com/repos/openshift/openshift-azure/statuses/e27d5c61da0e330819acd8cd2fa01790ff6d83b3","head":{"label":"jim-minter:upgrade","ref":"upgrade","sha":"e27d5c61da0e330819acd8cd2fa01790ff6d83b3","user":{"login":"jim-minter","id":1038301,"node_id":"MDQ6VXNlcjEwMzgzMDE=","avatar_url":"https://avatars2.githubusercontent.com/u/1038301?v=4","gravatar_id":"","url":"https://api.github.com/users/jim-minter","html_url":"https://github.com/jim-minter","followers_url":"https://api.github.com/users/jim-minter/followers","following_url":"https://api.github.com/users/jim-minter/following{/other_user}","gists_url":"https://api.github.com/users/jim-minter/gists{/gist_id}","starred_url":"https://api.github.com/users/jim-minter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jim-minter/subscriptions","organizations_url":"https://api.github.com/users/jim-minter/orgs","repos_url":"https://api.github.com/users/jim-minter/repos","events_url":"https://api.github.com/users/jim-minter/events{/privacy}","received_events_url":"https://api.github.com/users/jim-minter/received_events","type":"User","site_admin":false},"repo":{"id":142488214,"node_id":"MDEwOlJlcG9zaXRvcnkxNDI0ODgyMTQ=","name":"openshift-azure","full_name":"jim-minter/openshift-azure","owner":{"login":"jim-minter","id":1038301,"node_id":"MDQ6VXNlcjEwMzgzMDE=","avatar_url":"https://avatars2.githubusercontent.com/u/1038301?v=4","gravatar_id":"","url":"https://api.github.com/users/jim-minter","html_url":"https://github.com/jim-minter","followers_url":"https://api.github.com/users/jim-minter/followers","following_url":"https://api.github.com/users/jim-minter/following{/other_user}","gists_url":"https://api.github.com/users/jim-minter/gists{/gist_id}","starred_url":"https://api.github.com/users/jim-minter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jim-minter/subscriptions","organizations_url":"https://api.github.com/users/jim-minter/orgs","repos_url":"https://api.github.com/users/jim-minter/repos","events_url":"https://api.github.com/users/jim-minter/events{/privacy}","received_events_url":"https://api.github.com/users/jim-minter/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jim-minter/openshift-azure","description":null,"fork":true,"url":"https://api.github.com/repos/jim-minter/openshift-azure","forks_url":"https://api.github.com/repos/jim-minter/openshift-azure/forks","keys_url":"https://api.github.com/repos/jim-minter/openshift-azure/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jim-minter/openshift-azure/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jim-minter/openshift-azure/teams","hooks_url":"https://api.github.com/repos/jim-minter/openshift-azure/hooks","issue_events_url":"https://api.github.com/repos/jim-minter/openshift-azure/issues/events{/number}","events_url":"https://api.github.com/repos/jim-minter/openshift-azure/events","assignees_url":"https://api.github.com/repos/jim-minter/openshift-azure/assignees{/user}","branches_url":"https://api.github.com/repos/jim-minter/openshift-azure/branches{/branch}","tags_url":"https://api.github.com/repos/jim-minter/openshift-azure/tags","blobs_url":"https://api.github.com/repos/jim-minter/openshift-azure/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jim-minter/openshift-azure/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jim-minter/openshift-azure/git/refs{/sha}","trees_url":"https://api.github.com/repos/jim-minter/openshift-azure/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jim-minter/openshift-azure/statuses/{sha}","languages_url":"https://api.github.com/repos/jim-minter/openshift-azure/languages","stargazers_url":"https://api.github.com/repos/jim-minter/openshift-azure/stargazers","contributors_url":"https://api.github.com/repos/jim-minter/openshift-azure/contributors","subscribers_url":"https://api.github.com/repos/jim-minter/openshift-azure/subscribers","subscription_url":"https://api.github.com/repos/jim-minter/openshift-azure/subscription","commits_url":"https://api.github.com/repos/jim-minter/openshift-azure/commits{/sha}","git_commits_url":"https://api.github.com/repos/jim-minter/openshift-azure/git/commits{/sha}","comments_url":"https://api.github.com/repos/jim-minter/openshift-azure/comments{/number}","issue_comment_url":"https://api.github.com/repos/jim-minter/openshift-azure/issues/comments{/number}","contents_url":"https://api.github.com/repos/jim-minter/openshift-azure/contents/{+path}","compare_url":"https://api.github.com/repos/jim-minter/openshift-azure/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jim-minter/openshift-azure/merges","archive_url":"https://api.github.com/repos/jim-minter/openshift-azure/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jim-minter/openshift-azure/downloads","issues_url":"https://api.github.com/repos/jim-minter/openshift-azure/issues{/number}","pulls_url":"https://api.github.com/repos/jim-minter/openshift-azure/pulls{/number}","milestones_url":"https://api.github.com/repos/jim-minter/openshift-azure/milestones{/number}","notifications_url":"https://api.github.com/repos/jim-minter/openshift-azure/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jim-minter/openshift-azure/labels{/name}","releases_url":"https://api.github.com/repos/jim-minter/openshift-azure/releases{/id}","deployments_url":"https://api.github.com/repos/jim-minter/openshift-azure/deployments","created_at":"2018-07-26T19:59:36Z","updated_at":"2018-08-29T22:19:26Z","pushed_at":"2018-08-29T23:12:54Z","git_url":"git://github.com/jim-minter/openshift-azure.git","ssh_url":"git@github.com:jim-minter/openshift-azure.git","clone_url":"https://github.com/jim-minter/openshift-azure.git","svn_url":"https://github.com/jim-minter/openshift-azure","homepage":null,"size":26784,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"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":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openshift:master","ref":"master","sha":"2d6c3acc2b099f83300d03af0109113a0a0fd05e","user":{"login":"openshift","id":792337,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc5MjMzNw==","avatar_url":"https://avatars3.githubusercontent.com/u/792337?v=4","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":137828518,"node_id":"MDEwOlJlcG9zaXRvcnkxMzc4Mjg1MTg=","name":"openshift-azure","full_name":"openshift/openshift-azure","owner":{"login":"openshift","id":792337,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc5MjMzNw==","avatar_url":"https://avatars3.githubusercontent.com/u/792337?v=4","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/openshift-azure","description":null,"fork":false,"url":"https://api.github.com/repos/openshift/openshift-azure","forks_url":"https://api.github.com/repos/openshift/openshift-azure/forks","keys_url":"https://api.github.com/repos/openshift/openshift-azure/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openshift/openshift-azure/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openshift/openshift-azure/teams","hooks_url":"https://api.github.com/repos/openshift/openshift-azure/hooks","issue_events_url":"https://api.github.com/repos/openshift/openshift-azure/issues/events{/number}","events_url":"https://api.github.com/repos/openshift/openshift-azure/events","assignees_url":"https://api.github.com/repos/openshift/openshift-azure/assignees{/user}","branches_url":"https://api.github.com/repos/openshift/openshift-azure/branches{/branch}","tags_url":"https://api.github.com/repos/openshift/openshift-azure/tags","blobs_url":"https://api.github.com/repos/openshift/openshift-azure/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openshift/openshift-azure/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openshift/openshift-azure/git/refs{/sha}","trees_url":"https://api.github.com/repos/openshift/openshift-azure/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openshift/openshift-azure/statuses/{sha}","languages_url":"https://api.github.com/repos/openshift/openshift-azure/languages","stargazers_url":"https://api.github.com/repos/openshift/openshift-azure/stargazers","contributors_url":"https://api.github.com/repos/openshift/openshift-azure/contributors","subscribers_url":"https://api.github.com/repos/openshift/openshift-azure/subscribers","subscription_url":"https://api.github.com/repos/openshift/openshift-azure/subscription","commits_url":"https://api.github.com/repos/openshift/openshift-azure/commits{/sha}","git_commits_url":"https://api.github.com/repos/openshift/openshift-azure/git/commits{/sha}","comments_url":"https://api.github.com/repos/openshift/openshift-azure/comments{/number}","issue_comment_url":"https://api.github.com/repos/openshift/openshift-azure/issues/comments{/number}","contents_url":"https://api.github.com/repos/openshift/openshift-azure/contents/{+path}","compare_url":"https://api.github.com/repos/openshift/openshift-azure/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openshift/openshift-azure/merges","archive_url":"https://api.github.com/repos/openshift/openshift-azure/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openshift/openshift-azure/downloads","issues_url":"https://api.github.com/repos/openshift/openshift-azure/issues{/number}","pulls_url":"https://api.github.com/repos/openshift/openshift-azure/pulls{/number}","milestones_url":"https://api.github.com/repos/openshift/openshift-azure/milestones{/number}","notifications_url":"https://api.github.com/repos/openshift/openshift-azure/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openshift/openshift-azure/labels{/name}","releases_url":"https://api.github.com/repos/openshift/openshift-azure/releases{/id}","deployments_url":"https://api.github.com/repos/openshift/openshift-azure/deployments","created_at":"2018-06-19T02:11:07Z","updated_at":"2018-08-29T17:51:03Z","pushed_at":"2018-08-29T23:12:55Z","git_url":"git://github.com/openshift/openshift-azure.git","ssh_url":"git@github.com:openshift/openshift-azure.git","clone_url":"https://github.com/openshift/openshift-azure.git","svn_url":"https://github.com/openshift/openshift-azure","homepage":null,"size":26658,"stargazers_count":3,"watchers_count":3,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":9,"mirror_url":null,"archived":false,"open_issues_count":47,"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":9,"open_issues":47,"watchers":3,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openshift/openshift-azure/pulls/238"},"html":{"href":"https://github.com/openshift/openshift-azure/pull/238"},"issue":{"href":"https://api.github.com/repos/openshift/openshift-azure/issues/238"},"comments":{"href":"https://api.github.com/repos/openshift/openshift-azure/issues/238/comments"},"review_comments":{"href":"https://api.github.com/repos/openshift/openshift-azure/pulls/238/comments"},"review_comment":{"href":"https://api.github.com/repos/openshift/openshift-azure/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openshift/openshift-azure/pulls/238/commits"},"statuses":{"href":"https://api.github.com/repos/openshift/openshift-azure/statuses/e27d5c61da0e330819acd8cd2fa01790ff6d83b3"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jim-minter"}}