)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5e011a8157727f971e270347c30abff8276c1701","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Edit ServerGroup inval frmt msg to be more verbose"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since other APIs allow non-alphanumeric characters for names, the"},{"line_number":10,"context_line":"\"Inavlid format for name\" error message is not especially helpful at"},{"line_number":11,"context_line":"letting the caller know what was invalid about the message. Change"},{"line_number":12,"context_line":"this message to be more verbose."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_554c10c8","line":10,"updated":"2015-03-16 08:30:42.000000000","message":"Inavlid \u003d\u003e Invalid","commit_id":"a3e9007f382e6047ca485d52e3b802e18e564b8c"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"4f573202be11c8f1f0f02bc180c194d90e841e1a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Edit ServerGroup inval frmt msg to be more verbose"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since other APIs allow non-alphanumeric characters for names, the"},{"line_number":10,"context_line":"\"Inavlid format for name\" error message is not especially helpful at"},{"line_number":11,"context_line":"letting the caller know what was invalid about the message. Change"},{"line_number":12,"context_line":"this message to be more verbose."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a80dd14_db55781e","line":10,"in_reply_to":"9a80dd14_554c10c8","updated":"2015-03-16 16:54:32.000000000","message":"Done","commit_id":"a3e9007f382e6047ca485d52e3b802e18e564b8c"}],"nova/api/openstack/common.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d42a6fa68bbdbb9da4a941bec120dfea3032bdf9","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"CONF.import_opt(\u0027enable\u0027, \u0027nova.cells.opts\u0027, group\u003d\u0027cells\u0027)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"VALID_NAME_REGEX \u003d re.compile(parameter_types.valid_name_regex, re.UNICODE)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"XML_NS_V11 \u003d \u0027http://docs.openstack.org/compute/api/v1.1\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa963961_6126fecf","line":58,"updated":"2015-03-27 18:01:58.000000000","message":"Shouldn\u0027t we add a test to validate that we\u0027re actually honoring this now? Like just a \"foo bar\" group or something.","commit_id":"04e3157c1502e5733a2a449f0ab31c5a0c8fe1cd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cdd99f4e41da5180b90789e9dc25722326243383","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"CONF.import_opt(\u0027enable\u0027, \u0027nova.cells.opts\u0027, group\u003d\u0027cells\u0027)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"VALID_NAME_REGEX \u003d re.compile(parameter_types.valid_name_regex, re.UNICODE)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"XML_NS_V11 \u003d \u0027http://docs.openstack.org/compute/api/v1.1\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa963961_33660dee","line":58,"in_reply_to":"fa963961_6126fecf","updated":"2015-03-27 18:04:25.000000000","message":"And u\"\\U0001F4A9\" of course.","commit_id":"04e3157c1502e5733a2a449f0ab31c5a0c8fe1cd"}],"nova/api/openstack/compute/contrib/server_groups.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"da629fef171be0506619777719994b631e92fcd5","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                utils.check_string_length(value, field,"},{"line_number":111,"context_line":"                                          min_length\u003d1, max_length\u003d255)"},{"line_number":112,"context_line":"                if not common.VALID_NAME_REGEX.search(value):"},{"line_number":113,"context_line":"                    msg \u003d _(\"Invalid format for name: \u0027%s\u0027. Names can only \""},{"line_number":114,"context_line":"                            \"contain alphanumeric characters, dashes, \""},{"line_number":115,"context_line":"                            \"underscores, periods, and spaces and cannot \""},{"line_number":116,"context_line":"                            \"begin or end with a space.\") % value"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_78c05250","line":113,"updated":"2015-03-13 19:35:09.000000000","message":"For the v3 API, the name is validated using jsonschema and I believe this is where it validates the regex:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/validation/parameter_types.py#n52\n\nThat would be compared to common.VALID_NAME_REGEX here:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/common.py#n57\n\nI\u0027m not sure where we get the error value from for the v3 API jsonschema stuff though to see if it\u0027s as verbose as what\u0027s being proposed for the InvalidInput message.","commit_id":"d01f3e9ab77f044abab5aa0f3d320a51973e72c3"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"abb407113ed38a21e3f870695399773d58d03441","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                utils.check_string_length(value, field,"},{"line_number":111,"context_line":"                                          min_length\u003d1, max_length\u003d255)"},{"line_number":112,"context_line":"                if not common.VALID_NAME_REGEX.search(value):"},{"line_number":113,"context_line":"                    msg \u003d _(\"Invalid format for name: \u0027%s\u0027. Names can only \""},{"line_number":114,"context_line":"                            \"contain alphanumeric characters, dashes, \""},{"line_number":115,"context_line":"                            \"underscores, periods, and spaces and cannot \""},{"line_number":116,"context_line":"                            \"begin or end with a space.\") % value"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_5f5b5453","line":113,"in_reply_to":"9a80dd14_78c05250","updated":"2015-03-16 03:05:50.000000000","message":"The v3 API name validation in paramter_types.py is different behavior than common.VALID_NAME_REGEX that is used for v2 server groups.\n\nThe v2 regex check doesn\u0027t allow non-alphanumeric chars, but other v2 APIs do allow non-alphanumeric chars. That is the thinking behind why the error message for v2 should be more verbose.\n\nThe v3 API regex check is allowing any printable chars, even non-alphanumeric which seems to be consistent with APIs other than server group APIs, so I don\u0027t think it is necessary to edit the error message.\n\nIt looks like the error message that is returned when any jsonschema validation fails for any API is here:\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/validation/validators.py#n107","commit_id":"d01f3e9ab77f044abab5aa0f3d320a51973e72c3"}],"nova/tests/unit/api/openstack/compute/contrib/test_server_groups.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"788cdf31688b6b1b6d94e3a20313d1840664c771","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_create_server_group_with_non_alphanumeric_in_name(self):"},{"line_number":156,"context_line":"        # The fix for bug #1434335 expanded the allowable character set"},{"line_number":157,"context_line":"        # for server group names to include non-alphanumeric charcters"},{"line_number":158,"context_line":"        # if they are printable."},{"line_number":159,"context_line":"        sgroup \u003d server_group_template(name\u003d\u0027good*name\u0027,"},{"line_number":160,"context_line":"                                       policies\u003d[\u0027affinity\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa963961_ac94fa36","line":157,"updated":"2015-03-27 19:36:48.000000000","message":"s/charcters/characters/.","commit_id":"2cfb39a61f2a728a790e2ea55f3cab0211b4a1ec"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"3f3e1ffd78a128b5120372a54dece2709f31b74f","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_create_server_group_with_non_alphanumeric_in_name(self):"},{"line_number":156,"context_line":"        # The fix for bug #1434335 expanded the allowable character set"},{"line_number":157,"context_line":"        # for server group names to include non-alphanumeric charcters"},{"line_number":158,"context_line":"        # if they are printable."},{"line_number":159,"context_line":"        sgroup \u003d server_group_template(name\u003d\u0027good*name\u0027,"},{"line_number":160,"context_line":"                                       policies\u003d[\u0027affinity\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_41f1f2cc","line":157,"in_reply_to":"fa963961_ac94fa36","updated":"2015-03-27 22:43:51.000000000","message":"Done","commit_id":"2cfb39a61f2a728a790e2ea55f3cab0211b4a1ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"788cdf31688b6b1b6d94e3a20313d1840664c771","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # The fix for bug #1434335 expanded the allowable character set"},{"line_number":157,"context_line":"        # for server group names to include non-alphanumeric charcters"},{"line_number":158,"context_line":"        # if they are printable."},{"line_number":159,"context_line":"        sgroup \u003d server_group_template(name\u003d\u0027good*name\u0027,"},{"line_number":160,"context_line":"                                       policies\u003d[\u0027affinity\u0027])"},{"line_number":161,"context_line":"        res_dict \u003d self.controller.create(self.req,"},{"line_number":162,"context_line":"                                          body\u003d{\u0027server_group\u0027: sgroup})"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa963961_ccb61edc","line":159,"updated":"2015-03-27 19:36:48.000000000","message":"Shouldn\u0027t there also be a test with a space in it, e.g. \"good name\"?\n\nAnd how about unicode, e.g. u\"\\U0001F4A9\"  ?","commit_id":"2cfb39a61f2a728a790e2ea55f3cab0211b4a1ec"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"3f3e1ffd78a128b5120372a54dece2709f31b74f","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # The fix for bug #1434335 expanded the allowable character set"},{"line_number":157,"context_line":"        # for server group names to include non-alphanumeric charcters"},{"line_number":158,"context_line":"        # if they are printable."},{"line_number":159,"context_line":"        sgroup \u003d server_group_template(name\u003d\u0027good*name\u0027,"},{"line_number":160,"context_line":"                                       policies\u003d[\u0027affinity\u0027])"},{"line_number":161,"context_line":"        res_dict \u003d self.controller.create(self.req,"},{"line_number":162,"context_line":"                                          body\u003d{\u0027server_group\u0027: sgroup})"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_4176923f","line":159,"in_reply_to":"fa963961_ccb61edc","updated":"2015-03-27 22:43:51.000000000","message":"Spaces were previously allowed with the old regex, but I can add a space into the good name test for good measure.\n\nU0001F4A9 is not an acceptable character according to this common regex used for name checking across APIs.\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/validation/parameter_types.py#n37\n\nOnly unicode characters up to UFFFF are allowed. I can add it to the test case for illegal names though.","commit_id":"2cfb39a61f2a728a790e2ea55f3cab0211b4a1ec"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c64d1daa8ce34c102f2dc02f98126f27cdc6bfb","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        # The fix for bug #1434335 expanded the allowable character set"},{"line_number":157,"context_line":"        # for server group names to include non-alphanumeric charcters"},{"line_number":158,"context_line":"        # if they are printable."},{"line_number":159,"context_line":"        sgroup \u003d server_group_template(name\u003d\u0027good*name\u0027,"},{"line_number":160,"context_line":"                                       policies\u003d[\u0027affinity\u0027])"},{"line_number":161,"context_line":"        res_dict \u003d self.controller.create(self.req,"},{"line_number":162,"context_line":"                                          body\u003d{\u0027server_group\u0027: sgroup})"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa963961_a7941337","line":159,"in_reply_to":"fa963961_ccb61edc","updated":"2015-03-27 20:08:54.000000000","message":"Yep, any time unicode is being tested, pile-of-poo is required.","commit_id":"2cfb39a61f2a728a790e2ea55f3cab0211b4a1ec"}]}
