)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d521190ff25ef4c6bced07b2b6967d54a3104e44","unresolved":false,"context_lines":[{"line_number":10,"context_line":"leads to the user can input empty string, and nova API code can\u0027t"},{"line_number":11,"context_line":"handle that case. Finally the user will get 500 returned."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The create_backup and multi_create API are fixed. The networks and"},{"line_number":14,"context_line":"tenant_networks API have same problem on few parameters. But due to"},{"line_number":15,"context_line":"nova-network deprecated, just keep those API behaviour as before."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I521e914fc48b7a221431f41c567f2cb4b9b4ab99"},{"line_number":18,"context_line":"Closes-bug: #1652719"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a3905b3_2ad5c6b8","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":65},"updated":"2017-01-24 21:39:34.000000000","message":"I am not sure this meaning.\n\nnova-network is deprecated as the commit message, but that doesn\u0027t mean we cannot fix the problem on the deprecated APIs I think.\nIn addition, this problem seems to causes HTTP 500 errors.\nSo I think we can fix them.\n\nI just want to make the code simple as possible without some workaround. In this case, positive_integer_with_empty_str is that.","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"608d8c1cc2d93fbf7b3cd82d9af5438569fc5c69","unresolved":false,"context_lines":[{"line_number":10,"context_line":"leads to the user can input empty string, and nova API code can\u0027t"},{"line_number":11,"context_line":"handle that case. Finally the user will get 500 returned."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The create_backup and multi_create API are fixed. The networks and"},{"line_number":14,"context_line":"tenant_networks API have same problem on few parameters. But due to"},{"line_number":15,"context_line":"nova-network deprecated, just keep those API behaviour as before."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I521e914fc48b7a221431f41c567f2cb4b9b4ab99"},{"line_number":18,"context_line":"Closes-bug: #1652719"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a3905b3_fd80dc4b","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":65},"in_reply_to":"5a3905b3_2ad5c6b8","updated":"2017-01-25 05:12:09.000000000","message":"We still need \u0027positive_integer_with_empty_str\u0027, even we fix this for nova-network related API. there are few integers parameter accept empty string.","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c5fb0ffe6eb3b6ab32f287d353cda4b63c34d55c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"leads to the user can input empty string, and nova API code can\u0027t"},{"line_number":11,"context_line":"handle that case. Finally the user will get 500 returned."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The create_backup and multi_create API are fixed. The networks and"},{"line_number":14,"context_line":"tenant_networks API have same problem on few parameters. But due to"},{"line_number":15,"context_line":"nova-network deprecated, just keep those API behaviour as before."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I521e914fc48b7a221431f41c567f2cb4b9b4ab99"},{"line_number":18,"context_line":"Closes-bug: #1652719"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a461143_dedc031b","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":65},"in_reply_to":"5a3905b3_fd80dc4b","updated":"2017-01-25 18:46:59.000000000","message":"Let me check these parameters with the following comments.","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"}],"nova/api/openstack/compute/schemas/networks.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c5fb0ffe6eb3b6ab32f287d353cda4b63c34d55c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                \u0027allowed_end\u0027: parameter_types.ip_address,"},{"line_number":49,"context_line":"                \u0027enable_dhcp\u0027: parameter_types.boolean,"},{"line_number":50,"context_line":"                \u0027share_address\u0027: parameter_types.boolean,"},{"line_number":51,"context_line":"                \u0027mtu\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":52,"context_line":"                \u0027vlan\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":53,"context_line":"                \u0027vlan_start\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":54,"context_line":"                \u0027vpn_start\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_5eb0138c","line":51,"range":{"start_line":51,"start_character":17,"end_line":51,"end_character":20},"updated":"2017-01-25 18:46:59.000000000","message":"This mtu value is stored into a net object at https://github.com/openstack/nova/blob/master/nova/network/manager.py#L1244 with the default value \"None\":\n\n fixed_cidr\u003dNone, mtu\u003dNone, dhcp_server\u003dNone,\n\nSo the empty string doesn\u0027t have a special meaning and we can replace there without empty_str like the other parameters.","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b944174ba008b7983ae50ce16fc651db331bb97b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                \u0027allowed_end\u0027: parameter_types.ip_address,"},{"line_number":49,"context_line":"                \u0027enable_dhcp\u0027: parameter_types.boolean,"},{"line_number":50,"context_line":"                \u0027share_address\u0027: parameter_types.boolean,"},{"line_number":51,"context_line":"                \u0027mtu\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":52,"context_line":"                \u0027vlan\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":53,"context_line":"                \u0027vlan_start\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":54,"context_line":"                \u0027vpn_start\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_b2a4ff09","line":51,"range":{"start_line":51,"start_character":17,"end_line":51,"end_character":20},"in_reply_to":"3a461143_5eb0138c","updated":"2017-05-18 01:13:49.000000000","message":"The field in the network object is nullable https://github.com/openstack/nova/blob/master/nova/objects/network.py#L64\n\nSo I think it is fine to accept the empty str.","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c5fb0ffe6eb3b6ab32f287d353cda4b63c34d55c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                \u0027enable_dhcp\u0027: parameter_types.boolean,"},{"line_number":50,"context_line":"                \u0027share_address\u0027: parameter_types.boolean,"},{"line_number":51,"context_line":"                \u0027mtu\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":52,"context_line":"                \u0027vlan\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":53,"context_line":"                \u0027vlan_start\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":54,"context_line":"                \u0027vpn_start\u0027: {"},{"line_number":55,"context_line":"                    \u0027type\u0027: \u0027string\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_a1347ade","line":52,"range":{"start_line":52,"start_character":17,"end_line":52,"end_character":21},"updated":"2017-01-25 18:46:59.000000000","message":"This vlan value is extracted with\n\n vlan \u003d kwargs.get(\u0027vlan\u0027, None)\n\nat https://github.com/openstack/nova/blob/master/nova/network/manager.py#L1349\n\nSo I think this parameter also can be handled without empty_str.","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b944174ba008b7983ae50ce16fc651db331bb97b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                \u0027enable_dhcp\u0027: parameter_types.boolean,"},{"line_number":50,"context_line":"                \u0027share_address\u0027: parameter_types.boolean,"},{"line_number":51,"context_line":"                \u0027mtu\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":52,"context_line":"                \u0027vlan\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":53,"context_line":"                \u0027vlan_start\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":54,"context_line":"                \u0027vpn_start\u0027: {"},{"line_number":55,"context_line":"                    \u0027type\u0027: \u0027string\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_32b8ef28","line":52,"range":{"start_line":52,"start_character":17,"end_line":52,"end_character":21},"in_reply_to":"3a461143_a1347ade","updated":"2017-05-18 01:13:49.000000000","message":"that means the empty str is acceptable...so we should use the schema with empty str?","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c5fb0ffe6eb3b6ab32f287d353cda4b63c34d55c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                \u0027share_address\u0027: parameter_types.boolean,"},{"line_number":51,"context_line":"                \u0027mtu\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":52,"context_line":"                \u0027vlan\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":53,"context_line":"                \u0027vlan_start\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":54,"context_line":"                \u0027vpn_start\u0027: {"},{"line_number":55,"context_line":"                    \u0027type\u0027: \u0027string\u0027,"},{"line_number":56,"context_line":"                },"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_e473f0b2","line":53,"range":{"start_line":53,"start_character":17,"end_line":53,"end_character":27},"updated":"2017-01-25 18:46:59.000000000","message":"Oh, I know now this value is problematic..\n\nThere are 2 problems.\n\nCurrent code likes:\n\nhttps://github.com/openstack/nova/blob/master/nova/network/manager.py#L1352\n\n vlan \u003d kwargs[\u0027vlan_start\u0027] + index_vlan\n\nValue is not converted into integer in the code.\nIf users specify string value (like \u0027100\u0027), the above code causes an internal error with TypeError exception because the code sums string value and int value.\n\nSo at least, we need to convert the value into integer value for safe code. And we should not allow empty string for here.\n\nThe second problem is kwargs[\u0027vlan_start\u0027] also causes an internal error because the code expects user should specify vlan_start if not specifying vlan.","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b944174ba008b7983ae50ce16fc651db331bb97b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                \u0027share_address\u0027: parameter_types.boolean,"},{"line_number":51,"context_line":"                \u0027mtu\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":52,"context_line":"                \u0027vlan\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":53,"context_line":"                \u0027vlan_start\u0027: parameter_types.positive_integer_with_empty_str,"},{"line_number":54,"context_line":"                \u0027vpn_start\u0027: {"},{"line_number":55,"context_line":"                    \u0027type\u0027: \u0027string\u0027,"},{"line_number":56,"context_line":"                },"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_92457b1a","line":53,"range":{"start_line":53,"start_character":17,"end_line":53,"end_character":27},"in_reply_to":"3a461143_e473f0b2","updated":"2017-05-18 01:13:49.000000000","message":"If you check this https://github.com/openstack/nova/blob/master/nova/network/manager.py#L1177, actually it is accept the empty str, if it is a empty str, it will get a value from the config opt","commit_id":"94d8de8e075b17f0a000f69f4e1586e0109c5339"}],"nova/tests/unit/api/openstack/compute/test_create_backup.py":[{"author":{"_account_id":15293,"name":"Karen Bradshaw","email":"kbhawkey@gmail.com","username":"karenb"},"change_message_id":"49aa6e60755dc389b9bbdedd1765923fedf3db57","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          self.req, fakes.FAKE_UUID, body\u003dbody)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_create_backup_negative_rotation_with_empty_string(self):"},{"line_number":160,"context_line":"        body \u003d {"},{"line_number":161,"context_line":"            \u0027createBackup\u0027: {"},{"line_number":162,"context_line":"                \u0027name\u0027: \u0027Backup 1\u0027,"},{"line_number":163,"context_line":"                \u0027backup_type\u0027: \u0027daily\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_f23eb989","line":160,"updated":"2017-01-05 17:26:21.000000000","message":"Does the test name imply that a rotation set to an empty string is the same as a rotation set to a negative string or number?","commit_id":"3cce2414d753ab155f4b00107c07a9e2fe019039"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a7b9d0add9d34340dec540241a2ed37093314d69","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          self.req, fakes.FAKE_UUID, body\u003dbody)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def test_create_backup_negative_rotation_with_empty_string(self):"},{"line_number":160,"context_line":"        body \u003d {"},{"line_number":161,"context_line":"            \u0027createBackup\u0027: {"},{"line_number":162,"context_line":"                \u0027name\u0027: \u0027Backup 1\u0027,"},{"line_number":163,"context_line":"                \u0027backup_type\u0027: \u0027daily\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a3905b3_b99c16c1","line":160,"in_reply_to":"ba5201f7_f23eb989","updated":"2017-01-23 11:03:01.000000000","message":"yea, I should remove the \u0027negative\u0027.","commit_id":"3cce2414d753ab155f4b00107c07a9e2fe019039"}],"nova/tests/unit/api/openstack/compute/test_multiple_create.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1465985d32ed0e1024566253a9bc2f679baa393a","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            \u0027server\u0027: {"},{"line_number":186,"context_line":"                multiple_create_v21.MIN_ATTRIBUTE_NAME: \u0027\u0027,"},{"line_number":187,"context_line":"                \u0027name\u0027: \u0027server_test\u0027,"},{"line_number":188,"context_line":"                \u0027imageRef\u0027: image_href,"},{"line_number":189,"context_line":"                \u0027flavorRef\u0027: flavor_ref,"},{"line_number":190,"context_line":"            }"},{"line_number":191,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff0f0b1f_2fc2165a","line":188,"range":{"start_line":188,"start_character":17,"end_line":188,"end_character":25},"updated":"2017-05-24 07:31:15.000000000","message":"nice, thanks for fixing this too","commit_id":"f2b45f11c8362bbce230de4bc31230b2bb5d6033"}],"nova/tests/unit/api/openstack/compute/test_networks.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ba26b4bd83f630bb67330d4e2fba3ed25bb4ce65","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                          body\u003dself.new_network)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def test_network_create_empty_vlan_start(self):"},{"line_number":271,"context_line":"        self.new_network[\u0027network\u0027][\u0027vlan_start\u0027] \u003d \u0027foo\u0027"},{"line_number":272,"context_line":"        self.assertRaises(self.validation_error,"},{"line_number":273,"context_line":"                          self.controller.create, self.req,"},{"line_number":274,"context_line":"                          body\u003dself.new_network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_47ec10f3","line":271,"range":{"start_line":271,"start_character":53,"end_line":271,"end_character":56},"updated":"2017-01-06 09:07:27.000000000","message":"this need to be \u0027\u0027, just curious\nwill add check for exception message can find this typo?","commit_id":"3cce2414d753ab155f4b00107c07a9e2fe019039"},{"author":{"_account_id":15293,"name":"Karen Bradshaw","email":"kbhawkey@gmail.com","username":"karenb"},"change_message_id":"49aa6e60755dc389b9bbdedd1765923fedf3db57","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def test_network_create_empty_vlan_start(self):"},{"line_number":271,"context_line":"        self.new_network[\u0027network\u0027][\u0027vlan_start\u0027] \u003d \u0027foo\u0027"},{"line_number":272,"context_line":"        self.assertRaises(self.validation_error,"},{"line_number":273,"context_line":"                          self.controller.create, self.req,"},{"line_number":274,"context_line":"                          body\u003dself.new_network)"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_92156de6","line":272,"updated":"2017-01-05 17:26:21.000000000","message":"Should new_network[\u0027network\u0027][\u0027vlan_start\u0027] \u003d \u0027\u0027","commit_id":"3cce2414d753ab155f4b00107c07a9e2fe019039"}],"nova/tests/unit/api/openstack/compute/test_tenant_networks.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ba26b4bd83f630bb67330d4e2fba3ed25bb4ce65","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    def test_network_create_with_bad_num_networks(self):"},{"line_number":291,"context_line":"        body \u003d {\u0027network\u0027: {\"cidr\": \"10.20.105.0/24\","},{"line_number":292,"context_line":"                            \"label\": \"new net 1\","},{"line_number":293,"context_line":"                            \"num_networks\": \"foo\"}}"},{"line_number":294,"context_line":"        self.assertRaises(self.validation_error,"},{"line_number":295,"context_line":"                          self.controller.create, self.req, body\u003dbody)"},{"line_number":296,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_071f6808","line":293,"range":{"start_line":293,"start_character":29,"end_line":293,"end_character":49},"updated":"2017-01-06 09:07:27.000000000","message":"this is not related to this patch.. but still good","commit_id":"3cce2414d753ab155f4b00107c07a9e2fe019039"}]}
