{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/19758","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/19758/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/19758/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/19758/events","html_url":"https://github.com/kubernetes/kubernetes/pull/19758","id":127014528,"number":19758,"title":"NodeSelector, HardNodeAffinity and SoftNodeAffinity implementation","user":{"login":"kevin-wangzefeng","id":6914660,"avatar_url":"https://avatars.githubusercontent.com/u/6914660?v=3","gravatar_id":"","url":"https://api.github.com/users/kevin-wangzefeng","html_url":"https://github.com/kevin-wangzefeng","followers_url":"https://api.github.com/users/kevin-wangzefeng/followers","following_url":"https://api.github.com/users/kevin-wangzefeng/following{/other_user}","gists_url":"https://api.github.com/users/kevin-wangzefeng/gists{/gist_id}","starred_url":"https://api.github.com/users/kevin-wangzefeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevin-wangzefeng/subscriptions","organizations_url":"https://api.github.com/users/kevin-wangzefeng/orgs","repos_url":"https://api.github.com/users/kevin-wangzefeng/repos","events_url":"https://api.github.com/users/kevin-wangzefeng/events{/privacy}","received_events_url":"https://api.github.com/users/kevin-wangzefeng/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/cla:%20yes","name":"cla: yes","color":"bfe5bf"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/kind/api-change","name":"kind/api-change","color":"c7def8"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/ok-to-merge","name":"ok-to-merge","color":"fbca04"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/size/XXL","name":"size/XXL","color":"ee0000"}],"state":"open","locked":false,"assignee":{"login":"davidopp","id":8264113,"avatar_url":"https://avatars.githubusercontent.com/u/8264113?v=3","gravatar_id":"","url":"https://api.github.com/users/davidopp","html_url":"https://github.com/davidopp","followers_url":"https://api.github.com/users/davidopp/followers","following_url":"https://api.github.com/users/davidopp/following{/other_user}","gists_url":"https://api.github.com/users/davidopp/gists{/gist_id}","starred_url":"https://api.github.com/users/davidopp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidopp/subscriptions","organizations_url":"https://api.github.com/users/davidopp/orgs","repos_url":"https://api.github.com/users/davidopp/repos","events_url":"https://api.github.com/users/davidopp/events{/privacy}","received_events_url":"https://api.github.com/users/davidopp/received_events","type":"User","site_admin":false},"milestone":null,"comments":44,"created_at":"2016-01-16T10:14:56Z","updated_at":"2016-01-27T19:36:27Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19758","html_url":"https://github.com/kubernetes/kubernetes/pull/19758","diff_url":"https://github.com/kubernetes/kubernetes/pull/19758.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/19758.patch"},"body":"ref #18261 \r\n\r\nThis PR contains the implementation of:\r\n1. NodeSelector, HardNodeAffinity and SoftNodeAffinity API types and validation\r\n2. api helper to covert NodeSelector to labels.selector\r\n3. Scheduling predicates update, supporting HardNodeAffinity\r\n4. New scheduling priority algorithm take SoftNodeAffinity into account"},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/175814338","html_url":"https://github.com/kubernetes/kubernetes/pull/19758#issuecomment-175814338","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/19758","id":175814338,"user":{"login":"kevin-wangzefeng","id":6914660,"avatar_url":"https://avatars.githubusercontent.com/u/6914660?v=3","gravatar_id":"","url":"https://api.github.com/users/kevin-wangzefeng","html_url":"https://github.com/kevin-wangzefeng","followers_url":"https://api.github.com/users/kevin-wangzefeng/followers","following_url":"https://api.github.com/users/kevin-wangzefeng/following{/other_user}","gists_url":"https://api.github.com/users/kevin-wangzefeng/gists{/gist_id}","starred_url":"https://api.github.com/users/kevin-wangzefeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kevin-wangzefeng/subscriptions","organizations_url":"https://api.github.com/users/kevin-wangzefeng/orgs","repos_url":"https://api.github.com/users/kevin-wangzefeng/repos","events_url":"https://api.github.com/users/kevin-wangzefeng/events{/privacy}","received_events_url":"https://api.github.com/users/kevin-wangzefeng/received_events","type":"User","site_admin":false},"created_at":"2016-01-27T19:36:27Z","updated_at":"2016-01-27T19:36:27Z","body":"> It probably doesn't make sense to do validation for JSON embedded in an annotation. Maybe just skip it.\r\n\r\nJust to be clear, do you mean we skip validation, or we do the validation at run time?\r\nWith user's perspective, I think both approaches act the same:\r\n1. User can create a pod with an invalid/misconfigured affinity in annotations without getting any error info.\r\n2. The invalid/misconfigured affinity in pod.Annotations will sure make the pod unschedulable at scheduling time."}}