)]}'
{"os_resource_classes/tests/test_os_resource_classes.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"2ad26639b7ad74880c8e2d9788cfc5938afb7103","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        values \u003d ["},{"line_number":54,"context_line":"            (\"foo\", \"CUSTOM_FOO\"),"},{"line_number":55,"context_line":"            (\"VCPU\", \"CUSTOM_VCPU\"),"},{"line_number":56,"context_line":"            (\"CUSTOM_BOB\", \"CUSTOM_CUSTOM_BOB\"),"},{"line_number":57,"context_line":"            (\"CUSTM_BOB\", \"CUSTOM_CUSTM_BOB\"),"},{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":"        for test_value, expected in values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_ed30a558","line":56,"updated":"2019-02-01 11:52:32.000000000","message":"I seem to recall some discussion long ago on why CUSTOM_BOB doesn\u0027t become CUSTOM_BOB but I can\u0027t remember the details. Seeing it again now, isolated, it seems _really_ weird to me when the method is \"normalize\". If I give it something that is already \"normal\" wouldn\u0027t it stay that way?","commit_id":"cb1dc6b3ccf52ea3841af8d39868b049cbb030d3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"89dd54cb7810d597effb2b750ed2eedb436eb3dd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        values \u003d ["},{"line_number":54,"context_line":"            (\"foo\", \"CUSTOM_FOO\"),"},{"line_number":55,"context_line":"            (\"VCPU\", \"CUSTOM_VCPU\"),"},{"line_number":56,"context_line":"            (\"CUSTOM_BOB\", \"CUSTOM_CUSTOM_BOB\"),"},{"line_number":57,"context_line":"            (\"CUSTM_BOB\", \"CUSTOM_CUSTM_BOB\"),"},{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":"        for test_value, expected in values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_fca5b49f","line":56,"in_reply_to":"9fdfeff1_ed30a558","updated":"2019-02-01 14:04:45.000000000","message":"\u003e I seem to recall some discussion long ago on why CUSTOM_BOB doesn\u0027t\n \u003e become CUSTOM_BOB but I can\u0027t remember the details.\n\nIt was around the ironic custom resource class stuff [1], but I can\u0027t find/remember the details either.\n\n \u003e Seeing it again\n \u003e now, isolated, it seems _really_ weird to me when the method is\n \u003e \"normalize\". If I give it something that is already \"normal\"\n \u003e wouldn\u0027t it stay that way?\n\nI agree - hence the debate that was, for whatever reason, resolved to make it this way.\n\nIn any case, the method is a straight copy from nova [2], where it is being used by ironic [3][4], and the intent is to cut those usages over to this one once it\u0027s in a release. So the logic should not be changed without due process (and not in this patch).\n\nOr are you just suggesting it needs a different name? I guess now would be the time to do that; but IMO this is as good as any, and I like the symmetry with os-traits.\n\n[1] https://specs.openstack.org/openstack/nova-specs/specs/pike/implemented/custom-resource-classes-in-flavors.html\n[2] https://github.com/openstack/nova/blob/5a4863aa152f58f6de426b3908a75c2cc1b2efca/nova/rc_fields.py#L59\n[3] https://github.com/openstack/nova/blob/5a4863aa152f58f6de426b3908a75c2cc1b2efca/nova/virt/ironic/driver.py#L515\n[4] https://github.com/openstack/nova/blob/5a4863aa152f58f6de426b3908a75c2cc1b2efca/nova/virt/ironic/driver.py#L820","commit_id":"cb1dc6b3ccf52ea3841af8d39868b049cbb030d3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ba5190b2c52031e8bcab291b264dd6ad72b3ef90","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        values \u003d ["},{"line_number":54,"context_line":"            (\"foo\", \"CUSTOM_FOO\"),"},{"line_number":55,"context_line":"            (\"VCPU\", \"CUSTOM_VCPU\"),"},{"line_number":56,"context_line":"            (\"CUSTOM_BOB\", \"CUSTOM_CUSTOM_BOB\"),"},{"line_number":57,"context_line":"            (\"CUSTM_BOB\", \"CUSTOM_CUSTM_BOB\"),"},{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":"        for test_value, expected in values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_5f7cf270","line":56,"in_reply_to":"9fdfeff1_fc4134a7","updated":"2019-02-01 14:43:01.000000000","message":"I looked some more, and still can\u0027t find any record of the CUSTOM_CUSTOM_ discussion. But I added the caveat, and a comment referencing the relevant nova commits.","commit_id":"cb1dc6b3ccf52ea3841af8d39868b049cbb030d3"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"19beec6b883c76b6fc73e2fe38e33e9933e31230","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        values \u003d ["},{"line_number":54,"context_line":"            (\"foo\", \"CUSTOM_FOO\"),"},{"line_number":55,"context_line":"            (\"VCPU\", \"CUSTOM_VCPU\"),"},{"line_number":56,"context_line":"            (\"CUSTOM_BOB\", \"CUSTOM_CUSTOM_BOB\"),"},{"line_number":57,"context_line":"            (\"CUSTM_BOB\", \"CUSTOM_CUSTM_BOB\"),"},{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":"        for test_value, expected in values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_fc4134a7","line":56,"in_reply_to":"9fdfeff1_fca5b49f","updated":"2019-02-01 14:13:04.000000000","message":"You\u0027re right, we probably shouldn\u0027t change it at this point. Not even the name. However, since we\u0027re here, now might be a good time to make sure the docstring (on the actual method) explains the CUSTOM_CUSTOM behavior, and if we can dig up the rationale from history, put that in there too.\n\nIt might make sense to add reference the nova change id or commit that originally added it as well, in the commit message. For the sake of tracing if anybody ever wants to do that.","commit_id":"cb1dc6b3ccf52ea3841af8d39868b049cbb030d3"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d8662a09e6e607a5f3bfb8fa533ba4b41f3f1bae","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertEqual(expected_length, len(rc.STANDARDS))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_normalize_name(self):"},{"line_number":53,"context_line":"        values \u003d ["},{"line_number":54,"context_line":"            (\"foo\", \"CUSTOM_FOO\"),"},{"line_number":55,"context_line":"            (\"VCPU\", \"CUSTOM_VCPU\"),"},{"line_number":56,"context_line":"            (\"CUSTOM_BOB\", \"CUSTOM_CUSTOM_BOB\"),"},{"line_number":57,"context_line":"            (\"CUSTM_BOB\", \"CUSTOM_CUSTM_BOB\"),"},{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":"        for test_value, expected in values:"},{"line_number":60,"context_line":"            result \u003d rc.normalize_name(test_value)"},{"line_number":61,"context_line":"            self.assertEqual(expected, result)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_f34decc3","line":58,"range":{"start_line":53,"start_character":0,"end_line":58,"end_character":9},"updated":"2019-02-01 02:11:51.000000000","message":"There are no test cases that include numbers.\nos-trais has more test cases than above.\n\nhttps://github.com/openstack/os-traits/blob/9eab06df2f7528d9cc2cdb5ade69ea9d27ceeb99/os_traits/tests/test_os_traits.py#L111-L126\n\nHow about adding more test cases to avoid regression in future?","commit_id":"cb1dc6b3ccf52ea3841af8d39868b049cbb030d3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"89dd54cb7810d597effb2b750ed2eedb436eb3dd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.assertEqual(expected_length, len(rc.STANDARDS))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_normalize_name(self):"},{"line_number":53,"context_line":"        values \u003d ["},{"line_number":54,"context_line":"            (\"foo\", \"CUSTOM_FOO\"),"},{"line_number":55,"context_line":"            (\"VCPU\", \"CUSTOM_VCPU\"),"},{"line_number":56,"context_line":"            (\"CUSTOM_BOB\", \"CUSTOM_CUSTOM_BOB\"),"},{"line_number":57,"context_line":"            (\"CUSTM_BOB\", \"CUSTOM_CUSTM_BOB\"),"},{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":"        for test_value, expected in values:"},{"line_number":60,"context_line":"            result \u003d rc.normalize_name(test_value)"},{"line_number":61,"context_line":"            self.assertEqual(expected, result)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_dc00f0ad","line":58,"range":{"start_line":53,"start_character":0,"end_line":58,"end_character":9},"in_reply_to":"9fdfeff1_f34decc3","updated":"2019-02-01 14:04:45.000000000","message":"Done","commit_id":"cb1dc6b3ccf52ea3841af8d39868b049cbb030d3"}]}
