{"action":"created","issue":{"url":"https://api.github.com/repos/rundeck/rundeck/issues/2014","repository_url":"https://api.github.com/repos/rundeck/rundeck","labels_url":"https://api.github.com/repos/rundeck/rundeck/issues/2014/labels{/name}","comments_url":"https://api.github.com/repos/rundeck/rundeck/issues/2014/comments","events_url":"https://api.github.com/repos/rundeck/rundeck/issues/2014/events","html_url":"https://github.com/rundeck/rundeck/pull/2014","id":171689191,"number":2014,"title":"Schedule owner plus heartbeat","user":{"login":"jtobard","id":2894508,"avatar_url":"https://avatars.githubusercontent.com/u/2894508?v=3","gravatar_id":"","url":"https://api.github.com/users/jtobard","html_url":"https://github.com/jtobard","followers_url":"https://api.github.com/users/jtobard/followers","following_url":"https://api.github.com/users/jtobard/following{/other_user}","gists_url":"https://api.github.com/users/jtobard/gists{/gist_id}","starred_url":"https://api.github.com/users/jtobard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jtobard/subscriptions","organizations_url":"https://api.github.com/users/jtobard/orgs","repos_url":"https://api.github.com/users/jtobard/repos","events_url":"https://api.github.com/users/jtobard/events{/privacy}","received_events_url":"https://api.github.com/users/jtobard/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2016-08-17T15:34:20Z","updated_at":"2016-08-17T16:32:49Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rundeck/rundeck/pulls/2014","html_url":"https://github.com/rundeck/rundeck/pull/2014","diff_url":"https://github.com/rundeck/rundeck/pull/2014.diff","patch_url":"https://github.com/rundeck/rundeck/pull/2014.patch"},"body":"Code for cluster mode, enable a heartbeat every 5 minutes in a QuartzJob.\r\nThis heartbeat first insert or update a message with his `serverNodeUUID` and the datetime of the pulse, this way when the admin create or update a job can see the list of active nodes to select one and assign it to the job, instead of the actual behavior (the actual node is assigned by default).\r\nBy default the actual node came pre selected, emulating the actual behavior.\r\nAlso if the job is edited by API call, and the `serverNodeUUID` is omitted, the actual node is selected by default.\r\n\r\nWhen the job is assigned to another node, is marked with `!scheduleOwnerClaimed` ans a message is sent to the message table, this way in the next heartbeat, every node check if are any node assigned to him and wit `!scheduleOwnerClaimed`, it changes the value in the job and schedule it as usual.\r\n\r\nAlso added  `nodeSummary.reload();` in **rundeckapp/grails-app/views/scheduledExecution/_edit.gsp**. This fix a problem in the edit Job view, no saved node filters are displayed."},"comment":{"url":"https://api.github.com/repos/rundeck/rundeck/issues/comments/240469095","html_url":"https://github.com/rundeck/rundeck/pull/2014#issuecomment-240469095","issue_url":"https://api.github.com/repos/rundeck/rundeck/issues/2014","id":240469095,"user":{"login":"gschueler","id":55603,"avatar_url":"https://avatars.githubusercontent.com/u/55603?v=3","gravatar_id":"","url":"https://api.github.com/users/gschueler","html_url":"https://github.com/gschueler","followers_url":"https://api.github.com/users/gschueler/followers","following_url":"https://api.github.com/users/gschueler/following{/other_user}","gists_url":"https://api.github.com/users/gschueler/gists{/gist_id}","starred_url":"https://api.github.com/users/gschueler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gschueler/subscriptions","organizations_url":"https://api.github.com/users/gschueler/orgs","repos_url":"https://api.github.com/users/gschueler/repos","events_url":"https://api.github.com/users/gschueler/events{/privacy}","received_events_url":"https://api.github.com/users/gschueler/received_events","type":"User","site_admin":false},"created_at":"2016-08-17T16:32:49Z","updated_at":"2016-08-17T16:32:49Z","body":"a unit test for that would be: transfer to node A, verify it was taken over, transfer to node B, verify node A did not take over again"}}
{"actor":{"display_login":"gschueler"}}