)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"9c762dd2a052056c60a5cb895ac50ccada616475","unresolved":false,"context_lines":[{"line_number":33,"context_line":"DNS names may contain the underscore.[1][2]."},{"line_number":34,"context_line":"Systems such as DomainKeys and service records use the underscore."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"These changes allow us to use underscore in hostnames."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"[1] https://www.ietf.org/rfc/rfc1912.txt"},{"line_number":39,"context_line":"[2] https://www.ietf.org/rfc/rfc1033.txt"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f560f44_334f51be","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":54},"updated":"2020-08-18 14:05:57.000000000","message":"But this is illegal, right? The example above is a hostname with an _, which is explicitly disallowed by the RFC. In fact, the class in question here is named \"Hostname\", which leads me to believe it should not allow _.\n\nI would argue that our validation is working correctly here. The user attempted to use an invalid hostname and we caught it.\n\nIf there is a need for non-hostname DNS names to be set somewhere we should probably create a new type for that that does allow _, but it seems inappropriate to me to allow it in the hostname type itself.","commit_id":"ff070c126d36a929cd82ba05693d359fdf6e9fff"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8e728d00591a6fb85beb5c2bb04e281235ceb13b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"DNS names may contain the underscore.[1][2]."},{"line_number":34,"context_line":"Systems such as DomainKeys and service records use the underscore."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"These changes allow us to use underscore in hostnames."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"[1] https://www.ietf.org/rfc/rfc1912.txt"},{"line_number":39,"context_line":"[2] https://www.ietf.org/rfc/rfc1033.txt"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f560f44_ce38ec3c","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":54},"in_reply_to":"9f560f44_334f51be","updated":"2020-08-18 14:41:20.000000000","message":"Yes I was wondering if we should introduce a new type dedicated to handle this case or follow a path like proposed in the PS1, so, I\u0027ll propose a new type and a new option to handle this case.\n\nAt first glance, by looking on the use case above, I think this new type should be focused on Domain, so it could be simply called `Domain`, is it work for you?\n\nRegarding the new option, this one should be capable to handle Hostname type, Address type, and the new defined Domain type, what do you think about this?\n\nAlso do you have an idea for the option\u0027s name? (if we choose to handle the 3 cases then it could be something like `DomainHostAddress`)","commit_id":"ff070c126d36a929cd82ba05693d359fdf6e9fff"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"1fe01b55703a8f65ee1c9804e5204ec62d310e52","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hervé Beraud \u003chberaud@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-08-18 17:42:06 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow HostAddressOpt to accept undercore - RFC1033"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"openstack services are failing to start when a hostname with underscord"},{"line_number":10,"context_line":"_ is provided."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f560f44_c73a6ee4","line":7,"range":{"start_line":7,"start_character":31,"end_line":7,"end_character":40},"updated":"2020-09-21 15:22:17.000000000","message":"underscore","commit_id":"af760848f67b1093fe63c293d7eba062e10e8620"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"810e933622518a006360579e6b9295668f240add","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hervé Beraud \u003chberaud@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-09-21 17:23:43 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow HostAddressOpt to accept undercore - RFC1033"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"openstack services are failing to start when a hostname with underscore"},{"line_number":10,"context_line":"_ is provided."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9f560f44_df6341b0","line":7,"range":{"start_line":7,"start_character":31,"end_line":7,"end_character":40},"updated":"2020-09-22 10:24:59.000000000","message":"underScore","commit_id":"8d53e2df2d5c7cca288fc42b3df1fd8a362c2aa6"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"0fd8740b1889aa46d0c61e5043437aaaca9b83b1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Daniel Bengtsson \u003cdbengt@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-10-13 11:55:12 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow HostAddressOpt to accept undercore - RFC1033"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"openstack services are failing to start when a hostname with underscore"},{"line_number":10,"context_line":"_ is provided."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9f560f44_e08d812a","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":50},"updated":"2020-10-13 09:51:42.000000000","message":"I think this message should be updated, it no longer matches these changes","commit_id":"71549bc1bfd4d191e440bf0ce352c1d664cf5287"}],"oslo_config/tests/test_types.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"1ff442752b58345d9f0596a71e28770392440bf5","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def test_invalid_host_addresses(self):"},{"line_number":747,"context_line":"        self.assertInvalid(\u0027-1\u0027)"},{"line_number":748,"context_line":"        self.assertInvalid(\u0027_foo\u0027)"},{"line_number":749,"context_line":"        self.assertInvalid(\u00273.14\u0027)"},{"line_number":750,"context_line":"        self.assertInvalid(\u002710.0\u0027)"},{"line_number":751,"context_line":"        self.assertInvalid(\u0027host..name\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_22bb0be5","side":"PARENT","line":748,"updated":"2020-10-12 16:23:46.000000000","message":"To be more explicit about what I\u0027m looking for here, this test needs to remain. The HostAddress type needs to continue to disallow _ characters because they are invalid in a hostname. We can\u0027t change that behavior without a deprecation period and a major release of the library, which I don\u0027t think is warranted here. That\u0027s why I want to add it as a new type that consumers of oslo.config can opt into.\n\nAdding a new behavior is fairly safe, changing an existing one is not.","commit_id":"fcb88941e39a31e3ef6c5a930063da419431a7f6"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"f2f9bfce98c4eb8e4abfcb9bf632fe420d0de43e","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"    def test_invalid_host_addresses(self):"},{"line_number":747,"context_line":"        self.assertInvalid(\u0027-1\u0027)"},{"line_number":748,"context_line":"        self.assertInvalid(\u0027_foo\u0027)"},{"line_number":749,"context_line":"        self.assertInvalid(\u00273.14\u0027)"},{"line_number":750,"context_line":"        self.assertInvalid(\u002710.0\u0027)"},{"line_number":751,"context_line":"        self.assertInvalid(\u0027host..name\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f6b1bfe_2bf542cc","side":"PARENT","line":748,"updated":"2020-10-15 16:49:38.000000000","message":"Need to keep this.","commit_id":"fcb88941e39a31e3ef6c5a930063da419431a7f6"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"f2f9bfce98c4eb8e4abfcb9bf632fe420d0de43e","unresolved":false,"context_lines":[{"line_number":768,"context_line":"class HostDomainTypeTests(TypeTestHelper, unittest.TestCase):"},{"line_number":769,"context_line":"    type \u003d types.HostDomain()"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"    def test_valid_host_addresses(self):"},{"line_number":772,"context_line":"        self.assertConvertedValue(\u0027_foo\u0027, \u0027_foo\u0027)"},{"line_number":773,"context_line":"        self.assertConvertedValue(\u0027host_name\u0027, \u0027host_name\u0027)"},{"line_number":774,"context_line":"        self.assertConvertedValue("}],"source_content_type":"text/x-python","patch_set":10,"id":"7f6b1bfe_4b219e4d","line":771,"updated":"2020-10-15 16:49:38.000000000","message":"Nit: Would be nice to also cover the invalid cases since this uses a different regex from HostAddress above.","commit_id":"d723412ce38d1e88954a52e943ec4ab85f7b4992"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"5f2612a56820ebad7e12e96041c378b9bf9a656d","unresolved":false,"context_lines":[{"line_number":768,"context_line":"class HostDomainTypeTests(TypeTestHelper, unittest.TestCase):"},{"line_number":769,"context_line":"    type \u003d types.HostDomain()"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"    def test_valid_host_addresses(self):"},{"line_number":772,"context_line":"        self.assertConvertedValue(\u0027_foo\u0027, \u0027_foo\u0027)"},{"line_number":773,"context_line":"        self.assertConvertedValue(\u0027host_name\u0027, \u0027host_name\u0027)"},{"line_number":774,"context_line":"        self.assertConvertedValue("}],"source_content_type":"text/x-python","patch_set":10,"id":"3f65232a_8d512412","line":771,"in_reply_to":"7f6b1bfe_4b219e4d","updated":"2020-10-22 10:24:07.000000000","message":"Yes sorry you\u0027re right. I will add negative tests.","commit_id":"d723412ce38d1e88954a52e943ec4ab85f7b4992"}],"oslo_config/types.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"851096784123a0aa17c9b70239611f7d41e66c01","unresolved":false,"context_lines":[{"line_number":888,"context_line":"        super(HostAddress, self).__init__(type_name\u003dtype_name)"},{"line_number":889,"context_line":"        self.ip_address \u003d IPAddress(version, type_name)"},{"line_number":890,"context_line":"        self.hostname \u003d Hostname(\u0027localhost\u0027)"},{"line_number":891,"context_line":"        self.domain \u003d Domain(\u0027locahost\u0027)"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"    def __call__(self, value):"},{"line_number":894,"context_line":"        \"\"\"Checks if is a valid IP/hostname."}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_b1f5d953","line":891,"range":{"start_line":891,"start_character":30,"end_line":891,"end_character":38},"updated":"2020-09-22 18:59:15.000000000","message":"*localhost","commit_id":"8d53e2df2d5c7cca288fc42b3df1fd8a362c2aa6"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"1ff442752b58345d9f0596a71e28770392440bf5","unresolved":false,"context_lines":[{"line_number":849,"context_line":"                # https://www.ietf.org/rfc/rfc1912,"},{"line_number":850,"context_line":"                # http://domainkeys.sourceforge.net/underscore.html"},{"line_number":851,"context_line":"                # https://bugs.launchpad.net/oslo.config/+bug/1892044"},{"line_number":852,"context_line":"                try:"},{"line_number":853,"context_line":"                    value \u003d self.hostname("},{"line_number":854,"context_line":"                        value, regex\u003d\u0027(?!-)[A-Z0-9-_]{1,63}(?\u003c!-)$\u0027)"},{"line_number":855,"context_line":"                except ValueError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_e299137a","line":852,"updated":"2020-10-12 16:23:46.000000000","message":"Because this is on the default code path, it\u0027s still going to change the behavior of the existing type. That\u0027s what I\u0027m trying to avoid.","commit_id":"486638e0686dbf59417db94db64a1596272532d8"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"1ff442752b58345d9f0596a71e28770392440bf5","unresolved":false,"context_lines":[{"line_number":851,"context_line":"                # https://bugs.launchpad.net/oslo.config/+bug/1892044"},{"line_number":852,"context_line":"                try:"},{"line_number":853,"context_line":"                    value \u003d self.hostname("},{"line_number":854,"context_line":"                        value, regex\u003d\u0027(?!-)[A-Z0-9-_]{1,63}(?\u003c!-)$\u0027)"},{"line_number":855,"context_line":"                except ValueError:"},{"line_number":856,"context_line":"                    raise ValueError("},{"line_number":857,"context_line":"                        \"%s is not a valid host address\" % (value,))"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_22dcab16","line":854,"range":{"start_line":854,"start_character":37,"end_line":854,"end_character":67},"updated":"2020-10-12 16:23:46.000000000","message":"Style nit: Since we are now going to have multiple regexes doing similar but different things, it would be nice to assign them to constants so they can be named descriptively. You could add the following module-level constants and then reference them appropriately:\n\nHOSTNAME_REGEX \u003d \u0027(?!-)[A-Z0-9-]{1,63}(?\u003c!-)$\u0027\n# DOMAIN_REGEX is HOSTNAME_REGEX with the _ character added\nDOMAIN_REGEX \u003d \u0027(?!-)[A-Z0-9-_]{1,63}(?\u003c!-)$\u0027","commit_id":"486638e0686dbf59417db94db64a1596272532d8"}]}
