)]}'
{"heat/engine/resources/wait_condition.py":[{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"3baa445e90158bea9a0cfeeca25b08f6fe1964ad","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        \u0027Count\u0027: {"},{"line_number":146,"context_line":"            \u0027Type\u0027: \u0027Number\u0027,"},{"line_number":147,"context_line":"            \u0027MinValue\u0027: \u00271\u0027,"},{"line_number":148,"context_line":"            \u0027UpdateAllowed\u0027: True,"},{"line_number":149,"context_line":"            \u0027Description\u0027: _(\u0027The number of success signals that must be\u0027"},{"line_number":150,"context_line":"                             \u0027 received before the stack creation process\u0027"},{"line_number":151,"context_line":"                             \u0027 continues.\u0027)}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9eqU%3D","line":148,"updated":"2013-12-11 03:44:58.000000000","message":"I don\u0027t think this line by itself can really enable in place update. We no longer need update_allowed_keys \u003d (\u0027Properties\u0027,)? Am I missing something?","commit_id":"fb4b11f00a5a1d8f946da00c1054548ff222687c"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"7386f68f06bb7e232302742ff53a2ac8fec953c7","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    def handle_create(self):"},{"line_number":210,"context_line":"        self._validate_handle_url()"},{"line_number":211,"context_line":"        handle_res_name \u003d self._get_handle_resource_name()"},{"line_number":212,"context_line":"        self.handle \u003d self.stack[handle_res_name]"},{"line_number":213,"context_line":"        self.resource_id_set(handle_res_name)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        runner \u003d scheduler.TaskRunner(self._wait, self.handle)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9X58%3D","line":212,"updated":"2013-12-12 05:18:28.000000000","message":"any reason why this \"handle\" is now \"self.handle\"? I don\u0027t see a point for it.","commit_id":"65fdfa0d1118eb4ce1eb8850441b9c246d99752f"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"bbcc93234ba156e7f8b4b2477952aab9363b98f7","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    def handle_create(self):"},{"line_number":210,"context_line":"        self._validate_handle_url()"},{"line_number":211,"context_line":"        handle_res_name \u003d self._get_handle_resource_name()"},{"line_number":212,"context_line":"        self.handle \u003d self.stack[handle_res_name]"},{"line_number":213,"context_line":"        self.resource_id_set(handle_res_name)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        runner \u003d scheduler.TaskRunner(self._wait, self.handle)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9Vmw%3D","line":212,"in_reply_to":"AAAATn%2F9X58%3D","updated":"2013-12-12 14:35:54.000000000","message":"I use self.handle in order to use the same WaitConditionHandle in handle_create and handle_update. With this, all the signals that the WaitConditionHandle already receive are counted when you call get_status during an update.\nI added because I assumed that is possible to do an update over an existing WaitCondition instance. If this isn\u0027t possible, it\u0027s safe to remove the self.handle, because all the signals that the handle already receive are persisted in db and are restored during the construction of the handle associated to a wait condition.","commit_id":"65fdfa0d1118eb4ce1eb8850441b9c246d99752f"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"7386f68f06bb7e232302742ff53a2ac8fec953c7","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def handle_update(self, json_snippet, tmpl_diff, prop_diff):"},{"line_number":223,"context_line":"        if \u0027Count\u0027 in prop_diff:"},{"line_number":224,"context_line":"            self.count \u003d int(prop_diff[\u0027Count\u0027])"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if not self.handle:"},{"line_number":227,"context_line":"            handle_res_name \u003d self._get_handle_resource_name()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9X48%3D","line":224,"updated":"2013-12-12 05:18:28.000000000","message":"one question (which I don\u0027t know the answer to just yet) is:\ndo we need to clear the current \"handle.get_status()\" in the update?\ni.e. will updating the waitcondition cause the servers to re-post to the waitcondition?","commit_id":"65fdfa0d1118eb4ce1eb8850441b9c246d99752f"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"bbcc93234ba156e7f8b4b2477952aab9363b98f7","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def handle_update(self, json_snippet, tmpl_diff, prop_diff):"},{"line_number":223,"context_line":"        if \u0027Count\u0027 in prop_diff:"},{"line_number":224,"context_line":"            self.count \u003d int(prop_diff[\u0027Count\u0027])"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if not self.handle:"},{"line_number":227,"context_line":"            handle_res_name \u003d self._get_handle_resource_name()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9VlE%3D","line":224,"in_reply_to":"AAAATn%2F9X48%3D","updated":"2013-12-12 14:35:54.000000000","message":"I think not. If we clear the handle.get_status() we could get a failed stack creation because some signals are lost. As far I know, updating the waitcondition wont cause re-posts.","commit_id":"65fdfa0d1118eb4ce1eb8850441b9c246d99752f"},{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"70397b4ec05f512683ee1a1b1997b73e5dad736c","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        runner \u003d scheduler.TaskRunner(self._wait, self.handle)"},{"line_number":231,"context_line":"        runner.start(timeout\u003dfloat(self.properties[\u0027Timeout\u0027]))"},{"line_number":232,"context_line":"        return runner"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def handle_delete(self):"},{"line_number":235,"context_line":"        if self.resource_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9VfE%3D","line":232,"updated":"2013-12-12 14:52:01.000000000","message":"Is the runner supposed to be run in check_update_complete? forgot to check in the code?","commit_id":"65fdfa0d1118eb4ce1eb8850441b9c246d99752f"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"8d728530c1780d768b08ec13d87b00b9fbf79c9f","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        runner \u003d scheduler.TaskRunner(self._wait, self.handle)"},{"line_number":231,"context_line":"        runner.start(timeout\u003dfloat(self.properties[\u0027Timeout\u0027]))"},{"line_number":232,"context_line":"        return runner"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def handle_delete(self):"},{"line_number":235,"context_line":"        if self.resource_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9UQs%3D","line":232,"in_reply_to":"AAAATn%2F9VfE%3D","updated":"2013-12-12 18:10:12.000000000","message":"Done","commit_id":"65fdfa0d1118eb4ce1eb8850441b9c246d99752f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"4768d9cb0b67ca9dced198cad4199e430d409410","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        super(WaitCondition, self).__init__(name, json_snippet, stack)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.count \u003d int(self.t[\u0027Properties\u0027].get(\u0027Count\u0027, \u00271\u0027))"},{"line_number":160,"context_line":"        self.handle \u003d None"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _validate_handle_url(self):"},{"line_number":163,"context_line":"        handle_url \u003d self.properties[\u0027Handle\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9T%2BE%3D","line":160,"updated":"2013-12-12 19:02:29.000000000","message":"There\u0027s no need to store this, and it\u0027s better if you don\u0027t. This just creates extra, wrong, states that the object can be in.","commit_id":"016f595a1d7b54c45215120e1bcad6c46e25bffd"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"4768d9cb0b67ca9dced198cad4199e430d409410","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def handle_update(self, json_snippet, tmpl_diff, prop_diff):"},{"line_number":223,"context_line":"        if \u0027Count\u0027 in prop_diff:"},{"line_number":224,"context_line":"            self.count \u003d int(prop_diff[\u0027Count\u0027])"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if not self.handle:"},{"line_number":227,"context_line":"            handle_res_name \u003d self._get_handle_resource_name()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9T9M%3D","line":224,"updated":"2013-12-12 19:02:29.000000000","message":"This actually exposes the fact that storing self.count wasn\u0027t ever a great idea. We should set the default to 1 in the schema, and just use self.properties[\u0027Count\u0027] to access it when required.","commit_id":"016f595a1d7b54c45215120e1bcad6c46e25bffd"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"08a691522c7e6653e5db88c6d1d44d94d57cee68","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from heat.engine import resource"},{"line_number":23,"context_line":"from heat.engine import scheduler"},{"line_number":24,"context_line":"from heat.engine import signal_responder"},{"line_number":25,"context_line":"from heat.engine.properties import Properties"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from heat.openstack.common import log as logging"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9HnY%3D","line":25,"updated":"2013-12-16 16:31:18.000000000","message":"OpenStack coding standards say we shouldn\u0027t do these types of imports... if it\u0027s possible to refer to it as properties.Properties without completely messing up the formatting then please do that instead.\n\nhttp://docs.openstack.org/developer/hacking/#imports","commit_id":"ab14aff48f471bd8f10fe35fc8e1a1db73970003"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"08a691522c7e6653e5db88c6d1d44d94d57cee68","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        reasons \u003d handle.get_status_reason(STATUS_SUCCESS)"},{"line_number":126,"context_line":"        message \u003d (_(\u0027%(len)d of %(count)d received\u0027) % {"},{"line_number":127,"context_line":"                   \u0027len\u0027: len(reasons), \u0027count\u0027:"},{"line_number":128,"context_line":"                   wait_condition.properties[WaitCondition.COUNT]})"},{"line_number":129,"context_line":"        if reasons:"},{"line_number":130,"context_line":"            message +\u003d \u0027 - %s\u0027 % reasons"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9HoE%3D","line":128,"updated":"2013-12-16 16:31:18.000000000","message":"This should be wait_condition.COUNT, we don\u0027t want to assume that type(wait_condition) \u003d\u003d WaitCondition.","commit_id":"ab14aff48f471bd8f10fe35fc8e1a1db73970003"}]}
