)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5456e7b6b1444e74b51c1382ac924950f677b109","unresolved":false,"context_lines":[{"line_number":10,"context_line":"stable_state can be used as a target."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I22ec4f4cbb855849e9a80b6a32ed01d1616958da"},{"line_number":13,"context_line":"Signed-off-by: John L. Villalovos \u003cjohn.l.villalovos@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_b1cb96a2","line":13,"updated":"2015-02-12 23:48:05.000000000","message":"OpenStack doesn\u0027t usually do s-o-b tags.","commit_id":"fe2eb341c2904cfa34466227b9d8fa3ec2338da9"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"af0902a324fb84a8b947257d04ed5f01d3fccb31","unresolved":false,"context_lines":[{"line_number":10,"context_line":"stable_state can be used as a target."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I22ec4f4cbb855849e9a80b6a32ed01d1616958da"},{"line_number":13,"context_line":"Signed-off-by: John L. Villalovos \u003cjohn.l.villalovos@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da86d52c_31ea46d8","line":13,"in_reply_to":"da86d52c_b1cb96a2","updated":"2015-02-12 23:53:17.000000000","message":"Done","commit_id":"fe2eb341c2904cfa34466227b9d8fa3ec2338da9"}],"ironic/common/fsm.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"baff1456e723b81ce9e740dbe152d1c674bb1766","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        parameter which is the event that is being processed that caused the"},{"line_number":81,"context_line":"        state transition."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        stable_state: A \u0027target\u0027 must have been previously defined as a"},{"line_number":84,"context_line":"                      \u0027stable_state\u0027"},{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        if state in self._states:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_013235f2","line":83,"updated":"2015-02-13 14:10:02.000000000","message":"should be :param stable_state:\n\nAlso, maybe \u0027stable\u0027 instead of \u0027stable_state\u0027 is enough? The function name add_state already says that we\u0027re dealing with state.","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"b5190ce59d7e80a84899737b041d76565ff3e9ad","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        parameter which is the event that is being processed that caused the"},{"line_number":81,"context_line":"        state transition."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        stable_state: A \u0027target\u0027 must have been previously defined as a"},{"line_number":84,"context_line":"                      \u0027stable_state\u0027"},{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        if state in self._states:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_a147a976","line":83,"in_reply_to":"da86d52c_013235f2","updated":"2015-02-13 14:25:17.000000000","message":"+1","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e1539e12f3f88f07aa58fdba6296c129a24d8681","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        parameter which is the event that is being processed that caused the"},{"line_number":81,"context_line":"        state transition."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        stable_state: A \u0027target\u0027 must have been previously defined as a"},{"line_number":84,"context_line":"                      \u0027stable_state\u0027"},{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        if state in self._states:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_f45b1353","line":83,"in_reply_to":"da86d52c_013235f2","updated":"2015-02-13 19:58:25.000000000","message":"Done","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"baff1456e723b81ce9e740dbe152d1c674bb1766","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if target is not None and target not in self._states:"},{"line_number":95,"context_line":"            raise excp.InvalidState(_(\"Target state \u0027%s\u0027 does not exist\")"},{"line_number":96,"context_line":"                    % target)"},{"line_number":97,"context_line":"        if target is not None and not self._states[target][\u0027stable_state\u0027]:"},{"line_number":98,"context_line":"            raise excp.InvalidState("},{"line_number":99,"context_line":"                _(\"Target state \u0027%s\u0027 is not a \u0027stable_state\u0027\") % target)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_815545fc","line":97,"updated":"2015-02-13 14:10:02.000000000","message":"just \u0027if target and ...\u0027 is enough","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e1539e12f3f88f07aa58fdba6296c129a24d8681","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if target is not None and target not in self._states:"},{"line_number":95,"context_line":"            raise excp.InvalidState(_(\"Target state \u0027%s\u0027 does not exist\")"},{"line_number":96,"context_line":"                    % target)"},{"line_number":97,"context_line":"        if target is not None and not self._states[target][\u0027stable_state\u0027]:"},{"line_number":98,"context_line":"            raise excp.InvalidState("},{"line_number":99,"context_line":"                _(\"Target state \u0027%s\u0027 is not a \u0027stable_state\u0027\") % target)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_d43e0fda","line":97,"in_reply_to":"da86d52c_815545fc","updated":"2015-02-13 19:58:25.000000000","message":"True, but the default value is \u0027None\u0027.  I think this test, like the test above is checking to see if the user has passed in a value.  If the value is not None then the user has passed in a value.\n\nI could go either way, but I would like to stick with what has already been done.","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7153133b4895f30ba9010b2d9d80f0ce25b1570e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"See https://github.com/harlowja/automaton"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is being used in the implementation of:"},{"line_number":22,"context_line":"http://specs.openstack.org/openstack/ironic-specs/specs/kilo/new-ironic-state-machine.html"},{"line_number":23,"context_line":"\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from collections import OrderedDict  # noqa"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1cf8697b","line":22,"updated":"2015-02-17 19:21:25.000000000","message":"I\u0027m not sure we want this. We don\u0027t add comments in other code with links to specs, and I\u0027m not sure we want to start.\n\nAlso, this code was copied from TaskFlow and if it gets put in a library, this comment won\u0027t make sense.","commit_id":"aeeeba9d6a2d793c98772ba40270fc066d95b6a7"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"8556e6b6127847ea474a80b2ea9ec3761aa4cf52","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        if target is not None and target not in self._states:"},{"line_number":102,"context_line":"            raise excp.InvalidState(_(\"Target state \u0027%s\u0027 does not exist\")"},{"line_number":103,"context_line":"                    % target)"},{"line_number":104,"context_line":"        if target is not None and not self._states[target][\u0027stable\u0027]:"},{"line_number":105,"context_line":"            raise excp.InvalidState("},{"line_number":106,"context_line":"                _(\"Target state \u0027%s\u0027 is not a \u0027stable\u0027 state\") % target)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_f96f8c91","line":104,"updated":"2015-02-13 19:03:20.000000000","message":"See Vladslav\u0027s comment on patchset 5.","commit_id":"aeeeba9d6a2d793c98772ba40270fc066d95b6a7"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e9eea8aea1feb6329b70bf9c419d4725aac29d66","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        if target is not None and target not in self._states:"},{"line_number":102,"context_line":"            raise excp.InvalidState(_(\"Target state \u0027%s\u0027 does not exist\")"},{"line_number":103,"context_line":"                    % target)"},{"line_number":104,"context_line":"        if target is not None and not self._states[target][\u0027stable\u0027]:"},{"line_number":105,"context_line":"            raise excp.InvalidState("},{"line_number":106,"context_line":"                _(\"Target state \u0027%s\u0027 is not a \u0027stable\u0027 state\") % target)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_1407c71e","line":104,"in_reply_to":"da86d52c_f96f8c91","updated":"2015-02-13 19:59:23.000000000","message":"Please see my reply in patchset 5.","commit_id":"aeeeba9d6a2d793c98772ba40270fc066d95b6a7"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"373f0b7e28a78219186e56b34195b6d0513ed3f4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                       \u0027stable\u0027 before it can be used as a \u0027target\u0027"},{"line_number":89,"context_line":"        :param target: The target state for \u0027state\u0027 to go to.  Before a state"},{"line_number":90,"context_line":"                       can be used as a target it must have been previously"},{"line_number":91,"context_line":"                       added and specified as \u0027stable\u0027"},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        if state in self._states:"},{"line_number":94,"context_line":"            raise excp.Duplicate(_(\"State \u0027%s\u0027 already defined\") % state)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_db040e17","line":91,"updated":"2015-02-17 23:02:38.000000000","message":"If we\u0027re adding previously existing arguments to the docstring, don\u0027t we want to add the rest?","commit_id":"ba36550e64416abd161d7c8c022f0097220f90d8"}],"ironic/tests/test_fsm.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"baff1456e723b81ce9e740dbe152d1c674bb1766","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.assertRaises(excp.InvalidState,"},{"line_number":121,"context_line":"                          self.jumper.add_state, \u0027jump\u0027, target\u003d\u0027unknown\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_target_state_not_stable(self):"},{"line_number":124,"context_line":"        self.assertRaises(excp.InvalidState,"},{"line_number":125,"context_line":"                          self.jumper.add_state, \u0027jump\u0027, target\u003d\u0027down\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_e1f361e5","line":123,"updated":"2015-02-13 14:10:02.000000000","message":"Could you also add a test with stable target?","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"b5190ce59d7e80a84899737b041d76565ff3e9ad","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.assertRaises(excp.InvalidState,"},{"line_number":121,"context_line":"                          self.jumper.add_state, \u0027jump\u0027, target\u003d\u0027unknown\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_target_state_not_stable(self):"},{"line_number":124,"context_line":"        self.assertRaises(excp.InvalidState,"},{"line_number":125,"context_line":"                          self.jumper.add_state, \u0027jump\u0027, target\u003d\u0027down\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_3cfda009","line":123,"in_reply_to":"da86d52c_e1f361e5","updated":"2015-02-13 14:25:17.000000000","message":"+1","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e1539e12f3f88f07aa58fdba6296c129a24d8681","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.assertRaises(excp.InvalidState,"},{"line_number":121,"context_line":"                          self.jumper.add_state, \u0027jump\u0027, target\u003d\u0027unknown\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def test_target_state_not_stable(self):"},{"line_number":124,"context_line":"        self.assertRaises(excp.InvalidState,"},{"line_number":125,"context_line":"                          self.jumper.add_state, \u0027jump\u0027, target\u003d\u0027down\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_1420a7af","line":123,"in_reply_to":"da86d52c_e1f361e5","updated":"2015-02-13 19:58:25.000000000","message":"Done","commit_id":"e0930c59e03a1064f969d7818bbc23927bb3535c"}]}
