{"action":"created","comment":{"url":"https://api.github.com/repos/kubeflow/examples/pulls/comments/236281895","pull_request_review_id":178322874,"id":236281895,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNjI4MTg5NQ==","diff_hunk":"@@ -0,0 +1,127 @@\n+import kfp.dsl as dsl\n+from kubernetes import client as k8s_client\n+from typing import Dict\n+\n+\n+def default_gcp_op(name: str, image: str, command: str = None,\n+    arguments: str = None, file_inputs: Dict[dsl.PipelineParam, str] = None,\n+    file_outputs: Dict[str, str] = None, is_exit_handler=False):\n+  \"\"\"An operator that mounts the default GCP service account to the container.\n+\n+    The user-gcp-sa secret is created as part of the kubeflow deployment that\n+    stores the access token for kubeflow user service account.\n+\n+    With this service account, the container has a range of GCP APIs to\n+    access to. This service account is automatically created as part of the\n+    kubeflow deployment.\n+\n+    For the list of the GCP APIs this service account can access to, check\n+    https://github.com/kubeflow/kubeflow/blob/7b0db0d92d65c0746ac52b000cbc290dac7c62b1/deployment/gke/deployment_manager_configs/iam_bindings_template.yaml#L18\n+\n+    If you want to call the GCP APIs in a different project, grant the kf-user\n+    service account access permission.\n+  \"\"\"\n+\n+  return (\n+      dsl.ContainerOp(\n+          name,\n+          image,\n+          command,\n+          arguments,\n+          file_inputs,\n+          file_outputs,\n+          is_exit_handler,\n+      )\n+      .add_volume(\n+          k8s_client.V1Volume(\n+              name='gcp-credentials',\n+              secret=k8s_client.V1SecretVolumeSource(\n+                  secret_name='user-gcp-sa'\n+              )\n+          )\n+      )\n+      .add_volume_mount(\n+          k8s_client.V1VolumeMount(\n+              mount_path='/secret/gcp-credentials',\n+              name='gcp-credentials',\n+          )\n+      )\n+      .add_env_variable(\n+          k8s_client.V1EnvVar(\n+              name='GOOGLE_APPLICATION_CREDENTIALS',\n+              value='/secret/gcp-credentials/user-gcp-sa.json'\n+          )\n+      )\n+  )\n+\n+def dataflow_function_embedding_op(project: 'GcpProject', runner: str, target_dataset: str, problem: str,\n+                           data_dir: 'GcsUri',saved_model_dir: 'GcsUri',temp_location: 'GcsUri', staging_location: 'GcsUri',\n+                           job_name: str, worker_machine_type: str,\n+                           num_workers: int, step_name='dataflow_function_embedding'):\n+    return default_gcp_op(\n+        name = step_name,\n+        image = 'gcr.io/yang-codesearch/code-search-dataflow:v20181124-23deb39',\n+        command = [\n+            'python2',\n+            '-m',\n+            'code_search.dataflow.cli.create_function_embeddings',\n+        ],\n+        arguments = [\n+            '--project', project,\n+            '--runner', runner,\n+            '--target_dataset', target_dataset,\n+            '--problem', problem,\n+            '--data_dir', data_dir,\n+            '--saved_model_dir', saved_model_dir,\n+            '--job_name', job_name,\n+            '--temp_location', temp_location,\n+            '--staging_location', staging_location,\n+            '--worker_machine_type', worker_machine_type,\n+            '--num_workers', num_workers,\n+            '--requirements_file', 'requirements.dataflow.txt',\n+            '--wait_until_finished',\n+        ]\n+    )\n+\n+def search_index_creator_op(working_dir: str, data_dir: str, component: str, cluster_name: str, workflow_id: str):\n+    return dsl.ContainerOp(\n+        # use component name as step name\n+        name = component,\n+        image = 'gcr.io/yang-codesearch/code-search-search-index-creator:v20181126-6a63824',","path":"code_search/pipeline/index_update_pipeline.py","position":90,"original_position":90,"commit_id":"d2f7aa73dae9f14f48159885782d4fc4717238dc","original_commit_id":"d2f7aa73dae9f14f48159885782d4fc4717238dc","user":{"login":"jlewi","id":777219,"node_id":"MDQ6VXNlcjc3NzIxOQ==","avatar_url":"https://avatars3.githubusercontent.com/u/777219?v=4","gravatar_id":"","url":"https://api.github.com/users/jlewi","html_url":"https://github.com/jlewi","followers_url":"https://api.github.com/users/jlewi/followers","following_url":"https://api.github.com/users/jlewi/following{/other_user}","gists_url":"https://api.github.com/users/jlewi/gists{/gist_id}","starred_url":"https://api.github.com/users/jlewi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlewi/subscriptions","organizations_url":"https://api.github.com/users/jlewi/orgs","repos_url":"https://api.github.com/users/jlewi/repos","events_url":"https://api.github.com/users/jlewi/events{/privacy}","received_events_url":"https://api.github.com/users/jlewi/received_events","type":"User","site_admin":false},"body":"Same comment as above; can we reuse the Docker images in kubeflow-examples that the individual steps are already using?","created_at":"2018-11-26T14:46:20Z","updated_at":"2018-11-26T14:46:21Z","html_url":"https://github.com/kubeflow/examples/pull/361#discussion_r236281895","pull_request_url":"https://api.github.com/repos/kubeflow/examples/pulls/361","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/kubeflow/examples/pulls/comments/236281895"},"html":{"href":"https://github.com/kubeflow/examples/pull/361#discussion_r236281895"},"pull_request":{"href":"https://api.github.com/repos/kubeflow/examples/pulls/361"}}},"pull_request":{"url":"https://api.github.com/repos/kubeflow/examples/pulls/361","id":233467269,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMzNDY3MjY5","html_url":"https://github.com/kubeflow/examples/pull/361","diff_url":"https://github.com/kubeflow/examples/pull/361.diff","patch_url":"https://github.com/kubeflow/examples/pull/361.patch","issue_url":"https://api.github.com/repos/kubeflow/examples/issues/361","number":361,"state":"open","locked":false,"title":"Add update search index pipeline","user":{"login":"IronPan","id":2348602,"node_id":"MDQ6VXNlcjIzNDg2MDI=","avatar_url":"https://avatars2.githubusercontent.com/u/2348602?v=4","gravatar_id":"","url":"https://api.github.com/users/IronPan","html_url":"https://github.com/IronPan","followers_url":"https://api.github.com/users/IronPan/followers","following_url":"https://api.github.com/users/IronPan/following{/other_user}","gists_url":"https://api.github.com/users/IronPan/gists{/gist_id}","starred_url":"https://api.github.com/users/IronPan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IronPan/subscriptions","organizations_url":"https://api.github.com/users/IronPan/orgs","repos_url":"https://api.github.com/users/IronPan/repos","events_url":"https://api.github.com/users/IronPan/events{/privacy}","received_events_url":"https://api.github.com/users/IronPan/received_events","type":"User","site_admin":false},"body":"Add a kubeflow pipeline to update search index. \r\n\r\nCurrently the pipeline does two things\r\n- Create a dataflow job to compute function embedding\r\n- Create a K8s job to create search index\r\n\r\nThe compute function embedding op is a container that wraps the direct python call to dispatch dataflow job. (TBD switch to use ksonnet component)\r\nThe create search index op is a container that wraps the existing create search index ksonnet component.\r\n\r\nSee README in pipeline/ dir for more details how to run the pipeline\r\n\r\n<!-- Reviewable:start -->\r\n---\r\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/kubeflow/examples/361)\r\n<!-- Reviewable:end -->\r\n","created_at":"2018-11-26T08:00:31Z","updated_at":"2018-11-26T14:46:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"682b2029ffe78f686ebacbd7617c12d120613d6e","assignee":{"login":"jlewi","id":777219,"node_id":"MDQ6VXNlcjc3NzIxOQ==","avatar_url":"https://avatars3.githubusercontent.com/u/777219?v=4","gravatar_id":"","url":"https://api.github.com/users/jlewi","html_url":"https://github.com/jlewi","followers_url":"https://api.github.com/users/jlewi/followers","following_url":"https://api.github.com/users/jlewi/following{/other_user}","gists_url":"https://api.github.com/users/jlewi/gists{/gist_id}","starred_url":"https://api.github.com/users/jlewi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlewi/subscriptions","organizations_url":"https://api.github.com/users/jlewi/orgs","repos_url":"https://api.github.com/users/jlewi/repos","events_url":"https://api.github.com/users/jlewi/events{/privacy}","received_events_url":"https://api.github.com/users/jlewi/received_events","type":"User","site_admin":false},"assignees":[{"login":"jlewi","id":777219,"node_id":"MDQ6VXNlcjc3NzIxOQ==","avatar_url":"https://avatars3.githubusercontent.com/u/777219?v=4","gravatar_id":"","url":"https://api.github.com/users/jlewi","html_url":"https://github.com/jlewi","followers_url":"https://api.github.com/users/jlewi/followers","following_url":"https://api.github.com/users/jlewi/following{/other_user}","gists_url":"https://api.github.com/users/jlewi/gists{/gist_id}","starred_url":"https://api.github.com/users/jlewi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlewi/subscriptions","organizations_url":"https://api.github.com/users/jlewi/orgs","repos_url":"https://api.github.com/users/jlewi/repos","events_url":"https://api.github.com/users/jlewi/events{/privacy}","received_events_url":"https://api.github.com/users/jlewi/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"cwbeitel","id":2348401,"node_id":"MDQ6VXNlcjIzNDg0MDE=","avatar_url":"https://avatars3.githubusercontent.com/u/2348401?v=4","gravatar_id":"","url":"https://api.github.com/users/cwbeitel","html_url":"https://github.com/cwbeitel","followers_url":"https://api.github.com/users/cwbeitel/followers","following_url":"https://api.github.com/users/cwbeitel/following{/other_user}","gists_url":"https://api.github.com/users/cwbeitel/gists{/gist_id}","starred_url":"https://api.github.com/users/cwbeitel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cwbeitel/subscriptions","organizations_url":"https://api.github.com/users/cwbeitel/orgs","repos_url":"https://api.github.com/users/cwbeitel/repos","events_url":"https://api.github.com/users/cwbeitel/events{/privacy}","received_events_url":"https://api.github.com/users/cwbeitel/received_events","type":"User","site_admin":false},{"login":"gaocegege","id":5100735,"node_id":"MDQ6VXNlcjUxMDA3MzU=","avatar_url":"https://avatars3.githubusercontent.com/u/5100735?v=4","gravatar_id":"","url":"https://api.github.com/users/gaocegege","html_url":"https://github.com/gaocegege","followers_url":"https://api.github.com/users/gaocegege/followers","following_url":"https://api.github.com/users/gaocegege/following{/other_user}","gists_url":"https://api.github.com/users/gaocegege/gists{/gist_id}","starred_url":"https://api.github.com/users/gaocegege/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaocegege/subscriptions","organizations_url":"https://api.github.com/users/gaocegege/orgs","repos_url":"https://api.github.com/users/gaocegege/repos","events_url":"https://api.github.com/users/gaocegege/events{/privacy}","received_events_url":"https://api.github.com/users/gaocegege/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":842276654,"node_id":"MDU6TGFiZWw4NDIyNzY2NTQ=","url":"https://api.github.com/repos/kubeflow/examples/labels/size/L","name":"size/L","color":"ededed","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubeflow/examples/pulls/361/commits","review_comments_url":"https://api.github.com/repos/kubeflow/examples/pulls/361/comments","review_comment_url":"https://api.github.com/repos/kubeflow/examples/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubeflow/examples/issues/361/comments","statuses_url":"https://api.github.com/repos/kubeflow/examples/statuses/d2f7aa73dae9f14f48159885782d4fc4717238dc","head":{"label":"IronPan:search_index","ref":"search_index","sha":"d2f7aa73dae9f14f48159885782d4fc4717238dc","user":{"login":"IronPan","id":2348602,"node_id":"MDQ6VXNlcjIzNDg2MDI=","avatar_url":"https://avatars2.githubusercontent.com/u/2348602?v=4","gravatar_id":"","url":"https://api.github.com/users/IronPan","html_url":"https://github.com/IronPan","followers_url":"https://api.github.com/users/IronPan/followers","following_url":"https://api.github.com/users/IronPan/following{/other_user}","gists_url":"https://api.github.com/users/IronPan/gists{/gist_id}","starred_url":"https://api.github.com/users/IronPan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IronPan/subscriptions","organizations_url":"https://api.github.com/users/IronPan/orgs","repos_url":"https://api.github.com/users/IronPan/repos","events_url":"https://api.github.com/users/IronPan/events{/privacy}","received_events_url":"https://api.github.com/users/IronPan/received_events","type":"User","site_admin":false},"repo":{"id":156284589,"node_id":"MDEwOlJlcG9zaXRvcnkxNTYyODQ1ODk=","name":"examples","full_name":"IronPan/examples","private":false,"owner":{"login":"IronPan","id":2348602,"node_id":"MDQ6VXNlcjIzNDg2MDI=","avatar_url":"https://avatars2.githubusercontent.com/u/2348602?v=4","gravatar_id":"","url":"https://api.github.com/users/IronPan","html_url":"https://github.com/IronPan","followers_url":"https://api.github.com/users/IronPan/followers","following_url":"https://api.github.com/users/IronPan/following{/other_user}","gists_url":"https://api.github.com/users/IronPan/gists{/gist_id}","starred_url":"https://api.github.com/users/IronPan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IronPan/subscriptions","organizations_url":"https://api.github.com/users/IronPan/orgs","repos_url":"https://api.github.com/users/IronPan/repos","events_url":"https://api.github.com/users/IronPan/events{/privacy}","received_events_url":"https://api.github.com/users/IronPan/received_events","type":"User","site_admin":false},"html_url":"https://github.com/IronPan/examples","description":"A repository to host extended examples and tutorials","fork":true,"url":"https://api.github.com/repos/IronPan/examples","forks_url":"https://api.github.com/repos/IronPan/examples/forks","keys_url":"https://api.github.com/repos/IronPan/examples/keys{/key_id}","collaborators_url":"https://api.github.com/repos/IronPan/examples/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/IronPan/examples/teams","hooks_url":"https://api.github.com/repos/IronPan/examples/hooks","issue_events_url":"https://api.github.com/repos/IronPan/examples/issues/events{/number}","events_url":"https://api.github.com/repos/IronPan/examples/events","assignees_url":"https://api.github.com/repos/IronPan/examples/assignees{/user}","branches_url":"https://api.github.com/repos/IronPan/examples/branches{/branch}","tags_url":"https://api.github.com/repos/IronPan/examples/tags","blobs_url":"https://api.github.com/repos/IronPan/examples/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/IronPan/examples/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/IronPan/examples/git/refs{/sha}","trees_url":"https://api.github.com/repos/IronPan/examples/git/trees{/sha}","statuses_url":"https://api.github.com/repos/IronPan/examples/statuses/{sha}","languages_url":"https://api.github.com/repos/IronPan/examples/languages","stargazers_url":"https://api.github.com/repos/IronPan/examples/stargazers","contributors_url":"https://api.github.com/repos/IronPan/examples/contributors","subscribers_url":"https://api.github.com/repos/IronPan/examples/subscribers","subscription_url":"https://api.github.com/repos/IronPan/examples/subscription","commits_url":"https://api.github.com/repos/IronPan/examples/commits{/sha}","git_commits_url":"https://api.github.com/repos/IronPan/examples/git/commits{/sha}","comments_url":"https://api.github.com/repos/IronPan/examples/comments{/number}","issue_comment_url":"https://api.github.com/repos/IronPan/examples/issues/comments{/number}","contents_url":"https://api.github.com/repos/IronPan/examples/contents/{+path}","compare_url":"https://api.github.com/repos/IronPan/examples/compare/{base}...{head}","merges_url":"https://api.github.com/repos/IronPan/examples/merges","archive_url":"https://api.github.com/repos/IronPan/examples/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/IronPan/examples/downloads","issues_url":"https://api.github.com/repos/IronPan/examples/issues{/number}","pulls_url":"https://api.github.com/repos/IronPan/examples/pulls{/number}","milestones_url":"https://api.github.com/repos/IronPan/examples/milestones{/number}","notifications_url":"https://api.github.com/repos/IronPan/examples/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/IronPan/examples/labels{/name}","releases_url":"https://api.github.com/repos/IronPan/examples/releases{/id}","deployments_url":"https://api.github.com/repos/IronPan/examples/deployments","created_at":"2018-11-05T21:20:45Z","updated_at":"2018-11-05T21:20:49Z","pushed_at":"2018-11-26T08:58:57Z","git_url":"git://github.com/IronPan/examples.git","ssh_url":"git@github.com:IronPan/examples.git","clone_url":"https://github.com/IronPan/examples.git","svn_url":"https://github.com/IronPan/examples","homepage":null,"size":18271,"stargazers_count":0,"watchers_count":0,"language":"Jupyter Notebook","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubeflow:master","ref":"master","sha":"62c2e4c24977ae00aa18add3921d83549a72ed37","user":{"login":"kubeflow","id":33164907,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzMTY0OTA3","avatar_url":"https://avatars0.githubusercontent.com/u/33164907?v=4","gravatar_id":"","url":"https://api.github.com/users/kubeflow","html_url":"https://github.com/kubeflow","followers_url":"https://api.github.com/users/kubeflow/followers","following_url":"https://api.github.com/users/kubeflow/following{/other_user}","gists_url":"https://api.github.com/users/kubeflow/gists{/gist_id}","starred_url":"https://api.github.com/users/kubeflow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubeflow/subscriptions","organizations_url":"https://api.github.com/users/kubeflow/orgs","repos_url":"https://api.github.com/users/kubeflow/repos","events_url":"https://api.github.com/users/kubeflow/events{/privacy}","received_events_url":"https://api.github.com/users/kubeflow/received_events","type":"Organization","site_admin":false},"repo":{"id":119894375,"node_id":"MDEwOlJlcG9zaXRvcnkxMTk4OTQzNzU=","name":"examples","full_name":"kubeflow/examples","private":false,"owner":{"login":"kubeflow","id":33164907,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzMTY0OTA3","avatar_url":"https://avatars0.githubusercontent.com/u/33164907?v=4","gravatar_id":"","url":"https://api.github.com/users/kubeflow","html_url":"https://github.com/kubeflow","followers_url":"https://api.github.com/users/kubeflow/followers","following_url":"https://api.github.com/users/kubeflow/following{/other_user}","gists_url":"https://api.github.com/users/kubeflow/gists{/gist_id}","starred_url":"https://api.github.com/users/kubeflow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubeflow/subscriptions","organizations_url":"https://api.github.com/users/kubeflow/orgs","repos_url":"https://api.github.com/users/kubeflow/repos","events_url":"https://api.github.com/users/kubeflow/events{/privacy}","received_events_url":"https://api.github.com/users/kubeflow/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/kubeflow/examples","description":"A repository to host extended examples and tutorials","fork":false,"url":"https://api.github.com/repos/kubeflow/examples","forks_url":"https://api.github.com/repos/kubeflow/examples/forks","keys_url":"https://api.github.com/repos/kubeflow/examples/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubeflow/examples/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubeflow/examples/teams","hooks_url":"https://api.github.com/repos/kubeflow/examples/hooks","issue_events_url":"https://api.github.com/repos/kubeflow/examples/issues/events{/number}","events_url":"https://api.github.com/repos/kubeflow/examples/events","assignees_url":"https://api.github.com/repos/kubeflow/examples/assignees{/user}","branches_url":"https://api.github.com/repos/kubeflow/examples/branches{/branch}","tags_url":"https://api.github.com/repos/kubeflow/examples/tags","blobs_url":"https://api.github.com/repos/kubeflow/examples/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubeflow/examples/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubeflow/examples/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubeflow/examples/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubeflow/examples/statuses/{sha}","languages_url":"https://api.github.com/repos/kubeflow/examples/languages","stargazers_url":"https://api.github.com/repos/kubeflow/examples/stargazers","contributors_url":"https://api.github.com/repos/kubeflow/examples/contributors","subscribers_url":"https://api.github.com/repos/kubeflow/examples/subscribers","subscription_url":"https://api.github.com/repos/kubeflow/examples/subscription","commits_url":"https://api.github.com/repos/kubeflow/examples/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubeflow/examples/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubeflow/examples/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubeflow/examples/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubeflow/examples/contents/{+path}","compare_url":"https://api.github.com/repos/kubeflow/examples/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubeflow/examples/merges","archive_url":"https://api.github.com/repos/kubeflow/examples/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubeflow/examples/downloads","issues_url":"https://api.github.com/repos/kubeflow/examples/issues{/number}","pulls_url":"https://api.github.com/repos/kubeflow/examples/pulls{/number}","milestones_url":"https://api.github.com/repos/kubeflow/examples/milestones{/number}","notifications_url":"https://api.github.com/repos/kubeflow/examples/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubeflow/examples/labels{/name}","releases_url":"https://api.github.com/repos/kubeflow/examples/releases{/id}","deployments_url":"https://api.github.com/repos/kubeflow/examples/deployments","created_at":"2018-02-01T21:13:10Z","updated_at":"2018-11-26T14:35:31Z","pushed_at":"2018-11-26T14:35:28Z","git_url":"git://github.com/kubeflow/examples.git","ssh_url":"git@github.com:kubeflow/examples.git","clone_url":"https://github.com/kubeflow/examples.git","svn_url":"https://github.com/kubeflow/examples","homepage":null,"size":32435,"stargazers_count":309,"watchers_count":309,"language":"Jupyter Notebook","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":96,"mirror_url":null,"archived":false,"open_issues_count":113,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":96,"open_issues":113,"watchers":309,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubeflow/examples/pulls/361"},"html":{"href":"https://github.com/kubeflow/examples/pull/361"},"issue":{"href":"https://api.github.com/repos/kubeflow/examples/issues/361"},"comments":{"href":"https://api.github.com/repos/kubeflow/examples/issues/361/comments"},"review_comments":{"href":"https://api.github.com/repos/kubeflow/examples/pulls/361/comments"},"review_comment":{"href":"https://api.github.com/repos/kubeflow/examples/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubeflow/examples/pulls/361/commits"},"statuses":{"href":"https://api.github.com/repos/kubeflow/examples/statuses/d2f7aa73dae9f14f48159885782d4fc4717238dc"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jlewi"}}