)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"331b1d7535746e04277d4fecb8a8e8cfa88b7f87","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"According to the Compute API reference [1], the \u0027description\u0027 parameter"},{"line_number":10,"context_line":"is optional when creating a security group. But the current"},{"line_number":11,"context_line":"implementation returns a HTTP 400 when this parameter is not specified."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch modifies the validation check, so that omitting \u0027description\u0027"},{"line_number":14,"context_line":"or passing an empty string is OK."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa32b979_f3b83a13","line":11,"updated":"2015-06-18 02:44:28.000000000","message":"I think we need to consider security_groups of both nova-network and Neutron.\n\nIf a client doesn\u0027t specify description value, Nova should not pass any value to Neutron like the client does. Because the description of Neutron is also optional.\nI feel it is not good to convert to \"\" in Nova side.\n\nhttps://review.openstack.org/#/c/192043/ is for doing that.","commit_id":"99b3f85ccde329d2082869a7f337af6ff88f129f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"657baf1d91edb57c9c3c9c1fb15755d94f423566","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"According to the Compute API reference [1], the \u0027description\u0027 parameter"},{"line_number":10,"context_line":"is optional when creating a security group. But the current"},{"line_number":11,"context_line":"implementation returns a HTTP 400 when this parameter is not specified."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch modifies the validation check, so that omitting \u0027description\u0027"},{"line_number":14,"context_line":"or passing an empty string is OK."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a4dcd0f_04eb3814","line":11,"in_reply_to":"1a4dcd0f_69ec55f3","updated":"2015-08-06 06:50:16.000000000","message":"Oh, I see. Thanks Ken\u0027ichi. :)","commit_id":"99b3f85ccde329d2082869a7f337af6ff88f129f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e139c4bef7ec5af12505bea7a8dc1f39e05679c5","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"According to the Compute API reference [1], the \u0027description\u0027 parameter"},{"line_number":10,"context_line":"is optional when creating a security group. But the current"},{"line_number":11,"context_line":"implementation returns a HTTP 400 when this parameter is not specified."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch modifies the validation check, so that omitting \u0027description\u0027"},{"line_number":14,"context_line":"or passing an empty string is OK."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a4dcd0f_de0e7d8b","line":11,"in_reply_to":"1a4dcd0f_cfd331d4","updated":"2015-08-06 06:15:29.000000000","message":"Yea, I too agree on this. If it is since forever (https://review.openstack.org/#/c/2919/7/nova/api/openstack/compute/contrib/security_groups.py) then we should not change it. We can fix doc or places where it is being said optional.","commit_id":"99b3f85ccde329d2082869a7f337af6ff88f129f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"54deca32d7220b75d6f7150e08176f8322578e09","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"According to the Compute API reference [1], the \u0027description\u0027 parameter"},{"line_number":10,"context_line":"is optional when creating a security group. But the current"},{"line_number":11,"context_line":"implementation returns a HTTP 400 when this parameter is not specified."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch modifies the validation check, so that omitting \u0027description\u0027"},{"line_number":14,"context_line":"or passing an empty string is OK."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a4dcd0f_69ec55f3","line":11,"in_reply_to":"1a4dcd0f_de0e7d8b","updated":"2015-08-06 06:32:25.000000000","message":"I have already fixed the Compute API reference with I9c9b66f35f267e4b99b8a294ebc23997b25ea920","commit_id":"99b3f85ccde329d2082869a7f337af6ff88f129f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"704b7995dcbe22aea4405ba27f5c5145dfc2cdaa","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"According to the Compute API reference [1], the \u0027description\u0027 parameter"},{"line_number":10,"context_line":"is optional when creating a security group. But the current"},{"line_number":11,"context_line":"implementation returns a HTTP 400 when this parameter is not specified."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch modifies the validation check, so that omitting \u0027description\u0027"},{"line_number":14,"context_line":"or passing an empty string is OK."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a4dcd0f_cfd331d4","line":11,"in_reply_to":"fa32b979_f3b83a13","updated":"2015-08-06 02:53:00.000000000","message":"From the initilal commit 634fe881223a7ea8e04b3054b39724207153be5b\n\nThe description is not optional. So we shouldn\u0027t change nova API like this.\n\nhttps://review.openstack.org/#/c/192043/ is right way to go","commit_id":"99b3f85ccde329d2082869a7f337af6ff88f129f"}],"nova/api/openstack/compute/contrib/security_groups.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c9970f872ae7d35c7497546e1990cd9d236959e0","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        security_group_data \u003d self._from_body(body, \u0027security_group\u0027)"},{"line_number":219,"context_line":"        group_name \u003d security_group_data.get(\u0027name\u0027, None)"},{"line_number":220,"context_line":"        group_description \u003d security_group_data.get(\u0027description\u0027, \u0027\u0027)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        with translate_exceptions():"},{"line_number":223,"context_line":"            self.security_group_api.validate_property(group_name, \u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_2dac7fec","line":220,"updated":"2015-05-27 04:28:18.000000000","message":"IMO, allowing empty string is not good way. Description is optional means if user passing any value that should be valid one(not empty etc)","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c9970f872ae7d35c7497546e1990cd9d236959e0","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        with translate_exceptions():"},{"line_number":223,"context_line":"            self.security_group_api.validate_property(group_name, \u0027name\u0027, None)"},{"line_number":224,"context_line":"            self.security_group_api.validate_property(group_description,"},{"line_number":225,"context_line":"                                                      \u0027description\u0027, None)"},{"line_number":226,"context_line":"            group_ref \u003d self.security_group_api.update_security_group("},{"line_number":227,"context_line":"                context, security_group, group_name, group_description)"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_4d969b95","line":225,"updated":"2015-05-27 04:28:18.000000000","message":"To make it optional work, we can have validation only in case user pass description.","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"}],"nova/api/openstack/compute/plugins/v3/security_groups.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c9970f872ae7d35c7497546e1990cd9d236959e0","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        security_group \u003d self._from_body(body, \u0027security_group\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        group_name \u003d security_group.get(\u0027name\u0027, None)"},{"line_number":183,"context_line":"        group_description \u003d security_group.get(\u0027description\u0027, \u0027\u0027)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        try:"},{"line_number":186,"context_line":"            self.security_group_api.validate_property(group_name, \u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_cde84b19","line":183,"updated":"2015-05-27 04:28:18.000000000","message":"ditto","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"}],"nova/compute/api.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6a2ab2dd3a9dbd33346b1c35f4e2cd9f941f41a6","unresolved":false,"context_lines":[{"line_number":3791,"context_line":""},{"line_number":3792,"context_line":"        min_length \u003d 1"},{"line_number":3793,"context_line":"        # Compute API v2 states that description is optional"},{"line_number":3794,"context_line":"        if property \u003d\u003d \u0027description\u0027:"},{"line_number":3795,"context_line":"            min_length \u003d 0"},{"line_number":3796,"context_line":"        utils.check_string_length(val, name\u003dproperty,"},{"line_number":3797,"context_line":"                                  min_length\u003dmin_length, max_length\u003d255)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_18cefc62","line":3794,"updated":"2015-05-22 18:03:14.000000000","message":"not the cleanest solution but it works","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c9970f872ae7d35c7497546e1990cd9d236959e0","unresolved":false,"context_lines":[{"line_number":3792,"context_line":"        min_length \u003d 1"},{"line_number":3793,"context_line":"        # Compute API v2 states that description is optional"},{"line_number":3794,"context_line":"        if property \u003d\u003d \u0027description\u0027:"},{"line_number":3795,"context_line":"            min_length \u003d 0"},{"line_number":3796,"context_line":"        utils.check_string_length(val, name\u003dproperty,"},{"line_number":3797,"context_line":"                                  min_length\u003dmin_length, max_length\u003d255)"},{"line_number":3798,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_ede30732","line":3795,"updated":"2015-05-27 04:28:18.000000000","message":"I do not think its good option to allow empty description here","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"},{"author":{"_account_id":12561,"name":"Adrien Vergé","email":"adrienverge@gmail.com","username":"adrien.verge"},"change_message_id":"18e4e072da06ca8452a40e076b76e646f8492c32","unresolved":false,"context_lines":[{"line_number":3792,"context_line":"        min_length \u003d 1"},{"line_number":3793,"context_line":"        # Compute API v2 states that description is optional"},{"line_number":3794,"context_line":"        if property \u003d\u003d \u0027description\u0027:"},{"line_number":3795,"context_line":"            min_length \u003d 0"},{"line_number":3796,"context_line":"        utils.check_string_length(val, name\u003dproperty,"},{"line_number":3797,"context_line":"                                  min_length\u003dmin_length, max_length\u003d255)"},{"line_number":3798,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_385efc45","line":3795,"in_reply_to":"7a016987_ede30732","updated":"2015-05-27 08:08:18.000000000","message":"I looked at the best way to do it. It appears that it\u0027s the most straightforward way, without having to refactor much code (the function\u0027s signature and all its calls).","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2c08f15fc9ced92a19c6c5c45d4ec59a05d38804","unresolved":false,"context_lines":[{"line_number":3810,"context_line":"        min_length \u003d 1"},{"line_number":3811,"context_line":"        # Compute API v2 states that description is optional"},{"line_number":3812,"context_line":"        if property \u003d\u003d \u0027description\u0027:"},{"line_number":3813,"context_line":"            min_length \u003d 0"},{"line_number":3814,"context_line":"        utils.check_string_length(val, name\u003dproperty,"},{"line_number":3815,"context_line":"                                  min_length\u003dmin_length, max_length\u003d255)"},{"line_number":3816,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_094a7b55","line":3813,"updated":"2015-06-04 14:46:19.000000000","message":"can we write:\nmin_length \u003d 0 if property \u003d\u003d \u0027description\u0027 else 1","commit_id":"ae1f22a4185a5932d8ab0f1d2c954d57816da458"}],"nova/tests/unit/api/openstack/compute/contrib/test_security_groups.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"64f7bcee6a73c372769acdf8956c323070619e94","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        self._assert_no_security_groups_reserved(req.environ[\u0027nova.context\u0027])"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def test_create_security_group_with_whitespace_description(self):"},{"line_number":224,"context_line":"        sg \u003d security_group_template(description\u003d\u0027 \u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/os-security-groups\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_a1c77344","side":"PARENT","line":223,"updated":"2015-06-02 09:57:48.000000000","message":"We can keep this tests.","commit_id":"c13f693d496f4ea5dbc78244fefd9ec2d6ea8de5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d007826a4d6ff57475544d5d5e60cd63b1cb3546","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/os-security-groups\u0027)"},{"line_number":177,"context_line":"        res_dict \u003d self.controller.create(req, {\u0027security_group\u0027: sg})"},{"line_number":178,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027name\u0027], \u0027test\u0027)"},{"line_number":179,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027description\u0027], \u0027\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_create_security_group_with_blank_name(self):"},{"line_number":182,"context_line":"        sg \u003d security_group_template(name\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_cad90324","line":179,"updated":"2015-05-19 07:06:46.000000000","message":"i assume that security_group_with_no_description means that it shouldn\u0027t even be in the request","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"21de6082727a529802e170908e3a011e3cfad6b1","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/os-security-groups\u0027)"},{"line_number":177,"context_line":"        res_dict \u003d self.controller.create(req, {\u0027security_group\u0027: sg})"},{"line_number":178,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027name\u0027], \u0027test\u0027)"},{"line_number":179,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027description\u0027], \u0027\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_create_security_group_with_blank_name(self):"},{"line_number":182,"context_line":"        sg \u003d security_group_template(name\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f81ecbb9","line":179,"in_reply_to":"7a016987_cad90324","updated":"2015-05-19 23:23:29.000000000","message":"On L174 the \u0027description\u0027 is removed from the security group dict that\u0027s sent in the request","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"},{"author":{"_account_id":12561,"name":"Adrien Vergé","email":"adrienverge@gmail.com","username":"adrien.verge"},"change_message_id":"b94f6e9d5f308178976c9c2fec53315aca3931f4","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/os-security-groups\u0027)"},{"line_number":177,"context_line":"        res_dict \u003d self.controller.create(req, {\u0027security_group\u0027: sg})"},{"line_number":178,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027name\u0027], \u0027test\u0027)"},{"line_number":179,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027description\u0027], \u0027\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_create_security_group_with_blank_name(self):"},{"line_number":182,"context_line":"        sg \u003d security_group_template(name\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_6a1faf6c","line":179,"in_reply_to":"7a016987_cad90324","updated":"2015-05-19 07:31:52.000000000","message":"You\u0027re right, it should not be (and is not) in the request `sg`. It\u0027s in `res_dict`, the representation of the newly created object returned by the controller (unless I am missing your point).","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6a2ab2dd3a9dbd33346b1c35f4e2cd9f941f41a6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/os-security-groups\u0027)"},{"line_number":177,"context_line":"        res_dict \u003d self.controller.create(req, {\u0027security_group\u0027: sg})"},{"line_number":178,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027name\u0027], \u0027test\u0027)"},{"line_number":179,"context_line":"        self.assertEqual(res_dict[\u0027security_group\u0027][\u0027description\u0027], \u0027\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_create_security_group_with_blank_name(self):"},{"line_number":182,"context_line":"        sg \u003d security_group_template(name\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_78e3b0d9","line":179,"in_reply_to":"7a016987_f81ecbb9","updated":"2015-05-22 18:03:14.000000000","message":"ah i didn\u0027t see L174. thanks!","commit_id":"169d1677cc73198605a9f440fc00350538ea0885"}]}
