)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f68e23d7cf2ae48b46dc9e548b841e2c6591dfcb","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This test now runs quicker, is less race prone, and adds"},{"line_number":23,"context_line":"stack updates to its test scenario."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I71457702d2d1c456270446c71994aeb525e103e4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAW3%2F%2FgP4%3D","line":25,"updated":"2014-04-14 08:52:56.000000000","message":"Does this patch fix bug 1257575? If yes, can you add Closes-Bug: #1257575 here?","commit_id":"9e5398ca910bdee1434ffbdf69b2f41e9d2c48dc"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9ad67db1bbad7c86d0697d2636c15e263727fd3b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"This test now runs quicker, is less race prone, and adds"},{"line_number":23,"context_line":"stack updates to its test scenario."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I71457702d2d1c456270446c71994aeb525e103e4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAXH%2F%2F%2F88%3D","line":25,"in_reply_to":"AAAAW3%2F%2FgP4%3D","updated":"2014-05-29 23:00:36.000000000","message":"Done","commit_id":"9e5398ca910bdee1434ffbdf69b2f41e9d2c48dc"}],"tempest/scenario/manager.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"47b3cdc55a0023f28a341953cecdba9d1715f90c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            # add status code as workaround for bug 1247568"},{"line_number":117,"context_line":"            if (e.__class__.__name__ \u003d\u003d \u0027NotFound\u0027 or"},{"line_number":118,"context_line":"                    (hasattr(e, \u0027status_code\u0027) and e.status_code \u003d\u003d 404) or"},{"line_number":119,"context_line":"                    (hasattr(e, \u0027code\u0027) and e.code \u003d\u003d 404)):"},{"line_number":120,"context_line":"                return"},{"line_number":121,"context_line":"            raise"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BQ0M%3D","line":119,"updated":"2014-03-28 01:04:37.000000000","message":"it\u0027s probably worth documenting which clients do which returns just so people in the future will have an idea.\n\nI also think (as follow on) we should repleace \n\nhasattr(e, \u0027status_code\u0027) and e.status_code \u003d\u003d 404\n\nwith getattr(e, \u0027status_code\u0027, 200) \u003d\u003d 404","commit_id":"f2e19498a2195347f863ced2734481d66ef8b8c4"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"48716c7739a6422411c1831ab1701c120c64faec","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            # add status code as workaround for bug 1247568"},{"line_number":117,"context_line":"            if (e.__class__.__name__ \u003d\u003d \u0027NotFound\u0027 or"},{"line_number":118,"context_line":"                    (hasattr(e, \u0027status_code\u0027) and e.status_code \u003d\u003d 404) or"},{"line_number":119,"context_line":"                    (hasattr(e, \u0027code\u0027) and e.code \u003d\u003d 404)):"},{"line_number":120,"context_line":"                return"},{"line_number":121,"context_line":"            raise"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9%2BVY%3D","line":119,"in_reply_to":"AAAAWH%2F%2BQ0M%3D","updated":"2014-03-31 21:05:52.000000000","message":"Done","commit_id":"f2e19498a2195347f863ced2734481d66ef8b8c4"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"48716c7739a6422411c1831ab1701c120c64faec","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                resource.get()"},{"line_number":130,"context_line":"            except Exception as e:"},{"line_number":131,"context_line":"                # Clients are expected to return an exception"},{"line_number":132,"context_line":"                # called \u0027NotFound\u0027 if retrieval fails."},{"line_number":133,"context_line":"                if e.__class__.__name__ \u003d\u003d \u0027NotFound\u0027:"},{"line_number":134,"context_line":"                    return True"},{"line_number":135,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9%2BVE%3D","line":132,"updated":"2014-03-31 21:05:52.000000000","message":"The same logic is required here, so I\u0027ve moved the above to a function","commit_id":"f2e19498a2195347f863ced2734481d66ef8b8c4"}],"tempest/scenario/orchestration/test_autoscaling.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"47b3cdc55a0023f28a341953cecdba9d1715f90c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # create the stack"},{"line_number":49,"context_line":"        self.template \u003d yaml.load(self._load_template("},{"line_number":50,"context_line":"            __file__, \u0027test_autoscaling.yaml\u0027))"},{"line_number":51,"context_line":"        self.client.stacks.create("},{"line_number":52,"context_line":"            stack_name\u003dself.stack_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2BQ1o%3D","line":49,"updated":"2014-03-28 01:04:37.000000000","message":"I don\u0027t understand why you are converting to python structure. Why is the string template not workable here?","commit_id":"f2e19498a2195347f863ced2734481d66ef8b8c4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f68e23d7cf2ae48b46dc9e548b841e2c6591dfcb","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # create the stack"},{"line_number":49,"context_line":"        self.template \u003d yaml.load(self._load_template("},{"line_number":50,"context_line":"            __file__, \u0027test_autoscaling.yaml\u0027))"},{"line_number":51,"context_line":"        self.client.stacks.create("},{"line_number":52,"context_line":"            stack_name\u003dself.stack_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FgXU%3D","line":49,"updated":"2014-04-14 08:52:56.000000000","message":"Why do we need yaml.load() converting here?","commit_id":"9e5398ca910bdee1434ffbdf69b2f41e9d2c48dc"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9ad67db1bbad7c86d0697d2636c15e263727fd3b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # create the stack"},{"line_number":49,"context_line":"        self.template \u003d yaml.load(self._load_template("},{"line_number":50,"context_line":"            __file__, \u0027test_autoscaling.yaml\u0027))"},{"line_number":51,"context_line":"        self.client.stacks.create("},{"line_number":52,"context_line":"            stack_name\u003dself.stack_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2F%2F8o%3D","line":49,"in_reply_to":"AAAAW3%2F%2FgXU%3D","updated":"2014-05-29 23:00:36.000000000","message":"This is required to allow the template to be modified on line 110 for the stack update. But also the heatclient cli now always parses the template so that the stack is created with a dict structure rather than a big string, so this replicates that behaviour.","commit_id":"9e5398ca910bdee1434ffbdf69b2f41e9d2c48dc"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f68e23d7cf2ae48b46dc9e548b841e2c6591dfcb","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            assertScale(2, 1)"},{"line_number":119,"context_line":"        finally:"},{"line_number":120,"context_line":"            # delete stack on completion or failure"},{"line_number":121,"context_line":"            self.stack.delete()"},{"line_number":122,"context_line":"            self.status_timeout(self.client.stacks, sid, \u0027COMPLETE\u0027,"},{"line_number":123,"context_line":"                                error_status\u003d\u0027FAILED\u0027,"},{"line_number":124,"context_line":"                                not_found_exception\u003dheat_exceptions.NotFound)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FfgI%3D","line":121,"updated":"2014-04-14 08:52:56.000000000","message":"According to the execution log, I think this delete() causes 404 error indirectly:\nhttp://logs.openstack.org/67/44967/4/check/check-tempest-dsvm-neutron-heat-slow/cef4ded/console.html#_2014-04-13_22_11_19_453\n\nProbably, we should remove the stack if we delete() it successfully.","commit_id":"9e5398ca910bdee1434ffbdf69b2f41e9d2c48dc"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9ad67db1bbad7c86d0697d2636c15e263727fd3b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            assertScale(2, 1)"},{"line_number":119,"context_line":"        finally:"},{"line_number":120,"context_line":"            # delete stack on completion or failure"},{"line_number":121,"context_line":"            self.stack.delete()"},{"line_number":122,"context_line":"            self.status_timeout(self.client.stacks, sid, \u0027COMPLETE\u0027,"},{"line_number":123,"context_line":"                                error_status\u003d\u0027FAILED\u0027,"},{"line_number":124,"context_line":"                                not_found_exception\u003dheat_exceptions.NotFound)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2F%2F4c%3D","line":121,"in_reply_to":"AAAAW3%2F%2FfgI%3D","updated":"2014-05-29 23:00:36.000000000","message":"Done","commit_id":"9e5398ca910bdee1434ffbdf69b2f41e9d2c48dc"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"f086b845fa985d54e0e418118c97b0305cf12627","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self.stack.delete()"},{"line_number":122,"context_line":"            self.status_timeout(self.client.stacks, sid, \u0027COMPLETE\u0027,"},{"line_number":123,"context_line":"                                error_status\u003d\u0027FAILED\u0027,"},{"line_number":124,"context_line":"                                not_found_exception\u003dheat_exceptions.NotFound)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            self.stack.get()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_f7f41789","line":124,"updated":"2014-05-27 10:27:02.000000000","message":"I think it would be better to do this via addCleanup, e.g like in the changes I made to https://review.openstack.org/#/c/88137/13\n\nAlso, as mentioned in that review, this doesn\u0027t match the DELETE action, so should use _wait_for_stack_status instead (if the stack stays CREATE_COMPLETE, this will pass the timeout, so will probably be racy)","commit_id":"f4e6ada1806f7524ae4f663983094ecf08941b38"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"486391f217940f28d5efca9c02c4479ac8cb1f25","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self.stack.delete()"},{"line_number":122,"context_line":"            self.status_timeout(self.client.stacks, sid, \u0027COMPLETE\u0027,"},{"line_number":123,"context_line":"                                error_status\u003d\u0027FAILED\u0027,"},{"line_number":124,"context_line":"                                not_found_exception\u003dheat_exceptions.NotFound)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            self.stack.get()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_0fa7b550","line":124,"in_reply_to":"3ae8d1ca_f7f41789","updated":"2014-06-05 02:49:59.000000000","message":"As long as I can do asserts in the addCleanup then this seems fine","commit_id":"f4e6ada1806f7524ae4f663983094ecf08941b38"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"f086b845fa985d54e0e418118c97b0305cf12627","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            self.stack.get()"},{"line_number":128,"context_line":"            self.assertEqual(\u0027DELETE_COMPLETE\u0027, self.stack.stack_status)"},{"line_number":129,"context_line":"        except heat_exceptions.NotFound:"},{"line_number":130,"context_line":"            pass"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # we\u0027ve successfully deleted the stack in the scenario, so prevent"},{"line_number":133,"context_line":"        # the stack resource from being deleted again on cleanup."}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_975af381","line":130,"updated":"2014-05-27 10:27:02.000000000","message":"Again, IMO moving to _wait_for_stack_status is cleaner than all the test-specific try/catches.","commit_id":"f4e6ada1806f7524ae4f663983094ecf08941b38"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"f086b845fa985d54e0e418118c97b0305cf12627","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # we\u0027ve successfully deleted the stack in the scenario, so prevent"},{"line_number":133,"context_line":"        # the stack resource from being deleted again on cleanup."},{"line_number":134,"context_line":"        if not CONF.orchestration.keypair_name:"},{"line_number":135,"context_line":"            self.remove_resource(\u0027stack\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_f7d7b7bd","line":135,"updated":"2014-05-27 10:27:02.000000000","message":"See comments in https://review.openstack.org/#/c/90143/4/tempest/scenario/orchestration/test_volumes.py which refer to  https://review.openstack.org/#/c/62101/ \n\nMy understanding is the set_resource thing is going away, so addCleanup is preferred.","commit_id":"f4e6ada1806f7524ae4f663983094ecf08941b38"}],"tempest/scenario/orchestration/test_autoscaling.yaml":[{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"c7907c16faae023e6b5625ebef99e92632f8cf0c","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                  import sys"},{"line_number":143,"context_line":"                  import subprocess"},{"line_number":144,"context_line":"                  import json"},{"line_number":145,"context_line":"                  "},{"line_number":146,"context_line":"                  def consume_now():"},{"line_number":147,"context_line":"                      # poll metadata and check for ConsumeNow \u003d\u003d \u00271\u0027"},{"line_number":148,"context_line":"                      cmd\u003d[\u0027/opt/aws/bin/cfn-get-metadata\u0027, \u0027-s\u0027,"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"AAAASn%2F%2FfX0%3D","line":145,"updated":"2013-09-04 06:16:56.000000000","message":"Could you remove these whitespaces?","commit_id":"21c94a0b7323279f9ee53866e34ef5bc32981496"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"c7907c16faae023e6b5625ebef99e92632f8cf0c","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                      output \u003d subproc.communicate()"},{"line_number":153,"context_line":"                      metadata \u003d json.loads(output[0])"},{"line_number":154,"context_line":"                      return metadata.get(\u0027ConsumeNow\u0027) \u003d\u003d \u00271\u0027"},{"line_number":155,"context_line":"                  "},{"line_number":156,"context_line":"                  a \u003d []"},{"line_number":157,"context_line":"                  sleep_until_consume \u003d ConsumeStartSeconds"},{"line_number":158,"context_line":"                  stack_start \u003d StackStart"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"AAAASn%2F%2FfXw%3D","line":155,"updated":"2013-09-04 06:16:56.000000000","message":"Same here.","commit_id":"21c94a0b7323279f9ee53866e34ef5bc32981496"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"b273d3a18af38a3187cb0f8c2778f1b5f3153632","unresolved":false,"context_lines":[{"line_number":151,"context_line":"      SecurityGroups: [{Ref: SmokeSecurityGroup}]"},{"line_number":152,"context_line":"      UserData: |"},{"line_number":153,"context_line":"        #!/bin/bash -x"},{"line_number":154,"context_line":"        /opt/aws/bin/cfn-init"},{"line_number":155,"context_line":"        /var/lib/tempest/consume_memory.py \u003e /var/log/tempest_consume_memory.log \u0026"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"AAAAWH%2F%2FDGA%3D","line":154,"updated":"2014-03-20 17:03:21.000000000","message":"This symbolic link probably does not exists.\nYou can reach the cfn-init from the path or from the /usr/bin.","commit_id":"e0fa58de1d2d9889f22c89e2468f2e78862af7f9"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"4c8c423c838fdede1b5228371933fe891e5981ed","unresolved":false,"context_lines":[{"line_number":151,"context_line":"      SecurityGroups: [{Ref: SmokeSecurityGroup}]"},{"line_number":152,"context_line":"      UserData: |"},{"line_number":153,"context_line":"        #!/bin/bash -x"},{"line_number":154,"context_line":"        /opt/aws/bin/cfn-init"},{"line_number":155,"context_line":"        /var/lib/tempest/consume_memory.py \u003e /var/log/tempest_consume_memory.log \u0026"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"AAAAWH%2F%2FAVg%3D","line":154,"in_reply_to":"AAAAWH%2F%2FDGA%3D","updated":"2014-03-21 00:35:07.000000000","message":"It should exist, fedora 20 has heat-cfntools, and heat the boot cloud-init workload includes calling cfn-create-aws-symlinks","commit_id":"e0fa58de1d2d9889f22c89e2468f2e78862af7f9"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"f086b845fa985d54e0e418118c97b0305cf12627","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  MEMAlarmLow:"},{"line_number":60,"context_line":"    Type: AWS::CloudWatch::Alarm"},{"line_number":61,"context_line":"    Properties:"},{"line_number":62,"context_line":"      AlarmDescription: Scale-down if MEM \u003c ScaleDownThreshold% for 60 seconds"},{"line_number":63,"context_line":"      MetricName: MemoryUtilization"},{"line_number":64,"context_line":"      Namespace: system/linux"},{"line_number":65,"context_line":"      Statistic: Average"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3ae8d1ca_522cf94a","line":62,"updated":"2014-05-27 10:27:02.000000000","message":"So I was thinking about a more radical rework when looking at this test last week.  We could remove the alarm stuff completely, and use a signal from the VM to trigger the scale up/down directly (ie signal the ScalingPolicy)\n\nSomething like:\n- AutoScaling group (native one would be nice ;) launched, initial size 1, max size 2, the userdata sends a signal to scale up so we scale up to 2\n- The second instance sends a signal to scale down (we\u0027d need something in the userdata script which e.g looks at the hostname suffix to figure out if it\u0027s an odd or even numbered instance)\n\nI\u0027m thinking we might be able to use a simiar approach to the software deployments cirros PoC so we could test this will cirros instead of needing the CFN/CW stuff which needs the Fedora image.","commit_id":"f4e6ada1806f7524ae4f663983094ecf08941b38"}]}
