)]}'
{"tempest/common/utils/__init__.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"8e21241d302ad193c12056f1bf268c818ce7c4d0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            # NOTE(flwang): Generate a random name that includes a random"},{"line_number":32,"context_line":"            # number and a prefix if one is configured in"},{"line_number":33,"context_line":"            # CONF.resources_prefix"},{"line_number":34,"context_line":"            return partial(lib_data_utils.rand_name,"},{"line_number":35,"context_line":"                           prefix\u003dCONF.resources_prefix)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        return getattr(lib_data_utils, attr)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_5fbe7900","line":34,"updated":"2015-06-14 11:55:32.000000000","message":"The rand_name is not cached, it will do many `slow`  attribute lookup at every call.","commit_id":"b482583ef77ae9951a50f3a826ac22622adc1029"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"6e2c008a84426672f79db57206d21fc9b7924c78","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            # NOTE(flwang): Generate a random name that includes a random"},{"line_number":32,"context_line":"            # number and a prefix if one is configured in"},{"line_number":33,"context_line":"            # CONF.resources_prefix"},{"line_number":34,"context_line":"            return partial(lib_data_utils.rand_name,"},{"line_number":35,"context_line":"                           prefix\u003dCONF.resources_prefix)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        return getattr(lib_data_utils, attr)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_793b0fec","line":34,"in_reply_to":"fa32b979_5fbe7900","updated":"2015-06-22 21:23:42.000000000","message":"I would say it\u0027s a valid point for me. I will do some tests before submitting a new patch set. Thanks.","commit_id":"b482583ef77ae9951a50f3a826ac22622adc1029"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"8e21241d302ad193c12056f1bf268c818ce7c4d0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            return partial(lib_data_utils.rand_name,"},{"line_number":35,"context_line":"                           prefix\u003dCONF.resources_prefix)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        return getattr(lib_data_utils, attr)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"data_utils \u003d DataUtils()"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_1f3791b1","line":37,"updated":"2015-06-14 11:55:32.000000000","message":"The lookup is not cached again.","commit_id":"b482583ef77ae9951a50f3a826ac22622adc1029"}],"tempest/common/utils/data_utils.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"200471481fb1c2286da7b85adc00ad9668436486","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"rand_uuid \u003d data_utils.rand_uuid"},{"line_number":25,"context_line":"rand_uuid_hex \u003d data_utils.rand_uuid_hex"},{"line_number":26,"context_line":"rand_name \u003d partial(data_utils.rand_name, prefix\u003dCONF.shared.resources_prefix)"},{"line_number":27,"context_line":"rand_url \u003d data_utils.rand_url"},{"line_number":28,"context_line":"rand_int_id \u003d data_utils.rand_int_id"},{"line_number":29,"context_line":"rand_mac_address \u003d data_utils.rand_mac_address"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_41033110","line":26,"range":{"start_line":26,"start_character":49,"end_line":26,"end_character":53},"updated":"2015-05-14 09:17:46.000000000","message":"This is fine but I would not drop the docstring","commit_id":"29afd33fca2f29930ae4a987dfe01cf5ec59929a"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d40f571bc90e26c06c458ed72051a7cb167840c9","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"rand_uuid \u003d data_utils.rand_uuid"},{"line_number":25,"context_line":"rand_uuid_hex \u003d data_utils.rand_uuid_hex"},{"line_number":26,"context_line":"rand_name \u003d partial(data_utils.rand_name, prefix\u003dCONF.shared.resources_prefix)"},{"line_number":27,"context_line":"rand_url \u003d data_utils.rand_url"},{"line_number":28,"context_line":"rand_int_id \u003d data_utils.rand_int_id"},{"line_number":29,"context_line":"rand_mac_address \u003d data_utils.rand_mac_address"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_ea2538c2","line":26,"in_reply_to":"7a016987_41033110","updated":"2015-05-14 22:06:42.000000000","message":"I think it\u0027s a super easy function and won\u0027t need more docstring given we have describe it in tempest-lib.","commit_id":"29afd33fca2f29930ae4a987dfe01cf5ec59929a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"200471481fb1c2286da7b85adc00ad9668436486","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"rand_uuid \u003d data_utils.rand_uuid"},{"line_number":25,"context_line":"rand_uuid_hex \u003d data_utils.rand_uuid_hex"},{"line_number":26,"context_line":"rand_name \u003d partial(data_utils.rand_name, prefix\u003dCONF.shared.resources_prefix)"},{"line_number":27,"context_line":"rand_url \u003d data_utils.rand_url"},{"line_number":28,"context_line":"rand_int_id \u003d data_utils.rand_int_id"},{"line_number":29,"context_line":"rand_mac_address \u003d data_utils.rand_mac_address"},{"line_number":30,"context_line":"parse_image_id \u003d data_utils.parse_image_id"},{"line_number":31,"context_line":"arbitrary_string \u003d data_utils.arbitrary_string"},{"line_number":32,"context_line":"random_bytes \u003d data_utils.random_bytes"},{"line_number":33,"context_line":"get_ipv6_addr_by_EUI64 \u003d data_utils.get_ipv6_addr_by_EUI64"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_1c37e2b1","line":33,"range":{"start_line":24,"start_character":0,"end_line":33,"end_character":58},"updated":"2015-05-14 09:17:46.000000000","message":"Do we really need this? I suppose it\u0027s to limit the number of import statements. I\u0027m against it, but if you want to have here all the functions from tempest_lib data_utils, you might then to use a different approach e.g. inspect the list of functions. \nWhat I would prefer at least is to separate this list in two groups. the first with rand_name and it\u0027s docstring, the second with all other functions and also some docstring on top.","commit_id":"29afd33fca2f29930ae4a987dfe01cf5ec59929a"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d40f571bc90e26c06c458ed72051a7cb167840c9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"parse_image_id \u003d data_utils.parse_image_id"},{"line_number":31,"context_line":"arbitrary_string \u003d data_utils.arbitrary_string"},{"line_number":32,"context_line":"random_bytes \u003d data_utils.random_bytes"},{"line_number":33,"context_line":"get_ipv6_addr_by_EUI64 \u003d data_utils.get_ipv6_addr_by_EUI64"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_a55f710d","line":33,"in_reply_to":"7a016987_1c37e2b1","updated":"2015-05-14 22:06:42.000000000","message":"It\u0027s not really necessary to put all the functions at there. But, if we don\u0027t, we have to import both tempest-lib.common.utils.data_utils and tempest.common.utils.data_utils here and there. It\u0027s really annoying.","commit_id":"29afd33fca2f29930ae4a987dfe01cf5ec59929a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"e5f112faf5809ae7e7b2c18635734762c8b3a895","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"rand_uuid \u003d data_utils.rand_uuid"},{"line_number":25,"context_line":"rand_uuid_hex \u003d data_utils.rand_uuid_hex"},{"line_number":26,"context_line":"rand_name \u003d partial(data_utils.rand_name, prefix\u003dCONF.shared.resources_prefix)"},{"line_number":27,"context_line":"rand_url \u003d data_utils.rand_url"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_6b4e9e97","line":24,"updated":"2015-06-04 01:53:55.000000000","message":"So I get what you\u0027re going for here with the proxying of calls so you only need 1 import. But I\u0027m concerned with how you\u0027re doing it manually here, if we add a new api to data_utils in a future tempest-lib version this would mask that as being available. So, I think if we do a proxy here we should do it pseudo automatically somehow so a getattr on the module here goes to tempest-lib directly (except for rand_name obviously). Or in the alternative we could just not proxy function calls.","commit_id":"7d9174cba3569b6f94f33c6cfb0a863e453c3150"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"23a9b101925f4b7ce45d626dbe2b1ea9d82d81ca","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"rand_uuid \u003d data_utils.rand_uuid"},{"line_number":25,"context_line":"rand_uuid_hex \u003d data_utils.rand_uuid_hex"},{"line_number":26,"context_line":"rand_name \u003d partial(data_utils.rand_name, prefix\u003dCONF.shared.resources_prefix)"},{"line_number":27,"context_line":"rand_url \u003d data_utils.rand_url"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_74bf3461","line":24,"in_reply_to":"3afb71cf_c9214e4f","updated":"2015-06-10 22:58:08.000000000","message":"Cool, glad to see we\u0027re on the same page. Will fix it in next PS.","commit_id":"7d9174cba3569b6f94f33c6cfb0a863e453c3150"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"567fdd138504f9f559835896ee3753b4671cf74b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"rand_uuid \u003d data_utils.rand_uuid"},{"line_number":25,"context_line":"rand_uuid_hex \u003d data_utils.rand_uuid_hex"},{"line_number":26,"context_line":"rand_name \u003d partial(data_utils.rand_name, prefix\u003dCONF.shared.resources_prefix)"},{"line_number":27,"context_line":"rand_url \u003d data_utils.rand_url"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_c9214e4f","line":24,"in_reply_to":"5afe65bd_6b4e9e97","updated":"2015-06-08 05:51:19.000000000","message":"Yes I had a similar comment on patch-set #6, I agree we should have either some automatic way to proxy all functions or leave with the multiple imports.","commit_id":"7d9174cba3569b6f94f33c6cfb0a863e453c3150"}],"tempest/config.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"200471481fb1c2286da7b85adc00ad9668436486","unresolved":false,"context_lines":[{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"SharedGroup \u003d ["},{"line_number":1116,"context_line":"    cfg.StrOpt(\u0027resources_prefix\u0027,"},{"line_number":1117,"context_line":"               default\u003d\u0027tempest\u0027,"},{"line_number":1118,"context_line":"               help\u003d\"Prefix to be added when generating the name for \""},{"line_number":1119,"context_line":"                    \"test resources. It can be used to discover all \""},{"line_number":1120,"context_line":"                    \"resources associated with a specific test run when \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_815b6954","line":1117,"updated":"2015-05-14 09:17:46.000000000","message":"I would prefer this was None by default.\nI see no need for having a prefix in the CI runs, this is only for operator users. \nAnd honestly \"tempest\" would not be a useful default for me.","commit_id":"29afd33fca2f29930ae4a987dfe01cf5ec59929a"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d40f571bc90e26c06c458ed72051a7cb167840c9","unresolved":false,"context_lines":[{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"SharedGroup \u003d ["},{"line_number":1116,"context_line":"    cfg.StrOpt(\u0027resources_prefix\u0027,"},{"line_number":1117,"context_line":"               default\u003d\u0027tempest\u0027,"},{"line_number":1118,"context_line":"               help\u003d\"Prefix to be added when generating the name for \""},{"line_number":1119,"context_line":"                    \"test resources. It can be used to discover all \""},{"line_number":1120,"context_line":"                    \"resources associated with a specific test run when \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_c59f0d5e","line":1117,"in_reply_to":"7a016987_815b6954","updated":"2015-05-14 22:06:42.000000000","message":"IMHO, even in CI, it won\u0027t introduce any impact. I mean it\u0027s harmless. Personally, I think \u0027tempest\u0027 is good enough for a default value, because if user care about it, they will definitely change it with a more unique value. If they don\u0027t care about it, at least it\u0027s a good tag for those resources created by tempest.","commit_id":"29afd33fca2f29930ae4a987dfe01cf5ec59929a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"e5f112faf5809ae7e7b2c18635734762c8b3a895","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"               help\u003d\"Test generator class for all negative tests\"),"},{"line_number":1130,"context_line":"]"},{"line_number":1131,"context_line":""},{"line_number":1132,"context_line":"shared_group \u003d cfg.OptGroup(name\u003d\u0027shared\u0027, title\u003d\"Shared Test Options\")"},{"line_number":1133,"context_line":""},{"line_number":1134,"context_line":"SharedGroup \u003d ["},{"line_number":1135,"context_line":"    cfg.StrOpt(\u0027resources_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_eb3bae36","line":1132,"updated":"2015-06-04 01:53:55.000000000","message":"I\u0027m not sure this group name is really clear. There are many options which are shared between trsts. Why not just put the option in the default group?","commit_id":"7d9174cba3569b6f94f33c6cfb0a863e453c3150"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"23a9b101925f4b7ce45d626dbe2b1ea9d82d81ca","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"               help\u003d\"Test generator class for all negative tests\"),"},{"line_number":1130,"context_line":"]"},{"line_number":1131,"context_line":""},{"line_number":1132,"context_line":"shared_group \u003d cfg.OptGroup(name\u003d\u0027shared\u0027, title\u003d\"Shared Test Options\")"},{"line_number":1133,"context_line":""},{"line_number":1134,"context_line":"SharedGroup \u003d ["},{"line_number":1135,"context_line":"    cfg.StrOpt(\u0027resources_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_64d2145e","line":1132,"in_reply_to":"5afe65bd_eb3bae36","updated":"2015-06-10 22:58:08.000000000","message":"Done","commit_id":"7d9174cba3569b6f94f33c6cfb0a863e453c3150"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"1d098f56550728753730519e951180a3f6cfbd24","unresolved":false,"context_lines":[{"line_number":1133,"context_line":"               help\u003d\"Test generator class for all negative tests\"),"},{"line_number":1134,"context_line":"]"},{"line_number":1135,"context_line":""},{"line_number":1136,"context_line":"default_group \u003d cfg.OptGroup(name\u003d\u0027DEFAULT\u0027, title\u003d\"Default Group\")"},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"DefaultGroup \u003d ["},{"line_number":1139,"context_line":"    cfg.StrOpt(\u0027resources_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3afb71cf_f658c132","line":1136,"updated":"2015-06-11 03:58:28.000000000","message":"I don\u0027t think this is what Matthew meant. This is creating a new group called default, so CONF.default.resource_prefix for instance.\n\nThere is a default group already which is where options with no other group defined go, e.g. CONF.resource_prefix","commit_id":"96a276b25d2150dd51770374dca81c76b363fce6"}]}
