)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d7f12fb0d77d212b02755490ef4d42ce4fc27be9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The update reservation functionality was not implemented in the original"},{"line_number":10,"context_line":"plugin. Consequently, any mixed resource lease containing a floating IP"},{"line_number":11,"context_line":"resource would fail when the lease was updated."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Pierre Riteau \u003cpierre@stackhpc.com\u003e"},{"line_number":14,"context_line":"Change-Id: I2f55f33ba5af9d9f2b84b716caaa8ed1cfd0db66"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5faad753_7b2367be","line":12,"updated":"2019-09-12 11:41:47.000000000","message":"Shall we have\n\n  Partially Implements: blueprint floatingip-reservation\n\nto let it linked from launchpad? [1]\n\n[1] https://blueprints.launchpad.net/blazar/+spec/floatingip-reservation.","commit_id":"ad6a995852c7df4affb016c85cc37a8b379c0015"}],"blazar/plugins/floatingips/floatingip_plugin.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"dfe7eeac346f6b670478c2a5e2adee2abbc4de12","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                            lease, fip_allocations):"},{"line_number":68,"context_line":"        allocs_to_remove \u003d self._allocations_to_remove("},{"line_number":69,"context_line":"            dates_before, dates_after, fip_allocations,"},{"line_number":70,"context_line":"            values.get(\u0027amount\u0027, 1))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if (allocs_to_remove and"},{"line_number":73,"context_line":"                reservation_status \u003d\u003d status.reservation.ACTIVE):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_afc46760","line":70,"range":{"start_line":70,"start_character":12,"end_line":70,"end_character":35},"updated":"2019-09-10 17:45:06.000000000","message":"Users may call update without passing the original amount, for example if they only change the start/end dates.\n\nWe need to fetch the original amount value instead of using 1.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"dfe7eeac346f6b670478c2a5e2adee2abbc4de12","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        kept_fips \u003d len(fip_allocations) - len(allocs_to_remove)"},{"line_number":77,"context_line":"        fip_ids_to_add \u003d []"},{"line_number":78,"context_line":"        amount \u003d int(values.get(\u0027amount\u0027, 1))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if kept_fips \u003c amount:"},{"line_number":81,"context_line":"            needed_fips \u003d amount - kept_fips"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_0fab3b89","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":45},"updated":"2019-09-10 17:45:06.000000000","message":"Same comment about amount here.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"dfe7eeac346f6b670478c2a5e2adee2abbc4de12","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if kept_fips \u003c amount:"},{"line_number":81,"context_line":"            needed_fips \u003d amount - kept_fips"},{"line_number":82,"context_line":"            required_fips \u003d values.get(\u0027required_fips\u0027, [])"},{"line_number":83,"context_line":"            fip_ids_to_add \u003d self._matching_fips("},{"line_number":84,"context_line":"                values[\u0027floatingip_id\u0027], required_fips, amount,"},{"line_number":85,"context_line":"                dates_after[\u0027start_date\u0027], dates_after[\u0027end_date\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_4f8a931b","line":82,"range":{"start_line":82,"start_character":56,"end_line":82,"end_character":58},"updated":"2019-09-10 17:45:06.000000000","message":"Similar comment to amount: we need to fetch the original value.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"dfe7eeac346f6b670478c2a5e2adee2abbc4de12","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if kept_fips \u003c amount:"},{"line_number":81,"context_line":"            needed_fips \u003d amount - kept_fips"},{"line_number":82,"context_line":"            required_fips \u003d values.get(\u0027required_fips\u0027, [])"},{"line_number":83,"context_line":"            fip_ids_to_add \u003d self._matching_fips("},{"line_number":84,"context_line":"                values[\u0027floatingip_id\u0027], required_fips, amount,"},{"line_number":85,"context_line":"                dates_after[\u0027start_date\u0027], dates_after[\u0027end_date\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_af99c779","line":82,"range":{"start_line":82,"start_character":40,"end_line":82,"end_character":53},"updated":"2019-09-10 17:45:06.000000000","message":"The parameter is actually named `required_floatingips`.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"dfe7eeac346f6b670478c2a5e2adee2abbc4de12","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            needed_fips \u003d amount - kept_fips"},{"line_number":82,"context_line":"            required_fips \u003d values.get(\u0027required_fips\u0027, [])"},{"line_number":83,"context_line":"            fip_ids_to_add \u003d self._matching_fips("},{"line_number":84,"context_line":"                values[\u0027floatingip_id\u0027], required_fips, amount,"},{"line_number":85,"context_line":"                dates_after[\u0027start_date\u0027], dates_after[\u0027end_date\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            if len(fip_ids_to_add) \u003c needed_fips:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_6f8d0f30","line":84,"range":{"start_line":84,"start_character":16,"end_line":84,"end_character":39},"updated":"2019-09-10 17:45:06.000000000","message":"This should be the network_id.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"dfe7eeac346f6b670478c2a5e2adee2abbc4de12","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            needed_fips \u003d amount - kept_fips"},{"line_number":82,"context_line":"            required_fips \u003d values.get(\u0027required_fips\u0027, [])"},{"line_number":83,"context_line":"            fip_ids_to_add \u003d self._matching_fips("},{"line_number":84,"context_line":"                values[\u0027floatingip_id\u0027], required_fips, amount,"},{"line_number":85,"context_line":"                dates_after[\u0027start_date\u0027], dates_after[\u0027end_date\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            if len(fip_ids_to_add) \u003c needed_fips:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_2f871712","line":84,"range":{"start_line":84,"start_character":56,"end_line":84,"end_character":62},"updated":"2019-09-10 17:45:06.000000000","message":"You want to use needed_fips here, not amount.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"dfe7eeac346f6b670478c2a5e2adee2abbc4de12","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            if len(fip_ids_to_add) \u003c needed_fips:"},{"line_number":88,"context_line":"                raise manager_ex.NotEnoughFloatingIPAvailable()"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        for fip_id in fip_ids_to_add:"},{"line_number":91,"context_line":"            LOG.debug(\u0027Adding floating ip {} to reservation {}\u0027.format("},{"line_number":92,"context_line":"                fip_id, reservation_id))"},{"line_number":93,"context_line":"            db_api.fip_allocation_create({"},{"line_number":94,"context_line":"                \u0027floatingip_id\u0027: fip_id,"},{"line_number":95,"context_line":"                \u0027reservation_id\u0027: reservation_id})"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        for allocation in allocs_to_remove:"},{"line_number":98,"context_line":"            LOG.debug(\u0027Removing floating ip {} from reservation {}\u0027.format("},{"line_number":99,"context_line":"                allocation[\u0027floatingip_id\u0027], reservation_id))"},{"line_number":100,"context_line":"            db_api.fip_allocation_destroy(allocation[\u0027id\u0027])"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _allocations_to_remove(self, dates_before, dates_after, allocs,"},{"line_number":103,"context_line":"                               amount):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_ef8fbf2b","line":100,"range":{"start_line":90,"start_character":0,"end_line":100,"end_character":59},"updated":"2019-09-10 17:45:06.000000000","message":"Updating allocations is not enough. We may also need to update the floatingip_reservation object which contains amount / network_id and required floating IPs linked with it.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"827a151e16d1a9550be81ed0e878e5b7821762e5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            if len(fip_ids_to_add) \u003c needed_fips:"},{"line_number":88,"context_line":"                raise manager_ex.NotEnoughFloatingIPAvailable()"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        for fip_id in fip_ids_to_add:"},{"line_number":91,"context_line":"            LOG.debug(\u0027Adding floating ip {} to reservation {}\u0027.format("},{"line_number":92,"context_line":"                fip_id, reservation_id))"},{"line_number":93,"context_line":"            db_api.fip_allocation_create({"},{"line_number":94,"context_line":"                \u0027floatingip_id\u0027: fip_id,"},{"line_number":95,"context_line":"                \u0027reservation_id\u0027: reservation_id})"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        for allocation in allocs_to_remove:"},{"line_number":98,"context_line":"            LOG.debug(\u0027Removing floating ip {} from reservation {}\u0027.format("},{"line_number":99,"context_line":"                allocation[\u0027floatingip_id\u0027], reservation_id))"},{"line_number":100,"context_line":"            db_api.fip_allocation_destroy(allocation[\u0027id\u0027])"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _allocations_to_remove(self, dates_before, dates_after, allocs,"},{"line_number":103,"context_line":"                               amount):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_afa787a7","line":100,"range":{"start_line":90,"start_character":0,"end_line":100,"end_character":59},"in_reply_to":"5faad753_ef8fbf2b","updated":"2019-09-10 17:49:09.000000000","message":"Sorry, this comment should have been further down.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"827a151e16d1a9550be81ed0e878e5b7821762e5","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        fip_reservation \u003d db_api.fip_reservation_get("},{"line_number":191,"context_line":"            reservation[\u0027resource_id\u0027])"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        self._update_allocations(dates_before, dates_after, reservation_id,"},{"line_number":194,"context_line":"                                 reservation[\u0027status\u0027], fip_reservation,"},{"line_number":195,"context_line":"                                 values, lease, fip_allocations)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def on_start(self, resource_id):"},{"line_number":198,"context_line":"        fip_reservation \u003d db_api.fip_reservation_get(resource_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_2feab7ab","line":195,"range":{"start_line":193,"start_character":0,"end_line":195,"end_character":64},"updated":"2019-09-10 17:49:09.000000000","message":"Updating allocations is not enough. We may also need to update the floatingip_reservation object which contains amount / network_id and required floating IPs linked with it.","commit_id":"75a188e1d78570d8f6bcea66490cbc32a9bea0c6"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"8b8a9e6ee8cb40ceea7dd7ef32a9cef4918f5765","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        all_fip_ids \u003d [fip[\u0027id\u0027] for fip in db_api.floatingip_list()]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        for alloc in allocs:"},{"line_number":111,"context_line":"            if alloc[\u0027floatingip_id\u0027] not in all_fip_ids:"},{"line_number":112,"context_line":"                allocs_to_remove.append(alloc)"},{"line_number":113,"context_line":"                continue"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            is_extension \u003d ("},{"line_number":116,"context_line":"                dates_before[\u0027start_date\u0027] \u003e dates_after[\u0027start_date\u0027] or"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_6fd15d23","line":113,"range":{"start_line":111,"start_character":0,"end_line":113,"end_character":24},"updated":"2019-09-12 13:56:20.000000000","message":"@Jake: I can\u0027t see in what situation we would need this code. An allocated floating IP should always be in the list of all floating IPs.","commit_id":"ad6a995852c7df4affb016c85cc37a8b379c0015"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d7f12fb0d77d212b02755490ef4d42ce4fc27be9","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        if (\u0027required_floatingips\u0027 in values and"},{"line_number":218,"context_line":"                values[\u0027required_floatingips\u0027] !\u003d required_fips):"},{"line_number":219,"context_line":"            db_api.required_fip_destroy_all(fip_reservation[\u0027id\u0027])"},{"line_number":220,"context_line":"            for fip_address in values.get(\u0027required_floatingips\u0027):"},{"line_number":221,"context_line":"                fip_address_values \u003d {"},{"line_number":222,"context_line":"                    \u0027address\u0027: fip_address,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_bb6f9ffa","line":219,"range":{"start_line":219,"start_character":19,"end_line":219,"end_character":43},"updated":"2019-09-12 11:41:47.000000000","message":"required_fip_destroy_by_fip_reservation_id","commit_id":"ad6a995852c7df4affb016c85cc37a8b379c0015"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"b4eb3c85f4fbab7e46dc4257b85766ed4d5b346f","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        if (\u0027required_floatingips\u0027 in values and"},{"line_number":218,"context_line":"                values[\u0027required_floatingips\u0027] !\u003d required_fips):"},{"line_number":219,"context_line":"            db_api.required_fip_destroy_all(fip_reservation[\u0027id\u0027])"},{"line_number":220,"context_line":"            for fip_address in values.get(\u0027required_floatingips\u0027):"},{"line_number":221,"context_line":"                fip_address_values \u003d {"},{"line_number":222,"context_line":"                    \u0027address\u0027: fip_address,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_fe0bc5d2","line":219,"range":{"start_line":219,"start_character":19,"end_line":219,"end_character":43},"in_reply_to":"5faad753_bb6f9ffa","updated":"2019-09-12 11:54:50.000000000","message":"Sorry, changed the name after my last test. Yeah, we need test coverage for this.","commit_id":"ad6a995852c7df4affb016c85cc37a8b379c0015"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"38628f11b99159f9d51bc4194c86a3c2ae75a1f9","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                msg\u003d\"Updating required_floatingips is not supported except \""},{"line_number":198,"context_line":"                    \"with an empty list\")"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        fip_allocations \u003d db_api.fip_allocation_get_all_by_values("},{"line_number":201,"context_line":"            reservation_id\u003dreservation_id)"},{"line_number":202,"context_line":"        self._update_allocations(dates_before, dates_after, reservation_id,"},{"line_number":203,"context_line":"                                 reservation[\u0027status\u0027], fip_reservation,"},{"line_number":204,"context_line":"                                 values, fip_allocations)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5faad753_ec8788b4","line":201,"range":{"start_line":200,"start_character":8,"end_line":201,"end_character":42},"updated":"2019-09-13 07:07:18.000000000","message":"nit: we could move this into _update_allocations","commit_id":"2d58351a2a43edb86515d5c0437a19afdc71f19a"}]}
