{"action":"created","comment":{"url":"https://api.github.com/repos/aio-libs/aioredis/pulls/comments/52441604","id":52441604,"diff_hunk":"@@ -52,7 +53,8 @@ class Redis(GenericCommandsMixin, StringCommandsMixin,\n             HashCommandsMixin, TransactionsCommandsMixin,\n             SortedSetCommandsMixin, ListCommandsMixin,\n             ScriptingCommandsMixin, ServerCommandsMixin,\n-            PubSubCommandsMixin, ClusterCommandsMixin):\n+            PubSubCommandsMixin, ClusterCommandsMixin,\n+            SentinelCommandsMixin):","path":"aioredis/commands/__init__.py","position":14,"original_position":14,"commit_id":"27426b196d5c72c8ed2660db72197accdb2caaf7","original_commit_id":"27426b196d5c72c8ed2660db72197accdb2caaf7","user":{"login":"popravich","id":323442,"avatar_url":"https://avatars.githubusercontent.com/u/323442?v=3","gravatar_id":"","url":"https://api.github.com/users/popravich","html_url":"https://github.com/popravich","followers_url":"https://api.github.com/users/popravich/followers","following_url":"https://api.github.com/users/popravich/following{/other_user}","gists_url":"https://api.github.com/users/popravich/gists{/gist_id}","starred_url":"https://api.github.com/users/popravich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/popravich/subscriptions","organizations_url":"https://api.github.com/users/popravich/orgs","repos_url":"https://api.github.com/users/popravich/repos","events_url":"https://api.github.com/users/popravich/events{/privacy}","received_events_url":"https://api.github.com/users/popravich/received_events","type":"User","site_admin":false},"body":"I don't think that `SentinelCommandsMixin` should be, well, mixed with other commands as Redis Sentinel is not a Redis. It support only few redis commands.\r\nSo I think it would be better to make separate `RedisSentinel` class and combine needed mixins","created_at":"2016-02-10T10:47:44Z","updated_at":"2016-02-10T10:47:44Z","html_url":"https://github.com/aio-libs/aioredis/pull/107#discussion_r52441604","pull_request_url":"https://api.github.com/repos/aio-libs/aioredis/pulls/107","_links":{"self":{"href":"https://api.github.com/repos/aio-libs/aioredis/pulls/comments/52441604"},"html":{"href":"https://github.com/aio-libs/aioredis/pull/107#discussion_r52441604"},"pull_request":{"href":"https://api.github.com/repos/aio-libs/aioredis/pulls/107"}}},"pull_request":{"url":"https://api.github.com/repos/aio-libs/aioredis/pulls/107","id":58825138,"html_url":"https://github.com/aio-libs/aioredis/pull/107","diff_url":"https://github.com/aio-libs/aioredis/pull/107.diff","patch_url":"https://github.com/aio-libs/aioredis/pull/107.patch","issue_url":"https://api.github.com/repos/aio-libs/aioredis/issues/107","number":107,"state":"open","locked":false,"title":"Sentinel support","user":{"login":"jettify","id":223335,"avatar_url":"https://avatars.githubusercontent.com/u/223335?v=3","gravatar_id":"","url":"https://api.github.com/users/jettify","html_url":"https://github.com/jettify","followers_url":"https://api.github.com/users/jettify/followers","following_url":"https://api.github.com/users/jettify/following{/other_user}","gists_url":"https://api.github.com/users/jettify/gists{/gist_id}","starred_url":"https://api.github.com/users/jettify/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jettify/subscriptions","organizations_url":"https://api.github.com/users/jettify/orgs","repos_url":"https://api.github.com/users/jettify/repos","events_url":"https://api.github.com/users/jettify/events{/privacy}","received_events_url":"https://api.github.com/users/jettify/received_events","type":"User","site_admin":false},"body":"Few months ago @bdrosen96 created sentinel support for aioredis. I have added minor code tweaks and just created this PR. This code we use successfully in production. \r\n\r\nThere are fail over tests cases, I need your advise on how automate them in context of travisci.","created_at":"2016-02-09T23:19:08Z","updated_at":"2016-02-10T10:47:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"03ac0616dd98105a27e2ac72c4084c54643f5f0d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/aio-libs/aioredis/pulls/107/commits","review_comments_url":"https://api.github.com/repos/aio-libs/aioredis/pulls/107/comments","review_comment_url":"https://api.github.com/repos/aio-libs/aioredis/pulls/comments{/number}","comments_url":"https://api.github.com/repos/aio-libs/aioredis/issues/107/comments","statuses_url":"https://api.github.com/repos/aio-libs/aioredis/statuses/27426b196d5c72c8ed2660db72197accdb2caaf7","head":{"label":"jettify:sentinel2","ref":"sentinel2","sha":"27426b196d5c72c8ed2660db72197accdb2caaf7","user":{"login":"jettify","id":223335,"avatar_url":"https://avatars.githubusercontent.com/u/223335?v=3","gravatar_id":"","url":"https://api.github.com/users/jettify","html_url":"https://github.com/jettify","followers_url":"https://api.github.com/users/jettify/followers","following_url":"https://api.github.com/users/jettify/following{/other_user}","gists_url":"https://api.github.com/users/jettify/gists{/gist_id}","starred_url":"https://api.github.com/users/jettify/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jettify/subscriptions","organizations_url":"https://api.github.com/users/jettify/orgs","repos_url":"https://api.github.com/users/jettify/repos","events_url":"https://api.github.com/users/jettify/events{/privacy}","received_events_url":"https://api.github.com/users/jettify/received_events","type":"User","site_admin":false},"repo":{"id":20896947,"name":"aioredis","full_name":"jettify/aioredis","owner":{"login":"jettify","id":223335,"avatar_url":"https://avatars.githubusercontent.com/u/223335?v=3","gravatar_id":"","url":"https://api.github.com/users/jettify","html_url":"https://github.com/jettify","followers_url":"https://api.github.com/users/jettify/followers","following_url":"https://api.github.com/users/jettify/following{/other_user}","gists_url":"https://api.github.com/users/jettify/gists{/gist_id}","starred_url":"https://api.github.com/users/jettify/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jettify/subscriptions","organizations_url":"https://api.github.com/users/jettify/orgs","repos_url":"https://api.github.com/users/jettify/repos","events_url":"https://api.github.com/users/jettify/events{/privacy}","received_events_url":"https://api.github.com/users/jettify/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jettify/aioredis","description":"asyncio (PEP 3156) Redis support","fork":true,"url":"https://api.github.com/repos/jettify/aioredis","forks_url":"https://api.github.com/repos/jettify/aioredis/forks","keys_url":"https://api.github.com/repos/jettify/aioredis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jettify/aioredis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jettify/aioredis/teams","hooks_url":"https://api.github.com/repos/jettify/aioredis/hooks","issue_events_url":"https://api.github.com/repos/jettify/aioredis/issues/events{/number}","events_url":"https://api.github.com/repos/jettify/aioredis/events","assignees_url":"https://api.github.com/repos/jettify/aioredis/assignees{/user}","branches_url":"https://api.github.com/repos/jettify/aioredis/branches{/branch}","tags_url":"https://api.github.com/repos/jettify/aioredis/tags","blobs_url":"https://api.github.com/repos/jettify/aioredis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jettify/aioredis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jettify/aioredis/git/refs{/sha}","trees_url":"https://api.github.com/repos/jettify/aioredis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jettify/aioredis/statuses/{sha}","languages_url":"https://api.github.com/repos/jettify/aioredis/languages","stargazers_url":"https://api.github.com/repos/jettify/aioredis/stargazers","contributors_url":"https://api.github.com/repos/jettify/aioredis/contributors","subscribers_url":"https://api.github.com/repos/jettify/aioredis/subscribers","subscription_url":"https://api.github.com/repos/jettify/aioredis/subscription","commits_url":"https://api.github.com/repos/jettify/aioredis/commits{/sha}","git_commits_url":"https://api.github.com/repos/jettify/aioredis/git/commits{/sha}","comments_url":"https://api.github.com/repos/jettify/aioredis/comments{/number}","issue_comment_url":"https://api.github.com/repos/jettify/aioredis/issues/comments{/number}","contents_url":"https://api.github.com/repos/jettify/aioredis/contents/{+path}","compare_url":"https://api.github.com/repos/jettify/aioredis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jettify/aioredis/merges","archive_url":"https://api.github.com/repos/jettify/aioredis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jettify/aioredis/downloads","issues_url":"https://api.github.com/repos/jettify/aioredis/issues{/number}","pulls_url":"https://api.github.com/repos/jettify/aioredis/pulls{/number}","milestones_url":"https://api.github.com/repos/jettify/aioredis/milestones{/number}","notifications_url":"https://api.github.com/repos/jettify/aioredis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jettify/aioredis/labels{/name}","releases_url":"https://api.github.com/repos/jettify/aioredis/releases{/id}","deployments_url":"https://api.github.com/repos/jettify/aioredis/deployments","created_at":"2014-06-16T19:03:58Z","updated_at":"2016-02-09T21:39:47Z","pushed_at":"2016-02-10T07:15:52Z","git_url":"git://github.com/jettify/aioredis.git","ssh_url":"git@github.com:jettify/aioredis.git","clone_url":"https://github.com/jettify/aioredis.git","svn_url":"https://github.com/jettify/aioredis","homepage":null,"size":526,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"aio-libs:master","ref":"master","sha":"1793cbe25c112e5457f2035796a4793106ccb5b4","user":{"login":"aio-libs","id":7049303,"avatar_url":"https://avatars.githubusercontent.com/u/7049303?v=3","gravatar_id":"","url":"https://api.github.com/users/aio-libs","html_url":"https://github.com/aio-libs","followers_url":"https://api.github.com/users/aio-libs/followers","following_url":"https://api.github.com/users/aio-libs/following{/other_user}","gists_url":"https://api.github.com/users/aio-libs/gists{/gist_id}","starred_url":"https://api.github.com/users/aio-libs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aio-libs/subscriptions","organizations_url":"https://api.github.com/users/aio-libs/orgs","repos_url":"https://api.github.com/users/aio-libs/repos","events_url":"https://api.github.com/users/aio-libs/events{/privacy}","received_events_url":"https://api.github.com/users/aio-libs/received_events","type":"Organization","site_admin":false},"repo":{"id":20163574,"name":"aioredis","full_name":"aio-libs/aioredis","owner":{"login":"aio-libs","id":7049303,"avatar_url":"https://avatars.githubusercontent.com/u/7049303?v=3","gravatar_id":"","url":"https://api.github.com/users/aio-libs","html_url":"https://github.com/aio-libs","followers_url":"https://api.github.com/users/aio-libs/followers","following_url":"https://api.github.com/users/aio-libs/following{/other_user}","gists_url":"https://api.github.com/users/aio-libs/gists{/gist_id}","starred_url":"https://api.github.com/users/aio-libs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aio-libs/subscriptions","organizations_url":"https://api.github.com/users/aio-libs/orgs","repos_url":"https://api.github.com/users/aio-libs/repos","events_url":"https://api.github.com/users/aio-libs/events{/privacy}","received_events_url":"https://api.github.com/users/aio-libs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aio-libs/aioredis","description":"asyncio (PEP 3156) Redis support","fork":false,"url":"https://api.github.com/repos/aio-libs/aioredis","forks_url":"https://api.github.com/repos/aio-libs/aioredis/forks","keys_url":"https://api.github.com/repos/aio-libs/aioredis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aio-libs/aioredis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aio-libs/aioredis/teams","hooks_url":"https://api.github.com/repos/aio-libs/aioredis/hooks","issue_events_url":"https://api.github.com/repos/aio-libs/aioredis/issues/events{/number}","events_url":"https://api.github.com/repos/aio-libs/aioredis/events","assignees_url":"https://api.github.com/repos/aio-libs/aioredis/assignees{/user}","branches_url":"https://api.github.com/repos/aio-libs/aioredis/branches{/branch}","tags_url":"https://api.github.com/repos/aio-libs/aioredis/tags","blobs_url":"https://api.github.com/repos/aio-libs/aioredis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aio-libs/aioredis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aio-libs/aioredis/git/refs{/sha}","trees_url":"https://api.github.com/repos/aio-libs/aioredis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aio-libs/aioredis/statuses/{sha}","languages_url":"https://api.github.com/repos/aio-libs/aioredis/languages","stargazers_url":"https://api.github.com/repos/aio-libs/aioredis/stargazers","contributors_url":"https://api.github.com/repos/aio-libs/aioredis/contributors","subscribers_url":"https://api.github.com/repos/aio-libs/aioredis/subscribers","subscription_url":"https://api.github.com/repos/aio-libs/aioredis/subscription","commits_url":"https://api.github.com/repos/aio-libs/aioredis/commits{/sha}","git_commits_url":"https://api.github.com/repos/aio-libs/aioredis/git/commits{/sha}","comments_url":"https://api.github.com/repos/aio-libs/aioredis/comments{/number}","issue_comment_url":"https://api.github.com/repos/aio-libs/aioredis/issues/comments{/number}","contents_url":"https://api.github.com/repos/aio-libs/aioredis/contents/{+path}","compare_url":"https://api.github.com/repos/aio-libs/aioredis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aio-libs/aioredis/merges","archive_url":"https://api.github.com/repos/aio-libs/aioredis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aio-libs/aioredis/downloads","issues_url":"https://api.github.com/repos/aio-libs/aioredis/issues{/number}","pulls_url":"https://api.github.com/repos/aio-libs/aioredis/pulls{/number}","milestones_url":"https://api.github.com/repos/aio-libs/aioredis/milestones{/number}","notifications_url":"https://api.github.com/repos/aio-libs/aioredis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aio-libs/aioredis/labels{/name}","releases_url":"https://api.github.com/repos/aio-libs/aioredis/releases{/id}","deployments_url":"https://api.github.com/repos/aio-libs/aioredis/deployments","created_at":"2014-05-25T19:29:57Z","updated_at":"2016-02-07T04:32:16Z","pushed_at":"2016-02-10T07:15:52Z","git_url":"git://github.com/aio-libs/aioredis.git","ssh_url":"git@github.com:aio-libs/aioredis.git","clone_url":"https://github.com/aio-libs/aioredis.git","svn_url":"https://github.com/aio-libs/aioredis","homepage":null,"size":553,"stargazers_count":97,"watchers_count":97,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19,"mirror_url":null,"open_issues_count":8,"forks":19,"open_issues":8,"watchers":97,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/aio-libs/aioredis/pulls/107"},"html":{"href":"https://github.com/aio-libs/aioredis/pull/107"},"issue":{"href":"https://api.github.com/repos/aio-libs/aioredis/issues/107"},"comments":{"href":"https://api.github.com/repos/aio-libs/aioredis/issues/107/comments"},"review_comments":{"href":"https://api.github.com/repos/aio-libs/aioredis/pulls/107/comments"},"review_comment":{"href":"https://api.github.com/repos/aio-libs/aioredis/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/aio-libs/aioredis/pulls/107/commits"},"statuses":{"href":"https://api.github.com/repos/aio-libs/aioredis/statuses/27426b196d5c72c8ed2660db72197accdb2caaf7"}}}}