{"action":"created","comment":{"url":"https://api.github.com/repos/apache/cloudstack/pulls/comments/62786345","id":62786345,"diff_hunk":"@@ -0,0 +1,165 @@\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+\"\"\" Test cases for checking quagga API\n+\"\"\"\n+\n+# Import Local Modules\n+import marvin\n+from marvin.cloudstackTestCase import *\n+from marvin.cloudstackAPI import *\n+from marvin.lib.utils import *\n+from marvin.lib.base import *\n+from marvin.lib.common import *\n+from marvin.lib.utils import (random_gen)\n+from nose.plugins.attrib import attr\n+\n+# Import System modules\n+import time\n+\n+class TestQuagga(cloudstackTestCase):\n+\n+    @classmethod\n+    def setUpClass(cls):\n+        # Create Account\n+        testClient = super(TestQuagga, cls).getClsTestClient()\n+        cls.apiclient = testClient.getApiClient()\n+        cls.services = testClient.getParsedTestDataConfig()\n+\n+        # Get Zone, Domain\n+        cls.domain = get_domain(cls.apiclient)\n+        cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests())\n+\n+        return\n+\n+    def setUp(self):\n+        self.apiclient = self.testClient.getApiClient()\n+        self.hypervisor = self.testClient.getHypervisorInfo()\n+        self.dbclient = self.testClient.getDbConnection()\n+        self.services = self.testClient.getParsedTestDataConfig()\n+        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())\n+        self.pod = get_pod(self.apiclient, self.zone.id)\n+        self.cleanup = []\n+        return\n+\n+    def tearDown(self):\n+        try:\n+            # Clean up, terminate the created templates\n+            cleanup_resources(self.apiclient, self.cleanup)\n+        except Exception as e:\n+            raise Exception(\"Warning: Exception during cleanup : %s\" % e)\n+        return\n+\n+    # Check vpcQuaggaConfigCmd positive test case\n+    #VPCQuaggaConfigUpdateCmd [zoneid=1, quaggaProtocol=null, ospfArea=null, quaggaHelloInterval=null, quaggaDeadInterval=null, quaggaRetransmitInterval=null, quaggaTransitDelay=null, quaggaAuthentication=null, quaggaPassword=junk, ospfSuperCIDR=null, quaggaEnabled=null]\n+    @attr(tags=[\"smoke\", \"advanced\"], required_hardware=\"false\")\n+    def test_01_quaggaConfig(self):\n+        \n+        cmd = vpcQuaggaConfig.vpcQuaggaConfigCmd()\n+        cmd.zoneid = self.zone.id\n+        response = self.apiclient.vpcQuaggaConfig(cmd)\n+        self.debug(\"Response quaggaEnabled: %s\" % response.quaggaEnabled)\n+        self.debug(\"Response quaggaPassword: %s\" % response.quaggaPassword)\n+        self.debug(\"Response ospfSuperCIDR: %s\" % response.ospfSuperCIDR)\n+        \n+        \n+        cmd = vpcQuaggaConfigUpdate.vpcQuaggaConfigUpdateCmd()\n+        cmd.zoneid = self.zone.id\n+        cmd.ospfSuperCIDR = \"200.100.0.0/18,216.100.0.0/20\"\n+        cmd.quaggaEnabled = \"true\"\n+        cmd.quaggaPassword = \"6P33lsadEbmiJ7ZN7gK8vylOY2dTza3rAuY8UFboH7I=:Xb1G4VhzBkSXmTa8vDqExQQo8PiIUUSNtpxmdOkX1z8=\"\n+        response = self.apiclient.vpcQuaggaConfigUpdate(cmd)\n+        self.debug(\"Response quaggaEnabled: %s\" % response.quaggaEnabled)\n+        self.debug(\"Response quaggaPassword: %s\" % response.quaggaPassword)\n+        self.debug(\"Response ospfSuperCIDR: %s\" % response.ospfSuperCIDR)\n+        \n+        \n+        cmd = vpcQuaggaConfig.vpcQuaggaConfigCmd()\n+        cmd.zoneid = self.zone.id\n+        response = self.apiclient.vpcQuaggaConfig(cmd)\n+        self.debug(\"Response quaggaEnabled: %s\" % response.quaggaEnabled)\n+        self.debug(\"Response quaggaPassword: %s\" % response.quaggaPassword)\n+        self.debug(\"Response ospfSuperCIDR: %s\" % response.ospfSuperCIDR)\n+        \n+        cmd.zoneid = self.zone.id\n+        \n+        \n+        self.assertEqual(\n+                         response.quaggaEnabled, \"true\"\n+                         )\n+        \n+        \n+        self.assertEqual(\n+                         response.quaggaPassword, \"6P33lsadEbmiJ7ZN7gK8vylOY2dTza3rAuY8UFboH7I=:Xb1G4VhzBkSXmTa8vDqExQQo8PiIUUSNtpxmdOkX1z8=\"\n+                         )\n+        \n+        self.assertEqual(\n+                         response.ospfSuperCIDR, \"200.100.0.0/18,216.100.0.0/20\"\n+                         )\n+        \n+        return\n+\n+        \n+    # Check vpcQuaggaConfigCmd positive test case\n+    #VPCQuaggaConfigUpdateCmd [zoneid=1, quaggaProtocol=null, ospfArea=null, quaggaHelloInterval=null, quaggaDeadInterval=null, quaggaRetransmitInterval=null, quaggaTransitDelay=null, quaggaAuthentication=null, quaggaPassword=junk, ospfSuperCIDR=null, quaggaEnabled=null]\n+    @attr(tags=[\"smoke\", \"advanced\"], required_hardware=\"false\")\n+    def test_02_quaggaConfig(self):\n+        \n+        cmd = vpcQuaggaConfig.vpcQuaggaConfigCmd()\n+        cmd.zoneid = self.zone.id\n+        response = self.apiclient.vpcQuaggaConfig(cmd)\n+        self.debug(\"Response quaggaEnabled: %s\" % response.quaggaEnabled)\n+        self.debug(\"Response quaggaPassword: %s\" % response.quaggaPassword)\n+        self.debug(\"Response ospfSuperCIDR: %s\" % response.ospfSuperCIDR)\n+        \n+        \n+        cmd = vpcQuaggaConfigUpdate.vpcQuaggaConfigUpdateCmd()\n+        cmd.zoneid = self.zone.id\n+        cmd.ospfSuperCIDR = \"200.100.0.0/18,216.100.0.0/20\"\n+        cmd.quaggaEnabled = \"false\"\n+        cmd.quaggaPassword = \"6P33lsadEbmiJ7ZN7gK8vylOY2dTza3rAuY8UFboH7I=:Xb1G4VhzBkSXmTa8vDqExQQo8PiIUUSNtpxmdOkX1z8=\"\n+        response = self.apiclient.vpcQuaggaConfigUpdate(cmd)\n+        self.debug(\"Response quaggaEnabled: %s\" % response.quaggaEnabled)\n+        self.debug(\"Response quaggaPassword: %s\" % response.quaggaPassword)\n+        self.debug(\"Response ospfSuperCIDR: %s\" % response.ospfSuperCIDR)\n+        \n+        \n+        cmd = vpcQuaggaConfig.vpcQuaggaConfigCmd()\n+        cmd.zoneid = self.zone.id\n+        response = self.apiclient.vpcQuaggaConfig(cmd)\n+        self.debug(\"Response quaggaEnabled: %s\" % response.quaggaEnabled)\n+        self.debug(\"Response quaggaPassword: %s\" % response.quaggaPassword)\n+        self.debug(\"Response ospfSuperCIDR: %s\" % response.ospfSuperCIDR)","path":"test/integration/smoke/test_ospf_zone_config.py","position":76,"original_position":145,"commit_id":"6bc8ab7e54f24bd3dedc2e2737e0732326440a3a","original_commit_id":"6bc8ab7e54f24bd3dedc2e2737e0732326440a3a","user":{"login":"jburwell","id":285646,"avatar_url":"https://avatars.githubusercontent.com/u/285646?v=3","gravatar_id":"","url":"https://api.github.com/users/jburwell","html_url":"https://github.com/jburwell","followers_url":"https://api.github.com/users/jburwell/followers","following_url":"https://api.github.com/users/jburwell/following{/other_user}","gists_url":"https://api.github.com/users/jburwell/gists{/gist_id}","starred_url":"https://api.github.com/users/jburwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jburwell/subscriptions","organizations_url":"https://api.github.com/users/jburwell/orgs","repos_url":"https://api.github.com/users/jburwell/repos","events_url":"https://api.github.com/users/jburwell/events{/privacy}","received_events_url":"https://api.github.com/users/jburwell/received_events","type":"User","site_admin":false},"body":"Lines 119-145 and lines 71-95 appear similar.  Consider extracting to a private method.","created_at":"2016-05-11T03:05:01Z","updated_at":"2016-05-11T03:05:01Z","html_url":"https://github.com/apache/cloudstack/pull/1371#discussion_r62786345","pull_request_url":"https://api.github.com/repos/apache/cloudstack/pulls/1371","_links":{"self":{"href":"https://api.github.com/repos/apache/cloudstack/pulls/comments/62786345"},"html":{"href":"https://github.com/apache/cloudstack/pull/1371#discussion_r62786345"},"pull_request":{"href":"https://api.github.com/repos/apache/cloudstack/pulls/1371"}}},"pull_request":{"url":"https://api.github.com/repos/apache/cloudstack/pulls/1371","id":57350887,"html_url":"https://github.com/apache/cloudstack/pull/1371","diff_url":"https://github.com/apache/cloudstack/pull/1371.diff","patch_url":"https://github.com/apache/cloudstack/pull/1371.patch","issue_url":"https://api.github.com/repos/apache/cloudstack/issues/1371","number":1371,"state":"open","locked":false,"title":"OSPF: adding dynamically routing capability to VPC ","user":{"login":"agneya2001","id":6416480,"avatar_url":"https://avatars.githubusercontent.com/u/6416480?v=3","gravatar_id":"","url":"https://api.github.com/users/agneya2001","html_url":"https://github.com/agneya2001","followers_url":"https://api.github.com/users/agneya2001/followers","following_url":"https://api.github.com/users/agneya2001/following{/other_user}","gists_url":"https://api.github.com/users/agneya2001/gists{/gist_id}","starred_url":"https://api.github.com/users/agneya2001/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agneya2001/subscriptions","organizations_url":"https://api.github.com/users/agneya2001/orgs","repos_url":"https://api.github.com/users/agneya2001/repos","events_url":"https://api.github.com/users/agneya2001/events{/privacy}","received_events_url":"https://api.github.com/users/agneya2001/received_events","type":"User","site_admin":false},"body":"\r\n        . Added zone level quagga/ospf config API and UI as addtional tab on zone\r\n        . Added service offering with ospf\r\n        . Added service offering for the tier guest network for VPC\r\n        . Modified system vm template so that quagga is pre-installed\r\n        . Added various configuration files that are required by Quagga\r\n        . Added marvin tests for new APIs and unit test\r\n        . Send quagga config from the server if VPC and tier are dynamically\r\n        routed\r\n        . Configure quagga when a VM of the tier is created/destroyed\r\n        . Added necessary scritps on the vpc router to enable and configure\r\n        quagga and iptable rules\r\n        . Multiple Cidr management and netmask based cidr allocation\r\n        . Added unit tests for cidr management\r\n        . New dialog for create dynamic VPC and netmask as a field\r\n        . Marvin tests to test dynmaic vpc service offering\r\n","created_at":"2016-01-27T12:07:01Z","updated_at":"2016-05-11T03:05:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2bf63f3a7f03eea0d887eab6663f1276f9bacc0f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/apache/cloudstack/pulls/1371/commits","review_comments_url":"https://api.github.com/repos/apache/cloudstack/pulls/1371/comments","review_comment_url":"https://api.github.com/repos/apache/cloudstack/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/cloudstack/issues/1371/comments","statuses_url":"https://api.github.com/repos/apache/cloudstack/statuses/6bc8ab7e54f24bd3dedc2e2737e0732326440a3a","head":{"label":"shapeblue:master-quagga","ref":"master-quagga","sha":"6bc8ab7e54f24bd3dedc2e2737e0732326440a3a","user":{"login":"shapeblue","id":6001764,"avatar_url":"https://avatars.githubusercontent.com/u/6001764?v=3","gravatar_id":"","url":"https://api.github.com/users/shapeblue","html_url":"https://github.com/shapeblue","followers_url":"https://api.github.com/users/shapeblue/followers","following_url":"https://api.github.com/users/shapeblue/following{/other_user}","gists_url":"https://api.github.com/users/shapeblue/gists{/gist_id}","starred_url":"https://api.github.com/users/shapeblue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shapeblue/subscriptions","organizations_url":"https://api.github.com/users/shapeblue/orgs","repos_url":"https://api.github.com/users/shapeblue/repos","events_url":"https://api.github.com/users/shapeblue/events{/privacy}","received_events_url":"https://api.github.com/users/shapeblue/received_events","type":"Organization","site_admin":false},"repo":{"id":35481491,"name":"cloudstack","full_name":"shapeblue/cloudstack","owner":{"login":"shapeblue","id":6001764,"avatar_url":"https://avatars.githubusercontent.com/u/6001764?v=3","gravatar_id":"","url":"https://api.github.com/users/shapeblue","html_url":"https://github.com/shapeblue","followers_url":"https://api.github.com/users/shapeblue/followers","following_url":"https://api.github.com/users/shapeblue/following{/other_user}","gists_url":"https://api.github.com/users/shapeblue/gists{/gist_id}","starred_url":"https://api.github.com/users/shapeblue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shapeblue/subscriptions","organizations_url":"https://api.github.com/users/shapeblue/orgs","repos_url":"https://api.github.com/users/shapeblue/repos","events_url":"https://api.github.com/users/shapeblue/events{/privacy}","received_events_url":"https://api.github.com/users/shapeblue/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/shapeblue/cloudstack","description":"The upstream repository is at http://github.com/apache/cloudstack. This is ShapeBlue's support/patch branches and Apache CloudStack™ backup","fork":true,"url":"https://api.github.com/repos/shapeblue/cloudstack","forks_url":"https://api.github.com/repos/shapeblue/cloudstack/forks","keys_url":"https://api.github.com/repos/shapeblue/cloudstack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shapeblue/cloudstack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shapeblue/cloudstack/teams","hooks_url":"https://api.github.com/repos/shapeblue/cloudstack/hooks","issue_events_url":"https://api.github.com/repos/shapeblue/cloudstack/issues/events{/number}","events_url":"https://api.github.com/repos/shapeblue/cloudstack/events","assignees_url":"https://api.github.com/repos/shapeblue/cloudstack/assignees{/user}","branches_url":"https://api.github.com/repos/shapeblue/cloudstack/branches{/branch}","tags_url":"https://api.github.com/repos/shapeblue/cloudstack/tags","blobs_url":"https://api.github.com/repos/shapeblue/cloudstack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shapeblue/cloudstack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shapeblue/cloudstack/git/refs{/sha}","trees_url":"https://api.github.com/repos/shapeblue/cloudstack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shapeblue/cloudstack/statuses/{sha}","languages_url":"https://api.github.com/repos/shapeblue/cloudstack/languages","stargazers_url":"https://api.github.com/repos/shapeblue/cloudstack/stargazers","contributors_url":"https://api.github.com/repos/shapeblue/cloudstack/contributors","subscribers_url":"https://api.github.com/repos/shapeblue/cloudstack/subscribers","subscription_url":"https://api.github.com/repos/shapeblue/cloudstack/subscription","commits_url":"https://api.github.com/repos/shapeblue/cloudstack/commits{/sha}","git_commits_url":"https://api.github.com/repos/shapeblue/cloudstack/git/commits{/sha}","comments_url":"https://api.github.com/repos/shapeblue/cloudstack/comments{/number}","issue_comment_url":"https://api.github.com/repos/shapeblue/cloudstack/issues/comments{/number}","contents_url":"https://api.github.com/repos/shapeblue/cloudstack/contents/{+path}","compare_url":"https://api.github.com/repos/shapeblue/cloudstack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shapeblue/cloudstack/merges","archive_url":"https://api.github.com/repos/shapeblue/cloudstack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shapeblue/cloudstack/downloads","issues_url":"https://api.github.com/repos/shapeblue/cloudstack/issues{/number}","pulls_url":"https://api.github.com/repos/shapeblue/cloudstack/pulls{/number}","milestones_url":"https://api.github.com/repos/shapeblue/cloudstack/milestones{/number}","notifications_url":"https://api.github.com/repos/shapeblue/cloudstack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shapeblue/cloudstack/labels{/name}","releases_url":"https://api.github.com/repos/shapeblue/cloudstack/releases{/id}","deployments_url":"https://api.github.com/repos/shapeblue/cloudstack/deployments","created_at":"2015-05-12T10:22:21Z","updated_at":"2016-04-19T19:13:22Z","pushed_at":"2016-05-10T08:36:48Z","git_url":"git://github.com/shapeblue/cloudstack.git","ssh_url":"git@github.com:shapeblue/cloudstack.git","clone_url":"https://github.com/shapeblue/cloudstack.git","svn_url":"https://github.com/shapeblue/cloudstack","homepage":"http://shapeblue.com/packages","size":501312,"stargazers_count":2,"watchers_count":2,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":2,"default_branch":"master"}},"base":{"label":"apache:master","ref":"master","sha":"9f970f28b18534dffe33196ead60ea861f501fa9","user":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","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":9759448,"name":"cloudstack","full_name":"apache/cloudstack","owner":{"login":"apache","id":47359,"avatar_url":"https://avatars.githubusercontent.com/u/47359?v=3","gravatar_id":"","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/cloudstack","description":"Mirror of Apache Cloudstack","fork":false,"url":"https://api.github.com/repos/apache/cloudstack","forks_url":"https://api.github.com/repos/apache/cloudstack/forks","keys_url":"https://api.github.com/repos/apache/cloudstack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/cloudstack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/cloudstack/teams","hooks_url":"https://api.github.com/repos/apache/cloudstack/hooks","issue_events_url":"https://api.github.com/repos/apache/cloudstack/issues/events{/number}","events_url":"https://api.github.com/repos/apache/cloudstack/events","assignees_url":"https://api.github.com/repos/apache/cloudstack/assignees{/user}","branches_url":"https://api.github.com/repos/apache/cloudstack/branches{/branch}","tags_url":"https://api.github.com/repos/apache/cloudstack/tags","blobs_url":"https://api.github.com/repos/apache/cloudstack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/cloudstack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/cloudstack/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/cloudstack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/cloudstack/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/cloudstack/languages","stargazers_url":"https://api.github.com/repos/apache/cloudstack/stargazers","contributors_url":"https://api.github.com/repos/apache/cloudstack/contributors","subscribers_url":"https://api.github.com/repos/apache/cloudstack/subscribers","subscription_url":"https://api.github.com/repos/apache/cloudstack/subscription","commits_url":"https://api.github.com/repos/apache/cloudstack/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/cloudstack/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/cloudstack/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/cloudstack/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/cloudstack/contents/{+path}","compare_url":"https://api.github.com/repos/apache/cloudstack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/cloudstack/merges","archive_url":"https://api.github.com/repos/apache/cloudstack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/cloudstack/downloads","issues_url":"https://api.github.com/repos/apache/cloudstack/issues{/number}","pulls_url":"https://api.github.com/repos/apache/cloudstack/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/cloudstack/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/cloudstack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/cloudstack/labels{/name}","releases_url":"https://api.github.com/repos/apache/cloudstack/releases{/id}","deployments_url":"https://api.github.com/repos/apache/cloudstack/deployments","created_at":"2013-04-29T22:27:12Z","updated_at":"2016-05-10T07:33:39Z","pushed_at":"2016-05-10T20:41:02Z","git_url":"git://github.com/apache/cloudstack.git","ssh_url":"git@github.com:apache/cloudstack.git","clone_url":"https://github.com/apache/cloudstack.git","svn_url":"https://github.com/apache/cloudstack","homepage":null,"size":553769,"stargazers_count":370,"watchers_count":370,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":480,"mirror_url":"git://git.apache.org/cloudstack.git","open_issues_count":181,"forks":480,"open_issues":181,"watchers":370,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/cloudstack/pulls/1371"},"html":{"href":"https://github.com/apache/cloudstack/pull/1371"},"issue":{"href":"https://api.github.com/repos/apache/cloudstack/issues/1371"},"comments":{"href":"https://api.github.com/repos/apache/cloudstack/issues/1371/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/cloudstack/pulls/1371/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/cloudstack/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/cloudstack/pulls/1371/commits"},"statuses":{"href":"https://api.github.com/repos/apache/cloudstack/statuses/6bc8ab7e54f24bd3dedc2e2737e0732326440a3a"}}}}