)]}'
{"climate/db/sqlalchemy/api.py":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"d10d5727a05ced71fa296afe24ad735aa74f010c","unresolved":false,"context_lines":[{"line_number":422,"context_line":"    return free_periods"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"def get_full_periods(host_id, start_date, end_date, duration):"},{"line_number":426,"context_line":"    \"\"\"Returns a list of full periods.\"\"\""},{"line_number":427,"context_line":"    capacity \u003d 1  # The resource status is binary (empty or full)"},{"line_number":428,"context_line":"    quantity \u003d 1  # One reservation per host at the same time"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9mQc%3D","line":425,"updated":"2013-12-09 20:29:40.000000000","message":"This function is too big, it should be separated to several ones.","commit_id":"88fdd09f4a07a75fb4b14819987f5ee45b1f0cd0"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"d10d5727a05ced71fa296afe24ad735aa74f010c","unresolved":false,"context_lines":[{"line_number":431,"context_line":"    # Create a list of events"},{"line_number":432,"context_line":"    events \u003d {}"},{"line_number":433,"context_line":"    for lease in _get_leases_from_host_id(host_id, start_date, end_date):"},{"line_number":434,"context_line":"        if lease.start_date \u003c start_date:"},{"line_number":435,"context_line":"            start \u003d start_date"},{"line_number":436,"context_line":"        else:"},{"line_number":437,"context_line":"            start \u003d lease.start_date"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9mP8%3D","line":434,"updated":"2013-12-09 20:29:40.000000000","message":"min/max will be much more readable in this case","commit_id":"88fdd09f4a07a75fb4b14819987f5ee45b1f0cd0"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"d10d5727a05ced71fa296afe24ad735aa74f010c","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            start \u003d start_date"},{"line_number":436,"context_line":"        else:"},{"line_number":437,"context_line":"            start \u003d lease.start_date"},{"line_number":438,"context_line":"        if lease.end_date \u003e end_date:"},{"line_number":439,"context_line":"            end \u003d end_date"},{"line_number":440,"context_line":"        else:"},{"line_number":441,"context_line":"            end \u003d lease.end_date"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9mP4%3D","line":438,"updated":"2013-12-09 20:29:40.000000000","message":"ditto","commit_id":"88fdd09f4a07a75fb4b14819987f5ee45b1f0cd0"}],"climate/manager/exceptions.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"cb61ed281d3820d1c0ab8711c9487342f8e62c85","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class HypervisorNotFound(exceptions.ClimateException):"},{"line_number":79,"context_line":"    msg_fmt \u003d _(\"Aggregate \u0027%(pool)s\u0027 not found!\")"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUH%2F%2B1Dc%3D","line":79,"updated":"2014-01-21 16:55:43.000000000","message":"404 code will be nice to have here.","commit_id":"ec0fba6b3844bcd81536f72367ca24ae82404553"}],"climate/manager/service.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"358134dbb7ccc32587eaf0c9f2a8a9db35e00c13","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            lease \u003d db_api.lease_create(lease_values)"},{"line_number":172,"context_line":"            transaction.set_lease_id(lease[\u0027id\u0027])"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            db_api.event_create({\u0027lease_id\u0027: lease[\u0027id\u0027],"},{"line_number":175,"context_line":"                                 \u0027event_type\u0027: \u0027start_lease\u0027,"},{"line_number":176,"context_line":"                                 \u0027time\u0027: lease[\u0027start_date\u0027]})"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FoJ0%3D","line":174,"updated":"2013-10-31 08:09:18.000000000","message":"WARNING : Your merge is reintroducing a previous useless call to DB for events","commit_id":"c53c90d7a6c2926068ceb2d3618d878d46958bd8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"358134dbb7ccc32587eaf0c9f2a8a9db35e00c13","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    def update_lease(self, lease_id, values):"},{"line_number":194,"context_line":"        # prolong_for variable will be in seconds. Climate client provides"},{"line_number":195,"context_line":"        # flags to set days, hours, etc."},{"line_number":196,"context_line":"        prolong_for \u003d values.pop(\u0027prolong_for\u0027, None)"},{"line_number":197,"context_line":"        if prolong_for:"},{"line_number":198,"context_line":"            lease_event \u003d db_api.event_get_all_sorted_by_filters("},{"line_number":199,"context_line":"                sort_key\u003d\u0027time\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FoJM%3D","line":196,"updated":"2013-10-31 08:09:18.000000000","message":"WARNING : Why the prolong_for variable is back there ?\nProbably a merging error.","commit_id":"c53c90d7a6c2926068ceb2d3618d878d46958bd8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"358134dbb7ccc32587eaf0c9f2a8a9db35e00c13","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                db_api.reservation_update(reservation[\u0027id\u0027],"},{"line_number":249,"context_line":"                                          {\u0027status\u0027: reservation_status})"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"class LeaseTransaction(object):"},{"line_number":253,"context_line":"    def __init__(self):"},{"line_number":254,"context_line":"        self.lease_id \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FoJc%3D","line":251,"updated":"2013-10-31 08:09:18.000000000","message":"WARNING : You removed the event_update set to DONE while merging.","commit_id":"c53c90d7a6c2926068ceb2d3618d878d46958bd8"}],"climate/plugins/oshosts/host_plugin.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"ae79fa9eaef7bebd51d80452268dcb1216353c00","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # NOTE (sbauza): Only update existing extra capabilites, don\u0027t create"},{"line_number":233,"context_line":"        #  other ones"},{"line_number":234,"context_line":"        if values:"},{"line_number":235,"context_line":"            cantupdateextracapability \u003d []"},{"line_number":236,"context_line":"            for value in values:"},{"line_number":237,"context_line":"                capabilities \u003d db_api.host_extra_capability_get_all_per_name("},{"line_number":238,"context_line":"                    host_id,"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2B7aQ%3D","line":235,"updated":"2014-01-20 17:20:36.000000000","message":"wow! saw that in trace in Jenkins logs and I\u0027m really happy I noticed that :)\n\nplease use cant_update_extra_capability for that variable... It\u0027s almost unreadable here :D","commit_id":"fbf20590df0d27b1387f2d665ed57b0b2ebd8d7d"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8f4b191bb22ce73ea1eb6c95986729c98a3c5a61","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # NOTE (sbauza): Only update existing extra capabilites, don\u0027t create"},{"line_number":233,"context_line":"        #  other ones"},{"line_number":234,"context_line":"        if values:"},{"line_number":235,"context_line":"            cantupdateextracapability \u003d []"},{"line_number":236,"context_line":"            for value in values:"},{"line_number":237,"context_line":"                capabilities \u003d db_api.host_extra_capability_get_all_per_name("},{"line_number":238,"context_line":"                    host_id,"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAUH%2F%2B2DY%3D","line":235,"in_reply_to":"AAAAUH%2F%2B7aQ%3D","updated":"2014-01-21 15:14:31.000000000","message":"Done","commit_id":"fbf20590df0d27b1387f2d665ed57b0b2ebd8d7d"}],"climate/plugins/physical_host_plugin.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"358134dbb7ccc32587eaf0c9f2a8a9db35e00c13","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            reservation_values \u003d {}"},{"line_number":34,"context_line":"            reservation_values[\u0027lease_id\u0027] \u003d values[\u0027lease_id\u0027]"},{"line_number":35,"context_line":"            reservation_values[\u0027resource_id\u0027] \u003d pc_instance.id"},{"line_number":36,"context_line":"            reservation_values[\u0027resource_type\u0027] \u003d values[\u0027resource_type\u0027]"},{"line_number":37,"context_line":"            reservation \u003d db_api.reservation_create(reservation_values)"},{"line_number":38,"context_line":"            host_values \u003d {}"},{"line_number":39,"context_line":"            host_values[\u0027reservation_id\u0027] \u003d reservation[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FoMM%3D","line":36,"updated":"2013-10-31 08:09:18.000000000","message":"You can put all these 4 lines together when instanciating reservation_values \u003d {...}","commit_id":"c53c90d7a6c2926068ceb2d3618d878d46958bd8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"358134dbb7ccc32587eaf0c9f2a8a9db35e00c13","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            host_values[\u0027hypervisor_properties\u0027] \u003d \\"},{"line_number":42,"context_line":"                values[\u0027hypervisor_properties\u0027]"},{"line_number":43,"context_line":"            host_values[\u0027count_range\u0027] \u003d str(values[\u0027min\u0027]) + \\"},{"line_number":44,"context_line":"                \u0027-\u0027 + str(values[\u0027max\u0027])"},{"line_number":45,"context_line":"            db_api.host_reservation_create(host_values)"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            raise NotImplementedError(\u0027Nova must support Pclouds\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FoL4%3D","line":44,"updated":"2013-10-31 08:09:18.000000000","message":"same remark as above : host_values \u003d { ... }","commit_id":"c53c90d7a6c2926068ceb2d3618d878d46958bd8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"358134dbb7ccc32587eaf0c9f2a8a9db35e00c13","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \u0027-\u0027 + str(values[\u0027max\u0027])"},{"line_number":45,"context_line":"            db_api.host_reservation_create(host_values)"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            raise NotImplementedError(\u0027Nova must support Pclouds\u0027)"},{"line_number":48,"context_line":"        # TODO remove this"},{"line_number":49,"context_line":"        self.on_start(values[\u0027lease_id\u0027])"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FoLc%3D","line":47,"updated":"2013-10-31 08:09:18.000000000","message":"That\u0027s the role of the Pcloud Wrapper to manage if pclouds are present or not and failback to host aggregrates if not.","commit_id":"c53c90d7a6c2926068ceb2d3618d878d46958bd8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"358134dbb7ccc32587eaf0c9f2a8a9db35e00c13","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            db_api.host_reservation_create(host_values)"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            raise NotImplementedError(\u0027Nova must support Pclouds\u0027)"},{"line_number":48,"context_line":"        # TODO remove this"},{"line_number":49,"context_line":"        self.on_start(values[\u0027lease_id\u0027])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def on_start(self, resource_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FoLE%3D","line":48,"updated":"2013-10-31 08:09:18.000000000","message":"PEP8 syntax error # TODO(frossigneux) instead.\n\nMake sure to run tox -epep8 before submitting to Jenkins.","commit_id":"c53c90d7a6c2926068ceb2d3618d878d46958bd8"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"6d11e337abbd0cb6cd943bcde5cf0c8743a4be68","unresolved":false,"context_lines":[{"line_number":301,"context_line":"            requirements \u003d json.loads(requirements)"},{"line_number":302,"context_line":"        if isinstance(requirements, list) and \\"},{"line_number":303,"context_line":"            len(requirements) \u003d\u003d 3 and \\"},{"line_number":304,"context_line":"            (isinstance(requirements[0], str) or"},{"line_number":305,"context_line":"             isinstance(requirements[0], unicode)) and \\"},{"line_number":306,"context_line":"            (isinstance(requirements[1], str) or"},{"line_number":307,"context_line":"             isinstance(requirements[1], unicode)) and \\"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2Ftj4%3D","line":304,"updated":"2014-01-09 10:18:09.000000000","message":"This \u0027if\u0027 sections is too long and unreadable.\n\n1/ Don\u0027t use isinstance(requirements[0], str), there is common thing to use six.text_type\n\n2/ Don\u0027t use \u0027\\\u0027 in the end of line - http://lists.openstack.org/pipermail/openstack-dev/2013-November/019024.html - there is also hacking check on it. You\u0027ve got +1 from Jenkins only because it\u0027s not released yet :)\n\n3/ Please, try to do smth with that long-long \u0027if\u0027.... It\u0027s really unreadable and tools much time to understand what\u0027s that about. I suggest to move this logic to some method and of that if like \u0027if \u003cmethod_name\u003e: ....\u0027. And more comments to that method, if that is a good thing to add them.\n\nThanks!\n\nP.S. if in previous CR I missed that \u0027\\\u0027 thing in the code or something like isinstance(requirements[0], str), please fix that too.","commit_id":"ab9b67bb051ba9ac96547827e5e1255a07db0720"}]}
