)]}'
{"nova/compute/monitors/__init__.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f5263838a15ebe35746f7ceb26fda5ab3c95a65e","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # used to indicate that the _update_data() method should be called only"},{"line_number":79,"context_line":"        # if update_delta seconds have elapsed from last run"},{"line_number":80,"context_line":"        self.update_delta \u003d None"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @classmethod"},{"line_number":83,"context_line":"    def add_timestamp(cls, func):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_87094534","line":80,"updated":"2015-04-20 07:59:31.000000000","message":"nit: This attribute is probably not supposed to be used outside of this class and his childs so we can use: self._update_delta.","commit_id":"b8d2b0be8fafda564598ffb441f762168176cf34"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"905504ad87160f0d8963f388f734f9e46e9ef7f8","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # used to indicate that the _update_data() method should be called only"},{"line_number":79,"context_line":"        # if update_delta seconds have elapsed from last run"},{"line_number":80,"context_line":"        self.update_delta \u003d None"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @classmethod"},{"line_number":83,"context_line":"    def add_timestamp(cls, func):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_a18526ae","line":80,"in_reply_to":"dac4157f_87094534","updated":"2015-04-21 08:17:13.000000000","message":"Done","commit_id":"b8d2b0be8fafda564598ffb441f762168176cf34"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f5263838a15ebe35746f7ceb26fda5ab3c95a65e","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # Don\u0027t update data so frecuently"},{"line_number":131,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":132,"context_line":"        if None not in (self._data.get(\"timestamp\"), self.update_delta):"},{"line_number":133,"context_line":"            delta \u003d now - self._data.get(\"timestamp\")"},{"line_number":134,"context_line":"            if delta.seconds \u003e self.update_delta:"},{"line_number":135,"context_line":"                self._update_data()"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_e786c012","line":132,"updated":"2015-04-20 07:59:31.000000000","message":"So if the class define an update_delta and data provides a timestamp we are doing the condition to update or not the data.. seems good even if your condition is not so usual.","commit_id":"b8d2b0be8fafda564598ffb441f762168176cf34"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"905504ad87160f0d8963f388f734f9e46e9ef7f8","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # Don\u0027t update data so frecuently"},{"line_number":131,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":132,"context_line":"        if None not in (self._data.get(\"timestamp\"), self.update_delta):"},{"line_number":133,"context_line":"            delta \u003d now - self._data.get(\"timestamp\")"},{"line_number":134,"context_line":"            if delta.seconds \u003e self.update_delta:"},{"line_number":135,"context_line":"                self._update_data()"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_e7a8cedd","line":132,"in_reply_to":"dac4157f_e786c012","updated":"2015-04-21 08:17:13.000000000","message":"Yes, that is the idea. A monitor without an update_delta is a rare case, but just checking the condition is harmless.","commit_id":"b8d2b0be8fafda564598ffb441f762168176cf34"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f5263838a15ebe35746f7ceb26fda5ab3c95a65e","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        \"\"\"Reset the collected data and set the timestamp to now.\"\"\""},{"line_number":146,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":147,"context_line":"        self._data \u003d {}"},{"line_number":148,"context_line":"        self._data[\"timestamp\"] \u003d now"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _populate(self, metric_name, metric_value, timestamp\u003dNone):"},{"line_number":151,"context_line":"        \"\"\"Populate the format what we want from metric name and metric value"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_27c158e5","line":148,"updated":"2015-04-20 07:59:31.000000000","message":"nit: You can save a line here.\n\n  self._data[\"timestamp\"] \u003d timeutils.utcnow()\n\nActually i think this method is not necessary, please see my comment in cpu_monitor.","commit_id":"b8d2b0be8fafda564598ffb441f762168176cf34"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9a5ada1ab193c21e633113de1207363703c77de3","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            if delta.seconds \u003e self._update_delta:"},{"line_number":135,"context_line":"                self._update_data()"},{"line_number":136,"context_line":"        else:"},{"line_number":137,"context_line":"            self._update_data()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        for name, func in self.metric_map.iteritems():"},{"line_number":140,"context_line":"            ret \u003d func(self, **kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_0a0aa721","line":137,"updated":"2015-04-21 08:49:26.000000000","message":"here:\n  self._data \u003d {}\n  self._data[\u0027timestamp\u0027] \u003d now\n  self._update_data()","commit_id":"ee5d6bb21002c2f0a2b018eafcc5487cea465d72"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"970d63980fa489f27340303265bee31587b22e79","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        do_update \u003d True"},{"line_number":131,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # Don\u0027t update data so frecuently. If there is an _update_delta and the"},{"line_number":134,"context_line":"        # elepsed time is less than that delta, do not trigger the update"},{"line_number":135,"context_line":"        if None not in (self._data.get(\"timestamp\"), self._update_delta):"},{"line_number":136,"context_line":"            delta \u003d now - self._data.get(\"timestamp\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_7ef090fe","line":133,"range":{"start_line":133,"start_character":31,"end_line":133,"end_character":41},"updated":"2015-06-04 11:02:37.000000000","message":"Can we split this code into a sub method. Lines 130 - 139 - and it return a flag","commit_id":"e92b2f443d1994e9783c2403d564de5146852e95"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"970d63980fa489f27340303265bee31587b22e79","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        do_update \u003d True"},{"line_number":131,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # Don\u0027t update data so frecuently. If there is an _update_delta and the"},{"line_number":134,"context_line":"        # elepsed time is less than that delta, do not trigger the update"},{"line_number":135,"context_line":"        if None not in (self._data.get(\"timestamp\"), self._update_delta):"},{"line_number":136,"context_line":"            delta \u003d now - self._data.get(\"timestamp\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_beb4c834","line":133,"updated":"2015-06-04 11:02:37.000000000","message":"frecuently \u003d\u003e frequently","commit_id":"e92b2f443d1994e9783c2403d564de5146852e95"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"78aa0cddc461794de63e34ea9eb5a167eb79aad4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        do_update \u003d True"},{"line_number":131,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # Don\u0027t update data so frecuently. If there is an _update_delta and the"},{"line_number":134,"context_line":"        # elepsed time is less than that delta, do not trigger the update"},{"line_number":135,"context_line":"        if None not in (self._data.get(\"timestamp\"), self._update_delta):"},{"line_number":136,"context_line":"            delta \u003d now - self._data.get(\"timestamp\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_01137d5c","line":133,"in_reply_to":"5afe65bd_beb4c834","updated":"2015-06-04 11:25:20.000000000","message":"Yes, I will split it.","commit_id":"e92b2f443d1994e9783c2403d564de5146852e95"}],"nova/compute/monitors/virt/cpu_monitor.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f5263838a15ebe35746f7ceb26fda5ab3c95a65e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return self._data.get(\"cpu.percent\")"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _update_data(self, **kwargs):"},{"line_number":93,"context_line":"        self._reset_data()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Extract node\u0027s CPU statistics."},{"line_number":96,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_0712d462","line":93,"updated":"2015-04-20 07:59:31.000000000","message":"I would like to complain about the design. To call this method here seems to me not good, a developer who have to override the method _update_data will not think about it. He just wants to override this method to collect data and set update_delta to activate the \"delayer\".\n\nYou should to add a condition in __init__.py line 136 to call that process.","commit_id":"b8d2b0be8fafda564598ffb441f762168176cf34"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"905504ad87160f0d8963f388f734f9e46e9ef7f8","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return self._data.get(\"cpu.percent\")"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _update_data(self, **kwargs):"},{"line_number":93,"context_line":"        self._reset_data()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Extract node\u0027s CPU statistics."},{"line_number":96,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dac4157f_44753896","line":93,"in_reply_to":"dac4157f_0712d462","updated":"2015-04-21 08:17:13.000000000","message":"Yes, I get your concern.","commit_id":"b8d2b0be8fafda564598ffb441f762168176cf34"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9a5ada1ab193c21e633113de1207363703c77de3","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _update_data(self, **kwargs):"},{"line_number":94,"context_line":"        self._data \u003d {}"},{"line_number":95,"context_line":"        self._data[\"timestamp\"] \u003d timeutils.utcnow()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Extract node\u0027s CPU statistics."},{"line_number":98,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_aac05b7d","line":95,"updated":"2015-04-21 08:49:26.000000000","message":"Hum I think this lines are not necessary,  what do you think?","commit_id":"ee5d6bb21002c2f0a2b018eafcc5487cea465d72"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"d39c7aab085051a624d293647d463e894a683aeb","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _update_data(self, **kwargs):"},{"line_number":94,"context_line":"        self._data \u003d {}"},{"line_number":95,"context_line":"        self._data[\"timestamp\"] \u003d timeutils.utcnow()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Extract node\u0027s CPU statistics."},{"line_number":98,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_552cc401","line":95,"in_reply_to":"dac4157f_aac05b7d","updated":"2015-04-21 09:28:28.000000000","message":"Yeah, I totally agree.","commit_id":"ee5d6bb21002c2f0a2b018eafcc5487cea465d72"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"970d63980fa489f27340303265bee31587b22e79","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        super(ComputeDriverCPUMonitor, self).__init__(parent)"},{"line_number":47,"context_line":"        self.source \u003d CONF.compute_driver"},{"line_number":48,"context_line":"        self.driver \u003d self.compute_manager.driver"},{"line_number":49,"context_line":"        self.update_delta \u003d 1"},{"line_number":50,"context_line":"        self._cpu_stats \u003d {}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @monitors.ResourceMonitorBase.add_timestamp"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_9ed22c5b","line":49,"updated":"2015-06-04 11:02:37.000000000","message":"Can you use True?","commit_id":"e92b2f443d1994e9783c2403d564de5146852e95"},{"author":{"_account_id":91,"name":"Alvaro","email":"aloga@ifca.unican.es","username":"aloga"},"change_message_id":"78aa0cddc461794de63e34ea9eb5a167eb79aad4","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        super(ComputeDriverCPUMonitor, self).__init__(parent)"},{"line_number":47,"context_line":"        self.source \u003d CONF.compute_driver"},{"line_number":48,"context_line":"        self.driver \u003d self.compute_manager.driver"},{"line_number":49,"context_line":"        self.update_delta \u003d 1"},{"line_number":50,"context_line":"        self._cpu_stats \u003d {}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @monitors.ResourceMonitorBase.add_timestamp"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_a1014907","line":49,"in_reply_to":"5afe65bd_9ed22c5b","updated":"2015-06-04 11:25:20.000000000","message":"No, it is supposed to be the seconds for the delta. However I realized that this is wrong, it should be _update_delta","commit_id":"e92b2f443d1994e9783c2403d564de5146852e95"}],"nova/tests/unit/compute/monitors/test_monitors.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"81ab5232d3c7d4048434e5766aa58df43b7b8e9a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.update_delta \u003d 60"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _update_data(self):"},{"line_number":30,"context_line":"        self._reset_data()"},{"line_number":31,"context_line":"        self._data[\u0027foo.metric1\u0027] \u003d \u00271000\u0027"},{"line_number":32,"context_line":"        self._data[\u0027foo.metric2\u0027] \u003d \u002799.999\u0027"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_95949ce2","line":30,"updated":"2015-04-21 09:31:49.000000000","message":"This method does not exist anymore","commit_id":"ee5d6bb21002c2f0a2b018eafcc5487cea465d72"}]}
