)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e50b5cdc1578f895c2881c1066879d1249d747a3","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In Newton, placement is optional and computes will stop even trying"},{"line_number":10,"context_line":"to connect to placement when they encounter an error or missing"},{"line_number":11,"context_line":"configuration. We really want them to keep trying so that enabling"},{"line_number":12,"context_line":"the service pre-upgrade does not require restarting all computes"},{"line_number":13,"context_line":"to start filling data."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba5201f7_d0149fa0","line":11,"updated":"2017-01-10 23:19:48.000000000","message":"The doc here would need to be updated:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/doc/source/placement.rst?id\u003df5d7ea52c681611c2d85f344da643f9f630d1ef9#n108","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e50b5cdc1578f895c2881c1066879d1249d747a3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"the service pre-upgrade does not require restarting all computes"},{"line_number":13,"context_line":"to start filling data."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch removes the auto-disable logic and replaces it with a"},{"line_number":16,"context_line":"limited, but persistent warning to the logs about the required"},{"line_number":17,"context_line":"nature of placement for the upgrade. If we had messaged the upcoming"},{"line_number":18,"context_line":"requirement better, I think we could have been less chatty here."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba5201f7_30db2bef","line":15,"updated":"2017-01-10 23:19:48.000000000","message":"So is the goal here to avoid having to restart the compute services after upgrading to 14.0.0 Newton GA but before the upgrade to Ocata? Because even if the Newton control plane is running the placement service, or the newton computes are trying to connect, if they haven\u0027t configured the computes for the service credentials to talk to the placement service, they are going to have to do that and restart nova-compute before Ocata anyway.\n\nOr is this really just about making a painful signaling mechanism, i.e. we\u0027re serious, this has to be done sooner than later and you need to get to work on it now even though you just upgraded to newton (well, newton 14.0.4 at this point).","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"817bcb6996719555a051feaab6f6e51c080bdf67","unresolved":false,"context_lines":[{"line_number":12,"context_line":"the service pre-upgrade does not require restarting all computes"},{"line_number":13,"context_line":"to start filling data."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch removes the auto-disable logic and replaces it with a"},{"line_number":16,"context_line":"limited, but persistent warning to the logs about the required"},{"line_number":17,"context_line":"nature of placement for the upgrade. If we had messaged the upcoming"},{"line_number":18,"context_line":"requirement better, I think we could have been less chatty here."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba5201f7_d0657f1d","line":15,"in_reply_to":"ba5201f7_30db2bef","updated":"2017-01-10 23:24:18.000000000","message":"A little of both. They can make the nag go away by doing their homework and setting it up.\n\nYes, if you haven\u0027t configured the credentials then you\u0027ll have to restart anyway. But, it\u0027s a lot easier to configure those things in newton before rolling than it is to setup a whole new service. So the puppet people can easily (I think) roll in a couple more config options, but can\u0027t so easily backport something as major as a new service to the newton release.\n\nFor us, we\u0027ll set those creds when we roll out this as a backport in a point release, getting us ready for ocata when it hits.","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e50b5cdc1578f895c2881c1066879d1249d747a3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"requirement better, I think we could have been less chatty here."},{"line_number":19,"context_line":"However, we know that it\u0027s not been received, so this patch periodically"},{"line_number":20,"context_line":"re-emits the warning and mentions the upgrade specifically."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Ie6387afeb239a20d39c00f519e8288f3b3a5e9cb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba5201f7_10eaa7ac","line":21,"updated":"2017-01-10 23:19:48.000000000","message":"If we\u0027re going to backport this, we should probably tie it to a bug.","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"817bcb6996719555a051feaab6f6e51c080bdf67","unresolved":false,"context_lines":[{"line_number":18,"context_line":"requirement better, I think we could have been less chatty here."},{"line_number":19,"context_line":"However, we know that it\u0027s not been received, so this patch periodically"},{"line_number":20,"context_line":"re-emits the warning and mentions the upgrade specifically."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Ie6387afeb239a20d39c00f519e8288f3b3a5e9cb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba5201f7_50726fe4","line":21,"in_reply_to":"ba5201f7_10eaa7ac","updated":"2017-01-10 23:24:18.000000000","message":"Alright.","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"}],"nova/scheduler/client/report.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e283bf3b767b073e394ceb9042c715214b13bea0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"WARN_EVERY \u003d 10"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"@contextlib.contextmanager"},{"line_number":43,"context_line":"def warn_limit(self, msg):"},{"line_number":44,"context_line":"    if self._warn_count:"},{"line_number":45,"context_line":"        self._warn_count -\u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_9a9a386d","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":26},"updated":"2017-01-10 22:07:44.000000000","message":"we don\u0027t need this, right?\nthe decorated function is not a generator, or am I blind?","commit_id":"c7a1c50bce163d2284cd3e805f89b0da37f14dea"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7460166a0986bf1e5cd313e84b87c97ac110f7be","unresolved":false,"context_lines":[{"line_number":39,"context_line":"WARN_EVERY \u003d 10"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"@contextlib.contextmanager"},{"line_number":43,"context_line":"def warn_limit(self, msg):"},{"line_number":44,"context_line":"    if self._warn_count:"},{"line_number":45,"context_line":"        self._warn_count -\u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_1aeba879","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":26},"in_reply_to":"ba5201f7_9a9a386d","updated":"2017-01-10 22:10:46.000000000","message":"You\u0027re not blind.. I started with a different approach. Thanks :)","commit_id":"c7a1c50bce163d2284cd3e805f89b0da37f14dea"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e50b5cdc1578f895c2881c1066879d1249d747a3","unresolved":false,"context_lines":[{"line_number":35,"context_line":"DISK_GB \u003d fields.ResourceClass.DISK_GB"},{"line_number":36,"context_line":"_RE_INV_IN_USE \u003d re.compile(\"Inventory for (.+) on resource provider \""},{"line_number":37,"context_line":"                            \"(.+) in use\")"},{"line_number":38,"context_line":"WARN_EVERY \u003d 10"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def warn_limit(self, msg):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_30ca4b50","line":38,"updated":"2017-01-10 23:19:48.000000000","message":"So coming from the update_available_resource periodic task, by default, we\u0027re going to warn every 10 minutes. But more realistically, we\u0027re going to warn much more frequently if we\u0027re getting claims and usage hits in between those periodic task runs.\n\nDo we want to just warn every 10 minutes or really make the nag factor based on how busy the cloud is?","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"817bcb6996719555a051feaab6f6e51c080bdf67","unresolved":false,"context_lines":[{"line_number":35,"context_line":"DISK_GB \u003d fields.ResourceClass.DISK_GB"},{"line_number":36,"context_line":"_RE_INV_IN_USE \u003d re.compile(\"Inventory for (.+) on resource provider \""},{"line_number":37,"context_line":"                            \"(.+) in use\")"},{"line_number":38,"context_line":"WARN_EVERY \u003d 10"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def warn_limit(self, msg):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_d0973fe9","line":38,"in_reply_to":"ba5201f7_30ca4b50","updated":"2017-01-10 23:24:18.000000000","message":"I\u0027m just trying to avoid spamming the logs here, while still making sure that the message gets seen regularly. I don\u0027t think we need to over-engineer this :)","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"076a31ee1850e3188bf405c3bd3705df6daf3ad2","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self._warn_count -\u003d 1"},{"line_number":44,"context_line":"    else:"},{"line_number":45,"context_line":"        self._warn_count \u003d WARN_EVERY"},{"line_number":46,"context_line":"        LOG.warning(msg)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def safe_connect(f):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_d0b81fca","line":46,"updated":"2017-01-10 23:12:34.000000000","message":"meh, if you respin, would be good to include this where te other objects methods for SchedulerReportClient are.","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7a2474f04850986b824a58c5bf7c60c36eeba585","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self._warn_count -\u003d 1"},{"line_number":44,"context_line":"    else:"},{"line_number":45,"context_line":"        self._warn_count \u003d WARN_EVERY"},{"line_number":46,"context_line":"        LOG.warning(msg)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def safe_connect(f):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_30540b53","line":46,"in_reply_to":"ba5201f7_d0b81fca","updated":"2017-01-10 23:18:54.000000000","message":"This is only called from the function below, and will go away when it stops ignoring these kinds of issues, so it seemed best here.","commit_id":"a8ff11c15f99c22c2cd1f3564621c24708190762"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f47542954ab493e90918639a52242bbea06186d0","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def warn_limit(self, msg):"},{"line_number":42,"context_line":"    if self._warn_count:"},{"line_number":43,"context_line":"        self._warn_count -\u003d 1"},{"line_number":44,"context_line":"    else:"},{"line_number":45,"context_line":"        self._warn_count \u003d WARN_EVERY"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_997f9165","line":42,"updated":"2017-01-11 10:21:12.000000000","message":"Well, it works implicitly because 0 \u003d\u003d False but I\u0027d have preferred an explicit if \u003e 0 in case Python changes how booleans work in a next version. That said, meh, okay.","commit_id":"bbf9b431ee26e4064278e58bf9c177de48e8719a"}],"nova/tests/unit/scheduler/client/test_report.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e283bf3b767b073e394ceb9042c715214b13bea0","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.assertEqual(0, self.client._warn_count)"},{"line_number":114,"context_line":"        mock_self \u003d mock.MagicMock()"},{"line_number":115,"context_line":"        mock_self._warn_count \u003d 0"},{"line_number":116,"context_line":"        for i in range(0, report.WARN_EVERY + 3):"},{"line_number":117,"context_line":"            report.warn_limit(mock_self, \u0027warning\u0027)"},{"line_number":118,"context_line":"        mock_log.warning.assert_has_calls([mock.call(\u0027warning\u0027),"},{"line_number":119,"context_line":"                                           mock.call(\u0027warning\u0027)])"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_7af2f49b","line":116,"range":{"start_line":116,"start_character":44,"end_line":116,"end_character":48},"updated":"2017-01-10 22:07:44.000000000","message":"maybe the range could be (1, WARN_EVERY+1) ?\n\nIt would maybe be less confusing that you want to see 2 warnings.","commit_id":"c7a1c50bce163d2284cd3e805f89b0da37f14dea"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f6847352ccb0ed23c20896158537ef637e685e3c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.assertEqual(0, self.client._warn_count)"},{"line_number":114,"context_line":"        mock_self \u003d mock.MagicMock()"},{"line_number":115,"context_line":"        mock_self._warn_count \u003d 0"},{"line_number":116,"context_line":"        for i in range(0, report.WARN_EVERY + 3):"},{"line_number":117,"context_line":"            report.warn_limit(mock_self, \u0027warning\u0027)"},{"line_number":118,"context_line":"        mock_log.warning.assert_has_calls([mock.call(\u0027warning\u0027),"},{"line_number":119,"context_line":"                                           mock.call(\u0027warning\u0027)])"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_5a7290e4","line":116,"range":{"start_line":116,"start_character":44,"end_line":116,"end_character":48},"in_reply_to":"ba5201f7_7af2f49b","updated":"2017-01-10 22:13:32.000000000","message":"Running more than once over helps ensure that we reset the counter and don\u0027t start emitting every time.","commit_id":"c7a1c50bce163d2284cd3e805f89b0da37f14dea"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e283bf3b767b073e394ceb9042c715214b13bea0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        mock_self._warn_count \u003d 0"},{"line_number":116,"context_line":"        for i in range(0, report.WARN_EVERY + 3):"},{"line_number":117,"context_line":"            report.warn_limit(mock_self, \u0027warning\u0027)"},{"line_number":118,"context_line":"        mock_log.warning.assert_has_calls([mock.call(\u0027warning\u0027),"},{"line_number":119,"context_line":"                                           mock.call(\u0027warning\u0027)])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_9a723810","line":118,"range":{"start_line":118,"start_character":43,"end_line":118,"end_character":63},"updated":"2017-01-10 22:07:44.000000000","message":"not sure the mock call would be this one.","commit_id":"c7a1c50bce163d2284cd3e805f89b0da37f14dea"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7460166a0986bf1e5cd313e84b87c97ac110f7be","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        mock_self._warn_count \u003d 0"},{"line_number":116,"context_line":"        for i in range(0, report.WARN_EVERY + 3):"},{"line_number":117,"context_line":"            report.warn_limit(mock_self, \u0027warning\u0027)"},{"line_number":118,"context_line":"        mock_log.warning.assert_has_calls([mock.call(\u0027warning\u0027),"},{"line_number":119,"context_line":"                                           mock.call(\u0027warning\u0027)])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_ba945ce8","line":118,"range":{"start_line":118,"start_character":43,"end_line":118,"end_character":63},"in_reply_to":"ba5201f7_9a723810","updated":"2017-01-10 22:10:46.000000000","message":"What do you mean? It passes tests..","commit_id":"c7a1c50bce163d2284cd3e805f89b0da37f14dea"}]}
