)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6d83916f40806f7650820dbca563c3fd672eee5f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Note, that zk driver is not affected by this change, since adding forcefully"},{"line_number":14,"context_line":"down service make only sense in case of poll/timeout based drivers. Zookeeper"},{"line_number":15,"context_line":"is heartbeat based, so that it almost immediately notices the service state,"},{"line_number":16,"context_line":"in contrary to the db or mc drivers which take up to 60s (by default)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Partially-Implements: blueprint mark-host-down"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_1d0d8b8e","line":16,"updated":"2015-07-29 14:32:12.000000000","message":"Like I said per IRC, I think we need to consider deferring the SG control to an external tool whatever the driver is, just because it\u0027s intended to be exposed as a REST API resource.\n\nHere, we need consistency between drivers and have the same level of control, even if we consider ZK trustful.","commit_id":"f2ca534e96193a426618ac60c8694aa899c5ada2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"79707fa88b089938ef81cab1cc67716e4b316ced","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Note, that zk driver is not affected by this change, since adding forcefully"},{"line_number":14,"context_line":"down service make only sense in case of poll/timeout based drivers. Zookeeper"},{"line_number":15,"context_line":"is heartbeat based, so that it almost immediately notices the service state,"},{"line_number":16,"context_line":"in contrary to the db or mc drivers which take up to 60s (by default)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Partially-Implements: blueprint mark-host-down"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_edf56aed","line":16,"in_reply_to":"3a50d1a3_1d0d8b8e","updated":"2015-07-30 08:04:38.000000000","message":"So while I agree that force_down needs to work for all drivers regardless of the fact that it\u0027s useless for the usecase we ahve in mind here, ZK drvier in nova is junk. it\u0027s not used anywhere, and is planned to be completely replaced in the very near future.\n\nBlocking a useful feature on keeping what is basically dead code compatible with it is not something we should be doing.","commit_id":"f2ca534e96193a426618ac60c8694aa899c5ada2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"492ff6c04f0b99832cf2be2d671a0522995ff025","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Note, that zk driver is not affected by this change, since adding forcefully"},{"line_number":14,"context_line":"down service make only sense in case of poll/timeout based drivers. Zookeeper"},{"line_number":15,"context_line":"is heartbeat based, so that it almost immediately notices the service state,"},{"line_number":16,"context_line":"in contrary to the db or mc drivers which take up to 60s (by default)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Partially-Implements: blueprint mark-host-down"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_c3aab6d2","line":16,"in_reply_to":"3a50d1a3_68e381a5","updated":"2015-07-30 10:41:20.000000000","message":"I\u0027m OK with this - but don\u0027t really care for the ZK driver so I\u0027m ok with the code as is too. I could see arguments for both - if we have a driver that\u0027s reasonably fast in determining failure/partition, it\u0027s not unreasonable to make it ignore what is essentially a crutch for weaker drivers.\n\nBut I am not sure these details are at all important with the current state of play so would prioritize merging this in any form over deeper discussion on some of these issues.","commit_id":"f2ca534e96193a426618ac60c8694aa899c5ada2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"48255c7339410f24bc725bf80f37c55b1562c8a2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Note, that zk driver is not affected by this change, since adding forcefully"},{"line_number":14,"context_line":"down service make only sense in case of poll/timeout based drivers. Zookeeper"},{"line_number":15,"context_line":"is heartbeat based, so that it almost immediately notices the service state,"},{"line_number":16,"context_line":"in contrary to the db or mc drivers which take up to 60s (by default)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Partially-Implements: blueprint mark-host-down"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_68e381a5","line":16,"in_reply_to":"3a50d1a3_edf56aed","updated":"2015-07-30 10:31:14.000000000","message":"So, lemme be clear : I would be +1 if the if branch would be done directly in the API base module, ie. https://github.com/openstack/nova/blob/master/nova/servicegroup/api.py#L87 \n\nbecause then it wouldn\u0027t need to be discussing about the ZK nor the MC drivers and would make it clear that whatever the driver is, it wouldn\u0027t be called if forced_down","commit_id":"f2ca534e96193a426618ac60c8694aa899c5ada2"}],"nova/servicegroup/api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"638db9c91e35c193734994a4890ce35512586b31","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        \"\"\"Check if the given member is up.\"\"\""},{"line_number":89,"context_line":"        # NOTE(johngarbutt) no logging in this method,"},{"line_number":90,"context_line":"        # so this doesn\u0027t slow down the scheduler"},{"line_number":91,"context_line":"        if member.get(\u0027forced_down\u0027):"},{"line_number":92,"context_line":"            return False"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        return self._driver.is_up(member)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_0acc4334","line":91,"updated":"2015-08-03 15:06:13.000000000","message":"this looks funny here, but it shouldn\u0027t be driver specific I guess, so this makes sense.","commit_id":"e6c5b4bcf7fc112da2394d0f863be40ec68213ec"}],"nova/servicegroup/drivers/db.py":[{"author":{"_account_id":14743,"name":"Viktor Tikkanen","email":"viktor.tikkanen@nokia.com","username":"vitikkan"},"change_message_id":"5161f0644e76fd3994345d37084ffdb1d2797c8c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \"\"\"Moved from nova.utils"},{"line_number":58,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        if service_ref.get(\u0027forced_down\u0027):"},{"line_number":61,"context_line":"            return False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Keep checking \u0027updated_at\u0027 if \u0027last_seen_up\u0027 isn\u0027t set."}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_dab2be05","line":60,"updated":"2015-07-03 09:21:29.000000000","message":"Just to ensure: should we have here similar LOG.debug writing as in line 81 telling the reason (service is forced down)?.. The same concerns also nova/servicegroup/drivers/mc.py\n\nOtherwise LGTM","commit_id":"b21c810c73c41de8ac9b480905b7aba55b38b441"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"9f76819785631867c9ad198eb8f8433f8a45d236","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        \"\"\"Moved from nova.utils"},{"line_number":58,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        if service_ref.get(\u0027forced_down\u0027):"},{"line_number":61,"context_line":"            return False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Keep checking \u0027updated_at\u0027 if \u0027last_seen_up\u0027 isn\u0027t set."}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_f8e687af","line":60,"in_reply_to":"ba3cc151_dab2be05","updated":"2015-07-05 16:55:28.000000000","message":"For debugging purposes it\u0027s a good idea. I\u0027ll add the logging in next patch set.","commit_id":"b21c810c73c41de8ac9b480905b7aba55b38b441"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3e133d9c89be050d81ad650ce787372024d13359","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        # Should be able to use only \u0027last_seen_up\u0027 in the M release"},{"line_number":66,"context_line":"        last_heartbeat \u003d (service_ref.get(\u0027last_seen_up\u0027) or"},{"line_number":67,"context_line":"            service_ref[\u0027updated_at\u0027] or service_ref[\u0027created_at\u0027])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        if isinstance(last_heartbeat, six.string_types):"},{"line_number":70,"context_line":"            # NOTE(russellb) If this service_ref came in over rpc via"},{"line_number":71,"context_line":"            # conductor, then the timestamp will be a string and needs to be"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_f7af7b92","line":68,"updated":"2015-07-11 22:23:09.000000000","message":"this is unrelated change. We should avoid those kind of change","commit_id":"034dafafebf06896928eda5d4411aa7514fe0388"}],"nova/servicegroup/drivers/mc.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7b75ba978d448ded6a339ae847eb492264800c10","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        if service_ref[\u0027forced_down\u0027]:"},{"line_number":66,"context_line":"            LOG.debug(\u0027Service is down due to forced_down flag is set\u0027)"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_bd12dfb2","line":66,"updated":"2015-07-07 13:38:37.000000000","message":"maybe we can consider a general check here?\n\nhttps://github.com/openstack/nova/blob/master/nova/servicegroup/api.py#L91","commit_id":"d48bf260b208455e13d3ceaf4176510a52752119"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"dacc714ac41543410eecf9773dba4aa2d7fb5192","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        if service_ref[\u0027forced_down\u0027]:"},{"line_number":66,"context_line":"            LOG.debug(\u0027Service is down due to forced_down flag is set\u0027)"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_a93e21d8","line":66,"in_reply_to":"ba3cc151_238c707e","updated":"2015-07-07 14:44:26.000000000","message":"ok, I don\u0027t know much about zookeeper\n\nsorry maybe I missed this in spec, but should this be a thing to notice that we set \u0027force_down\u0027 , but it doesn\u0027t not \u0027force\u0027 in zk?","commit_id":"d48bf260b208455e13d3ceaf4176510a52752119"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"0de8b447ec144b8a8aa07e28f05af14ab2186303","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        if service_ref[\u0027forced_down\u0027]:"},{"line_number":66,"context_line":"            LOG.debug(\u0027Service is down due to forced_down flag is set\u0027)"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_759bfcc9","line":66,"in_reply_to":"ba3cc151_a93e21d8","updated":"2015-07-07 18:58:00.000000000","message":"Whole idea behind setting the forced_down flag is to have the ability for external systems to convince service groups that some of the services are dead (as the result of the fencing for example). Default db driver and mc are based on 60s poll (by default) to check if specified service is up.\n\nIn contrary, zookeeper is based on heartbeat-like mechanism, which update the state of its database almost immediately, therefore there is no need for operator (or any other mechanisms) to wait such long amount of time (up to 60s!) for nova to notice the change.","commit_id":"d48bf260b208455e13d3ceaf4176510a52752119"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"137312b0871bb673418da6636a5b2829f3506460","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        if service_ref[\u0027forced_down\u0027]:"},{"line_number":66,"context_line":"            LOG.debug(\u0027Service is down due to forced_down flag is set\u0027)"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_238c707e","line":66,"in_reply_to":"ba3cc151_bd12dfb2","updated":"2015-07-07 14:05:39.000000000","message":"I wouldn\u0027t go that path, since specific driver (like zookeeper for example) does not need to be informed about service state, since it\u0027s fast enough to notice service state.","commit_id":"d48bf260b208455e13d3ceaf4176510a52752119"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c3e363e256bd1391cacc0e8f74891d7834e53bd7","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        if service_ref[\u0027forced_down\u0027]:"},{"line_number":66,"context_line":"            LOG.debug(\u0027Service is down due to forced_down flag is set\u0027)"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_1138483c","line":66,"updated":"2015-07-22 17:30:20.000000000","message":"nit : not sure a debug log is worth it because it could flood the logs, but that\u0027s fair.","commit_id":"f972b16b4c92bb8b57a747c7fbee66a9b2db73a4"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"f985618b9f2c251d4ef22e976ea82c01b7d0b1e5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        if service_ref[\u0027forced_down\u0027]:"},{"line_number":66,"context_line":"            LOG.debug(\u0027Service is down due to forced_down flag is set\u0027)"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_9f576525","line":66,"in_reply_to":"3a50d1a3_1138483c","updated":"2015-07-23 07:18:24.000000000","message":"I think that reason for service being down (or treated as down) should be in the logs, even if there will be a lot of lines (well, simmilar like in line 72) in case of debugging.","commit_id":"f972b16b4c92bb8b57a747c7fbee66a9b2db73a4"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"8438427dc3f27a146303cabfb5c84ca333829be6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        Check whether a service is up based on last heartbeat."},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        if service_ref[\u0027forced_down\u0027]:"},{"line_number":66,"context_line":"            LOG.debug(\u0027Service is down due to forced_down flag is set\u0027)"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        key \u003d \"%(topic)s:%(host)s\" % service_ref"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_2b005365","line":66,"in_reply_to":"3a50d1a3_9f576525","updated":"2015-07-23 08:29:34.000000000","message":"I also agree we should keep this debug message. No one wants debugging to be no so debugging after all, and disk space should be not a concern if debug is enabled.","commit_id":"f972b16b4c92bb8b57a747c7fbee66a9b2db73a4"}],"nova/servicegroup/drivers/zk.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c3e363e256bd1391cacc0e8f74891d7834e53bd7","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                zk_member \u003d membership.Membership(self._session, path, member)"},{"line_number":135,"context_line":"            self._memberships[(group, member)] \u003d zk_member"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def is_up(self, service_ref):"},{"line_number":138,"context_line":"        group_id \u003d service_ref[\u0027topic\u0027]"},{"line_number":139,"context_line":"        member_id \u003d service_ref[\u0027host\u0027]"},{"line_number":140,"context_line":"        all_members \u003d self._get_all(group_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_31b8e4c7","line":137,"updated":"2015-07-22 17:30:20.000000000","message":"did you missed to update that one too or is it because you didn\u0027t want it ?\n\nIf the former, please add it here too, if the latter, a commit msg explaining why (or a big fat comment here) is worth it.","commit_id":"f972b16b4c92bb8b57a747c7fbee66a9b2db73a4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9a8e74cd38c56cfcf1b01875f05f8a4c034f92c2","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                zk_member \u003d membership.Membership(self._session, path, member)"},{"line_number":135,"context_line":"            self._memberships[(group, member)] \u003d zk_member"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def is_up(self, service_ref):"},{"line_number":138,"context_line":"        group_id \u003d service_ref[\u0027topic\u0027]"},{"line_number":139,"context_line":"        member_id \u003d service_ref[\u0027host\u0027]"},{"line_number":140,"context_line":"        all_members \u003d self._get_all(group_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_b6dceae4","line":137,"updated":"2015-07-28 16:53:32.000000000","message":"you surely missed my comment on PS9 but I think you should also modify this method","commit_id":"f2ca534e96193a426618ac60c8694aa899c5ada2"}],"nova/tests/unit/servicegroup/test_api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"638db9c91e35c193734994a4890ce35512586b31","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def test_join(self):"},{"line_number":33,"context_line":"        \"\"\"\"\"\""},{"line_number":34,"context_line":"        member \u003d {\u0027host\u0027: \"fake-host\", \"topic\": \"compute\"}"},{"line_number":35,"context_line":"        group \u003d \"group\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        self.driver.join \u003d mock.MagicMock(return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_ea78f7fa","line":34,"updated":"2015-08-03 15:06:13.000000000","message":"I wish it used objects not dicts, but I don\u0027t want to block this.","commit_id":"e6c5b4bcf7fc112da2394d0f863be40ec68213ec"}],"nova/tests/unit/servicegroup/test_db_servicegroup.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6e02dde60d668c71ccf2b7ee04023e4c0c74f623","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertFalse(result)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":72,"context_line":"    def test_forced_is_up(self, now_mock):"},{"line_number":73,"context_line":"        service_ref \u003d {"},{"line_number":74,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":75,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_97a38f9e","line":72,"updated":"2015-07-11 22:30:07.000000000","message":"how about test_is_up_with_forced_down","commit_id":"034dafafebf06896928eda5d4411aa7514fe0388"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"d2e9f740779eb9760176021e891ee0181d328b2b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertFalse(result)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":72,"context_line":"    def test_forced_is_up(self, now_mock):"},{"line_number":73,"context_line":"        service_ref \u003d {"},{"line_number":74,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":75,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_92211350","line":72,"in_reply_to":"9a41bdd9_97a38f9e","updated":"2015-07-13 19:34:36.000000000","message":"Okay.","commit_id":"034dafafebf06896928eda5d4411aa7514fe0388"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ba215f742c3861d31d217d0367a7d4698b317972","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertFalse(result)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":72,"context_line":"    def test_is_up_with_forced_down(self, now_mock):"},{"line_number":73,"context_line":"        service_ref \u003d {"},{"line_number":74,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":75,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_962e15f9","line":72,"updated":"2015-07-30 18:15:15.000000000","message":"well, why are adding the test here while you update the base API ?\nI understand there is no TestCase for the API base module, but that\u0027s not a reason to not add it for that IMHO.\nOf course, you don\u0027t need all the foundery, you just need to add a mock for the driver.","commit_id":"3eba3b1b1c05e61f75eeff6e3482c84a5ccb54bc"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"3d9933358c69842a266dcfdafb38828a2800bbef","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertFalse(result)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":72,"context_line":"    def test_is_up_with_forced_down(self, now_mock):"},{"line_number":73,"context_line":"        service_ref \u003d {"},{"line_number":74,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":75,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_68191322","line":72,"in_reply_to":"3a50d1a3_6c805c4a","updated":"2015-07-31 07:54:02.000000000","message":"Hmm. I was wondering where would be the best place for testing the functionality on the servicegroup api, and it turns out that the way to go is to test it via it\u0027s drivers. I cannot even run tests the zk driver since it\u0027s dependencies are broken. And this is a most probably the reason why requirement.txt for venv lack of evzookeeper and zookeeper modules, which results the tests for zk driver are dead.\n\nOTOH you\u0027re suggesting, the new test for the base module should be added with the driver mock. I\u0027m wondering what benefits do we gain with such test. If the driver will be mocked the tests will reach only the api interface. Maybe it\u0027s just me, but I don\u0027t see a point for creating that kind of test.","commit_id":"3eba3b1b1c05e61f75eeff6e3482c84a5ccb54bc"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"e80a80bdb8d8182087461138b109ffd2fa040d2f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertFalse(result)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":72,"context_line":"    def test_is_up_with_forced_down(self, now_mock):"},{"line_number":73,"context_line":"        service_ref \u003d {"},{"line_number":74,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":75,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_6c805c4a","line":72,"in_reply_to":"3a50d1a3_962e15f9","updated":"2015-07-30 18:48:33.000000000","message":"Yeah, you are right - my mistake. I should remove those tests and add proper one for the api base module.","commit_id":"3eba3b1b1c05e61f75eeff6e3482c84a5ccb54bc"}],"nova/tests/unit/servicegroup/test_mc_servicegroup.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6e02dde60d668c71ccf2b7ee04023e4c0c74f623","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assertTrue(self.servicegroup_api.service_is_up(service_ref))"},{"line_number":48,"context_line":"        self.mc_client.get.assert_called_once_with(\u0027compute:fake-host\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_forced_is_up(self):"},{"line_number":51,"context_line":"        service_ref \u003d {"},{"line_number":52,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":53,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_b7a01392","line":50,"updated":"2015-07-11 22:30:07.000000000","message":"how about call it as test_is_up_with_forced_down","commit_id":"034dafafebf06896928eda5d4411aa7514fe0388"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"d2e9f740779eb9760176021e891ee0181d328b2b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.assertTrue(self.servicegroup_api.service_is_up(service_ref))"},{"line_number":48,"context_line":"        self.mc_client.get.assert_called_once_with(\u0027compute:fake-host\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_forced_is_up(self):"},{"line_number":51,"context_line":"        service_ref \u003d {"},{"line_number":52,"context_line":"            \u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":53,"context_line":"            \u0027topic\u0027: \u0027compute\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_521b8b1b","line":50,"in_reply_to":"9a41bdd9_b7a01392","updated":"2015-07-13 19:34:36.000000000","message":"Done","commit_id":"034dafafebf06896928eda5d4411aa7514fe0388"}]}
