{"action":"created","issue":{"url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2098","labels_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2098/labels{/name}","comments_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2098/comments","events_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2098/events","html_url":"https://github.com/ClusterHQ/flocker/pull/2098","id":114011447,"number":2098,"title":"[FLOC-3343] No default reactor in retry helpers","user":{"login":"jml","id":125674,"avatar_url":"https://avatars.githubusercontent.com/u/125674?v=3","gravatar_id":"","url":"https://api.github.com/users/jml","html_url":"https://github.com/jml","followers_url":"https://api.github.com/users/jml/followers","following_url":"https://api.github.com/users/jml/following{/other_user}","gists_url":"https://api.github.com/users/jml/gists{/gist_id}","starred_url":"https://api.github.com/users/jml/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jml/subscriptions","organizations_url":"https://api.github.com/users/jml/orgs","repos_url":"https://api.github.com/users/jml/repos","events_url":"https://api.github.com/users/jml/events{/privacy}","received_events_url":"https://api.github.com/users/jml/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-10-29T09:30:42Z","updated_at":"2015-10-29T17:05:01Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ClusterHQ/flocker/pulls/2098","html_url":"https://github.com/ClusterHQ/flocker/pull/2098","diff_url":"https://github.com/ClusterHQ/flocker/pull/2098.diff","patch_url":"https://github.com/ClusterHQ/flocker/pull/2098.patch"},"body":"**This PR depends on FLOC-3340 (#2095)**\r\n\r\nOne of the review comments in FLOC-3340 (#2095) was that it's unsafe to have a reactor parameter that defaults to the global reactor. \r\n\r\nThis patch addresses that concern by:\r\n1. making `reactor` a non-optional parameter\r\n2. making it the _first_ parameter of `loop_until` and `retry_failure`\r\n3. updating all call sites to pass `reactor` explicitly\r\n\r\nAs a general principle, I've tried to only pass a concrete reactor in at the leafs. Thus, I've updated `flocker.provision._ssh._conch` to pass `reactor` through from its entry point, `make_dispatcher`, and also `flocker.node.testtools.wait_for_unit_state` to take a reactor.\r\n\r\n<!-- Reviewable:start -->\r\n[<img src=\"https://reviewable.io/review_button.png\" height=40 alt=\"Review on Reviewable\"/>](https://reviewable.io/reviews/clusterhq/flocker/2098)\r\n<!-- Reviewable:end -->\r\n"},"comment":{"url":"https://api.github.com/repos/ClusterHQ/flocker/issues/comments/152250371","html_url":"https://github.com/ClusterHQ/flocker/pull/2098#issuecomment-152250371","issue_url":"https://api.github.com/repos/ClusterHQ/flocker/issues/2098","id":152250371,"user":{"login":"ci-jenkins-clusterhq","id":15212684,"avatar_url":"https://avatars.githubusercontent.com/u/15212684?v=3","gravatar_id":"","url":"https://api.github.com/users/ci-jenkins-clusterhq","html_url":"https://github.com/ci-jenkins-clusterhq","followers_url":"https://api.github.com/users/ci-jenkins-clusterhq/followers","following_url":"https://api.github.com/users/ci-jenkins-clusterhq/following{/other_user}","gists_url":"https://api.github.com/users/ci-jenkins-clusterhq/gists{/gist_id}","starred_url":"https://api.github.com/users/ci-jenkins-clusterhq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ci-jenkins-clusterhq/subscriptions","organizations_url":"https://api.github.com/users/ci-jenkins-clusterhq/orgs","repos_url":"https://api.github.com/users/ci-jenkins-clusterhq/repos","events_url":"https://api.github.com/users/ci-jenkins-clusterhq/events{/privacy}","received_events_url":"https://api.github.com/users/ci-jenkins-clusterhq/received_events","type":"User","site_admin":false},"created_at":"2015-10-29T17:05:01Z","updated_at":"2015-10-29T17:05:01Z","body":"Can someone verify this PR?"}}