{"action":"created","comment":{"url":"https://api.github.com/repos/pachyderm/pachyderm/pulls/comments/228672447","pull_request_review_id":169008671,"id":228672447,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyODY3MjQ0Nw==","diff_hunk":"@@ -24,43 +26,72 @@ import (\n type canonicalConfig struct {\n \tVersion int64\n \n-\tACSURL      *url.URL\n-\tMetadataURL *url.URL\n-\tDashURL     *url.URL\n+\t// Currently, both IDP and SAMLSvc must be set. They are separate structs to\n+\t// separate ambiguous names (e.g. IDP.MetadataURL is the ID provider's\n+\t// metadata URL, while SAMLSvc.MetadataURL is Pachyderm's metadata URL,\n+\t// configured by the cluster admin.\n+\t//\n+\t// Later, there may be multiple IDPs, or IDP may be set to a non-SAML source\n+\t// and SAMLSvc may not be set, but those aren't supported yet\n+\tIDP struct {\n+\t\tName           string\n+\t\tDescription    string\n+\t\tMetadataURL    *url.URL\n+\t\tMetadata       *saml.EntityDescriptor\n+\t\tGroupAttribute string\n+\t}\n \n-\tIDPName        string\n-\tIDPDescription string\n-\tIDPMetadataURL *url.URL\n-\tIDPMetadata    *saml.EntityDescriptor\n+\tSAMLSvc struct {\n+\t\tACSURL          *url.URL\n+\t\tMetadataURL     *url.URL\n+\t\tDashURL         *url.URL\n+\t\tSessionDuration time.Duration\n+\t}\n }\n \n-func (c *canonicalConfig) ToProto() *auth.AuthConfig {\n-\tif c == nil {\n-\t\treturn &auth.AuthConfig{}\n+func (c *canonicalConfig) ToProto() (*auth.AuthConfig, error) {","path":"src/server/auth/server/saml.go","position":53,"original_position":53,"commit_id":"e71da72504a0e3ef4593205250f49618c4d54cd1","original_commit_id":"e5804ffa90dce553c044236a22b85b1794a9bfb6","user":{"login":"jdoliner","id":43867,"node_id":"MDQ6VXNlcjQzODY3","avatar_url":"https://avatars3.githubusercontent.com/u/43867?v=4","gravatar_id":"","url":"https://api.github.com/users/jdoliner","html_url":"https://github.com/jdoliner","followers_url":"https://api.github.com/users/jdoliner/followers","following_url":"https://api.github.com/users/jdoliner/following{/other_user}","gists_url":"https://api.github.com/users/jdoliner/gists{/gist_id}","starred_url":"https://api.github.com/users/jdoliner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdoliner/subscriptions","organizations_url":"https://api.github.com/users/jdoliner/orgs","repos_url":"https://api.github.com/users/jdoliner/repos","events_url":"https://api.github.com/users/jdoliner/events{/privacy}","received_events_url":"https://api.github.com/users/jdoliner/received_events","type":"User","site_admin":false},"body":"Is it infeasible to use a protocol buffer as the canonical config? Having to convert between a go struct and a protobuf go struct seems to lead to bugs where you add a field but forget to add the field to the `ToProto` method. Sometimes it's unavoidable, if you need non-data fields in the struct but just glancing at it seems like `canonicalConfig` might not have any of those.","created_at":"2018-10-26T21:37:35Z","updated_at":"2018-10-26T21:37:35Z","html_url":"https://github.com/pachyderm/pachyderm/pull/3196#discussion_r228672447","pull_request_url":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/pachyderm/pachyderm/pulls/comments/228672447"},"html":{"href":"https://github.com/pachyderm/pachyderm/pull/3196#discussion_r228672447"},"pull_request":{"href":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196"}}},"pull_request":{"url":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196","id":225529664,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI1NTI5NjY0","html_url":"https://github.com/pachyderm/pachyderm/pull/3196","diff_url":"https://github.com/pachyderm/pachyderm/pull/3196.diff","patch_url":"https://github.com/pachyderm/pachyderm/pull/3196.patch","issue_url":"https://api.github.com/repos/pachyderm/pachyderm/issues/3196","number":3196,"state":"open","locked":false,"title":"SAML group support","user":{"login":"msteffen","id":235674,"node_id":"MDQ6VXNlcjIzNTY3NA==","avatar_url":"https://avatars1.githubusercontent.com/u/235674?v=4","gravatar_id":"","url":"https://api.github.com/users/msteffen","html_url":"https://github.com/msteffen","followers_url":"https://api.github.com/users/msteffen/followers","following_url":"https://api.github.com/users/msteffen/following{/other_user}","gists_url":"https://api.github.com/users/msteffen/gists{/gist_id}","starred_url":"https://api.github.com/users/msteffen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msteffen/subscriptions","organizations_url":"https://api.github.com/users/msteffen/orgs","repos_url":"https://api.github.com/users/msteffen/repos","events_url":"https://api.github.com/users/msteffen/events{/privacy}","received_events_url":"https://api.github.com/users/msteffen/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-10-24T19:53:06Z","updated_at":"2018-10-26T21:37:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7a316e6548f80b8956df54b85bc4de004a34eff0","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196/commits","review_comments_url":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196/comments","review_comment_url":"https://api.github.com/repos/pachyderm/pachyderm/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pachyderm/pachyderm/issues/3196/comments","statuses_url":"https://api.github.com/repos/pachyderm/pachyderm/statuses/e71da72504a0e3ef4593205250f49618c4d54cd1","head":{"label":"pachyderm:tc_branch_after_rebase","ref":"tc_branch_after_rebase","sha":"e71da72504a0e3ef4593205250f49618c4d54cd1","user":{"login":"pachyderm","id":10432478,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNDMyNDc4","avatar_url":"https://avatars3.githubusercontent.com/u/10432478?v=4","gravatar_id":"","url":"https://api.github.com/users/pachyderm","html_url":"https://github.com/pachyderm","followers_url":"https://api.github.com/users/pachyderm/followers","following_url":"https://api.github.com/users/pachyderm/following{/other_user}","gists_url":"https://api.github.com/users/pachyderm/gists{/gist_id}","starred_url":"https://api.github.com/users/pachyderm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pachyderm/subscriptions","organizations_url":"https://api.github.com/users/pachyderm/orgs","repos_url":"https://api.github.com/users/pachyderm/repos","events_url":"https://api.github.com/users/pachyderm/events{/privacy}","received_events_url":"https://api.github.com/users/pachyderm/received_events","type":"Organization","site_admin":false},"repo":{"id":23653453,"node_id":"MDEwOlJlcG9zaXRvcnkyMzY1MzQ1Mw==","name":"pachyderm","full_name":"pachyderm/pachyderm","private":false,"owner":{"login":"pachyderm","id":10432478,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNDMyNDc4","avatar_url":"https://avatars3.githubusercontent.com/u/10432478?v=4","gravatar_id":"","url":"https://api.github.com/users/pachyderm","html_url":"https://github.com/pachyderm","followers_url":"https://api.github.com/users/pachyderm/followers","following_url":"https://api.github.com/users/pachyderm/following{/other_user}","gists_url":"https://api.github.com/users/pachyderm/gists{/gist_id}","starred_url":"https://api.github.com/users/pachyderm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pachyderm/subscriptions","organizations_url":"https://api.github.com/users/pachyderm/orgs","repos_url":"https://api.github.com/users/pachyderm/repos","events_url":"https://api.github.com/users/pachyderm/events{/privacy}","received_events_url":"https://api.github.com/users/pachyderm/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/pachyderm/pachyderm","description":"Reproducible Data Science at Scale!","fork":false,"url":"https://api.github.com/repos/pachyderm/pachyderm","forks_url":"https://api.github.com/repos/pachyderm/pachyderm/forks","keys_url":"https://api.github.com/repos/pachyderm/pachyderm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pachyderm/pachyderm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pachyderm/pachyderm/teams","hooks_url":"https://api.github.com/repos/pachyderm/pachyderm/hooks","issue_events_url":"https://api.github.com/repos/pachyderm/pachyderm/issues/events{/number}","events_url":"https://api.github.com/repos/pachyderm/pachyderm/events","assignees_url":"https://api.github.com/repos/pachyderm/pachyderm/assignees{/user}","branches_url":"https://api.github.com/repos/pachyderm/pachyderm/branches{/branch}","tags_url":"https://api.github.com/repos/pachyderm/pachyderm/tags","blobs_url":"https://api.github.com/repos/pachyderm/pachyderm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pachyderm/pachyderm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pachyderm/pachyderm/git/refs{/sha}","trees_url":"https://api.github.com/repos/pachyderm/pachyderm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pachyderm/pachyderm/statuses/{sha}","languages_url":"https://api.github.com/repos/pachyderm/pachyderm/languages","stargazers_url":"https://api.github.com/repos/pachyderm/pachyderm/stargazers","contributors_url":"https://api.github.com/repos/pachyderm/pachyderm/contributors","subscribers_url":"https://api.github.com/repos/pachyderm/pachyderm/subscribers","subscription_url":"https://api.github.com/repos/pachyderm/pachyderm/subscription","commits_url":"https://api.github.com/repos/pachyderm/pachyderm/commits{/sha}","git_commits_url":"https://api.github.com/repos/pachyderm/pachyderm/git/commits{/sha}","comments_url":"https://api.github.com/repos/pachyderm/pachyderm/comments{/number}","issue_comment_url":"https://api.github.com/repos/pachyderm/pachyderm/issues/comments{/number}","contents_url":"https://api.github.com/repos/pachyderm/pachyderm/contents/{+path}","compare_url":"https://api.github.com/repos/pachyderm/pachyderm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pachyderm/pachyderm/merges","archive_url":"https://api.github.com/repos/pachyderm/pachyderm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pachyderm/pachyderm/downloads","issues_url":"https://api.github.com/repos/pachyderm/pachyderm/issues{/number}","pulls_url":"https://api.github.com/repos/pachyderm/pachyderm/pulls{/number}","milestones_url":"https://api.github.com/repos/pachyderm/pachyderm/milestones{/number}","notifications_url":"https://api.github.com/repos/pachyderm/pachyderm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pachyderm/pachyderm/labels{/name}","releases_url":"https://api.github.com/repos/pachyderm/pachyderm/releases{/id}","deployments_url":"https://api.github.com/repos/pachyderm/pachyderm/deployments","created_at":"2014-09-04T07:50:02Z","updated_at":"2018-10-26T16:49:38Z","pushed_at":"2018-10-26T21:21:35Z","git_url":"git://github.com/pachyderm/pachyderm.git","ssh_url":"git@github.com:pachyderm/pachyderm.git","clone_url":"https://github.com/pachyderm/pachyderm.git","svn_url":"https://github.com/pachyderm/pachyderm","homepage":"http://pachyderm.io","size":119582,"stargazers_count":3147,"watchers_count":3147,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":304,"mirror_url":null,"archived":false,"open_issues_count":436,"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":304,"open_issues":436,"watchers":3147,"default_branch":"master"}},"base":{"label":"pachyderm:master","ref":"master","sha":"a2011052ace305e6d9a9ac5d0fcb33078392b188","user":{"login":"pachyderm","id":10432478,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNDMyNDc4","avatar_url":"https://avatars3.githubusercontent.com/u/10432478?v=4","gravatar_id":"","url":"https://api.github.com/users/pachyderm","html_url":"https://github.com/pachyderm","followers_url":"https://api.github.com/users/pachyderm/followers","following_url":"https://api.github.com/users/pachyderm/following{/other_user}","gists_url":"https://api.github.com/users/pachyderm/gists{/gist_id}","starred_url":"https://api.github.com/users/pachyderm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pachyderm/subscriptions","organizations_url":"https://api.github.com/users/pachyderm/orgs","repos_url":"https://api.github.com/users/pachyderm/repos","events_url":"https://api.github.com/users/pachyderm/events{/privacy}","received_events_url":"https://api.github.com/users/pachyderm/received_events","type":"Organization","site_admin":false},"repo":{"id":23653453,"node_id":"MDEwOlJlcG9zaXRvcnkyMzY1MzQ1Mw==","name":"pachyderm","full_name":"pachyderm/pachyderm","private":false,"owner":{"login":"pachyderm","id":10432478,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNDMyNDc4","avatar_url":"https://avatars3.githubusercontent.com/u/10432478?v=4","gravatar_id":"","url":"https://api.github.com/users/pachyderm","html_url":"https://github.com/pachyderm","followers_url":"https://api.github.com/users/pachyderm/followers","following_url":"https://api.github.com/users/pachyderm/following{/other_user}","gists_url":"https://api.github.com/users/pachyderm/gists{/gist_id}","starred_url":"https://api.github.com/users/pachyderm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pachyderm/subscriptions","organizations_url":"https://api.github.com/users/pachyderm/orgs","repos_url":"https://api.github.com/users/pachyderm/repos","events_url":"https://api.github.com/users/pachyderm/events{/privacy}","received_events_url":"https://api.github.com/users/pachyderm/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/pachyderm/pachyderm","description":"Reproducible Data Science at Scale!","fork":false,"url":"https://api.github.com/repos/pachyderm/pachyderm","forks_url":"https://api.github.com/repos/pachyderm/pachyderm/forks","keys_url":"https://api.github.com/repos/pachyderm/pachyderm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pachyderm/pachyderm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pachyderm/pachyderm/teams","hooks_url":"https://api.github.com/repos/pachyderm/pachyderm/hooks","issue_events_url":"https://api.github.com/repos/pachyderm/pachyderm/issues/events{/number}","events_url":"https://api.github.com/repos/pachyderm/pachyderm/events","assignees_url":"https://api.github.com/repos/pachyderm/pachyderm/assignees{/user}","branches_url":"https://api.github.com/repos/pachyderm/pachyderm/branches{/branch}","tags_url":"https://api.github.com/repos/pachyderm/pachyderm/tags","blobs_url":"https://api.github.com/repos/pachyderm/pachyderm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pachyderm/pachyderm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pachyderm/pachyderm/git/refs{/sha}","trees_url":"https://api.github.com/repos/pachyderm/pachyderm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pachyderm/pachyderm/statuses/{sha}","languages_url":"https://api.github.com/repos/pachyderm/pachyderm/languages","stargazers_url":"https://api.github.com/repos/pachyderm/pachyderm/stargazers","contributors_url":"https://api.github.com/repos/pachyderm/pachyderm/contributors","subscribers_url":"https://api.github.com/repos/pachyderm/pachyderm/subscribers","subscription_url":"https://api.github.com/repos/pachyderm/pachyderm/subscription","commits_url":"https://api.github.com/repos/pachyderm/pachyderm/commits{/sha}","git_commits_url":"https://api.github.com/repos/pachyderm/pachyderm/git/commits{/sha}","comments_url":"https://api.github.com/repos/pachyderm/pachyderm/comments{/number}","issue_comment_url":"https://api.github.com/repos/pachyderm/pachyderm/issues/comments{/number}","contents_url":"https://api.github.com/repos/pachyderm/pachyderm/contents/{+path}","compare_url":"https://api.github.com/repos/pachyderm/pachyderm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pachyderm/pachyderm/merges","archive_url":"https://api.github.com/repos/pachyderm/pachyderm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pachyderm/pachyderm/downloads","issues_url":"https://api.github.com/repos/pachyderm/pachyderm/issues{/number}","pulls_url":"https://api.github.com/repos/pachyderm/pachyderm/pulls{/number}","milestones_url":"https://api.github.com/repos/pachyderm/pachyderm/milestones{/number}","notifications_url":"https://api.github.com/repos/pachyderm/pachyderm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pachyderm/pachyderm/labels{/name}","releases_url":"https://api.github.com/repos/pachyderm/pachyderm/releases{/id}","deployments_url":"https://api.github.com/repos/pachyderm/pachyderm/deployments","created_at":"2014-09-04T07:50:02Z","updated_at":"2018-10-26T16:49:38Z","pushed_at":"2018-10-26T21:21:35Z","git_url":"git://github.com/pachyderm/pachyderm.git","ssh_url":"git@github.com:pachyderm/pachyderm.git","clone_url":"https://github.com/pachyderm/pachyderm.git","svn_url":"https://github.com/pachyderm/pachyderm","homepage":"http://pachyderm.io","size":119582,"stargazers_count":3147,"watchers_count":3147,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":304,"mirror_url":null,"archived":false,"open_issues_count":436,"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":304,"open_issues":436,"watchers":3147,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196"},"html":{"href":"https://github.com/pachyderm/pachyderm/pull/3196"},"issue":{"href":"https://api.github.com/repos/pachyderm/pachyderm/issues/3196"},"comments":{"href":"https://api.github.com/repos/pachyderm/pachyderm/issues/3196/comments"},"review_comments":{"href":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196/comments"},"review_comment":{"href":"https://api.github.com/repos/pachyderm/pachyderm/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pachyderm/pachyderm/pulls/3196/commits"},"statuses":{"href":"https://api.github.com/repos/pachyderm/pachyderm/statuses/e71da72504a0e3ef4593205250f49618c4d54cd1"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jdoliner"}}