{"action":"created","comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/30449345","id":30449345,"diff_hunk":"@@ -0,0 +1,331 @@\n+/*\n+Copyright 2015 The Kubernetes Authors All rights reserved.\n+\n+Licensed under the Apache License, Version 2.0 (the \"License\");\n+you may not use this file except in compliance with the License.\n+You may obtain a copy of the License at\n+\n+    http://www.apache.org/licenses/LICENSE-2.0\n+\n+Unless required by applicable law or agreed to in writing, software\n+distributed under the License is distributed on an \"AS IS\" BASIS,\n+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+See the License for the specific language governing permissions and\n+limitations under the License.\n+*/\n+\n+package e2e\n+\n+import (\n+\t\"bytes\"\n+\t\"fmt\"\n+\t\"os/exec\"\n+\t\"strconv\"\n+\t\"time\"\n+\n+\t\"github.com/GoogleCloudPlatform/kubernetes/pkg/api\"\n+\t\"github.com/GoogleCloudPlatform/kubernetes/pkg/client\"\n+\t\"github.com/GoogleCloudPlatform/kubernetes/pkg/fields\"\n+\t\"github.com/GoogleCloudPlatform/kubernetes/pkg/labels\"\n+\t\"github.com/GoogleCloudPlatform/kubernetes/pkg/util\"\n+\t\"github.com/GoogleCloudPlatform/kubernetes/pkg/util/wait\"\n+\n+\t. \"github.com/onsi/ginkgo\"\n+\t. \"github.com/onsi/gomega\"\n+)\n+\n+func resizeNodeInstanceGroup(size int) error {\n+\t// TODO: make this hit the compute API directly instread of shelling out to gcloud.\n+\toutput, err := exec.Command(\"gcloud\", \"preview\", \"managed-instance-groups\", \"--zone=\"+testContext.CloudConfig.Zone,\n+\t\t\"resize\", testContext.CloudConfig.NodeInstanceGroup, fmt.Sprintf(\"--new-size=%v\", size)).CombinedOutput()\n+\tif err != nil {\n+\t\tLogf(\"Failed to resize node instance group: %v\", string(output))\n+\t}\n+\treturn err\n+}\n+\n+func waitForNodeInstanceGroupSize(size int) error {\n+\tfor start := time.Now(); time.Since(start) < 4*time.Minute; time.Sleep(20 * time.Second) {\n+\t\t// TODO: make this hit the compute API directly instread of shelling out to gcloud.\n+\t\toutput, err := exec.Command(\"gcloud\", \"preview\", \"managed-instance-groups\", \"--zone=\"+testContext.CloudConfig.Zone,\n+\t\t\t\"describe\", testContext.CloudConfig.NodeInstanceGroup).CombinedOutput()\n+\t\tif err != nil {\n+\t\t\tLogf(\"Failed to describe node instance group: %v\", string(output))\n+\t\t\tcontinue\n+\t\t}\n+\t\tpattern := \"currentSize: \"\n+\t\ti := bytes.Index(output, []byte(pattern))\n+\t\tif i != -1 {\n+\t\t\ttruncated := output[i+len(pattern):]\n+\t\t\tj := bytes.Index(truncated, []byte(\"\\n\"))\n+\t\t\tif j != -1 {\n+\t\t\t\tcurrentSize, err := strconv.Atoi(string(truncated[:j]))\n+\t\t\t\tif err == nil && currentSize == size {\n+\t\t\t\t\tLogf(\"Node instance group has reached the desired size %v\", size)\n+\t\t\t\t\treturn nil\n+\t\t\t\t}\n+\t\t\t\tif err == nil {\n+\t\t\t\t\tLogf(\"Waiting for node istance group size %v, current size %v\", size, currentSize)\n+\t\t\t\t\tcontinue\n+\t\t\t\t} else {\n+\t\t\t\t\tLogf(\"Error while parsing current size: %v\", err)\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t\tLogf(\"Waiting for node istance group size %v, current size unknown\", size)\n+\t}\n+\treturn fmt.Errorf(\"Timeout waiting for node instance group size to be %v\", size)\n+}\n+\n+func waitForClusterSize(c *client.Client, size int) error {\n+\tfor start := time.Now(); time.Since(start) < 2*time.Minute; time.Sleep(20 * time.Second) {\n+\t\tnodes, err := c.Nodes().List(labels.Everything(), fields.Everything())\n+\t\tif err != nil {\n+\t\t\tLogf(\"Failed to list nodes: %v\", err)\n+\t\t\tcontinue\n+\t\t}\n+\t\tif len(nodes.Items) == size {\n+\t\t\tLogf(\"Cluster has reached the desired size %v\", size)\n+\t\t\treturn nil\n+\t\t}\n+\t\tLogf(\"Waiting for cluster size %v, current size %v\", size, len(nodes.Items))\n+\t}\n+\treturn fmt.Errorf(\"Timeout waiting for cluster size to be %v\", size)\n+}\n+\n+func newService(name string) *api.Service {\n+\treturn &api.Service{\n+\t\tObjectMeta: api.ObjectMeta{\n+\t\t\tName: \"test-service\",\n+\t\t},\n+\t\tSpec: api.ServiceSpec{\n+\t\t\tSelector: map[string]string{\n+\t\t\t\t\"name\": name,\n+\t\t\t},\n+\t\t\tPorts: []api.ServicePort{{\n+\t\t\t\tPort:       9376,\n+\t\t\t\tTargetPort: util.NewIntOrStringFromInt(9376),\n+\t\t\t}},\n+\t\t},\n+\t}\n+}\n+\n+func createService(c *client.Client, ns, name string) {\n+\t_, err := c.Services(ns).Create(newService(name))\n+\tExpect(err).NotTo(HaveOccurred())\n+}\n+\n+func newReplicationController(name string, replicas int, image string) *api.ReplicationController {\n+\treturn &api.ReplicationController{\n+\t\tObjectMeta: api.ObjectMeta{\n+\t\t\tName: name,\n+\t\t},\n+\t\tSpec: api.ReplicationControllerSpec{\n+\t\t\tReplicas: replicas,\n+\t\t\tSelector: map[string]string{\n+\t\t\t\t\"name\": name,\n+\t\t\t},\n+\t\t\tTemplate: &api.PodTemplateSpec{\n+\t\t\t\tObjectMeta: api.ObjectMeta{\n+\t\t\t\t\tLabels: map[string]string{\"name\": name},\n+\t\t\t\t},\n+\t\t\t\tSpec: api.PodSpec{\n+\t\t\t\t\tContainers: []api.Container{\n+\t\t\t\t\t\t{\n+\t\t\t\t\t\t\tName:  name,\n+\t\t\t\t\t\t\tImage: image,\n+\t\t\t\t\t\t\tPorts: []api.ContainerPort{{ContainerPort: 9376}},\n+\t\t\t\t\t\t},\n+\t\t\t\t\t},\n+\t\t\t\t},\n+\t\t\t},\n+\t\t},\n+\t}\n+}\n+\n+func createServeHostnameReplicationController(c *client.Client, ns, name string, replicas int) *api.ReplicationController {\n+\tBy(fmt.Sprintf(\"creating replication controller %s\", name))\n+\trc, err := c.ReplicationControllers(ns).Create(newReplicationController(name, replicas, \"gcr.io/google_containers/serve_hostname:1.1\"))\n+\tExpect(err).NotTo(HaveOccurred())\n+\treturn rc\n+}\n+\n+func resizeReplicationController(c *client.Client, ns, name string, replicas int) {\n+\trc, err := c.ReplicationControllers(ns).Get(name)\n+\tExpect(err).NotTo(HaveOccurred())\n+\trc.Spec.Replicas = replicas\n+\t_, err = c.ReplicationControllers(rc.Namespace).Update(rc)\n+\tExpect(err).NotTo(HaveOccurred())\n+}\n+\n+func waitForPodsCreated(c *client.Client, ns, name string, replicas int) *api.PodList {\n+\t// List the pods, making sure we observe all the replicas.\n+\tlistTimeout := time.Minute\n+\tlistInterval := 5 * time.Second\n+\tlabel := labels.SelectorFromSet(labels.Set(map[string]string{\"name\": name}))\n+\tvar pods *api.PodList\n+\tt := time.Now()\n+\tfor {\n+\t\tvar err error\n+\t\tpods, err = c.Pods(ns).List(label, fields.Everything())\n+\t\tExpect(err).NotTo(HaveOccurred())\n+\n+\t\tLogf(\"Controller %s: Found %d pods out of %d\", name, len(pods.Items), replicas)\n+\t\tif len(pods.Items) == replicas {\n+\t\t\tbreak\n+\t\t}\n+\t\tif time.Since(t) > listTimeout {\n+\t\t\tFailf(\"Controller %s: Gave up waiting for %d pods to come up after seeing only %d pods after %v seconds\",\n+\t\t\t\tname, replicas, len(pods.Items), time.Since(t).Seconds())\n+\t\t}\n+\t\ttime.Sleep(listInterval)\n+\t}\n+\treturn pods\n+}\n+\n+func waitForPodsRunning(c *client.Client, pods *api.PodList) {\n+\t// Wait for the pods to enter the running state. Waiting loops until the pods\n+\t// are running so non-running pods cause a timeout for this test.\n+\tBy(\"ensuring each pod is running\")\n+\tfor _, pod := range pods.Items {","path":"test/e2e/resize_nodes.go","position":190,"original_position":190,"commit_id":"a61690cbaeae118bb1d9953e1db2bd6885f331c9","original_commit_id":"a61690cbaeae118bb1d9953e1db2bd6885f331c9","user":{"login":"mbforbes","id":1170062,"avatar_url":"https://avatars.githubusercontent.com/u/1170062?v=3","gravatar_id":"","url":"https://api.github.com/users/mbforbes","html_url":"https://github.com/mbforbes","followers_url":"https://api.github.com/users/mbforbes/followers","following_url":"https://api.github.com/users/mbforbes/following{/other_user}","gists_url":"https://api.github.com/users/mbforbes/gists{/gist_id}","starred_url":"https://api.github.com/users/mbforbes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbforbes/subscriptions","organizations_url":"https://api.github.com/users/mbforbes/orgs","repos_url":"https://api.github.com/users/mbforbes/repos","events_url":"https://api.github.com/users/mbforbes/events{/privacy}","received_events_url":"https://api.github.com/users/mbforbes/received_events","type":"User","site_admin":false},"body":"Because this `for` loop is sequential, this part of the test alone could take 5 minutes times the number of pods, when really we want it to only take 5 minutes total. Could you either parallelize this with channels, or, if that's too much work, add a TODO to do this?","created_at":"2015-05-15T21:54:57Z","updated_at":"2015-05-15T21:54:57Z","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/8243#discussion_r30449345","pull_request_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243","_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/30449345"},"html":{"href":"https://github.com/GoogleCloudPlatform/kubernetes/pull/8243#discussion_r30449345"},"pull_request":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243"}}},"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243","id":35409995,"html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/8243","diff_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/8243.diff","patch_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/8243.patch","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/8243","number":8243,"state":"open","locked":false,"title":"Implementation of e2e test that re-sizes cluster","user":{"login":"jszczepkowski","id":10820769,"avatar_url":"https://avatars.githubusercontent.com/u/10820769?v=3","gravatar_id":"","url":"https://api.github.com/users/jszczepkowski","html_url":"https://github.com/jszczepkowski","followers_url":"https://api.github.com/users/jszczepkowski/followers","following_url":"https://api.github.com/users/jszczepkowski/following{/other_user}","gists_url":"https://api.github.com/users/jszczepkowski/gists{/gist_id}","starred_url":"https://api.github.com/users/jszczepkowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jszczepkowski/subscriptions","organizations_url":"https://api.github.com/users/jszczepkowski/orgs","repos_url":"https://api.github.com/users/jszczepkowski/repos","events_url":"https://api.github.com/users/jszczepkowski/events{/privacy}","received_events_url":"https://api.github.com/users/jszczepkowski/received_events","type":"User","site_admin":false},"body":"Implementation of e2e test that re-sizes cluster; currently works on GCE.","created_at":"2015-05-14T10:23:03Z","updated_at":"2015-05-15T21:54:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"09e4c87198cc907c89e7aa414ce9180c2ada5a2c","assignee":{"login":"mbforbes","id":1170062,"avatar_url":"https://avatars.githubusercontent.com/u/1170062?v=3","gravatar_id":"","url":"https://api.github.com/users/mbforbes","html_url":"https://github.com/mbforbes","followers_url":"https://api.github.com/users/mbforbes/followers","following_url":"https://api.github.com/users/mbforbes/following{/other_user}","gists_url":"https://api.github.com/users/mbforbes/gists{/gist_id}","starred_url":"https://api.github.com/users/mbforbes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbforbes/subscriptions","organizations_url":"https://api.github.com/users/mbforbes/orgs","repos_url":"https://api.github.com/users/mbforbes/repos","events_url":"https://api.github.com/users/mbforbes/events{/privacy}","received_events_url":"https://api.github.com/users/mbforbes/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243/commits","review_comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243/comments","review_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/8243/comments","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/a61690cbaeae118bb1d9953e1db2bd6885f331c9","head":{"label":"jszczepkowski:e2e-nodes","ref":"e2e-nodes","sha":"a61690cbaeae118bb1d9953e1db2bd6885f331c9","user":{"login":"jszczepkowski","id":10820769,"avatar_url":"https://avatars.githubusercontent.com/u/10820769?v=3","gravatar_id":"","url":"https://api.github.com/users/jszczepkowski","html_url":"https://github.com/jszczepkowski","followers_url":"https://api.github.com/users/jszczepkowski/followers","following_url":"https://api.github.com/users/jszczepkowski/following{/other_user}","gists_url":"https://api.github.com/users/jszczepkowski/gists{/gist_id}","starred_url":"https://api.github.com/users/jszczepkowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jszczepkowski/subscriptions","organizations_url":"https://api.github.com/users/jszczepkowski/orgs","repos_url":"https://api.github.com/users/jszczepkowski/repos","events_url":"https://api.github.com/users/jszczepkowski/events{/privacy}","received_events_url":"https://api.github.com/users/jszczepkowski/received_events","type":"User","site_admin":false},"repo":{"id":30266090,"name":"kubernetes","full_name":"jszczepkowski/kubernetes","owner":{"login":"jszczepkowski","id":10820769,"avatar_url":"https://avatars.githubusercontent.com/u/10820769?v=3","gravatar_id":"","url":"https://api.github.com/users/jszczepkowski","html_url":"https://github.com/jszczepkowski","followers_url":"https://api.github.com/users/jszczepkowski/followers","following_url":"https://api.github.com/users/jszczepkowski/following{/other_user}","gists_url":"https://api.github.com/users/jszczepkowski/gists{/gist_id}","starred_url":"https://api.github.com/users/jszczepkowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jszczepkowski/subscriptions","organizations_url":"https://api.github.com/users/jszczepkowski/orgs","repos_url":"https://api.github.com/users/jszczepkowski/repos","events_url":"https://api.github.com/users/jszczepkowski/events{/privacy}","received_events_url":"https://api.github.com/users/jszczepkowski/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jszczepkowski/kubernetes","description":"Container Cluster Manager","fork":true,"url":"https://api.github.com/repos/jszczepkowski/kubernetes","forks_url":"https://api.github.com/repos/jszczepkowski/kubernetes/forks","keys_url":"https://api.github.com/repos/jszczepkowski/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jszczepkowski/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jszczepkowski/kubernetes/teams","hooks_url":"https://api.github.com/repos/jszczepkowski/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/jszczepkowski/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/jszczepkowski/kubernetes/events","assignees_url":"https://api.github.com/repos/jszczepkowski/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/jszczepkowski/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/jszczepkowski/kubernetes/tags","blobs_url":"https://api.github.com/repos/jszczepkowski/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jszczepkowski/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jszczepkowski/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/jszczepkowski/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jszczepkowski/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/jszczepkowski/kubernetes/languages","stargazers_url":"https://api.github.com/repos/jszczepkowski/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/jszczepkowski/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/jszczepkowski/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/jszczepkowski/kubernetes/subscription","commits_url":"https://api.github.com/repos/jszczepkowski/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/jszczepkowski/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/jszczepkowski/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/jszczepkowski/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/jszczepkowski/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/jszczepkowski/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jszczepkowski/kubernetes/merges","archive_url":"https://api.github.com/repos/jszczepkowski/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jszczepkowski/kubernetes/downloads","issues_url":"https://api.github.com/repos/jszczepkowski/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/jszczepkowski/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/jszczepkowski/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/jszczepkowski/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jszczepkowski/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/jszczepkowski/kubernetes/releases{/id}","created_at":"2015-02-03T21:42:51Z","updated_at":"2015-02-12T20:51:30Z","pushed_at":"2015-05-15T13:08:04Z","git_url":"git://github.com/jszczepkowski/kubernetes.git","ssh_url":"git@github.com:jszczepkowski/kubernetes.git","clone_url":"https://github.com/jszczepkowski/kubernetes.git","svn_url":"https://github.com/jszczepkowski/kubernetes","homepage":"http://kubernetes.io","size":54430,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"GoogleCloudPlatform:master","ref":"master","sha":"5010b2dde0f9b9eb820fe047e3b34bc9fa6324de","user":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":20580498,"name":"kubernetes","full_name":"GoogleCloudPlatform/kubernetes","owner":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GoogleCloudPlatform/kubernetes","description":"Container Cluster Manager from Google","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/releases{/id}","created_at":"2014-06-06T22:56:04Z","updated_at":"2015-05-15T21:22:56Z","pushed_at":"2015-05-15T21:46:03Z","git_url":"git://github.com/GoogleCloudPlatform/kubernetes.git","ssh_url":"git@github.com:GoogleCloudPlatform/kubernetes.git","clone_url":"https://github.com/GoogleCloudPlatform/kubernetes.git","svn_url":"https://github.com/GoogleCloudPlatform/kubernetes","homepage":"http://kubernetes.io","size":268264,"stargazers_count":7671,"watchers_count":7671,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1570,"mirror_url":null,"open_issues_count":1098,"forks":1570,"open_issues":1098,"watchers":7671,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243"},"html":{"href":"https://github.com/GoogleCloudPlatform/kubernetes/pull/8243"},"issue":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/8243"},"comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/8243/comments"},"review_comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243/comments"},"review_comment":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/8243/commits"},"statuses":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/a61690cbaeae118bb1d9953e1db2bd6885f331c9"}}}}