)]}'
{"tempest/api/compute/base.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"28bc0946a0ce150fa78a65baabccbdada6d89cc9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @classmethod"},{"line_number":112,"context_line":"    def check_v2extension_enabled(cls, ext_name):"},{"line_number":113,"context_line":"        if cls._api_version !\u003d 2:"},{"line_number":114,"context_line":"            return"},{"line_number":115,"context_line":"        if not tempest.test.is_extension_enabled(ext_name, \u0027compute\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_f9ef89ae","line":112,"updated":"2014-05-09 02:39:02.000000000","message":"Could we merge two methods together like the base class?\n\ndef check_extension_enabled(..):\n    if cls._api_version \u003d\u003d 2:\n        ...\n    elif cls._api_version \u003d\u003d 3:\n        ...","commit_id":"fbea5ec68265c42b557c93c63f4527eef4ddff23"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"ad6b269a48afa60a0cef2147100b40b33038ebb9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @classmethod"},{"line_number":112,"context_line":"    def check_v2extension_enabled(cls, ext_name):"},{"line_number":113,"context_line":"        if cls._api_version !\u003d 2:"},{"line_number":114,"context_line":"            return"},{"line_number":115,"context_line":"        if not tempest.test.is_extension_enabled(ext_name, \u0027compute\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_9fce6559","line":112,"in_reply_to":"7adec928_04de8811","updated":"2014-05-09 05:41:48.000000000","message":"sorry :-), I didn\u0027t consider the different extension\u0027s name when give my comments. Your codes is right. However, I feel a little odd to add two similar functions to check the extensions in setUpClass.\n\nI have a suggestion to use single method. \n\nJust FYI. Maybe I missed somethings.\n\nextension \u003d {\u0027compute\u0027: \u0027NMN\u0027, \u0027compute_v3\u0027: \u0027os-multinic\u0027}\ncls.check_extension_enabled(extension)\n\ndef check_extension_enabled(..):\n    if cls._api_version \u003d\u003d 2:\n        service \u003d \u0027compute\u0027\n    elif cls._api_version \u003d\u003d 3:\n        service \u003d \u0027compute_v3\u0027\n     \n    if not tempest.test.is_extension_enabled(extension[service], service):\n        msg \u003d \"%s extension not enabled.\" % ext_name\n        raise cls.skipException(msg)","commit_id":"fbea5ec68265c42b557c93c63f4527eef4ddff23"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f1bac86a15ffd4ead90894aacc7082a79134dfe5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @classmethod"},{"line_number":112,"context_line":"    def check_v2extension_enabled(cls, ext_name):"},{"line_number":113,"context_line":"        if cls._api_version !\u003d 2:"},{"line_number":114,"context_line":"            return"},{"line_number":115,"context_line":"        if not tempest.test.is_extension_enabled(ext_name, \u0027compute\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_ea9c056c","line":112,"in_reply_to":"7adec928_9fce6559","updated":"2014-05-09 06:55:41.000000000","message":"Thanks for a suggestion.\n\nIt would reduce the code in this patch, but it would make the code a little difficult/redundant in future. because we need a lot of check_extension_enabled() calls and we need to specify both \u0027compute\u0027 and \u0027compute_v3\u0027 in each call\n\n extension \u003d {\u0027compute\u0027: \u0027NMN\u0027, \u0027compute_v3\u0027: \u0027os-multinic\u0027}\n cls.check_extension_enabled(extension)\n\nI feel the following calls would be simpler:\n\n self.check_v2extension_enabled(\"NMN\")\n self.check_v3extension_enabled(\"os-multinic\")\n\nThis is not so strong opinion, just my feeling:-)","commit_id":"fbea5ec68265c42b557c93c63f4527eef4ddff23"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"193582f7c6dd77208a9cf9d4ad566f2410306c53","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @classmethod"},{"line_number":112,"context_line":"    def check_v2extension_enabled(cls, ext_name):"},{"line_number":113,"context_line":"        if cls._api_version !\u003d 2:"},{"line_number":114,"context_line":"            return"},{"line_number":115,"context_line":"        if not tempest.test.is_extension_enabled(ext_name, \u0027compute\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_04de8811","line":112,"in_reply_to":"7adec928_f9ef89ae","updated":"2014-05-09 03:54:43.000000000","message":"I will put these method calls in each v3 test class, and I\u0027d like to clarify which extension name(v2 or v3).\n\nOn AZ extension, both alias names of v2/3 are the same. but on some extensions, these names are different.\nFor example, the multinic extension of v2 is \"NMN\" but the one of v3 is \"os-multinic\".\n\nIf merging these methods into single, it would be a little difficult to know which extension name is specified like:\n\n self.check_extension_enabled(\"NMN\")\n self.check_extension_enabled(\"os-multinic\")\n\nI agree that current code is redundant, so how about\n\n def _check_extension_enabled(cls, ext_name, service):\n     if not tempest.test.is_extension_enabled(ext_name, service):\n         msg \u003d \"%s extension not enabled.\" % ext_name\n         raise cls.skipException(msg)\n\n def check_v2extension_enabled(cls, ext_name):\n     if cls._api_version \u003d\u003d 2:\n         cls._check_extension_enabled(ext_name, \u0027compute\u0027)\n\n def check_v3extension_enabled(cls, ext_name):\n     if cls._api_version \u003d\u003d 3:\n         cls._check_extension_enabled(ext_name, \u0027compute_v3\u0027)\n\n?","commit_id":"fbea5ec68265c42b557c93c63f4527eef4ddff23"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b92ae5c9f5df2ab5d5e77f4f68d37ab238e67d64","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def check_v3_extension_enabled(cls, ext_name):"},{"line_number":123,"context_line":"        if cls._api_version \u003d\u003d 3:"},{"line_number":124,"context_line":"            cls._check_extension_enabled(ext_name, \u0027compute_v3\u0027)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @classmethod"},{"line_number":127,"context_line":"    def get_multi_user(cls):"},{"line_number":128,"context_line":"        multi_user \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_1a8ee02e","line":125,"updated":"2014-05-09 10:43:23.000000000","message":"Got the rational behind 2 function from previous patch\u0027s comments. But I am little bit worried about the 2 function call overhead on each version(V2,V3) test.\n1 suggestion - have the 1 function here and let\u0027s mention the respective extension name by test class as their class variable and use that in check function.  for example-\n\nbase.py-\u003e\ndef check_extension_enabled(cls):\n    if cls._ext_name not None: \n        if cls._api_version \u003d\u003d 2:\n            service \u003d \u0027compute\u0027\n        elif cls._api_version \u003d\u003d 3:\n            service \u003d \u0027compute_v3\u0027\n        if not tempest.test.is_extension_enabled(cls._ext_name, service):\n            msg \u003d \"%s extension not enabled.\" % cls._ext_name\n            raise cls.skipException(msg)\n\ntest class-\u003e\nclass AZV3Test(base.BaseComputeTest):\n    \t_api_version \u003d 3\n        _ext_name \u003d \u0027xxx\u0027\n\nNOTE - In case where only one version API (either V2 or V3) has extension then another one can have ext_name as \u0027None\u0027 to skip the check.","commit_id":"4c0a7e70b8c17db9678771e467763dc2b8eea65e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a3e5a4bcfd56ad982b0b5caf0d77f271192613ea","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def check_v3_extension_enabled(cls, ext_name):"},{"line_number":123,"context_line":"        if cls._api_version \u003d\u003d 3:"},{"line_number":124,"context_line":"            cls._check_extension_enabled(ext_name, \u0027compute_v3\u0027)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @classmethod"},{"line_number":127,"context_line":"    def get_multi_user(cls):"},{"line_number":128,"context_line":"        multi_user \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_617d57e7","line":125,"in_reply_to":"7adec928_1a8ee02e","updated":"2014-05-12 15:52:06.000000000","message":"Thanks for your suggestion, I prefer it.\nand I\u0027d like to add ext_name as one argument of check_extension_enabled() method because it would make the relation of ext_name and the method more clear.","commit_id":"4c0a7e70b8c17db9678771e467763dc2b8eea65e"}],"tempest/api/compute/servers/test_availability_zone.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"3694fcb77bc060e1e03bdaf30190172de231d122","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class AZV2TestJSON(AZV3Test):"},{"line_number":42,"context_line":"    _api_version \u003d 2"},{"line_number":43,"context_line":"    _ext_name \u003d \u0027os-availability-zone\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class AZV2TestXML(AZV2TestJSON):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_000726cb","line":43,"updated":"2014-05-13 06:34:29.000000000","message":"Could this line be removed when they have same ext name?","commit_id":"583491d306cc6e7a77efaad637b7e41f1c746c79"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fd51871204b6b7e4a9819e8615063e2a0cc527c2","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class AZV2TestJSON(AZV3Test):"},{"line_number":42,"context_line":"    _api_version \u003d 2"},{"line_number":43,"context_line":"    _ext_name \u003d \u0027os-availability-zone\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class AZV2TestXML(AZV2TestJSON):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_430e988e","line":43,"in_reply_to":"7adec928_000726cb","updated":"2014-05-13 08:35:13.000000000","message":"Thanks for reviewing, nice point.\nIt is better to remove this as you said, thanks!","commit_id":"583491d306cc6e7a77efaad637b7e41f1c746c79"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6afb9f84f6223b09fc010c4dd861081609dcf4d1","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class AZV2TestJSON(AZV3Test):"},{"line_number":42,"context_line":"    _api_version \u003d 2"},{"line_number":43,"context_line":"    _ext_name \u003d \u0027os-availability-zone\u0027"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class AZV2TestXML(AZV2TestJSON):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_abe64ab2","line":43,"in_reply_to":"7adec928_430e988e","updated":"2014-05-13 20:21:18.000000000","message":"I also agree on this.","commit_id":"583491d306cc6e7a77efaad637b7e41f1c746c79"}]}
