GitHub PullRequestReviewCommentEvent at 2014-09-09 16:39:33
Repository: incubator-brooklyn
Actor: ahgittin
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/comments/17312538","id":17312538,"diff_hunk":"@@ -0,0 +1,175 @@\n+/*\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements.  See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership.  The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License.  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,\n+ * software distributed under the License is distributed on an\n+ * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n+ * KIND, either express or implied.  See the License for the\n+ * specific language governing permissions and limitations\n+ * under the License.\n+*/\n+/**\n+ * Render entity advanced tab.\n+ *\n+ * @type {*}\n+ */\n+define([\"underscore\", \"jquery\", \"backbone\", \"brooklyn\", \"brooklyn-utils\", \"view/viewutils\", \"formatJson\",\n+    \"text!tpl/apps/advanced.html\", \"view/entity-config\", \"view/change-name-invoke\", \"view/add-child-invoke\", \"view/policy-new\"\n+], function(_, $, Backbone, Brooklyn, Util, ViewUtils, FormatJSON,\n+        AdvancedHtml, EntityConfigView, ChangeNameInvokeView, AddChildInvokeView, NewPolicyView) {\n+    var EntityAdvancedView = Backbone.View.extend({\n+        events: {\n+            \"click button#change-name\": \"showChangeNameModal\",\n+            \"click button#add-child\": \"showAddChildModal\",\n+            \"click button#add-new-policy\": \"showNewPolicyModal\",\n+            \"click button#reset-problems\": \"doResetProblems\",\n+            \"click button#expunge\": \"confirmExpunge\",\n+            \"click button#unmanage\": \"confirmUnmanage\",\n+            \"click #advanced-tab-error-closer\": \"closeAdvancedTabError\"\n+        },\n+        template: _.template(AdvancedHtml),\n+        initialize:function() {\n+            _.bindAll(this);\n+            this.$el.html(this.template());\n+\n+            this.options.tabView.configView = new EntityConfigView({\n+                model:this.options.model,\n+                tabView:this.options.tabView,\n+            });\n+            this.$(\"div#advanced-config\").html(this.options.tabView.configView.render().el);\n+\n+            this.model.on('change', this.modelChange, this);\n+            this.modelChange();\n+            \n+            ViewUtils.getRepeatedlyWithDelay(this, this.model.get('links').locations, this.renderLocationData);\n+            ViewUtils.get(this, this.model.get('links').tags, this.renderTags);\n+            \n+            ViewUtils.attachToggler(this.$el);\n+        },\n+        modelChange: function() {\n+            this.$('#entity-name').html(Util.toDisplayString(this.model.get(\"name\")));\n+            ViewUtils.updateTextareaWithData($(\"#advanced-entity-json\", this.$el), FormatJSON(this.model.toJSON()), true, false, 250, 600);\n+        },\n+        renderLocationData: function(data) {\n+            ViewUtils.updateTextareaWithData($(\"#advanced-locations\", this.$el), FormatJSON(data), true, false, 250, 600);\n+        },\n+        renderTags: function(data) {\n+            var list = \"\";\n+            for (tag in data)\n+                list += \"<div class='activity-tag-giftlabel'>\"+_.escape(JSON.stringify(data[tag]))+\"</div>\";\n+            if (!list) list = \"No tags\";\n+            this.$('#advanced-entity-tags').html(list);\n+        },\n+        reload: function() {\n+            this.model.fetch();\n+        },\n+        \n+        showModal: function(modal) {\n+            if (this.activeModal)\n+                this.activeModal.close();\n+            this.activeModal = modal;\n+            Brooklyn.view.showModalWith(modal);\n+        },\n+        showChangeNameModal: function() {\n+            this.showModal(new ChangeNameInvokeView({\n+                entity: this.model,\n+                target:this\n+            }));\n+        },\n+        showAddChildModal: function() {\n+            this.showModal(new AddChildInvokeView({\n+                entity: this.model,\n+                target:this\n+            }));\n+        },\n+        showNewPolicyModal: function () {\n+            this.showModal(new NewPolicyView({\n+                entity: this.model,\n+            }));\n+        },\n+        doResetProblems: function() {\n+            this.post(this.model.get('links').sensors+\"/\"+\"service.notUp.indicators\", {});\n+            this.post(this.model.get('links').sensors+\"/\"+\"service.problems\", {});\n+        },\n+        post: function(url, data) {\n+            var self = this;\n+            \n+            $.ajax({\n+                type: \"POST\",\n+                url: url,\n+                data: JSON.stringify(data),\n+                contentType: \"application/json\",\n+                success: function() {\n+                    self.reload();\n+                },\n+                error: function(data) {\n+                    self.showAdvancedTabError(\"Error connecting to Brooklyn server\");\n+\n+                    log(\"ERROR invoking operation\");\n+                    log(data);\n+                }\n+            });\n+        },\n+        \n+        confirmExpunge: function () {\n+            var entity = this.model.get(\"name\");\n+            var title = \"Confirm the expunging of \" + entity;\n+            var q = \"<p>Are you certain you want to expunge this entity?</p>\" +\n+                \"<p>When possible, Brooklyn will delete all of its resources.</p>\" +\n+                \"<p><span class='label label-important'>Important</span> \" +\n+                \"<b>This action is irreversible</b></p>\";\n+            this.unmanageAndOrExpunge(q, title, true);\n+        },\n+        confirmUnmanage: function () {\n+            var entity = this.model.get(\"name\");\n+            var title = \"Confirm the unmanagement of \" + entity;\n+            var q = \"<p>Are you certain you want to unmanage this entity?</p>\" +\n+            \"<p>Its resources will be left running.</p>\" +\n+            \"<p><span class='label label-important'>Important</span> \" +\n+            \"<b>This action is irreversible</b></p>\";\n+            this.unmanageAndOrExpunge(q, title, false);\n+        },\n+        unmanageAndOrExpunge: function (question, title, releaseResources) {\n+            var self = this;\n+            Brooklyn.view.requestConfirmation(question, title).done(function() {\n+                return $.ajax({\n+                    type: \"POST\",\n+                    url: self.model.get(\"links\").expunge + \"?release=\" + releaseResources + \"&timeout=0\",\n+                    contentType: \"application/json\"\n+                }).done(function() {\n+                    self.trigger(\"entity.expunged\");\n+                }).fail(function() {\n+                    // (would just be connection error -- with timeout=0 we get a task even for invalid input)\n+                    self.showAdvancedTabError(\"Error connecting to Brooklyn server\");\n+                    \n+                    log(\"ERROR unmanaging/expunging\");\n+                    log(data);\n+                });\n+            });\n+        },\n+\n+        showAdvancedTabError: function(errorMessage) {\n+            self.$(\"#advanced-tab-error-message\").html(_.escape(errorMessage));\n+            self.$(\"#advanced-tab-error-section\").removeClass(\"hide\");\n+        },\n+        closeAdvancedTabError: function() {\n+            log(\"close\")\n+            self.$(\"#advanced-tab-error-section\").addClass(\"hide\");\n+        },\n+        \n+        beforeClose:function() {\n+            if (this.activeModal)\n+                this.activeModal.close();\n+            this.options.tabView.configView.close();","path":"usage/jsgui/src/main/webapp/assets/js/view/entity-advanced.js","position":171,"original_position":171,"commit_id":"f7ce1a25f1cd8cc07716ef6fe7c6d9e320a7ed8a","original_commit_id":"f7ce1a25f1cd8cc07716ef6fe7c6d9e320a7ed8a","user":{"login":"ahgittin","id":496540,"avatar_url":"https://avatars.githubusercontent.com/u/496540?v=2","gravatar_id":"b2cc5103505bf11a36c99c961929db5b","url":"https://api.github.com/users/ahgittin","html_url":"https://github.com/ahgittin","followers_url":"https://api.github.com/users/ahgittin/followers","following_url":"https://api.github.com/users/ahgittin/following{/other_user}","gists_url":"https://api.github.com/users/ahgittin/gists{/gist_id}","starred_url":"https://api.github.com/users/ahgittin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahgittin/subscriptions","organizations_url":"https://api.github.com/users/ahgittin/orgs","repos_url":"https://api.github.com/users/ahgittin/repos","events_url":"https://api.github.com/users/ahgittin/events{/privacy}","received_events_url":"https://api.github.com/users/ahgittin/received_events","type":"User","site_admin":false},"body":"thx","created_at":"2014-09-09T16:39:33Z","updated_at":"2014-09-09T16:39:33Z","html_url":"https://github.com/apache/incubator-brooklyn/pull/156#discussion_r17312538","pull_request_url":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156","_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/comments/17312538"},"html":{"href":"https://github.com/apache/incubator-brooklyn/pull/156#discussion_r17312538"},"pull_request":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156"}}},"pull_request":{"url":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156","id":20921263,"html_url":"https://github.com/apache/incubator-brooklyn/pull/156","diff_url":"https://github.com/apache/incubator-brooklyn/pull/156.diff","patch_url":"https://github.com/apache/incubator-brooklyn/pull/156.patch","issue_url":"https://api.github.com/repos/apache/incubator-brooklyn/issues/156","number":156,"state":"open","locked":false,"title":"GUI+REST improvements - yaml spec and advanced tab for entities","user":{"login":"ahgittin","id":496540,"avatar_url":"https://avatars.githubusercontent.com/u/496540?v=2","gravatar_id":"b2cc5103505bf11a36c99c961929db5b","url":"https://api.github.com/users/ahgittin","html_url":"https://github.com/ahgittin","followers_url":"https://api.github.com/users/ahgittin/followers","following_url":"https://api.github.com/users/ahgittin/following{/other_user}","gists_url":"https://api.github.com/users/ahgittin/gists{/gist_id}","starred_url":"https://api.github.com/users/ahgittin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahgittin/subscriptions","organizations_url":"https://api.github.com/users/ahgittin/orgs","repos_url":"https://api.github.com/users/ahgittin/repos","events_url":"https://api.github.com/users/ahgittin/events{/privacy}","received_events_url":"https://api.github.com/users/ahgittin/received_events","type":"User","site_admin":false},"body":"This adds some oft-requested functionality to the GUI and REST API:\r\n\r\n* You can add children given a YAML spec\r\n* Problem indicators are included in the summary reason when an entity is on-fire\r\n* You can clear the problem indicators (so enrichers re-populate them if the problem recurs)\r\n* You can see the blueprint YAML on the Summary tab\r\n* You can rename an entity\r\n* The REST API supports setting config and sensors (and policy config set has been fixed)\r\n\r\nIt also restructures the GUI (moving lifecycle, config, and some new things to the \"Advanced\" tab) and improves JSON rendering (using a Brooklyn-specific ObjectMapper).\r\n","created_at":"2014-09-08T22:03:46Z","updated_at":"2014-09-09T16:39:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cf5ff6beca6b87cce2787c05ec7b1449c31a2123","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156/commits","review_comments_url":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156/comments","review_comment_url":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/comments/{number}","comments_url":"https://api.github.com/repos/apache/incubator-brooklyn/issues/156/comments","statuses_url":"https://api.github.com/repos/apache/incubator-brooklyn/statuses/f7ce1a25f1cd8cc07716ef6fe7c6d9e320a7ed8a","head":{"label":"ahgittin:js-lifecycle-and-server","ref":"js-lifecycle-and-server","sha":"f7ce1a25f1cd8cc07716ef6fe7c6d9e320a7ed8a","user":{"login":"ahgittin","id":496540,"avatar_url":"https://avatars.githubusercontent.com/u/496540?v=2","gravatar_id":"b2cc5103505bf11a36c99c961929db5b","url":"https://api.github.com/users/ahgittin","html_url":"https://github.com/ahgittin","followers_url":"https://api.github.com/users/ahgittin/followers","following_url":"https://api.github.com/users/ahgittin/following{/other_user}","gists_url":"https://api.github.com/users/ahgittin/gists{/gist_id}","starred_url":"https://api.github.com/users/ahgittin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahgittin/subscriptions","organizations_url":"https://api.github.com/users/ahgittin/orgs","repos_url":"https://api.github.com/users/ahgittin/repos","events_url":"https://api.github.com/users/ahgittin/events{/privacy}","received_events_url":"https://api.github.com/users/ahgittin/received_events","type":"User","site_admin":false},"repo":{"id":21164564,"name":"incubator-brooklyn","full_name":"ahgittin/incubator-brooklyn","owner":{"login":"ahgittin","id":496540,"avatar_url":"https://avatars.githubusercontent.com/u/496540?v=2","gravatar_id":"b2cc5103505bf11a36c99c961929db5b","url":"https://api.github.com/users/ahgittin","html_url":"https://github.com/ahgittin","followers_url":"https://api.github.com/users/ahgittin/followers","following_url":"https://api.github.com/users/ahgittin/following{/other_user}","gists_url":"https://api.github.com/users/ahgittin/gists{/gist_id}","starred_url":"https://api.github.com/users/ahgittin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahgittin/subscriptions","organizations_url":"https://api.github.com/users/ahgittin/orgs","repos_url":"https://api.github.com/users/ahgittin/repos","events_url":"https://api.github.com/users/ahgittin/events{/privacy}","received_events_url":"https://api.github.com/users/ahgittin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ahgittin/incubator-brooklyn","description":"Mirror of Apache Brooklyn","fork":true,"url":"https://api.github.com/repos/ahgittin/incubator-brooklyn","forks_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/forks","keys_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/teams","hooks_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/hooks","issue_events_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/issues/events{/number}","events_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/events","assignees_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/assignees{/user}","branches_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/branches{/branch}","tags_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/tags","blobs_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/git/refs{/sha}","trees_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/statuses/{sha}","languages_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/languages","stargazers_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/stargazers","contributors_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/contributors","subscribers_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/subscribers","subscription_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/subscription","commits_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/commits{/sha}","git_commits_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/git/commits{/sha}","comments_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/comments{/number}","issue_comment_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/issues/comments/{number}","contents_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/contents/{+path}","compare_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/merges","archive_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/downloads","issues_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/issues{/number}","pulls_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/pulls{/number}","milestones_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/milestones{/number}","notifications_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/labels{/name}","releases_url":"https://api.github.com/repos/ahgittin/incubator-brooklyn/releases{/id}","created_at":"2014-06-24T12:59:32Z","updated_at":"2014-06-26T11:39:42Z","pushed_at":"2014-09-09T11:24:23Z","git_url":"git://github.com/ahgittin/incubator-brooklyn.git","ssh_url":"git@github.com:ahgittin/incubator-brooklyn.git","clone_url":"https://github.com/ahgittin/incubator-brooklyn.git","svn_url":"https://github.com/ahgittin/incubator-brooklyn","homepage":null,"size":227183,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apache:master","ref":"master","sha":"e8d8a723b1dfb8ec8a5e96562a34197701fb358b","user":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=2","gravatar_id":"a676c0bf448fcd49f588249ead719b4c","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":19368221,"name":"incubator-brooklyn","full_name":"apache/incubator-brooklyn","owner":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=2","gravatar_id":"a676c0bf448fcd49f588249ead719b4c","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apache/incubator-brooklyn","description":"Mirror of Apache Brooklyn","fork":false,"url":"https://api.github.com/repos/apache/incubator-brooklyn","forks_url":"https://api.github.com/repos/apache/incubator-brooklyn/forks","keys_url":"https://api.github.com/repos/apache/incubator-brooklyn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/incubator-brooklyn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/incubator-brooklyn/teams","hooks_url":"https://api.github.com/repos/apache/incubator-brooklyn/hooks","issue_events_url":"https://api.github.com/repos/apache/incubator-brooklyn/issues/events{/number}","events_url":"https://api.github.com/repos/apache/incubator-brooklyn/events","assignees_url":"https://api.github.com/repos/apache/incubator-brooklyn/assignees{/user}","branches_url":"https://api.github.com/repos/apache/incubator-brooklyn/branches{/branch}","tags_url":"https://api.github.com/repos/apache/incubator-brooklyn/tags","blobs_url":"https://api.github.com/repos/apache/incubator-brooklyn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/incubator-brooklyn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/incubator-brooklyn/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/incubator-brooklyn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/incubator-brooklyn/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/incubator-brooklyn/languages","stargazers_url":"https://api.github.com/repos/apache/incubator-brooklyn/stargazers","contributors_url":"https://api.github.com/repos/apache/incubator-brooklyn/contributors","subscribers_url":"https://api.github.com/repos/apache/incubator-brooklyn/subscribers","subscription_url":"https://api.github.com/repos/apache/incubator-brooklyn/subscription","commits_url":"https://api.github.com/repos/apache/incubator-brooklyn/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/incubator-brooklyn/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/incubator-brooklyn/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/incubator-brooklyn/issues/comments/{number}","contents_url":"https://api.github.com/repos/apache/incubator-brooklyn/contents/{+path}","compare_url":"https://api.github.com/repos/apache/incubator-brooklyn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/incubator-brooklyn/merges","archive_url":"https://api.github.com/repos/apache/incubator-brooklyn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/incubator-brooklyn/downloads","issues_url":"https://api.github.com/repos/apache/incubator-brooklyn/issues{/number}","pulls_url":"https://api.github.com/repos/apache/incubator-brooklyn/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/incubator-brooklyn/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/incubator-brooklyn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/incubator-brooklyn/labels{/name}","releases_url":"https://api.github.com/repos/apache/incubator-brooklyn/releases{/id}","created_at":"2014-05-02T07:00:07Z","updated_at":"2014-09-02T17:09:56Z","pushed_at":"2014-09-09T10:22:05Z","git_url":"git://github.com/apache/incubator-brooklyn.git","ssh_url":"git@github.com:apache/incubator-brooklyn.git","clone_url":"https://github.com/apache/incubator-brooklyn.git","svn_url":"https://github.com/apache/incubator-brooklyn","homepage":null,"size":233748,"stargazers_count":14,"watchers_count":14,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":24,"mirror_url":"git://git.apache.org/incubator-brooklyn.git","open_issues_count":8,"forks":24,"open_issues":8,"watchers":14,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156"},"html":{"href":"https://github.com/apache/incubator-brooklyn/pull/156"},"issue":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/issues/156"},"comments":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/issues/156/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/pulls/156/commits"},"statuses":{"href":"https://api.github.com/repos/apache/incubator-brooklyn/statuses/f7ce1a25f1cd8cc07716ef6fe7c6d9e320a7ed8a"}}}}