{"action":"created","issue":{"url":"https://api.github.com/repos/juju/juju/issues/4812","repository_url":"https://api.github.com/repos/juju/juju","labels_url":"https://api.github.com/repos/juju/juju/issues/4812/labels{/name}","comments_url":"https://api.github.com/repos/juju/juju/issues/4812/comments","events_url":"https://api.github.com/repos/juju/juju/issues/4812/events","html_url":"https://github.com/juju/juju/pull/4812","id":142243236,"number":4812,"title":"cmd/juju/commands: refactor bootstrap retry logic","user":{"login":"davecheney","id":7171,"avatar_url":"https://avatars.githubusercontent.com/u/7171?v=3","gravatar_id":"","url":"https://api.github.com/users/davecheney","html_url":"https://github.com/davecheney","followers_url":"https://api.github.com/users/davecheney/followers","following_url":"https://api.github.com/users/davecheney/following{/other_user}","gists_url":"https://api.github.com/users/davecheney/gists{/gist_id}","starred_url":"https://api.github.com/users/davecheney/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davecheney/subscriptions","organizations_url":"https://api.github.com/users/davecheney/orgs","repos_url":"https://api.github.com/users/davecheney/repos","events_url":"https://api.github.com/users/davecheney/events{/privacy}","received_events_url":"https://api.github.com/users/davecheney/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-03-21T03:14:48Z","updated_at":"2016-03-21T20:37:56Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/juju/juju/pulls/4812","html_url":"https://github.com/juju/juju/pull/4812","diff_url":"https://github.com/juju/juju/pull/4812.diff","patch_url":"https://github.com/juju/juju/pull/4812.patch"},"body":"Refactor bootstrap retry logic in preparation for making it a general\r\nfunction of any API call.\r\n\r\nThis refactor is made a little more complex by the contract for\r\nbootstrap that says the method will return the last error in the retry\r\nloop -- but at least we wrap it with an explanation of what caused the\r\nerror.\r\n\r\nTested with various manual boostrap scenarios including terminating the\r\nmachine during bootstrap.\n\n(Review request: http://reviews.vapour.ws/r/4254/)"},"comment":{"url":"https://api.github.com/repos/juju/juju/issues/comments/199467994","html_url":"https://github.com/juju/juju/pull/4812#issuecomment-199467994","issue_url":"https://api.github.com/repos/juju/juju/issues/4812","id":199467994,"user":{"login":"davecheney","id":7171,"avatar_url":"https://avatars.githubusercontent.com/u/7171?v=3","gravatar_id":"","url":"https://api.github.com/users/davecheney","html_url":"https://github.com/davecheney","followers_url":"https://api.github.com/users/davecheney/followers","following_url":"https://api.github.com/users/davecheney/following{/other_user}","gists_url":"https://api.github.com/users/davecheney/gists{/gist_id}","starred_url":"https://api.github.com/users/davecheney/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davecheney/subscriptions","organizations_url":"https://api.github.com/users/davecheney/orgs","repos_url":"https://api.github.com/users/davecheney/repos","events_url":"https://api.github.com/users/davecheney/events{/privacy}","received_events_url":"https://api.github.com/users/davecheney/received_events","type":"User","site_admin":false},"created_at":"2016-03-21T20:37:56Z","updated_at":"2016-03-21T20:37:56Z","body":"$$merge$$"}}