{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kops/pulls/comments/232469820","pull_request_review_id":173679301,"id":232469820,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMjQ2OTgyMA==","diff_hunk":"@@ -234,23 +235,23 @@ func (v *ValidationCluster) validateNodes(cloudGroups map[string]*cloudinstances\n \t\t\t\tcontinue\n \t\t\t}\n \n-\t\t\trole := util.GetNodeRole(node)\n-\t\t\tif role == \"\" {\n-\t\t\t\trole = \"node\"\n+\t\t\troles := util.GetNodeRoles(node)\n+\t\t\t// Default to node\n+\t\t\tif roles == \"\" {\n+\t\t\t\troles = \"node\"\n \t\t\t}\n \n \t\t\tn := &ValidationNode{\n \t\t\t\tName:     node.Name,\n \t\t\t\tZone:     node.ObjectMeta.Labels[\"failure-domain.beta.kubernetes.io/zone\"],\n \t\t\t\tHostname: node.ObjectMeta.Labels[\"kubernetes.io/hostname\"],\n-\t\t\t\tRole:     role,\n+\t\t\t\tRoles:    roles,\n \t\t\t\tStatus:   getNodeReadyStatus(node),\n \t\t\t}\n \n \t\t\tready := isNodeReady(node)\n \n-\t\t\t// TODO: Use instance group role instead...\n-\t\t\tif n.Role == \"master\" {\n+\t\t\tif strings.Contains(n.Roles, \"master\") {","path":"pkg/validation/validate_cluster.go","position":43,"original_position":43,"commit_id":"889e3f888405fbfd2ca6d79a3b7517a5aa609465","original_commit_id":"889e3f888405fbfd2ca6d79a3b7517a5aa609465","user":{"login":"justinsb","id":100893,"node_id":"MDQ6VXNlcjEwMDg5Mw==","avatar_url":"https://avatars2.githubusercontent.com/u/100893?v=4","gravatar_id":"","url":"https://api.github.com/users/justinsb","html_url":"https://github.com/justinsb","followers_url":"https://api.github.com/users/justinsb/followers","following_url":"https://api.github.com/users/justinsb/following{/other_user}","gists_url":"https://api.github.com/users/justinsb/gists{/gist_id}","starred_url":"https://api.github.com/users/justinsb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/justinsb/subscriptions","organizations_url":"https://api.github.com/users/justinsb/orgs","repos_url":"https://api.github.com/users/justinsb/repos","events_url":"https://api.github.com/users/justinsb/events{/privacy}","received_events_url":"https://api.github.com/users/justinsb/received_events","type":"User","site_admin":false},"body":"Using a set or slice also means we don't break if e.g. some creates a role called \"notmaster\" :-)","created_at":"2018-11-10T23:49:35Z","updated_at":"2018-11-10T23:52:04Z","html_url":"https://github.com/kubernetes/kops/pull/5991#discussion_r232469820","pull_request_url":"https://api.github.com/repos/kubernetes/kops/pulls/5991","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/comments/232469820"},"html":{"href":"https://github.com/kubernetes/kops/pull/5991#discussion_r232469820"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/5991"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kops/pulls/5991","id":224918540,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI0OTE4NTQw","html_url":"https://github.com/kubernetes/kops/pull/5991","diff_url":"https://github.com/kubernetes/kops/pull/5991.diff","patch_url":"https://github.com/kubernetes/kops/pull/5991.patch","issue_url":"https://api.github.com/repos/kubernetes/kops/issues/5991","number":5991,"state":"open","locked":false,"title":"fix to allow multiple node roles","user":{"login":"phspagiari","id":968339,"node_id":"MDQ6VXNlcjk2ODMzOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/968339?v=4","gravatar_id":"","url":"https://api.github.com/users/phspagiari","html_url":"https://github.com/phspagiari","followers_url":"https://api.github.com/users/phspagiari/followers","following_url":"https://api.github.com/users/phspagiari/following{/other_user}","gists_url":"https://api.github.com/users/phspagiari/gists{/gist_id}","starred_url":"https://api.github.com/users/phspagiari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phspagiari/subscriptions","organizations_url":"https://api.github.com/users/phspagiari/orgs","repos_url":"https://api.github.com/users/phspagiari/repos","events_url":"https://api.github.com/users/phspagiari/events{/privacy}","received_events_url":"https://api.github.com/users/phspagiari/received_events","type":"User","site_admin":false},"body":"This PR closes #5871: Only one role per node is allowed. \r\n\r\nWith this change it's possible to add labels like: `node-role.kubernetes.io/spot: \"\"` that, for example [k8s-spot-rescheduler](https://github.com/pusher/k8s-spot-rescheduler) use.","created_at":"2018-10-23T07:02:46Z","updated_at":"2018-11-10T23:52:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"253d5f5a52d6055b646f466475ff5d1a436cc4ca","assignee":null,"assignees":[],"requested_reviewers":[{"login":"robinpercy","id":134012,"node_id":"MDQ6VXNlcjEzNDAxMg==","avatar_url":"https://avatars3.githubusercontent.com/u/134012?v=4","gravatar_id":"","url":"https://api.github.com/users/robinpercy","html_url":"https://github.com/robinpercy","followers_url":"https://api.github.com/users/robinpercy/followers","following_url":"https://api.github.com/users/robinpercy/following{/other_user}","gists_url":"https://api.github.com/users/robinpercy/gists{/gist_id}","starred_url":"https://api.github.com/users/robinpercy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robinpercy/subscriptions","organizations_url":"https://api.github.com/users/robinpercy/orgs","repos_url":"https://api.github.com/users/robinpercy/repos","events_url":"https://api.github.com/users/robinpercy/events{/privacy}","received_events_url":"https://api.github.com/users/robinpercy/received_events","type":"User","site_admin":false},{"login":"chrisz100","id":406863,"node_id":"MDQ6VXNlcjQwNjg2Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/406863?v=4","gravatar_id":"","url":"https://api.github.com/users/chrisz100","html_url":"https://github.com/chrisz100","followers_url":"https://api.github.com/users/chrisz100/followers","following_url":"https://api.github.com/users/chrisz100/following{/other_user}","gists_url":"https://api.github.com/users/chrisz100/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisz100/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisz100/subscriptions","organizations_url":"https://api.github.com/users/chrisz100/orgs","repos_url":"https://api.github.com/users/chrisz100/repos","events_url":"https://api.github.com/users/chrisz100/events{/privacy}","received_events_url":"https://api.github.com/users/chrisz100/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":485059302,"node_id":"MDU6TGFiZWw0ODUwNTkzMDI=","url":"https://api.github.com/repos/kubernetes/kops/labels/cncf-cla:%20yes","name":"cncf-cla: yes","color":"bfe5bf","default":false},{"id":675982814,"node_id":"MDU6TGFiZWw2NzU5ODI4MTQ=","url":"https://api.github.com/repos/kubernetes/kops/labels/size/M","name":"size/M","color":"eebb00","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/kops/pulls/5991/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kops/pulls/5991/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kops/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kops/issues/5991/comments","statuses_url":"https://api.github.com/repos/kubernetes/kops/statuses/889e3f888405fbfd2ca6d79a3b7517a5aa609465","head":{"label":"phspagiari:node_multiple_roles","ref":"node_multiple_roles","sha":"889e3f888405fbfd2ca6d79a3b7517a5aa609465","user":{"login":"phspagiari","id":968339,"node_id":"MDQ6VXNlcjk2ODMzOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/968339?v=4","gravatar_id":"","url":"https://api.github.com/users/phspagiari","html_url":"https://github.com/phspagiari","followers_url":"https://api.github.com/users/phspagiari/followers","following_url":"https://api.github.com/users/phspagiari/following{/other_user}","gists_url":"https://api.github.com/users/phspagiari/gists{/gist_id}","starred_url":"https://api.github.com/users/phspagiari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phspagiari/subscriptions","organizations_url":"https://api.github.com/users/phspagiari/orgs","repos_url":"https://api.github.com/users/phspagiari/repos","events_url":"https://api.github.com/users/phspagiari/events{/privacy}","received_events_url":"https://api.github.com/users/phspagiari/received_events","type":"User","site_admin":false},"repo":{"id":154269244,"node_id":"MDEwOlJlcG9zaXRvcnkxNTQyNjkyNDQ=","name":"kops","full_name":"phspagiari/kops","private":false,"owner":{"login":"phspagiari","id":968339,"node_id":"MDQ6VXNlcjk2ODMzOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/968339?v=4","gravatar_id":"","url":"https://api.github.com/users/phspagiari","html_url":"https://github.com/phspagiari","followers_url":"https://api.github.com/users/phspagiari/followers","following_url":"https://api.github.com/users/phspagiari/following{/other_user}","gists_url":"https://api.github.com/users/phspagiari/gists{/gist_id}","starred_url":"https://api.github.com/users/phspagiari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phspagiari/subscriptions","organizations_url":"https://api.github.com/users/phspagiari/orgs","repos_url":"https://api.github.com/users/phspagiari/repos","events_url":"https://api.github.com/users/phspagiari/events{/privacy}","received_events_url":"https://api.github.com/users/phspagiari/received_events","type":"User","site_admin":false},"html_url":"https://github.com/phspagiari/kops","description":"Kubernetes Operations (kops) - Production Grade K8s Installation, Upgrades, and Management","fork":true,"url":"https://api.github.com/repos/phspagiari/kops","forks_url":"https://api.github.com/repos/phspagiari/kops/forks","keys_url":"https://api.github.com/repos/phspagiari/kops/keys{/key_id}","collaborators_url":"https://api.github.com/repos/phspagiari/kops/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/phspagiari/kops/teams","hooks_url":"https://api.github.com/repos/phspagiari/kops/hooks","issue_events_url":"https://api.github.com/repos/phspagiari/kops/issues/events{/number}","events_url":"https://api.github.com/repos/phspagiari/kops/events","assignees_url":"https://api.github.com/repos/phspagiari/kops/assignees{/user}","branches_url":"https://api.github.com/repos/phspagiari/kops/branches{/branch}","tags_url":"https://api.github.com/repos/phspagiari/kops/tags","blobs_url":"https://api.github.com/repos/phspagiari/kops/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/phspagiari/kops/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/phspagiari/kops/git/refs{/sha}","trees_url":"https://api.github.com/repos/phspagiari/kops/git/trees{/sha}","statuses_url":"https://api.github.com/repos/phspagiari/kops/statuses/{sha}","languages_url":"https://api.github.com/repos/phspagiari/kops/languages","stargazers_url":"https://api.github.com/repos/phspagiari/kops/stargazers","contributors_url":"https://api.github.com/repos/phspagiari/kops/contributors","subscribers_url":"https://api.github.com/repos/phspagiari/kops/subscribers","subscription_url":"https://api.github.com/repos/phspagiari/kops/subscription","commits_url":"https://api.github.com/repos/phspagiari/kops/commits{/sha}","git_commits_url":"https://api.github.com/repos/phspagiari/kops/git/commits{/sha}","comments_url":"https://api.github.com/repos/phspagiari/kops/comments{/number}","issue_comment_url":"https://api.github.com/repos/phspagiari/kops/issues/comments{/number}","contents_url":"https://api.github.com/repos/phspagiari/kops/contents/{+path}","compare_url":"https://api.github.com/repos/phspagiari/kops/compare/{base}...{head}","merges_url":"https://api.github.com/repos/phspagiari/kops/merges","archive_url":"https://api.github.com/repos/phspagiari/kops/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/phspagiari/kops/downloads","issues_url":"https://api.github.com/repos/phspagiari/kops/issues{/number}","pulls_url":"https://api.github.com/repos/phspagiari/kops/pulls{/number}","milestones_url":"https://api.github.com/repos/phspagiari/kops/milestones{/number}","notifications_url":"https://api.github.com/repos/phspagiari/kops/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/phspagiari/kops/labels{/name}","releases_url":"https://api.github.com/repos/phspagiari/kops/releases{/id}","deployments_url":"https://api.github.com/repos/phspagiari/kops/deployments","created_at":"2018-10-23T05:45:51Z","updated_at":"2018-10-23T05:45:58Z","pushed_at":"2018-10-23T15:21:15Z","git_url":"git://github.com/phspagiari/kops.git","ssh_url":"git@github.com:phspagiari/kops.git","clone_url":"https://github.com/phspagiari/kops.git","svn_url":"https://github.com/phspagiari/kops","homepage":"","size":188308,"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":{"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":"kubernetes:master","ref":"master","sha":"234bfe8d1608ca258c5869648340ff114f12ff62","user":{"login":"kubernetes","id":13629408,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNjI5NDA4","avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":62091339,"node_id":"MDEwOlJlcG9zaXRvcnk2MjA5MTMzOQ==","name":"kops","full_name":"kubernetes/kops","private":false,"owner":{"login":"kubernetes","id":13629408,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNjI5NDA4","avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/kubernetes/kops","description":"Kubernetes Operations (kops) - Production Grade K8s Installation, Upgrades, and Management","fork":false,"url":"https://api.github.com/repos/kubernetes/kops","forks_url":"https://api.github.com/repos/kubernetes/kops/forks","keys_url":"https://api.github.com/repos/kubernetes/kops/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/kops/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/kops/teams","hooks_url":"https://api.github.com/repos/kubernetes/kops/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/kops/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/kops/events","assignees_url":"https://api.github.com/repos/kubernetes/kops/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/kops/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/kops/tags","blobs_url":"https://api.github.com/repos/kubernetes/kops/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/kops/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/kops/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/kops/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/kops/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/kops/languages","stargazers_url":"https://api.github.com/repos/kubernetes/kops/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/kops/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/kops/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/kops/subscription","commits_url":"https://api.github.com/repos/kubernetes/kops/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/kops/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/kops/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/kops/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/kops/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/kops/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/kops/merges","archive_url":"https://api.github.com/repos/kubernetes/kops/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/kops/downloads","issues_url":"https://api.github.com/repos/kubernetes/kops/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/kops/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/kops/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/kops/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/kops/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/kops/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/kops/deployments","created_at":"2016-06-27T22:01:15Z","updated_at":"2018-11-10T23:27:59Z","pushed_at":"2018-11-10T23:27:43Z","git_url":"git://github.com/kubernetes/kops.git","ssh_url":"git@github.com:kubernetes/kops.git","clone_url":"https://github.com/kubernetes/kops.git","svn_url":"https://github.com/kubernetes/kops","homepage":"","size":200634,"stargazers_count":7137,"watchers_count":7137,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2098,"mirror_url":null,"archived":false,"open_issues_count":541,"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":2098,"open_issues":541,"watchers":7137,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/5991"},"html":{"href":"https://github.com/kubernetes/kops/pull/5991"},"issue":{"href":"https://api.github.com/repos/kubernetes/kops/issues/5991"},"comments":{"href":"https://api.github.com/repos/kubernetes/kops/issues/5991/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/5991/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kops/pulls/5991/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kops/statuses/889e3f888405fbfd2ca6d79a3b7517a5aa609465"}},"author_association":"NONE"}}
{"actor":{"display_login":"justinsb"}}