{"action":"created","comment":{"url":"https://api.github.com/repos/kubeflow/tf-operator/pulls/comments/173169822","pull_request_review_id":102312789,"id":173169822,"diff_hunk":"@@ -2,6 +2,7 @@\n   \"name\": \"tensorflowk8s-dashboard\",\n   \"version\": \"0.1.0\",\n   \"description\": \"Dashboard for kubeflow/tf-operator.\",\n+  \"homepage\": \".\",","path":"dashboard/frontend/package.json","position":4,"original_position":4,"commit_id":"bd249f97e45a1738437818de6eca045c5063d32f","original_commit_id":"bd249f97e45a1738437818de6eca045c5063d32f","user":{"login":"wbuchwalter","id":3621290,"avatar_url":"https://avatars0.githubusercontent.com/u/3621290?v=4","gravatar_id":"","url":"https://api.github.com/users/wbuchwalter","html_url":"https://github.com/wbuchwalter","followers_url":"https://api.github.com/users/wbuchwalter/followers","following_url":"https://api.github.com/users/wbuchwalter/following{/other_user}","gists_url":"https://api.github.com/users/wbuchwalter/gists{/gist_id}","starred_url":"https://api.github.com/users/wbuchwalter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wbuchwalter/subscriptions","organizations_url":"https://api.github.com/users/wbuchwalter/orgs","repos_url":"https://api.github.com/users/wbuchwalter/repos","events_url":"https://api.github.com/users/wbuchwalter/events{/privacy}","received_events_url":"https://api.github.com/users/wbuchwalter/received_events","type":"User","site_admin":false},"body":"Homepage defines where the frontend will query for the static assets. If not specified the static assets will be queried at the root, i.e: `127.0.0.1:8001/static` which breaks.\r\n`\".\"` means that we query at the path where the application is served. i.e: `http://127.0.0.1:8001/api/v1/namespaces/kubeflow/services/ambassador:80/proxy/tfjobs/ui/static`","created_at":"2018-03-08T14:18:22Z","updated_at":"2018-03-08T14:18:22Z","html_url":"https://github.com/kubeflow/tf-operator/pull/441#discussion_r173169822","pull_request_url":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/kubeflow/tf-operator/pulls/comments/173169822"},"html":{"href":"https://github.com/kubeflow/tf-operator/pull/441#discussion_r173169822"},"pull_request":{"href":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441"}}},"pull_request":{"url":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441","id":173475555,"html_url":"https://github.com/kubeflow/tf-operator/pull/441","diff_url":"https://github.com/kubeflow/tf-operator/pull/441.diff","patch_url":"https://github.com/kubeflow/tf-operator/pull/441.patch","issue_url":"https://api.github.com/repos/kubeflow/tf-operator/issues/441","number":441,"state":"open","locked":false,"title":"Fix dashboard + proxy incompatibility","user":{"login":"wbuchwalter","id":3621290,"avatar_url":"https://avatars0.githubusercontent.com/u/3621290?v=4","gravatar_id":"","url":"https://api.github.com/users/wbuchwalter","html_url":"https://github.com/wbuchwalter","followers_url":"https://api.github.com/users/wbuchwalter/followers","following_url":"https://api.github.com/users/wbuchwalter/following{/other_user}","gists_url":"https://api.github.com/users/wbuchwalter/gists{/gist_id}","starred_url":"https://api.github.com/users/wbuchwalter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wbuchwalter/subscriptions","organizations_url":"https://api.github.com/users/wbuchwalter/orgs","repos_url":"https://api.github.com/users/wbuchwalter/repos","events_url":"https://api.github.com/users/wbuchwalter/events{/privacy}","received_events_url":"https://api.github.com/users/wbuchwalter/received_events","type":"User","site_admin":false},"body":"Fixes #323 .\r\nThe frontend is now using `hashRouter` instead of `browserRouter`, meaning the location of the UI is determined only by the portion of the url after the `#` (similar to k8s dashboard).\r\n\r\nRequest to the backend are also properly routed now.\r\nThe backend request are sent to the portion of the url until the first occurence of `tfjobs` + `/api` \r\ni.e:\r\n`http://127.0.0.1:8001/api/v1/namespaces/kubeflow/services/ambassador:80/proxy/tfjobs/ui/#/new` \r\nwill translate into: `http://127.0.0.1:8001/api/v1/namespaces/kubeflow/services/ambassador:80/proxy/tfjobs/api`\r\n\r\nThis means this would break if we decide to route the dashboard with ambassador on `/dashboard` instead of `/tfjob`, so the route should be part of a dashboard config at some point.\r\n\r\nSee https://github.com/kubeflow/kubeflow/pull/381 for the related route change in ambassador.\r\n\r\ncc @jlewi @Jimexist \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/tf-operator/441)\r\n<!-- Reviewable:end -->\r\n","created_at":"2018-03-07T14:55:02Z","updated_at":"2018-03-08T14:18:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"552ec946ff94fb76fc2ee2dd57929200c5285556","assignee":null,"assignees":[],"requested_reviewers":[{"login":"Jimexist","id":622789,"avatar_url":"https://avatars1.githubusercontent.com/u/622789?v=4","gravatar_id":"","url":"https://api.github.com/users/Jimexist","html_url":"https://github.com/Jimexist","followers_url":"https://api.github.com/users/Jimexist/followers","following_url":"https://api.github.com/users/Jimexist/following{/other_user}","gists_url":"https://api.github.com/users/Jimexist/gists{/gist_id}","starred_url":"https://api.github.com/users/Jimexist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jimexist/subscriptions","organizations_url":"https://api.github.com/users/Jimexist/orgs","repos_url":"https://api.github.com/users/Jimexist/repos","events_url":"https://api.github.com/users/Jimexist/events{/privacy}","received_events_url":"https://api.github.com/users/Jimexist/received_events","type":"User","site_admin":false},{"login":"ScorpioCPH","id":5319646,"avatar_url":"https://avatars2.githubusercontent.com/u/5319646?v=4","gravatar_id":"","url":"https://api.github.com/users/ScorpioCPH","html_url":"https://github.com/ScorpioCPH","followers_url":"https://api.github.com/users/ScorpioCPH/followers","following_url":"https://api.github.com/users/ScorpioCPH/following{/other_user}","gists_url":"https://api.github.com/users/ScorpioCPH/gists{/gist_id}","starred_url":"https://api.github.com/users/ScorpioCPH/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScorpioCPH/subscriptions","organizations_url":"https://api.github.com/users/ScorpioCPH/orgs","repos_url":"https://api.github.com/users/ScorpioCPH/repos","events_url":"https://api.github.com/users/ScorpioCPH/events{/privacy}","received_events_url":"https://api.github.com/users/ScorpioCPH/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":835722463,"url":"https://api.github.com/repos/kubeflow/tf-operator/labels/size/S","name":"size/S","color":"c2e0c6","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441/commits","review_comments_url":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441/comments","review_comment_url":"https://api.github.com/repos/kubeflow/tf-operator/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubeflow/tf-operator/issues/441/comments","statuses_url":"https://api.github.com/repos/kubeflow/tf-operator/statuses/bd249f97e45a1738437818de6eca045c5063d32f","head":{"label":"wbuchwalter:dashboard-proxy","ref":"dashboard-proxy","sha":"bd249f97e45a1738437818de6eca045c5063d32f","user":{"login":"wbuchwalter","id":3621290,"avatar_url":"https://avatars0.githubusercontent.com/u/3621290?v=4","gravatar_id":"","url":"https://api.github.com/users/wbuchwalter","html_url":"https://github.com/wbuchwalter","followers_url":"https://api.github.com/users/wbuchwalter/followers","following_url":"https://api.github.com/users/wbuchwalter/following{/other_user}","gists_url":"https://api.github.com/users/wbuchwalter/gists{/gist_id}","starred_url":"https://api.github.com/users/wbuchwalter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wbuchwalter/subscriptions","organizations_url":"https://api.github.com/users/wbuchwalter/orgs","repos_url":"https://api.github.com/users/wbuchwalter/repos","events_url":"https://api.github.com/users/wbuchwalter/events{/privacy}","received_events_url":"https://api.github.com/users/wbuchwalter/received_events","type":"User","site_admin":false},"repo":{"id":108338661,"name":"k8s","full_name":"wbuchwalter/k8s","owner":{"login":"wbuchwalter","id":3621290,"avatar_url":"https://avatars0.githubusercontent.com/u/3621290?v=4","gravatar_id":"","url":"https://api.github.com/users/wbuchwalter","html_url":"https://github.com/wbuchwalter","followers_url":"https://api.github.com/users/wbuchwalter/followers","following_url":"https://api.github.com/users/wbuchwalter/following{/other_user}","gists_url":"https://api.github.com/users/wbuchwalter/gists{/gist_id}","starred_url":"https://api.github.com/users/wbuchwalter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wbuchwalter/subscriptions","organizations_url":"https://api.github.com/users/wbuchwalter/orgs","repos_url":"https://api.github.com/users/wbuchwalter/repos","events_url":"https://api.github.com/users/wbuchwalter/events{/privacy}","received_events_url":"https://api.github.com/users/wbuchwalter/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/wbuchwalter/k8s","description":"Tools for ML/Tensorflow on Kubernetes.","fork":true,"url":"https://api.github.com/repos/wbuchwalter/k8s","forks_url":"https://api.github.com/repos/wbuchwalter/k8s/forks","keys_url":"https://api.github.com/repos/wbuchwalter/k8s/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wbuchwalter/k8s/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wbuchwalter/k8s/teams","hooks_url":"https://api.github.com/repos/wbuchwalter/k8s/hooks","issue_events_url":"https://api.github.com/repos/wbuchwalter/k8s/issues/events{/number}","events_url":"https://api.github.com/repos/wbuchwalter/k8s/events","assignees_url":"https://api.github.com/repos/wbuchwalter/k8s/assignees{/user}","branches_url":"https://api.github.com/repos/wbuchwalter/k8s/branches{/branch}","tags_url":"https://api.github.com/repos/wbuchwalter/k8s/tags","blobs_url":"https://api.github.com/repos/wbuchwalter/k8s/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wbuchwalter/k8s/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wbuchwalter/k8s/git/refs{/sha}","trees_url":"https://api.github.com/repos/wbuchwalter/k8s/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wbuchwalter/k8s/statuses/{sha}","languages_url":"https://api.github.com/repos/wbuchwalter/k8s/languages","stargazers_url":"https://api.github.com/repos/wbuchwalter/k8s/stargazers","contributors_url":"https://api.github.com/repos/wbuchwalter/k8s/contributors","subscribers_url":"https://api.github.com/repos/wbuchwalter/k8s/subscribers","subscription_url":"https://api.github.com/repos/wbuchwalter/k8s/subscription","commits_url":"https://api.github.com/repos/wbuchwalter/k8s/commits{/sha}","git_commits_url":"https://api.github.com/repos/wbuchwalter/k8s/git/commits{/sha}","comments_url":"https://api.github.com/repos/wbuchwalter/k8s/comments{/number}","issue_comment_url":"https://api.github.com/repos/wbuchwalter/k8s/issues/comments{/number}","contents_url":"https://api.github.com/repos/wbuchwalter/k8s/contents/{+path}","compare_url":"https://api.github.com/repos/wbuchwalter/k8s/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wbuchwalter/k8s/merges","archive_url":"https://api.github.com/repos/wbuchwalter/k8s/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wbuchwalter/k8s/downloads","issues_url":"https://api.github.com/repos/wbuchwalter/k8s/issues{/number}","pulls_url":"https://api.github.com/repos/wbuchwalter/k8s/pulls{/number}","milestones_url":"https://api.github.com/repos/wbuchwalter/k8s/milestones{/number}","notifications_url":"https://api.github.com/repos/wbuchwalter/k8s/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wbuchwalter/k8s/labels{/name}","releases_url":"https://api.github.com/repos/wbuchwalter/k8s/releases{/id}","deployments_url":"https://api.github.com/repos/wbuchwalter/k8s/deployments","created_at":"2017-10-25T23:48:27Z","updated_at":"2017-10-25T23:48:29Z","pushed_at":"2018-03-07T22:36:11Z","git_url":"git://github.com/wbuchwalter/k8s.git","ssh_url":"git@github.com:wbuchwalter/k8s.git","clone_url":"https://github.com/wbuchwalter/k8s.git","svn_url":"https://github.com/wbuchwalter/k8s","homepage":null,"size":39397,"stargazers_count":0,"watchers_count":0,"language":"Go","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":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubeflow:master","ref":"master","sha":"d3a615dd627cc0ce63a594f82f629aebf4f08c3f","user":{"login":"kubeflow","id":33164907,"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":95700338,"name":"tf-operator","full_name":"kubeflow/tf-operator","owner":{"login":"kubeflow","id":33164907,"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},"private":false,"html_url":"https://github.com/kubeflow/tf-operator","description":"Tools for ML/Tensorflow on Kubernetes.","fork":false,"url":"https://api.github.com/repos/kubeflow/tf-operator","forks_url":"https://api.github.com/repos/kubeflow/tf-operator/forks","keys_url":"https://api.github.com/repos/kubeflow/tf-operator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubeflow/tf-operator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubeflow/tf-operator/teams","hooks_url":"https://api.github.com/repos/kubeflow/tf-operator/hooks","issue_events_url":"https://api.github.com/repos/kubeflow/tf-operator/issues/events{/number}","events_url":"https://api.github.com/repos/kubeflow/tf-operator/events","assignees_url":"https://api.github.com/repos/kubeflow/tf-operator/assignees{/user}","branches_url":"https://api.github.com/repos/kubeflow/tf-operator/branches{/branch}","tags_url":"https://api.github.com/repos/kubeflow/tf-operator/tags","blobs_url":"https://api.github.com/repos/kubeflow/tf-operator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubeflow/tf-operator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubeflow/tf-operator/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubeflow/tf-operator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubeflow/tf-operator/statuses/{sha}","languages_url":"https://api.github.com/repos/kubeflow/tf-operator/languages","stargazers_url":"https://api.github.com/repos/kubeflow/tf-operator/stargazers","contributors_url":"https://api.github.com/repos/kubeflow/tf-operator/contributors","subscribers_url":"https://api.github.com/repos/kubeflow/tf-operator/subscribers","subscription_url":"https://api.github.com/repos/kubeflow/tf-operator/subscription","commits_url":"https://api.github.com/repos/kubeflow/tf-operator/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubeflow/tf-operator/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubeflow/tf-operator/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubeflow/tf-operator/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubeflow/tf-operator/contents/{+path}","compare_url":"https://api.github.com/repos/kubeflow/tf-operator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubeflow/tf-operator/merges","archive_url":"https://api.github.com/repos/kubeflow/tf-operator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubeflow/tf-operator/downloads","issues_url":"https://api.github.com/repos/kubeflow/tf-operator/issues{/number}","pulls_url":"https://api.github.com/repos/kubeflow/tf-operator/pulls{/number}","milestones_url":"https://api.github.com/repos/kubeflow/tf-operator/milestones{/number}","notifications_url":"https://api.github.com/repos/kubeflow/tf-operator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubeflow/tf-operator/labels{/name}","releases_url":"https://api.github.com/repos/kubeflow/tf-operator/releases{/id}","deployments_url":"https://api.github.com/repos/kubeflow/tf-operator/deployments","created_at":"2017-06-28T18:38:14Z","updated_at":"2018-03-07T08:39:30Z","pushed_at":"2018-03-08T12:55:19Z","git_url":"git://github.com/kubeflow/tf-operator.git","ssh_url":"git@github.com:kubeflow/tf-operator.git","clone_url":"https://github.com/kubeflow/tf-operator.git","svn_url":"https://github.com/kubeflow/tf-operator","homepage":null,"size":41352,"stargazers_count":343,"watchers_count":343,"language":"Go","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":71,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":96,"open_issues":71,"watchers":343,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441"},"html":{"href":"https://github.com/kubeflow/tf-operator/pull/441"},"issue":{"href":"https://api.github.com/repos/kubeflow/tf-operator/issues/441"},"comments":{"href":"https://api.github.com/repos/kubeflow/tf-operator/issues/441/comments"},"review_comments":{"href":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441/comments"},"review_comment":{"href":"https://api.github.com/repos/kubeflow/tf-operator/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubeflow/tf-operator/pulls/441/commits"},"statuses":{"href":"https://api.github.com/repos/kubeflow/tf-operator/statuses/bd249f97e45a1738437818de6eca045c5063d32f"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"wbuchwalter"}}