{"action":"created","comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments/93964974","pull_request_review_id":14495954,"id":93964974,"diff_hunk":"@@ -0,0 +1,160 @@\n+# Copyright 2017 PerfKitBenchmarker 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+\"\"\"Module containing class for GCP's dataproc service.\n+\n+Clusters can be created, have jobs submitted to them and deleted. See details\n+at https://cloud.google.com/dataproc/\n+\"\"\"\n+\n+import datetime\n+import json\n+import logging\n+\n+from perfkitbenchmarker import flags\n+from perfkitbenchmarker import providers\n+from perfkitbenchmarker import dpb_service\n+from perfkitbenchmarker.providers.gcp import util\n+\n+\n+FLAGS = flags.FLAGS\n+\n+GCP_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'\n+\n+SPARK_SAMPLE_LOCATION = ('file:///usr/lib/spark/examples/jars/'\n+                         'spark-examples.jar')\n+\n+\n+class GcpDpbDataproc(dpb_service.BaseDpbService):\n+  \"\"\"Object representing a GCP Dataproc cluster.\n+\n+  Attributes:\n+    cluster_id: ID of the cluster.\n+    project: ID of the project.\n+  \"\"\"\n+\n+  CLOUD = providers.GCP\n+  SERVICE_TYPE = 'dataproc'\n+\n+\n+  def __init__(self, dpb_service_spec):\n+    super(GcpDpbDataproc, self).__init__(dpb_service_spec)\n+    self.project = None\n+\n+  @staticmethod\n+  def _GetStats(stdout):\n+    results = json.loads(stdout)\n+    stats = {}\n+    done_time = datetime.datetime.strptime(\n+        results['status']['stateStartTime'], GCP_TIME_FORMAT)\n+    pending_time = None\n+    start_time = None\n+    for state in results['statusHistory']:\n+      if state['state'] == 'PENDING':\n+        pending_time = datetime.datetime.strptime(state['stateStartTime'],\n+                                                  GCP_TIME_FORMAT)\n+      elif state['state'] == 'RUNNING':\n+        start_time = datetime.datetime.strptime(state['stateStartTime'],\n+                                                GCP_TIME_FORMAT)\n+\n+    if done_time and start_time:\n+      stats[dpb_service.RUNTIME] = (done_time - start_time).total_seconds()\n+    if start_time and pending_time:\n+      stats[dpb_service.WAITING] = (\n+          (start_time - pending_time).total_seconds())\n+    return stats\n+\n+  def _Create(self):\n+    \"\"\"Creates the cluster.\"\"\"\n+\n+    if self.cluster_id is None:\n+      self.cluster_id = 'pkb-' + FLAGS.run_uri\n+    cmd = util.GcloudCommand(self, 'dataproc', 'clusters', 'create',\n+                             self.cluster_id)\n+    if self.project is not None:\n+      cmd.flags['project'] = self.project\n+\n+    # The number of worker machines in the cluster\n+    cmd.flags['num-workers'] = self.spec.worker_count\n+\n+    # Initialize applications on the dataproc cluster\n+    if self.spec.applications:\n+      logging.info('Include the requested applications')\n+\n+    for role in ['worker', 'master']:\n+      # Set machine type\n+      if self.spec.worker_group.vm_spec.machine_type:\n+        self.add_to_cmd(cmd, '{0}-machine-type'.format(role),\n+                        self.spec.worker_group.vm_spec.machine_type)\n+\n+      # Set boot_disk_size\n+      if self.spec.worker_group.vm_spec.boot_disk_size:\n+        self.add_to_cmd(cmd, '{0}-boot-disk-size'.format(role),\n+                        self.spec.worker_group.vm_spec.boot_disk_size)\n+\n+      # Set ssd count\n+      if self.spec.worker_group.vm_spec.num_local_ssds:\n+        self.add_to_cmd(cmd, 'num-{0}-local-ssds'.format(role),\n+                        self.spec.worker_group.vm_spec.num_local_ssds)\n+    # TODO(saksena): Retrieve the cluster create time and hold in a var\n+    cmd.Issue()\n+\n+  def _Delete(self):\n+    \"\"\"Deletes the cluster.\"\"\"\n+    cmd = util.GcloudCommand(self, 'dataproc', 'clusters', 'delete',\n+                             self.cluster_id)\n+    cmd.Issue()\n+\n+  def _Exists(self):\n+    \"\"\"Check to see whether the cluster exists.\"\"\"\n+    cmd = util.GcloudCommand(self, 'dataproc', 'clusters', 'describe',\n+                             self.cluster_id)\n+    _, _, retcode = cmd.Issue()\n+    return retcode == 0\n+\n+\n+  def submit_job(self, jarfile, classname, job_poll_interval=None,\n+                 job_arguments=None, job_stdout_file=None,\n+                 job_type=None):\n+    cmd = util.GcloudCommand(self, 'dataproc', 'jobs', 'submit', job_type)\n+    cmd.flags['cluster'] = self.cluster_id\n+\n+    if classname:\n+      cmd.flags['jars'] = jarfile\n+      cmd.flags['class'] = classname\n+    else:\n+      cmd.flags['jar'] = jarfile\n+\n+    # Dataproc gives as stdout an object describing job execution.\n+    # Its stderr contains a mix of the stderr of the job, and the\n+    # stdout of the job.  We set the driver log level to FATAL\n+    # to suppress those messages, and we can then separate, hopefully\n+    # the job standard out from the log messages.\n+    cmd.flags['driver-log-levels'] = 'root=FATAL'\n+\n+    if job_arguments:\n+      cmd.additional_flags = ['--'] + job_arguments\n+\n+    stdout, stderr, retcode = cmd.Issue(timeout=None)\n+    if retcode != 0:\n+      return {dpb_service.SUCCESS: False}\n+\n+    stats = self._GetStats(stdout)\n+    return stats\n+\n+  def SetClusterProperty(self):\n+    pass\n+\n+  def add_to_cmd(self, cmd, cmd_property, cmd_value):","path":"perfkitbenchmarker/providers/gcp/gcp_dpb_dataproc.py","position":157,"original_position":158,"commit_id":"18c57be216d2921155b364750f9540b157e2c792","original_commit_id":"08a7d53ec0c9fa1d25a5450f6cb52acb3574848b","user":{"login":"asaksena","id":23409170,"avatar_url":"https://avatars.githubusercontent.com/u/23409170?v=3","gravatar_id":"","url":"https://api.github.com/users/asaksena","html_url":"https://github.com/asaksena","followers_url":"https://api.github.com/users/asaksena/followers","following_url":"https://api.github.com/users/asaksena/following{/other_user}","gists_url":"https://api.github.com/users/asaksena/gists{/gist_id}","starred_url":"https://api.github.com/users/asaksena/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asaksena/subscriptions","organizations_url":"https://api.github.com/users/asaksena/orgs","repos_url":"https://api.github.com/users/asaksena/repos","events_url":"https://api.github.com/users/asaksena/events{/privacy}","received_events_url":"https://api.github.com/users/asaksena/received_events","type":"User","site_admin":false},"body":"Done","created_at":"2016-12-27T19:52:53Z","updated_at":"2016-12-27T19:52:53Z","html_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1253#discussion_r93964974","pull_request_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253","_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments/93964974"},"html":{"href":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1253#discussion_r93964974"},"pull_request":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253"}}},"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253","id":98612756,"html_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1253","diff_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1253.diff","patch_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1253.patch","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/1253","number":1253,"state":"open","locked":false,"title":"Dpb service","user":{"login":"asaksena","id":23409170,"avatar_url":"https://avatars.githubusercontent.com/u/23409170?v=3","gravatar_id":"","url":"https://api.github.com/users/asaksena","html_url":"https://github.com/asaksena","followers_url":"https://api.github.com/users/asaksena/followers","following_url":"https://api.github.com/users/asaksena/following{/other_user}","gists_url":"https://api.github.com/users/asaksena/gists{/gist_id}","starred_url":"https://api.github.com/users/asaksena/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asaksena/subscriptions","organizations_url":"https://api.github.com/users/asaksena/orgs","repos_url":"https://api.github.com/users/asaksena/repos","events_url":"https://api.github.com/users/asaksena/events{/privacy}","received_events_url":"https://api.github.com/users/asaksena/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-12-19T18:08:56Z","updated_at":"2016-12-27T19:52:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4df61d6bfa939b17c9b97675d8c21806681e05e9","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253/commits","review_comments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253/comments","review_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/1253/comments","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/statuses/18c57be216d2921155b364750f9540b157e2c792","head":{"label":"GoogleCloudPlatform:dpb_service","ref":"dpb_service","sha":"18c57be216d2921155b364750f9540b157e2c792","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":21950910,"name":"PerfKitBenchmarker","full_name":"GoogleCloudPlatform/PerfKitBenchmarker","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/PerfKitBenchmarker","description":"Perfkit Benchmarker contains set of benchmarks to measure and compare cloud offerings. The benchmarks use defaults to reflect what most users will see. PerfKit Benchmarker is licensed under the Apache 2 license terms. Please make sure to read, understand and agree to the terms of the LICENSE and CONTRIBUTING files before proceeding.","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/releases{/id}","deployments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/deployments","created_at":"2014-07-17T17:23:26Z","updated_at":"2016-12-23T14:11:53Z","pushed_at":"2016-12-22T23:04:49Z","git_url":"git://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git","ssh_url":"git@github.com:GoogleCloudPlatform/PerfKitBenchmarker.git","clone_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git","svn_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker","homepage":"","size":7960,"stargazers_count":741,"watchers_count":741,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":185,"mirror_url":null,"open_issues_count":156,"forks":185,"open_issues":156,"watchers":741,"default_branch":"master"}},"base":{"label":"GoogleCloudPlatform:master","ref":"master","sha":"117fd560fbc522432687cbb4dcce0836abcf5af9","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":21950910,"name":"PerfKitBenchmarker","full_name":"GoogleCloudPlatform/PerfKitBenchmarker","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/PerfKitBenchmarker","description":"Perfkit Benchmarker contains set of benchmarks to measure and compare cloud offerings. The benchmarks use defaults to reflect what most users will see. PerfKit Benchmarker is licensed under the Apache 2 license terms. Please make sure to read, understand and agree to the terms of the LICENSE and CONTRIBUTING files before proceeding.","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/releases{/id}","deployments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/deployments","created_at":"2014-07-17T17:23:26Z","updated_at":"2016-12-23T14:11:53Z","pushed_at":"2016-12-22T23:04:49Z","git_url":"git://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git","ssh_url":"git@github.com:GoogleCloudPlatform/PerfKitBenchmarker.git","clone_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git","svn_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker","homepage":"","size":7960,"stargazers_count":741,"watchers_count":741,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":185,"mirror_url":null,"open_issues_count":156,"forks":185,"open_issues":156,"watchers":741,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253"},"html":{"href":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1253"},"issue":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/1253"},"comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/1253/comments"},"review_comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253/comments"},"review_comment":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/1253/commits"},"statuses":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/statuses/18c57be216d2921155b364750f9540b157e2c792"}}}}
{"actor":{"display_login":"asaksena"}}