)]}'
{"blazar/db/api.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":445,"context_line":"# FloatingIP Allocation"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"def fip_allocation_create(allocation_values):"},{"line_number":448,"context_line":"    \"\"\"Create an floating ip allocation from the values.\"\"\""},{"line_number":449,"context_line":"    return IMPL.fip_allocation_create(allocation_values)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_521abb16","line":448,"range":{"start_line":448,"start_character":14,"end_line":448,"end_character":16},"updated":"2019-01-31 17:46:07.000000000","message":"a","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":445,"context_line":"# FloatingIP Allocation"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"def fip_allocation_create(allocation_values):"},{"line_number":448,"context_line":"    \"\"\"Create an floating ip allocation from the values.\"\"\""},{"line_number":449,"context_line":"    return IMPL.fip_allocation_create(allocation_values)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_c09d280b","line":448,"range":{"start_line":448,"start_character":14,"end_line":448,"end_character":16},"in_reply_to":"9fdfeff1_521abb16","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"}],"blazar/db/sqlalchemy/utils.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    return merged_reserved_periods"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"def get_reserved_periods(host_id, start_date, end_date, duration,"},{"line_number":229,"context_line":"                         resource_type\u003d\u0027host\u0027):"},{"line_number":230,"context_line":"    \"\"\"Returns a list of reserved periods for a host."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_b2cd2786","line":228,"range":{"start_line":228,"start_character":25,"end_line":228,"end_character":32},"updated":"2019-01-31 17:46:07.000000000","message":"Change to `resource_id`","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    return merged_reserved_periods"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"def get_reserved_periods(host_id, start_date, end_date, duration,"},{"line_number":229,"context_line":"                         resource_type\u003d\u0027host\u0027):"},{"line_number":230,"context_line":"    \"\"\"Returns a list of reserved periods for a host."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_e0a2ac4b","line":228,"range":{"start_line":228,"start_character":25,"end_line":228,"end_character":32},"in_reply_to":"9fdfeff1_b2cd2786","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"def get_reserved_periods(host_id, start_date, end_date, duration,"},{"line_number":229,"context_line":"                         resource_type\u003d\u0027host\u0027):"},{"line_number":230,"context_line":"    \"\"\"Returns a list of reserved periods for a host."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    The get_reserved_periods function returns a list of periods during which"},{"line_number":233,"context_line":"    the host passed as parameter is reserved. The duration parameter allows to"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_f2b72ff4","line":230,"range":{"start_line":230,"start_character":48,"end_line":230,"end_character":52},"updated":"2019-01-31 17:46:07.000000000","message":"resource","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"def get_reserved_periods(host_id, start_date, end_date, duration,"},{"line_number":229,"context_line":"                         resource_type\u003d\u0027host\u0027):"},{"line_number":230,"context_line":"    \"\"\"Returns a list of reserved periods for a host."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    The get_reserved_periods function returns a list of periods during which"},{"line_number":233,"context_line":"    the host passed as parameter is reserved. The duration parameter allows to"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_808720b7","line":230,"range":{"start_line":230,"start_character":48,"end_line":230,"end_character":52},"in_reply_to":"9fdfeff1_f2b72ff4","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    \"\"\"Returns a list of reserved periods for a host."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    The get_reserved_periods function returns a list of periods during which"},{"line_number":233,"context_line":"    the host passed as parameter is reserved. The duration parameter allows to"},{"line_number":234,"context_line":"    choose the minimum length of time for a period to be considered free."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    :param host_id: the host to consider"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_92d26327","line":233,"range":{"start_line":233,"start_character":8,"end_line":233,"end_character":12},"updated":"2019-01-31 17:46:07.000000000","message":"resource","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    \"\"\"Returns a list of reserved periods for a host."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    The get_reserved_periods function returns a list of periods during which"},{"line_number":233,"context_line":"    the host passed as parameter is reserved. The duration parameter allows to"},{"line_number":234,"context_line":"    choose the minimum length of time for a period to be considered free."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    :param host_id: the host to consider"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a084a4b2","line":233,"range":{"start_line":233,"start_character":8,"end_line":233,"end_character":12},"in_reply_to":"9fdfeff1_92d26327","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    the host passed as parameter is reserved. The duration parameter allows to"},{"line_number":234,"context_line":"    choose the minimum length of time for a period to be considered free."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    :param host_id: the host to consider"},{"line_number":237,"context_line":"    :param start_date: start datetime of the entire period to consider"},{"line_number":238,"context_line":"    :param end_date: end datetime of the entire period to consider"},{"line_number":239,"context_line":"    :param duration: minimum length of time for a period to be considered free"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_72c33f58","line":236,"range":{"start_line":236,"start_character":24,"end_line":236,"end_character":28},"updated":"2019-01-31 17:46:07.000000000","message":"resource","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    the host passed as parameter is reserved. The duration parameter allows to"},{"line_number":234,"context_line":"    choose the minimum length of time for a period to be considered free."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    :param host_id: the host to consider"},{"line_number":237,"context_line":"    :param start_date: start datetime of the entire period to consider"},{"line_number":238,"context_line":"    :param end_date: end datetime of the entire period to consider"},{"line_number":239,"context_line":"    :param duration: minimum length of time for a period to be considered free"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_52c87b72","line":236,"range":{"start_line":236,"start_character":11,"end_line":236,"end_character":18},"updated":"2019-01-31 17:46:07.000000000","message":"resource_id","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    the host passed as parameter is reserved. The duration parameter allows to"},{"line_number":234,"context_line":"    choose the minimum length of time for a period to be considered free."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    :param host_id: the host to consider"},{"line_number":237,"context_line":"    :param start_date: start datetime of the entire period to consider"},{"line_number":238,"context_line":"    :param end_date: end datetime of the entire period to consider"},{"line_number":239,"context_line":"    :param duration: minimum length of time for a period to be considered free"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_409138f1","line":236,"range":{"start_line":236,"start_character":24,"end_line":236,"end_character":28},"in_reply_to":"9fdfeff1_72c33f58","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    :param start_date: start datetime of the entire period to consider"},{"line_number":238,"context_line":"    :param end_date: end datetime of the entire period to consider"},{"line_number":239,"context_line":"    :param duration: minimum length of time for a period to be considered free"},{"line_number":240,"context_line":"    :returns: the list of reserved periods for the host, expressed as a list of"},{"line_number":241,"context_line":"              two-element tuples, where the first element is the start datetime"},{"line_number":242,"context_line":"              of the reserved period and the second is the end datetime"},{"line_number":243,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_d2a9cb8f","line":240,"range":{"start_line":240,"start_character":51,"end_line":240,"end_character":55},"updated":"2019-01-31 17:46:07.000000000","message":"resource","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    :param start_date: start datetime of the entire period to consider"},{"line_number":238,"context_line":"    :param end_date: end datetime of the entire period to consider"},{"line_number":239,"context_line":"    :param duration: minimum length of time for a period to be considered free"},{"line_number":240,"context_line":"    :returns: the list of reserved periods for the host, expressed as a list of"},{"line_number":241,"context_line":"              two-element tuples, where the first element is the start datetime"},{"line_number":242,"context_line":"              of the reserved period and the second is the end datetime"},{"line_number":243,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_608ebcd1","line":240,"range":{"start_line":240,"start_character":51,"end_line":240,"end_character":55},"in_reply_to":"9fdfeff1_d2a9cb8f","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    quantity \u003d 1  # One reservation per host at the same time"},{"line_number":246,"context_line":"    if end_date - start_date \u003c duration:"},{"line_number":247,"context_line":"        return [(start_date, end_date)]"},{"line_number":248,"context_line":"    events \u003d _get_events(host_id, start_date, end_date, resource_type)"},{"line_number":249,"context_line":"    reserved_periods \u003d _find_reserved_periods(events, quantity, capacity)"},{"line_number":250,"context_line":"    return _merge_periods(reserved_periods, start_date, end_date, duration)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_b2920756","line":248,"range":{"start_line":248,"start_character":25,"end_line":248,"end_character":32},"updated":"2019-01-31 17:46:07.000000000","message":"resource_id","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    quantity \u003d 1  # One reservation per host at the same time"},{"line_number":246,"context_line":"    if end_date - start_date \u003c duration:"},{"line_number":247,"context_line":"        return [(start_date, end_date)]"},{"line_number":248,"context_line":"    events \u003d _get_events(host_id, start_date, end_date, resource_type)"},{"line_number":249,"context_line":"    reserved_periods \u003d _find_reserved_periods(events, quantity, capacity)"},{"line_number":250,"context_line":"    return _merge_periods(reserved_periods, start_date, end_date, duration)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_00bd7067","line":248,"range":{"start_line":248,"start_character":25,"end_line":248,"end_character":32},"in_reply_to":"9fdfeff1_b2920756","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"}],"blazar/manager/exceptions.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    msg_fmt \u003d _(\"Can\u0027t delete floating IP %(floatingip)s. %(msg)s\")"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"class NotEnoughFloatingipAvailable(exceptions.BlazarException):"},{"line_number":209,"context_line":"    code \u003d 400"},{"line_number":210,"context_line":"    msg_fmt \u003d _(\"Not enough floating IP available\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_f285ef07","line":208,"range":{"start_line":208,"start_character":23,"end_line":208,"end_character":25},"updated":"2019-01-31 17:46:07.000000000","message":"IPs","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"class NotEnoughFloatingipAvailable(exceptions.BlazarException):"},{"line_number":209,"context_line":"    code \u003d 400"},{"line_number":210,"context_line":"    msg_fmt \u003d _(\"Not enough floating IP available\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_3295b733","line":210,"range":{"start_line":210,"start_character":37,"end_line":210,"end_character":39},"updated":"2019-01-31 17:46:07.000000000","message":"IPs","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"}],"blazar/plugins/floatingips/floatingip_plugin.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def check_params(self, values):"},{"line_number":44,"context_line":"        if \u0027network_id\u0027 not in values:"},{"line_number":45,"context_line":"            raise manager_ex.MissingParameter(param\u003d\u0027netwok_id\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # floating_ip_address param is an optional"},{"line_number":48,"context_line":"        if (\u0027floating_ip_address\u0027 in values and"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_f29acf5f","line":45,"range":{"start_line":45,"start_character":53,"end_line":45,"end_character":62},"updated":"2019-01-31 17:46:07.000000000","message":"network_id","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def check_params(self, values):"},{"line_number":44,"context_line":"        if \u0027network_id\u0027 not in values:"},{"line_number":45,"context_line":"            raise manager_ex.MissingParameter(param\u003d\u0027netwok_id\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # floating_ip_address param is an optional"},{"line_number":48,"context_line":"        if (\u0027floating_ip_address\u0027 in values and"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_805e4043","line":45,"range":{"start_line":45,"start_character":53,"end_line":45,"end_character":62},"in_reply_to":"9fdfeff1_f29acf5f","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if \u0027network_id\u0027 not in values:"},{"line_number":45,"context_line":"            raise manager_ex.MissingParameter(param\u003d\u0027netwok_id\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # floating_ip_address param is an optional"},{"line_number":48,"context_line":"        if (\u0027floating_ip_address\u0027 in values and"},{"line_number":49,"context_line":"            not (netutils.is_valid_ipv4(values[\u0027floating_ip_address\u0027]) or"},{"line_number":50,"context_line":"                 netutils.is_valid_ipv6(values[\u0027floating_ip_address\u0027]))):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_32e377db","line":47,"updated":"2019-01-31 17:46:07.000000000","message":"optional parameter?","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if \u0027network_id\u0027 not in values:"},{"line_number":45,"context_line":"            raise manager_ex.MissingParameter(param\u003d\u0027netwok_id\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # floating_ip_address param is an optional"},{"line_number":48,"context_line":"        if (\u0027floating_ip_address\u0027 in values and"},{"line_number":49,"context_line":"            not (netutils.is_valid_ipv4(values[\u0027floating_ip_address\u0027]) or"},{"line_number":50,"context_line":"                 netutils.is_valid_ipv6(values[\u0027floating_ip_address\u0027]))):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_a05b4452","line":47,"in_reply_to":"9fdfeff1_32e377db","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"dd200e3bdba621ec9fc7a2ce82a61e1e4c34d027","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027amount\u0027: amount"},{"line_number":83,"context_line":"        }"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        fip_reservation \u003d db_api.fip_reservation_create(floatingip_rsrv_values)"},{"line_number":86,"context_line":"        for fip_address in required_fips:"},{"line_number":87,"context_line":"            fip_address_values \u003d {"},{"line_number":88,"context_line":"                \u0027address\u0027: fip_address,"},{"line_number":89,"context_line":"                \u0027floatingip_reservation_id\u0027: fip_reservation[\u0027id\u0027]"},{"line_number":90,"context_line":"            }"},{"line_number":91,"context_line":"            db_api.required_fip_create(fip_address_values)"},{"line_number":92,"context_line":"        for fip_id in floatingip_ids:"},{"line_number":93,"context_line":"            db_api.fip_allocation_create({\u0027floatingip_id\u0027: fip_id,"},{"line_number":94,"context_line":"                                          \u0027reservation_id\u0027: reservation_id})"},{"line_number":95,"context_line":"        return fip_reservation[\u0027id\u0027]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def on_start(self, resource_id):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5fc1f717_517cb8b4","line":94,"range":{"start_line":85,"start_character":0,"end_line":94,"end_character":76},"updated":"2019-03-20 08:04:02.000000000","message":"Ideally we\u0027d like to do this in one DB transaction,\nbut this kind of stuff is also found in other plugins, too... :(\n\nIt can be considered as a task for future improvements, I think.\nFWIW, placement uses DB wrapper [1] for this transaction.\n\n[1] https://github.com/openstack/placement/blob/master/placement/objects/resource_provider.py#L433","commit_id":"412787c4d0eb3ee98bceb6da7d1f589f7967f872"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"dd200e3bdba621ec9fc7a2ce82a61e1e4c34d027","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        raise NotImplementedError"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _matching_fips(self, network_id, fip_addresses, amount,"},{"line_number":104,"context_line":"                       start_date, end_date):"},{"line_number":105,"context_line":"        filter_array \u003d []"},{"line_number":106,"context_line":"        start_date_with_margin \u003d start_date - datetime.timedelta("},{"line_number":107,"context_line":"            minutes\u003dCONF.cleaning_time)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5fc1f717_54c5865a","line":104,"updated":"2019-03-20 08:04:02.000000000","message":"Good to have the doc of the function and note why we want to get not allocated IPs first","commit_id":"412787c4d0eb3ee98bceb6da7d1f589f7967f872"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"dd200e3bdba621ec9fc7a2ce82a61e1e4c34d027","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def _matching_fips(self, network_id, fip_addresses, amount,"},{"line_number":104,"context_line":"                       start_date, end_date):"},{"line_number":105,"context_line":"        filter_array \u003d []"},{"line_number":106,"context_line":"        start_date_with_margin \u003d start_date - datetime.timedelta("},{"line_number":107,"context_line":"            minutes\u003dCONF.cleaning_time)"},{"line_number":108,"context_line":"        end_date_with_margin \u003d end_date + datetime.timedelta("}],"source_content_type":"text/x-python","patch_set":14,"id":"5fc1f717_715e9446","line":105,"range":{"start_line":105,"start_character":0,"end_line":105,"end_character":25},"updated":"2019-03-20 08:04:02.000000000","message":"nit: My IDE told me that this is not needed","commit_id":"412787c4d0eb3ee98bceb6da7d1f589f7967f872"}],"blazar/tests/plugins/floatingips/test_floatingip_plugin.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"899118a6fb1e6578c11178e4c537c6b687388088","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        values \u003d {"},{"line_number":163,"context_line":"            \u0027lease_id\u0027: u\u0027018c1b43-e69e-4aef-a543-09681539cf4c\u0027,"},{"line_number":164,"context_line":"            \u0027network_id\u0027: u\u0027f548089e-fb3e-4013-a043-c5ed809c7a67\u0027,"},{"line_number":165,"context_line":"            \u0027start_date\u0027: datetime.datetime(2013, 12, 19, 20, 00),"},{"line_number":166,"context_line":"            \u0027end_date\u0027: datetime.datetime(2013, 12, 19, 21, 00),"},{"line_number":167,"context_line":"            \u0027resource_type\u0027: plugin.RESOURCE_TYPE,"},{"line_number":168,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_92582388","line":165,"range":{"start_line":165,"start_character":62,"end_line":165,"end_character":64},"updated":"2019-01-31 17:46:07.000000000","message":"General comment for the whole file: replace 00 by 0 (00 is octal and I think some linters complain about it)","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"08f0b43716614c0f9d0dbe0e3227a99529b44e32","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        values \u003d {"},{"line_number":163,"context_line":"            \u0027lease_id\u0027: u\u0027018c1b43-e69e-4aef-a543-09681539cf4c\u0027,"},{"line_number":164,"context_line":"            \u0027network_id\u0027: u\u0027f548089e-fb3e-4013-a043-c5ed809c7a67\u0027,"},{"line_number":165,"context_line":"            \u0027start_date\u0027: datetime.datetime(2013, 12, 19, 20, 00),"},{"line_number":166,"context_line":"            \u0027end_date\u0027: datetime.datetime(2013, 12, 19, 21, 00),"},{"line_number":167,"context_line":"            \u0027resource_type\u0027: plugin.RESOURCE_TYPE,"},{"line_number":168,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_40585855","line":165,"range":{"start_line":165,"start_character":62,"end_line":165,"end_character":64},"in_reply_to":"9fdfeff1_92582388","updated":"2019-02-06 05:18:30.000000000","message":"Done","commit_id":"8739c35b201428eaf42fea8d8938c58304282edf"}]}
