)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":20000,"name":"Songming Yan","email":"yan.songming@zte.com.cn","username":"SonmingYan.zte"},"change_message_id":"6608d47b4e382f51e0d9b7a6858511134ae4adaa","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     LiuYong \u003cliu.yong8@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-31 23:17:21 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate \u0027-F\u0027 parameter for \u0027net-ip-availability-list\u0027 command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In \u0027net-ip-availability-list\u0027 command ,\u0027-F\u0027 or \u0027--field\u0027"},{"line_number":10,"context_line":"parameters specified is invalid"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9abb7d3a_74364b53","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":8},"updated":"2016-05-31 07:46:12.000000000","message":"Fix the problem of Validate \u0027-F\u0027 parameter for \u0027net-ip-availability-list\u0027 command","commit_id":"2e61363786cdcf8a167f67f0ad8a0e62049cc603"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"2896790adfc8f7d3a14eb9844ad4b4c0c68a99c9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liuyong \u003cliu.yong8@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-17 14:04:21 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate \u0027-F\u0027 parameter for \u0027net-ip-availability-list\u0027 command"},{"line_number":8,"context_line":"and \u0027net-ip-availability-show\u0027"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"In \u0027net-ip-availability-list\u0027 command ,\u0027-F\u0027 or \u0027--field\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3ac371cc_4d511fd8","line":7,"updated":"2016-08-16 09:27:46.000000000","message":"This commit message makes it sound like a change on the client side. However, this is really to get the service plugin to honor the API field selectors passed in. I would clarify that in this message a bit.\n\nAlso, please add an API test.","commit_id":"39c5fb6a14b51960bd6c593a45cf236e7d5f8728"},{"author":{"_account_id":22678,"name":"Bruce Tan","email":"brucetan@linux.vnet.ibm.com","username":"brucetan"},"change_message_id":"48c66eed15f81aeb44230a7c1de680098ee4b17f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liuyong \u003cliu.yong8@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-17 14:04:21 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate \u0027-F\u0027 parameter for \u0027net-ip-availability-list\u0027 command"},{"line_number":8,"context_line":"and \u0027net-ip-availability-show\u0027"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"In \u0027net-ip-availability-list\u0027 command ,\u0027-F\u0027 or \u0027--field\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9a629dbe_6d3f94d6","line":7,"in_reply_to":"3ac371cc_4d511fd8","updated":"2016-11-08 17:02:54.000000000","message":"I changed the commit message. Please let me know if the language is fine.\n\nAlso, do you mean current API test in neutron/tests/unit/extensions/test_network_ip_availability.py is insufficient?","commit_id":"39c5fb6a14b51960bd6c593a45cf236e7d5f8728"}],"neutron/services/network_ip_availability/plugin.py":[{"author":{"_account_id":20254,"name":"dongwenshuai","email":"dong.wenshuai@zte.com.cn","username":"dongwenshuai"},"change_message_id":"5af3384dc40a5a6f94fdc5ce00cee014ac91e768","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        \"\"\"Returns ip availability data for a collection of networks.\"\"\""},{"line_number":43,"context_line":"        net_ip_availabilities \u003d super(NetworkIPAvailabilityPlugin,"},{"line_number":44,"context_line":"                     self).get_network_ip_availabilities(context, filters)"},{"line_number":45,"context_line":"        return [self._fields(ip_availability, fields)"},{"line_number":46,"context_line":"                for ip_availability in net_ip_availabilities]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_network_ip_availability(self, context, id\u003dNone, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_54f7c7f4","line":45,"updated":"2016-05-31 07:33:10.000000000","message":"Maybe needs add a unit test case","commit_id":"2e61363786cdcf8a167f67f0ad8a0e62049cc603"},{"author":{"_account_id":20000,"name":"Songming Yan","email":"yan.songming@zte.com.cn","username":"SonmingYan.zte"},"change_message_id":"6608d47b4e382f51e0d9b7a6858511134ae4adaa","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        net_ip_availabilities \u003d super(NetworkIPAvailabilityPlugin,"},{"line_number":44,"context_line":"                     self).get_network_ip_availabilities(context, filters)"},{"line_number":45,"context_line":"        return [self._fields(ip_availability, fields)"},{"line_number":46,"context_line":"                for ip_availability in net_ip_availabilities]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_network_ip_availability(self, context, id\u003dNone, fields\u003dNone):"},{"line_number":49,"context_line":"        \"\"\"Return ip availability data for a specific network id.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_5487c7d6","line":46,"updated":"2016-05-31 07:46:12.000000000","message":"net_ip_availability in net_ip_availabilities","commit_id":"2e61363786cdcf8a167f67f0ad8a0e62049cc603"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"3f2ca7f67be902cf2108d5b02b4151f6fab6b2a5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return [self._fields(net_ip_availability, fields)"},{"line_number":46,"context_line":"                for net_ip_availability in net_ip_availabilities]"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_network_ip_availability(self, context, id\u003dNone, fields\u003dNone):"},{"line_number":49,"context_line":"        \"\"\"Return ip availability data for a specific network id.\"\"\""},{"line_number":50,"context_line":"        filters \u003d {\u0027network_id\u0027: [id]}"},{"line_number":51,"context_line":"        result \u003d self.get_network_ip_availabilities(context, filters)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_94ace136","line":48,"range":{"start_line":48,"start_character":60,"end_line":48,"end_character":71},"updated":"2016-06-02 18:48:14.000000000","message":"fields could be removed here or included in the get_network_ip_availabilities call if you decide to rewrite the unit test I commented on.","commit_id":"44d24eda334f8473f4274f578b5b802efd0982a0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cb317a629aa239cdccc0aab3428adccba53b2e2c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                      fields\u003dNone):"},{"line_number":43,"context_line":"        \"\"\"Returns ip availability data for a collection of networks.\"\"\""},{"line_number":44,"context_line":"        net_ip_availabilities \u003d super(NetworkIPAvailabilityPlugin,"},{"line_number":45,"context_line":"                     self).get_network_ip_availabilities(context, filters)"},{"line_number":46,"context_line":"        return [self._fields(net_ip_availability, fields)"},{"line_number":47,"context_line":"                for net_ip_availability in net_ip_availabilities]"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_5405f90e","line":45,"updated":"2016-06-13 07:27:47.000000000","message":"why not pass the fields here?\nthis would require changing the base class but that is the correct way to go","commit_id":"95f905defccadf6d794e558a5d0a88a4899f5b7d"},{"author":{"_account_id":20251,"name":"LiuYong","email":"liu.yong8@zte.com.cn","username":"LiuYong"},"change_message_id":"4dba23e71286ef6cb9303e09c1753a5384f4d5ea","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                      fields\u003dNone):"},{"line_number":43,"context_line":"        \"\"\"Returns ip availability data for a collection of networks.\"\"\""},{"line_number":44,"context_line":"        net_ip_availabilities \u003d super(NetworkIPAvailabilityPlugin,"},{"line_number":45,"context_line":"                     self).get_network_ip_availabilities(context, filters)"},{"line_number":46,"context_line":"        return [self._fields(net_ip_availability, fields)"},{"line_number":47,"context_line":"                for net_ip_availability in net_ip_availabilities]"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_c134a2e0","line":45,"in_reply_to":"7aa08908_5405f90e","updated":"2016-06-17 02:05:26.000000000","message":"Done","commit_id":"95f905defccadf6d794e558a5d0a88a4899f5b7d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cb317a629aa239cdccc0aab3428adccba53b2e2c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def get_network_ip_availability(self, context, id\u003dNone, fields\u003dNone):"},{"line_number":50,"context_line":"        \"\"\"Return ip availability data for a specific network id.\"\"\""},{"line_number":51,"context_line":"        filters \u003d {\u0027network_id\u0027: [id]}"},{"line_number":52,"context_line":"        result \u003d self.get_network_ip_availabilities(context, filters)"},{"line_number":53,"context_line":"        if result:"},{"line_number":54,"context_line":"            return self._fields(result[0], fields)"},{"line_number":55,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_142ff188","line":52,"updated":"2016-06-13 07:27:47.000000000","message":"ditto","commit_id":"95f905defccadf6d794e558a5d0a88a4899f5b7d"},{"author":{"_account_id":20251,"name":"LiuYong","email":"liu.yong8@zte.com.cn","username":"LiuYong"},"change_message_id":"4dba23e71286ef6cb9303e09c1753a5384f4d5ea","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def get_network_ip_availability(self, context, id\u003dNone, fields\u003dNone):"},{"line_number":50,"context_line":"        \"\"\"Return ip availability data for a specific network id.\"\"\""},{"line_number":51,"context_line":"        filters \u003d {\u0027network_id\u0027: [id]}"},{"line_number":52,"context_line":"        result \u003d self.get_network_ip_availabilities(context, filters)"},{"line_number":53,"context_line":"        if result:"},{"line_number":54,"context_line":"            return self._fields(result[0], fields)"},{"line_number":55,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_213486dc","line":52,"in_reply_to":"7aa08908_142ff188","updated":"2016-06-17 02:05:26.000000000","message":"Done","commit_id":"95f905defccadf6d794e558a5d0a88a4899f5b7d"}],"neutron/tests/unit/extensions/test_network_ip_availability.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"3f2ca7f67be902cf2108d5b02b4151f6fab6b2a5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                self.assertEqual(253, availability[\u0027total_ips\u0027])"},{"line_number":74,"context_line":"                self.assertNotIn(\u0027network_id\u0027, availability)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_usages_query_with_fields_network_id(self):"},{"line_number":77,"context_line":"        with self.network() as net:"},{"line_number":78,"context_line":"            with self.subnet(network\u003dnet):"},{"line_number":79,"context_line":"                network \u003d net[\u0027network\u0027]"},{"line_number":80,"context_line":"                net_id \u003d network[\u0027id\u0027]"},{"line_number":81,"context_line":"                # Get by query fields: network_id"},{"line_number":82,"context_line":"                params \u003d \u0027fields\u003dnetwork_id\u0027"},{"line_number":83,"context_line":"                request \u003d self.new_list_request(API_RESOURCE, params\u003dparams)"},{"line_number":84,"context_line":"                response \u003d self.deserialize(self.fmt,"},{"line_number":85,"context_line":"                                            request.get_response(self.ext_api))"},{"line_number":86,"context_line":"                self.assertIn(IP_AVAILS_KEY, response)"},{"line_number":87,"context_line":"                self.assertEqual(1, len(response[IP_AVAILS_KEY]))"},{"line_number":88,"context_line":"                availability \u003d response[IP_AVAILS_KEY][0]"},{"line_number":89,"context_line":"                self.assertIn(\u0027network_id\u0027, availability)"},{"line_number":90,"context_line":"                self.assertEqual(net_id, availability[\u0027network_id\u0027])"},{"line_number":91,"context_line":"                self.assertNotIn(\u0027total_ips\u0027, availability)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @staticmethod"},{"line_number":94,"context_line":"    def _find_availability(availabilities, net_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_54d559b7","line":91,"range":{"start_line":76,"start_character":4,"end_line":91,"end_character":59},"updated":"2016-06-02 18:48:14.000000000","message":"Not sure what functionality is being tested here that isn\u0027t being tested in test_usages_query_with_fields_total_ips.\n\nI would remove it or rewrite it to test get_network_ip_availability by using new_show_request instead of new_list_request.","commit_id":"44d24eda334f8473f4274f578b5b802efd0982a0"}]}
