)]}'
{"nova/exception.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":""},{"line_number":1874,"context_line":"class ServiceGroupInvalidBackendFormat(Invalid):"},{"line_number":1875,"context_line":"    msg_fmt \u003d _(\"Backend URL format not supported\")"},{"line_number":1876,"context_line":""},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"class ServiceGroupConnectionError(Invalid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_ed7c92ed","line":1875,"updated":"2015-06-10 15:22:40.000000000","message":"\"Service group backend URL format not supported\" would be more informative.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":1875,"context_line":"    msg_fmt \u003d _(\"Backend URL format not supported\")"},{"line_number":1876,"context_line":""},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"class ServiceGroupConnectionError(Invalid):"},{"line_number":1879,"context_line":"    msg_fmt \u003d _(\"Error connecting to coordination backend\")"},{"line_number":1880,"context_line":""},{"line_number":1881,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_ade69ae5","line":1878,"updated":"2015-06-10 15:22:40.000000000","message":"This should probably inherit from NovaException.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":1879,"context_line":"    msg_fmt \u003d _(\"Error connecting to coordination backend\")"},{"line_number":1880,"context_line":""},{"line_number":1881,"context_line":""},{"line_number":1882,"context_line":"class ServiceGroupCannotBeJoined(Invalid):"},{"line_number":1883,"context_line":"    msg_fmt \u003d _(\"Error unable to join member to group\")"},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_8de99eb9","line":1882,"updated":"2015-06-10 15:22:40.000000000","message":"ditto","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":1880,"context_line":""},{"line_number":1881,"context_line":""},{"line_number":1882,"context_line":"class ServiceGroupCannotBeJoined(Invalid):"},{"line_number":1883,"context_line":"    msg_fmt \u003d _(\"Error unable to join member to group\")"},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":""},{"line_number":1886,"context_line":"class ServiceGroupMemberAlreadyExist(Invalid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_edf1326c","line":1883,"updated":"2015-06-10 15:22:40.000000000","message":"\"Unable to join service to a group\" looks better to me.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":1883,"context_line":"    msg_fmt \u003d _(\"Error unable to join member to group\")"},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":""},{"line_number":1886,"context_line":"class ServiceGroupMemberAlreadyExist(Invalid):"},{"line_number":1887,"context_line":"    msg_fmt \u003d _(\"Error member already exist in the group\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_ed2ed2f9","line":1886,"updated":"2015-06-10 15:22:40.000000000","message":"ditto - by analogy with ServiceBinaryExists","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":""},{"line_number":1886,"context_line":"class ServiceGroupMemberAlreadyExist(Invalid):"},{"line_number":1887,"context_line":"    msg_fmt \u003d _(\"Error member already exist in the group\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_ade7baaa","line":1887,"updated":"2015-06-10 15:22:40.000000000","message":"\"Service already exists in the group\" looks better to me.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"}],"nova/servicegroup/drivers/base.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def is_up(self, member):"},{"line_number":28,"context_line":"        \"\"\"Check whether the given member is up."},{"line_number":29,"context_line":"        :param member: the member to check"},{"line_number":30,"context_line":"        \"\"\""},{"line_number":31,"context_line":"        raise NotImplementedError()"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_4d5de645","line":29,"updated":"2015-06-10 15:22:40.000000000","message":"That\u0027s unrelated to the patch, but if you\u0027re adding these comments - make them consistent and add a newline above.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_all(self, group_id):"},{"line_number":34,"context_line":"        \"\"\"Returns ALL members of the given group."},{"line_number":35,"context_line":"        :param group_id: the group_id to lookup to return all members"},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_ad3a1ae5","line":35,"updated":"2015-06-10 15:22:40.000000000","message":"ditto","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"}],"nova/servicegroup/drivers/tz.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d4e179916ff4c28308608aca7252c7628bd0cecf","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def start(self, member_id):"},{"line_number":40,"context_line":"        backend_url \u003d cfg.CONF.coordination.backend_url"},{"line_number":41,"context_line":"        if backend_url:"},{"line_number":42,"context_line":"            try:"},{"line_number":43,"context_line":"                self._coordinator \u003d tooz.coordination.get_coordinator("},{"line_number":44,"context_line":"                    backend_url, member_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_059d0265","line":41,"updated":"2015-04-13 18:02:12.000000000","message":"Why this check, if there is no \u0027back_end\u0027 url, why silently just avoid doing anything vs raising some type of error, if someone tries to start a backend without a \u0027backend_url\u0027 what kind of outcome would u expect (for it to silently not do anything seems odd)?","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"e5c1d4ba6289e988ec5366d56af2dc4eea6abed8","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def start(self, member_id):"},{"line_number":40,"context_line":"        backend_url \u003d cfg.CONF.coordination.backend_url"},{"line_number":41,"context_line":"        if backend_url:"},{"line_number":42,"context_line":"            try:"},{"line_number":43,"context_line":"                self._coordinator \u003d tooz.coordination.get_coordinator("},{"line_number":44,"context_line":"                    backend_url, member_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_68dea540","line":41,"in_reply_to":"7aaa499b_059d0265","updated":"2015-04-20 23:43:14.000000000","message":"Done","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d4e179916ff4c28308608aca7252c7628bd0cecf","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                self._coordinator.start()"},{"line_number":46,"context_line":"                self._started \u003d True"},{"line_number":47,"context_line":"                LOG.info(_LI(\u0027Coordination backend started successfully\u0027))"},{"line_number":48,"context_line":"            except tooz.coordination.ToozError:"},{"line_number":49,"context_line":"                self._started \u003d False"},{"line_number":50,"context_line":"                LOG.exception(_LE(\u0027Error connecting to coordination backend\u0027))"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_a582cefe","line":48,"updated":"2015-04-13 18:02:12.000000000","message":"Another odd one, how is the person using this service group driver supposed to know that this has happened? If they have no way of knowing this failed, what are they supposed to do to reconcile the issue? Seems like a bad interaction with the people using this driver that should be fixed.","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"e5c1d4ba6289e988ec5366d56af2dc4eea6abed8","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                self._coordinator.start()"},{"line_number":46,"context_line":"                self._started \u003d True"},{"line_number":47,"context_line":"                LOG.info(_LI(\u0027Coordination backend started successfully\u0027))"},{"line_number":48,"context_line":"            except tooz.coordination.ToozError:"},{"line_number":49,"context_line":"                self._started \u003d False"},{"line_number":50,"context_line":"                LOG.exception(_LE(\u0027Error connecting to coordination backend\u0027))"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_48e1a9fd","line":48,"in_reply_to":"7aaa499b_a582cefe","updated":"2015-04-20 23:43:14.000000000","message":"Done","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d4e179916ff4c28308608aca7252c7628bd0cecf","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":53,"context_line":"        \"\"\"Join a member to the group\"\"\""},{"line_number":54,"context_line":"        if not self._coordinator or not self._started or not group_id:"},{"line_number":55,"context_line":"            return"},{"line_number":56,"context_line":"        while True:"},{"line_number":57,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_85b592ce","line":54,"updated":"2015-04-13 18:02:12.000000000","message":"Same kind of question, why just silently return when there is problems with the service group driver, seems odd...","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"e5c1d4ba6289e988ec5366d56af2dc4eea6abed8","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":53,"context_line":"        \"\"\"Join a member to the group\"\"\""},{"line_number":54,"context_line":"        if not self._coordinator or not self._started or not group_id:"},{"line_number":55,"context_line":"            return"},{"line_number":56,"context_line":"        while True:"},{"line_number":57,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ab14d0d_fe877d10","line":54,"in_reply_to":"7aaa499b_85b592ce","updated":"2015-04-20 23:43:14.000000000","message":"Done","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d4e179916ff4c28308608aca7252c7628bd0cecf","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if not self._coordinator or not self._started or not group_id:"},{"line_number":55,"context_line":"            return"},{"line_number":56,"context_line":"        while True:"},{"line_number":57,"context_line":"            try:"},{"line_number":58,"context_line":"                join_req \u003d self._coordinator.join_group(group_id)"},{"line_number":59,"context_line":"                join_req.get()"},{"line_number":60,"context_line":"                LOG.info(_LI(\u0027Joined partitioning group %s\u0027), group_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_a5e76ee3","line":57,"updated":"2015-04-13 18:02:12.000000000","message":"Comments here would be great, especially explaining why its in a loop and such (I know why, but others might not)...","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"e5c1d4ba6289e988ec5366d56af2dc4eea6abed8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if not self._coordinator or not self._started or not group_id:"},{"line_number":55,"context_line":"            return"},{"line_number":56,"context_line":"        while True:"},{"line_number":57,"context_line":"            try:"},{"line_number":58,"context_line":"                join_req \u003d self._coordinator.join_group(group_id)"},{"line_number":59,"context_line":"                join_req.get()"},{"line_number":60,"context_line":"                LOG.info(_LI(\u0027Joined partitioning group %s\u0027), group_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ab14d0d_9eecf990","line":57,"in_reply_to":"7aaa499b_a5e76ee3","updated":"2015-04-20 23:43:14.000000000","message":"Done","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d4e179916ff4c28308608aca7252c7628bd0cecf","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def is_up(self, member):"},{"line_number":72,"context_line":"        \"\"\"Check if the member is up\"\"\""},{"line_number":73,"context_line":"        return self._coordinator is not None"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def leave(self, member_id, group_id):"},{"line_number":76,"context_line":"        \"\"\"Remove a member from the group\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_65f96680","line":73,"updated":"2015-04-13 18:02:12.000000000","message":"This kind of check seems like it could be better done... What does this mean, besides the coordinator object is not none, did u want it to mean that the member is in the group, the coordinator is started, the group is created... Which one?","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"e5c1d4ba6289e988ec5366d56af2dc4eea6abed8","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def is_up(self, member):"},{"line_number":72,"context_line":"        \"\"\"Check if the member is up\"\"\""},{"line_number":73,"context_line":"        return self._coordinator is not None"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def leave(self, member_id, group_id):"},{"line_number":76,"context_line":"        \"\"\"Remove a member from the group\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_9d3bb1eb","line":73,"in_reply_to":"7aaa499b_65f96680","updated":"2015-04-20 23:43:14.000000000","message":"Please see the new logic in new patchset. Agreed this check doesn\u0027t help us much. Done","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d4e179916ff4c28308608aca7252c7628bd0cecf","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def leave(self, member_id, group_id):"},{"line_number":76,"context_line":"        \"\"\"Remove a member from the group\"\"\""},{"line_number":77,"context_line":"        if self._coordinator:"},{"line_number":78,"context_line":"            self._coordinator.leave_group(group_id)"},{"line_number":79,"context_line":"            LOG.info(_LI(\u0027Leaving group %s\u0027), group_id)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_254a3ec6","line":77,"updated":"2015-04-13 18:02:12.000000000","message":"Not sure the \u0027\u0027if self._coordinator\u0027\u0027 makes sense, if someone is calling this and the coordianator is none, that seems like an exceptional case that should throw a exception, not just silently do nothing...","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"e5c1d4ba6289e988ec5366d56af2dc4eea6abed8","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def leave(self, member_id, group_id):"},{"line_number":76,"context_line":"        \"\"\"Remove a member from the group\"\"\""},{"line_number":77,"context_line":"        if self._coordinator:"},{"line_number":78,"context_line":"            self._coordinator.leave_group(group_id)"},{"line_number":79,"context_line":"            LOG.info(_LI(\u0027Leaving group %s\u0027), group_id)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_7d40dd56","line":77,"in_reply_to":"7aaa499b_254a3ec6","updated":"2015-04-20 23:43:14.000000000","message":"Done","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d4e179916ff4c28308608aca7252c7628bd0cecf","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        if not self._coordinator:"},{"line_number":84,"context_line":"            return"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        while True:"},{"line_number":87,"context_line":"            get_all_req \u003d self._coordinator.get_members(group_id)"},{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                return get_all_req.get()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aaa499b_e51216b4","line":86,"updated":"2015-04-13 18:02:12.000000000","message":"Same request for comments as to why this is in a loop...","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"e5c1d4ba6289e988ec5366d56af2dc4eea6abed8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        if not self._coordinator:"},{"line_number":84,"context_line":"            return"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        while True:"},{"line_number":87,"context_line":"            get_all_req \u003d self._coordinator.get_members(group_id)"},{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                return get_all_req.get()"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_5d2639cf","line":86,"in_reply_to":"7aaa499b_e51216b4","updated":"2015-04-20 23:43:14.000000000","message":"Done","commit_id":"70fd6a818e2bb6e6e667cf9d44cc921935f9ae06"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"coordination \u003d ["},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027backend_url\u0027,"},{"line_number":27,"context_line":"               default\u003dNone,"},{"line_number":28,"context_line":"               help\u003d\u0027The backend URL to use for distributed coordination.\u0027),"},{"line_number":29,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_a8dc4846","line":26,"updated":"2015-06-10 15:22:40.000000000","message":"In the BP you have \"servicegroup_tooz_url\" option. How about specifying \"backend_url\" option *inside* tooz options group? This would be similar to current ZooKeeper\u0027s implementation.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4d4dbfddef7ad759c1bbaa6e640e03fcd46aa5ff","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":41,"context_line":"        \"\"\"Get the backend_url and initialize backend.\"\"\""},{"line_number":42,"context_line":"        backend_url \u003d cfg.CONF.coordination.backend_url"},{"line_number":43,"context_line":"        if not self._coordinator:"},{"line_number":44,"context_line":"            try:"},{"line_number":45,"context_line":"                self._coordinator \u003d tooz.coordination.get_coordinator("}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_ac21804f","line":42,"updated":"2015-04-21 17:52:50.000000000","message":"What about a private _start() method that ensures its started?","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"80ccc844ddc51ce5875e625c73f3f2acfc8def3e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            try:"},{"line_number":45,"context_line":"                self._coordinator \u003d tooz.coordination.get_coordinator("},{"line_number":46,"context_line":"                    backend_url, member_id)"},{"line_number":47,"context_line":"                self._coordinator.start()"},{"line_number":48,"context_line":"                self._started \u003d True"},{"line_number":49,"context_line":"                LOG.info(_LI(\"Coordination backend started successfully\"))"},{"line_number":50,"context_line":"            except tooz.coordination.ToozError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_ee000936","line":47,"updated":"2015-06-10 15:22:40.000000000","message":"What happens with coordination backends that require us to send heartbeats (memcached, Redis)? We need to start a thread somewhere that will send them periodically.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4d4dbfddef7ad759c1bbaa6e640e03fcd46aa5ff","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        \"\"\"Check if the member is up."},{"line_number":82,"context_line":"        \"\"\""},{"line_number":83,"context_line":"        if not self._coordinator:"},{"line_number":84,"context_line":"            msg \u003d \"Error unknown coordination driver\""},{"line_number":85,"context_line":"            raise exception.ServiceGroupCoordinationDriverUnknown(msg)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        groups \u003d self._coordinator.get_groups()"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_ecdd3843","line":84,"updated":"2015-04-21 17:52:50.000000000","message":"Seems like the wrong message (the coordination driver isn\u0027t unknown, its just not existent/started), just call into the _start() method (this method will do nothing if its already started...)","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4d4dbfddef7ad759c1bbaa6e640e03fcd46aa5ff","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                continue"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        LOG.exception(_LE(\"Member is not up in the group\"))"},{"line_number":96,"context_line":"        return False"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def get_all(self, group_id):"},{"line_number":99,"context_line":"        \"\"\"Get all members of the group\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_2cbb30e7","line":96,"updated":"2015-04-21 17:52:50.000000000","message":"Perhaps more useful to have a message that says which member is not up in what group...","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4d4dbfddef7ad759c1bbaa6e640e03fcd46aa5ff","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    def get_all(self, group_id):"},{"line_number":99,"context_line":"        \"\"\"Get all members of the group\"\"\""},{"line_number":100,"context_line":"        if not self._coordinator:"},{"line_number":101,"context_line":"            msg \u003d \"Error unknown coordination driver\""},{"line_number":102,"context_line":"            raise exception.ServiceGroupCoordinationDriverUnknown(msg)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        \"\"\"Try to join the group; if the group does not exist"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_ace860e3","line":101,"updated":"2015-04-21 17:52:50.000000000","message":"Same comment as above.","commit_id":"7a04ddc657ed892b48399ca6e32bd0f0f837614e"}]}
