)]}'
{"tempest/scenario/manager.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"322bad491a66f8135765cb886de7e186e755b49f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import subprocess"},{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from heatclient import exc as heat_exceptions"},{"line_number":25,"context_line":"from ironicclient import exc as ironic_exceptions"},{"line_number":26,"context_line":"import netaddr"},{"line_number":27,"context_line":"from neutronclient.common import exceptions as exc"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Fzw4%3D","line":24,"updated":"2014-04-17 09:29:50.000000000","message":"If heat service is disabled, it will raise import error. heat exception module importing could be moved into _wait_for_resource_status. \n\nrefer to: Ic41b9bd87af15ef6a9bded56ed1066c428847309","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"acf9c62b80314687ca7fcfdaf9ccb589b5cf895c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import subprocess"},{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from heatclient import exc as heat_exceptions"},{"line_number":25,"context_line":"from ironicclient import exc as ironic_exceptions"},{"line_number":26,"context_line":"import netaddr"},{"line_number":27,"context_line":"from neutronclient.common import exceptions as exc"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FgKk%3D","line":24,"in_reply_to":"AAAAXH%2F%2FtdU%3D","updated":"2014-04-21 06:52:14.000000000","message":"No it won\u0027t, because python-heatclient is still in tempest/requirements.txt. Client dependencies and enabled devstack services are *completely* different.","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"f53518a1e04f7664e07bb7839698227663c6960e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import subprocess"},{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from heatclient import exc as heat_exceptions"},{"line_number":25,"context_line":"from ironicclient import exc as ironic_exceptions"},{"line_number":26,"context_line":"import netaddr"},{"line_number":27,"context_line":"from neutronclient.common import exceptions as exc"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FtdU%3D","line":24,"in_reply_to":"AAAAXH%2F%2Fu24%3D","updated":"2014-04-18 01:52:02.000000000","message":"This is a potential issue. \n\nFor instance, scenario tests will get import error when users disable heat service in devstack.","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"67f6acedc09dc40e94dc92e625476bafcca17a12","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import subprocess"},{"line_number":22,"context_line":"import time"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from heatclient import exc as heat_exceptions"},{"line_number":25,"context_line":"from ironicclient import exc as ironic_exceptions"},{"line_number":26,"context_line":"import netaddr"},{"line_number":27,"context_line":"from neutronclient.common import exceptions as exc"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Fu24%3D","line":24,"in_reply_to":"AAAAXH%2F%2Fzw4%3D","updated":"2014-04-17 20:47:15.000000000","message":"python-heatclient is a dependency so I don\u0027t see any scenario where it wouldn\u0027t be installed, and it is significantly more likely to be installed than the ironicclient below.","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"3d502bdf77cebfca18c225c227036aace985d79f","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"        return next((o[\u0027output_value\u0027] for o in stack.outputs"},{"line_number":1084,"context_line":"                    if o[\u0027output_key\u0027] \u003d\u003d output_key), None)"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"    def _ping_ip_address(self, ip_address, should_succeed\u003dTrue):"},{"line_number":1087,"context_line":"        cmd \u003d [\u0027ping\u0027, \u0027-c1\u0027, \u0027-w1\u0027, ip_address]"},{"line_number":1088,"context_line":""},{"line_number":1089,"context_line":"        def ping():"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FtZQ%3D","line":1086,"updated":"2014-04-18 02:26:14.000000000","message":"There\u0027s a same function in NetworkScenarioTest. Could we move it into OfficialClientTest, and reuse it in NetworkScenarioTest and here?","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"acf9c62b80314687ca7fcfdaf9ccb589b5cf895c","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"        return next((o[\u0027output_value\u0027] for o in stack.outputs"},{"line_number":1084,"context_line":"                    if o[\u0027output_key\u0027] \u003d\u003d output_key), None)"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"    def _ping_ip_address(self, ip_address, should_succeed\u003dTrue):"},{"line_number":1087,"context_line":"        cmd \u003d [\u0027ping\u0027, \u0027-c1\u0027, \u0027-w1\u0027, ip_address]"},{"line_number":1088,"context_line":""},{"line_number":1089,"context_line":"        def ping():"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FgKg%3D","line":1086,"in_reply_to":"AAAAXH%2F%2FtZQ%3D","updated":"2014-04-21 06:52:14.000000000","message":"We could, but the only difference is that I need to use CONF.orchestration.build_timeout due to the longer boot times of fedora/ubuntu guest OS\u0027s","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"87f72c5aef635e6f15d6933ac4c68b0ba73a0c32","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"                        resource_name\u003dres.resource_name,"},{"line_number":1122,"context_line":"                        stack_identifier\u003dstack_identifier,"},{"line_number":1123,"context_line":"                        resource_status\u003dres.resource_status,"},{"line_number":1124,"context_line":"                        resource_status_reason\u003dres.resource_status_reason)"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"            if int(time.time()) - start \u003e\u003d build_timeout:"},{"line_number":1127,"context_line":"                message \u003d (\u0027Resource %s failed to reach %s status within \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAXX%2F%2FvbE%3D","line":1124,"updated":"2014-04-28 10:36:06.000000000","message":"I\u0027ve noticed this exception didn\u0027t work correctly.\nhttp://logs.openstack.org/37/88137/5/check/check-tempest-dsvm-neutron-heat-slow/7c582e2/logs/testr_results.html.gz\n\nSo I\u0027ve submitted a patch for this.\nhttps://review.openstack.org/#/c/90683/","commit_id":"b7b57672b998c51dbe44a5637753bdc60aa123af"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"1b594510077ba0a798aa9cc09bc8b9c681a4bae8","unresolved":false,"context_lines":[{"line_number":1100,"context_line":"    def _wait_for_resource_status(self, stack_identifier, resource_name,"},{"line_number":1101,"context_line":"                                  status, failure_pattern\u003d\u0027^.*_FAILED$\u0027):"},{"line_number":1102,"context_line":"        \"\"\"Waits for a Resource to reach a given status.\"\"\""},{"line_number":1103,"context_line":"        start \u003d int(time.time())"},{"line_number":1104,"context_line":"        fail_regexp \u003d re.compile(failure_pattern)"},{"line_number":1105,"context_line":"        build_timeout \u003d CONF.orchestration.build_timeout"},{"line_number":1106,"context_line":"        build_interval \u003d CONF.orchestration.build_interval"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_a546c4bd","line":1103,"updated":"2014-05-08 13:33:41.000000000","message":"I would suggest to write it like this:\n\n        from tempest.openstack.common import timeutils\n        ...    \n\n        fail_regexp \u003d re.compile(failure_pattern)\n        build_timeout \u003d CONF.orchestration.build_timeout\n        build_interval \u003d CONF.orchestration.build_interval\n        \n        start \u003d timeutils.utcnow()\n        while timeutils.delta_seconds(start, \n                                      timeutils.utcnow()) \u003c build_timeout\n            try:\n                res \u003d self.client.resources.get(\n                    stack_identifier, resource_name)\n            except heat_exceptions.HTTPNotFound:\n                # ignore this, as the resource may not have been created yet\n                pass\n            else:\n                if res.resource_status \u003d\u003d status:\n                    return\n                if fail_regexp.search(res.resource_status):\n                    raise exceptions.StackResourceBuildErrorException(\n                        resource_name\u003dres.resource_name,\n                        stack_identifier\u003dstack_identifier,\n                        resource_status\u003dres.resource_status,\n                        resource_status_reason\u003dres.resource_status_reason)\n            time.sleep(build_interval)\n\n        message \u003d (\u0027Resource %s failed to reach %s status within the required \u0027\n                   \u0027time (%s s).\u0027 % (res.resource_name, status, build_timeout))\n        raise exceptions.TimeoutException(message)","commit_id":"7cecc5bf6cfe7873486ceb6b459d1ddf4a6986e2"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"e713cc082ea98dc11caa2401616a7281fcf4c7d3","unresolved":false,"context_lines":[{"line_number":1099,"context_line":"        build_interval \u003d CONF.orchestration.build_interval"},{"line_number":1100,"context_line":""},{"line_number":1101,"context_line":"        start \u003d timeutils.utcnow()"},{"line_number":1102,"context_line":"        while timeutils.delta_seconds(start, "},{"line_number":1103,"context_line":"                                      timeutils.utcnow()) \u003c build_timeout:"},{"line_number":1104,"context_line":"            try:"},{"line_number":1105,"context_line":"                res \u003d self.client.resources.get("}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_ec7545fa","line":1102,"updated":"2014-05-20 08:32:07.000000000","message":"Trailing whitespace","commit_id":"12fba1e5a0af4afe505db694a2196107e0e3b69e"}],"tempest/scenario/orchestration/test_server_cfn_init.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"322bad491a66f8135765cb886de7e186e755b49f","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class CfnInitScenarioTest(manager.OrchestrationScenarioTest):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(CfnInitScenarioTest, self).setUp()"},{"line_number":29,"context_line":"        if not CONF.orchestration.image_ref:"},{"line_number":30,"context_line":"            raise self.skipException(\"No image available to test\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Fz0I%3D","line":27,"updated":"2014-04-17 09:29:50.000000000","message":"it should be \u0027setUpClass\u0027, right?","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"f53518a1e04f7664e07bb7839698227663c6960e","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class CfnInitScenarioTest(manager.OrchestrationScenarioTest):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(CfnInitScenarioTest, self).setUp()"},{"line_number":29,"context_line":"        if not CONF.orchestration.image_ref:"},{"line_number":30,"context_line":"            raise self.skipException(\"No image available to test\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Ftgs%3D","line":27,"in_reply_to":"AAAAXH%2F%2Fu2Q%3D","updated":"2014-04-18 01:52:02.000000000","message":"got your point, thanks!","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"67f6acedc09dc40e94dc92e625476bafcca17a12","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class CfnInitScenarioTest(manager.OrchestrationScenarioTest):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(CfnInitScenarioTest, self).setUp()"},{"line_number":29,"context_line":"        if not CONF.orchestration.image_ref:"},{"line_number":30,"context_line":"            raise self.skipException(\"No image available to test\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Fu2Q%3D","line":27,"in_reply_to":"AAAAXH%2F%2Fz0I%3D","updated":"2014-04-17 20:47:15.000000000","message":"not necessarily for a scenario test, since there is only one test method","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"322bad491a66f8135765cb886de7e186e755b49f","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                raise e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @test.attr(type\u003d\u0027slow\u0027)"},{"line_number":128,"context_line":"    @test.services(\u0027orchestration\u0027, \u0027compute\u0027)"},{"line_number":129,"context_line":"    def test_server_cfn_init(self):"},{"line_number":130,"context_line":"        self.assign_keypair()"},{"line_number":131,"context_line":"        self.launch_stack()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Fz0E%3D","line":128,"updated":"2014-04-17 09:29:50.000000000","message":"doesn\u0027t need service \u0027orchestration\u0027 as it is orchestration tests.","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"f53518a1e04f7664e07bb7839698227663c6960e","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                raise e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @test.attr(type\u003d\u0027slow\u0027)"},{"line_number":128,"context_line":"    @test.services(\u0027orchestration\u0027, \u0027compute\u0027)"},{"line_number":129,"context_line":"    def test_server_cfn_init(self):"},{"line_number":130,"context_line":"        self.assign_keypair()"},{"line_number":131,"context_line":"        self.launch_stack()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FthI%3D","line":128,"in_reply_to":"AAAAXH%2F%2Fu1g%3D","updated":"2014-04-18 01:52:02.000000000","message":"you are right, scenario tests should always have service tags. thanks for your explanation.","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"67f6acedc09dc40e94dc92e625476bafcca17a12","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                raise e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @test.attr(type\u003d\u0027slow\u0027)"},{"line_number":128,"context_line":"    @test.services(\u0027orchestration\u0027, \u0027compute\u0027)"},{"line_number":129,"context_line":"    def test_server_cfn_init(self):"},{"line_number":130,"context_line":"        self.assign_keypair()"},{"line_number":131,"context_line":"        self.launch_stack()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2Fu1g%3D","line":128,"in_reply_to":"AAAAXH%2F%2Fz0E%3D","updated":"2014-04-17 20:47:15.000000000","message":"looking at other scenario tests they seem to state exactly what services they test, so it seems like orchestration should stay.","commit_id":"0287643ce5653764cbe2307d3dd47a64e3f610e2"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"cb26f220a71560c8ee2ad4694e32c4da670724ab","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self._log_console_output(servers\u003d[server])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.status_timeout(self.client.stacks, sid, \u0027COMPLETE\u0027,"},{"line_number":104,"context_line":"                            error_status\u003d\u0027FAILED\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        stack \u003d self.client.stacks.get(sid)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7adec928_be3a7932","line":104,"updated":"2014-05-21 08:16:52.000000000","message":"I think we may need to rebase this on https://review.openstack.org/#/c/92565/2 as currently this will match any COMPLETE state, not only CREATE_COMPLETE, same problem in the autoscaling test.","commit_id":"0ad401c4625876a24ba35d4cf6e7ecd72a109e65"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"df30a637192e28a2921c1f6e5f1f0e0a79b90dbb","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self._log_console_output(servers\u003d[server])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.status_timeout(self.client.stacks, sid, \u0027COMPLETE\u0027,"},{"line_number":104,"context_line":"                            error_status\u003d\u0027FAILED\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        stack \u003d self.client.stacks.get(sid)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7adec928_c0f29e99","line":104,"in_reply_to":"7adec928_be3a7932","updated":"2014-05-23 10:37:50.000000000","message":"So my proposal here would be to squash 92565 and this, and use the function _wait_for_stack_status.\n\nIt will make the patch-set a bit larger but it will give a chance to see _wait_for_stack_status in use before it\u0027s merged.\n\nmtreinish / sdague what do you think?","commit_id":"0ad401c4625876a24ba35d4cf6e7ecd72a109e65"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"86aa06bf58aa379a17741f3aef16a176f38f4dc5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self._log_console_output(servers\u003d[server])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.status_timeout(self.client.stacks, sid, \u0027COMPLETE\u0027,"},{"line_number":104,"context_line":"                            error_status\u003d\u0027FAILED\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        stack \u003d self.client.stacks.get(sid)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7adec928_6e029b70","line":104,"in_reply_to":"7adec928_c0f29e99","updated":"2014-05-23 12:00:35.000000000","message":"As an alternative, I\u0027ve re-posted 92565 with a conversion to test_autoscaling.py, which hopefully clearly illustrates why 92565 will be a nice thing to have :)","commit_id":"0ad401c4625876a24ba35d4cf6e7ecd72a109e65"}]}
