)]}'
{"cue/taskflow/flow/create_cluster_node.py":[{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"50a7d36a4b19da4e408c6796e31231d5eda7cf37","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            name\u003d\"get vm %s\" % node_name,"},{"line_number":153,"context_line":"            rebind\u003d{\u0027nova_vm_id\u0027: \"vm_id_%d\" % node_number},"},{"line_number":154,"context_line":"            provides\u003d\"vm_status_%d\" % node_number),"},{"line_number":155,"context_line":"        cue_tasks.CheckForVmStatus("},{"line_number":156,"context_line":"            name\u003d\"check vm status %s\" % node_name,"},{"line_number":157,"context_line":"            details\u003d\"waiting for ACTIVE VM status\","},{"line_number":158,"context_line":"            rebind\u003d{\u0027check_var\u0027: \"vm_status_%d\" % node_number},"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a7b0d38_23bee2d4","line":155,"updated":"2015-12-23 22:00:31.000000000","message":"The task name says \"check for vm status\" but it\u0027s implicitly checking for ACTIVE status.","commit_id":"c0a790df29fdc8edbbf9bd7a37a58fa199cb543c"}],"cue/taskflow/retry/errored_times.py":[{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"6c4938c27ee9fe2644f099215fab7b9b6fd46f1f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ErroredTimes(retry.Times):"},{"line_number":24,"context_line":"    \"\"\"Retries subflow given number of times. Returns attempt number."},{"line_number":25,"context_line":"    :param attempts: number of attempts to retry the associated subflow"},{"line_number":26,"context_line":"                     before giving up"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a710552_3b763a3f","line":23,"updated":"2015-12-14 22:21:54.000000000","message":"Probably can be named something more generic.  ConditionalTimes?","commit_id":"2c2aac43384fa30045d1610a0dd54303c6d87418"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"6c4938c27ee9fe2644f099215fab7b9b6fd46f1f","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        error_msg \u003d error_details[len(error_details)-1]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        current_status \u003d error_msg.split(\u0027AssertionError\u0027)[1]"},{"line_number":58,"context_line":"        if \u0027ERROR\u0027 in current_status:"},{"line_number":59,"context_line":"            return self._revert_action"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a710552_20a607c2","line":57,"updated":"2015-12-14 22:21:54.000000000","message":"Can we make this more generic such that we can handle different types of errors.","commit_id":"2c2aac43384fa30045d1610a0dd54303c6d87418"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"d6f2d4426c080d8b1e1e3450cb005f9bbbb36b8e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class ErroredTimes(retry.Times):"},{"line_number":25,"context_line":"    \"\"\"Retries subflow given number of times. Returns attempt number."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    :param attempts: number of attempts to retry the associated subflow"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_2cf9334e","line":24,"range":{"start_line":24,"start_character":6,"end_line":24,"end_character":18},"updated":"2015-12-16 21:14:40.000000000","message":"Since this is now doing parsing based on exception type, the name should be changed to something to resemble exception.  Possibly ExceptionTimes or ExceptTimes","commit_id":"aed83cd61bfa062a8c56e1509d3918e1f2288bfc"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"fd215d703cccf181244b60639f0755ff7a3b52cb","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class ErroredTimes(retry.Times):"},{"line_number":25,"context_line":"    \"\"\"Retries subflow given number of times. Returns attempt number."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    :param attempts: number of attempts to retry the associated subflow"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_eb3378a9","line":24,"range":{"start_line":24,"start_character":6,"end_line":24,"end_character":18},"in_reply_to":"3a7e1126_2cf9334e","updated":"2015-12-18 22:20:06.000000000","message":"Done","commit_id":"aed83cd61bfa062a8c56e1509d3918e1f2288bfc"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"d6f2d4426c080d8b1e1e3450cb005f9bbbb36b8e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    :py:class:`~taskflow.atom.Atom` constructor."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, attempts\u003d1, name\u003dNone, provides\u003dNone, requires\u003dNone,"},{"line_number":40,"context_line":"                 auto_extract\u003dTrue, rebind\u003dNone, revert_all\u003dFalse):"},{"line_number":41,"context_line":"        super(retry.Times, self).__init__(name, provides, requires,"},{"line_number":42,"context_line":"                                    auto_extract, rebind)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_4c77dfd4","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":16},"updated":"2015-12-16 21:14:40.000000000","message":"The construction should accept a list of exception types that this can use to bail out on instead of hard-coding a specific exception type.","commit_id":"aed83cd61bfa062a8c56e1509d3918e1f2288bfc"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"fd215d703cccf181244b60639f0755ff7a3b52cb","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    :py:class:`~taskflow.atom.Atom` constructor."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, attempts\u003d1, name\u003dNone, provides\u003dNone, requires\u003dNone,"},{"line_number":40,"context_line":"                 auto_extract\u003dTrue, rebind\u003dNone, revert_all\u003dFalse):"},{"line_number":41,"context_line":"        super(retry.Times, self).__init__(name, provides, requires,"},{"line_number":42,"context_line":"                                    auto_extract, rebind)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_2be1809a","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":16},"in_reply_to":"3a7e1126_4c77dfd4","updated":"2015-12-18 22:20:06.000000000","message":"Done","commit_id":"aed83cd61bfa062a8c56e1509d3918e1f2288bfc"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"d6f2d4426c080d8b1e1e3450cb005f9bbbb36b8e","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        error \u003d error_details[len(error_details) - 1]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if type(error.exception) \u003d\u003d cue_exceptions.VmErrorException:"},{"line_number":60,"context_line":"            return self._revert_action"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        if len(history) \u003c self._attempts:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_ac3f63d5","line":59,"range":{"start_line":59,"start_character":36,"end_line":59,"end_character":50},"updated":"2015-12-16 21:14:40.000000000","message":"if error.exception in revert_exception_list:\n    return revert...","commit_id":"aed83cd61bfa062a8c56e1509d3918e1f2288bfc"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"fd215d703cccf181244b60639f0755ff7a3b52cb","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        error \u003d error_details[len(error_details) - 1]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if type(error.exception) \u003d\u003d cue_exceptions.VmErrorException:"},{"line_number":60,"context_line":"            return self._revert_action"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        if len(history) \u003c self._attempts:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_0be4c4a9","line":59,"range":{"start_line":59,"start_character":36,"end_line":59,"end_character":50},"in_reply_to":"3a7e1126_ac3f63d5","updated":"2015-12-18 22:20:06.000000000","message":"Done","commit_id":"aed83cd61bfa062a8c56e1509d3918e1f2288bfc"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"24a6e1ab24292b3d8dd50f82e286fd3c6ff5cdd5","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        for owner, outcome in failures:"},{"line_number":55,"context_line":"            error_details.append(outcome)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        error \u003d error_details[len(error_details) - 1]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if type(error.exception) in self._revert_exception_list:"},{"line_number":60,"context_line":"            return self._revert_action"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_fbe53fdb","line":57,"range":{"start_line":57,"start_character":30,"end_line":57,"end_character":53},"updated":"2015-12-21 21:22:02.000000000","message":"are we only extracting the last error from the flow here?  If there are more than one error(s), are those being ignored?","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"79bb1ce218764c2ea5824595819fc35f73ae60a7","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        for owner, outcome in failures:"},{"line_number":55,"context_line":"            error_details.append(outcome)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        error \u003d error_details[len(error_details) - 1]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if type(error.exception) in self._revert_exception_list:"},{"line_number":60,"context_line":"            return self._revert_action"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_f9f4ce87","line":57,"range":{"start_line":57,"start_character":30,"end_line":57,"end_character":53},"in_reply_to":"3a7e1126_fbe53fdb","updated":"2016-01-04 22:48:16.000000000","message":"Since we are intentionally throwing VmBuildingException when we find the vm is still in a building state, this history / error_details list will get populated with those, which we don\u0027t care about.  So what we should see is the history grow by 1 each time of_failure is called.  I realize that the naming conventions in this file are misleading, things should be named \u0027exception_xx\u0027 instead of \u0027error_xx\u0027 since were handling exceptions that are not necessarily errors.  I\u0027ll make a point to update the names.  And if your worried about capturing other errors besides VmErrorException, it should be added to the rever_exception_list when instantiating the ExceptionTimes object.","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"}],"cue/tests/functional/taskflow/flow/test_create_cluster.py":[{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"24a6e1ab24292b3d8dd50f82e286fd3c6ff5cdd5","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        nodes \u003d objects.Node.get_nodes_by_cluster_id(self.context,"},{"line_number":179,"context_line":"                                                     new_cluster.id)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"ERROR\")"},{"line_number":182,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        node_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_1b3dabdc","line":181,"range":{"start_line":181,"start_character":44,"end_line":181,"end_character":50},"updated":"2015-12-21 21:22:02.000000000","message":"Nova client fixture has a \u0027set_vm_status\u0027 helper method to do this already, let\u0027s use that instead","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"5aa084b1aa7a048537567d8c7bb6d0ed81922a9a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        nodes \u003d objects.Node.get_nodes_by_cluster_id(self.context,"},{"line_number":179,"context_line":"                                                     new_cluster.id)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"ERROR\")"},{"line_number":182,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        node_ids \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_adaf547c","line":181,"range":{"start_line":181,"start_character":44,"end_line":181,"end_character":50},"in_reply_to":"3a7e1126_1b3dabdc","updated":"2015-12-22 18:42:16.000000000","message":"Done","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"24a6e1ab24292b3d8dd50f82e286fd3c6ff5cdd5","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        nodes \u003d objects.Node.get_nodes_by_cluster_id(self.context,"},{"line_number":224,"context_line":"                                                     new_cluster.id)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        CONF.flow_options.create_cluster_node_vm_active_retry_count \u003d 1"},{"line_number":227,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":228,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_bb70170c","line":226,"range":{"start_line":226,"start_character":70,"end_line":226,"end_character":71},"updated":"2015-12-21 21:22:02.000000000","message":"let\u0027s have the retry count set to at least 2 or 3","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"5aa084b1aa7a048537567d8c7bb6d0ed81922a9a","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        nodes \u003d objects.Node.get_nodes_by_cluster_id(self.context,"},{"line_number":224,"context_line":"                                                     new_cluster.id)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        CONF.flow_options.create_cluster_node_vm_active_retry_count \u003d 1"},{"line_number":227,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":228,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_cdb420d3","line":226,"range":{"start_line":226,"start_character":70,"end_line":226,"end_character":71},"in_reply_to":"3a7e1126_bb70170c","updated":"2015-12-22 18:42:16.000000000","message":"Done","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"24a6e1ab24292b3d8dd50f82e286fd3c6ff5cdd5","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        CONF.flow_options.create_cluster_node_vm_active_retry_count \u003d 1"},{"line_number":227,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":228,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        node_ids \u003d []"},{"line_number":231,"context_line":"        for node in nodes:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_9e174944","line":228,"range":{"start_line":228,"start_character":44,"end_line":228,"end_character":50},"updated":"2015-12-21 21:22:02.000000000","message":"same as above (line: 181)","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"5aa084b1aa7a048537567d8c7bb6d0ed81922a9a","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        CONF.flow_options.create_cluster_node_vm_active_retry_count \u003d 1"},{"line_number":227,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":228,"context_line":"        nova.VmStatusDetails.vm_status_list.append(\"BUILDING\")"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        node_ids \u003d []"},{"line_number":231,"context_line":"        for node in nodes:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_8dc7f844","line":228,"range":{"start_line":228,"start_character":44,"end_line":228,"end_character":50},"in_reply_to":"3a7e1126_9e174944","updated":"2015-12-22 18:42:16.000000000","message":"Done","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"6b33e4bde5c66cca400be4aea205c7d2ff2bb978","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                                     new_cluster.id)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        # configure custom vm_status list"},{"line_number":185,"context_line":"        nova.VmStatusDetails.set_vm_status([\u0027ERROR\u0027,"},{"line_number":186,"context_line":"                                            \u0027BUILD\u0027,"},{"line_number":187,"context_line":"                                            \u0027BUILD\u0027])"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a7b0d38_c344be75","line":185,"updated":"2015-12-23 22:17:20.000000000","message":"this test does not validate correct behavior in the event of an error, the error happens at the end, so there is no verification that the error_times retry controller actually breaks the loop in the event of an ERROR.  In fact modifying this test shows that the retry controller is not doing what is expected of it.","commit_id":"c0a790df29fdc8edbbf9bd7a37a58fa199cb543c"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"f276fc15e8b188acd2893a8db0c70ca7103bd382","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            self.assertEqual([cue_exceptions.VmErrorException,"},{"line_number":204,"context_line":"                              cue_exceptions.VmBuildingException,"},{"line_number":205,"context_line":"                              cue_exceptions.VmBuildingException],"},{"line_number":206,"context_line":"                             exc_list)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_create_cluster_max_retries(self):"},{"line_number":209,"context_line":"        flow_store \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a7b0d38_e62308a6","line":206,"updated":"2015-12-23 22:23:39.000000000","message":"if no exception is thrown then this test should fail, however as written it will succeed.","commit_id":"c0a790df29fdc8edbbf9bd7a37a58fa199cb543c"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"f276fc15e8b188acd2893a8db0c70ca7103bd382","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            self.assertEqual([cue_exceptions.VmBuildingException,"},{"line_number":256,"context_line":"                              cue_exceptions.VmBuildingException,"},{"line_number":257,"context_line":"                              cue_exceptions.VmBuildingException],"},{"line_number":258,"context_line":"                             exc_list)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def test_create_cluster_overlimit(self):"},{"line_number":261,"context_line":"        vm_list \u003d self.nova_client.servers.list()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a7b0d38_863b24d1","line":258,"updated":"2015-12-23 22:23:39.000000000","message":"if no exception is thrown then this test should fail, however as written it will succeed.","commit_id":"c0a790df29fdc8edbbf9bd7a37a58fa199cb543c"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"b309fae955380b9092092d7f011ac399f020703b","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            self.assertEqual([cue_exceptions.VmBuildingException,"},{"line_number":256,"context_line":"                              cue_exceptions.VmBuildingException,"},{"line_number":257,"context_line":"                              cue_exceptions.VmBuildingException],"},{"line_number":258,"context_line":"                             exc_list)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def test_create_cluster_overlimit(self):"},{"line_number":261,"context_line":"        vm_list \u003d self.nova_client.servers.list()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a7b0d38_86cb2453","line":258,"in_reply_to":"1a7b0d38_863b24d1","updated":"2015-12-23 22:49:39.000000000","message":"actually, not sure this should raise something at all","commit_id":"c0a790df29fdc8edbbf9bd7a37a58fa199cb543c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"6d2cdf60a2b0da76bd8f302dda5c5687ef64871c","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                              self.valid_network[\u0027id\u0027],"},{"line_number":253,"context_line":"                              self.management_network[\u0027id\u0027])"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        self.assertRaises(cue_exceptions.VmBuildingException, engines.run,"},{"line_number":256,"context_line":"                          flow, store\u003dflow_store)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def test_create_cluster_overlimit(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_d2faffbc","line":255,"range":{"start_line":255,"start_character":13,"end_line":255,"end_character":25},"updated":"2016-01-04 20:29:10.000000000","message":"this should check if the correct number of VmBuildingException were raised, which would indicate the number of retry iterations.","commit_id":"a1eb1eeec4a3a2eac50bed0b9272ff796e2da1fe"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"8ebbf3be3398e8e993aa5b78979f3d4883d77824","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                              self.valid_network[\u0027id\u0027],"},{"line_number":253,"context_line":"                              self.management_network[\u0027id\u0027])"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        self.assertRaises(cue_exceptions.VmBuildingException, engines.run,"},{"line_number":256,"context_line":"                          flow, store\u003dflow_store)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def test_create_cluster_overlimit(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa69d971_642d5c94","line":255,"range":{"start_line":255,"start_character":13,"end_line":255,"end_character":25},"in_reply_to":"fa69d971_d2faffbc","updated":"2016-01-05 19:32:13.000000000","message":"Done","commit_id":"a1eb1eeec4a3a2eac50bed0b9272ff796e2da1fe"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"f0adfb8b969fd33e4e343c864032511180510777","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                                     new_cluster.id)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        # configure custom vm_status list"},{"line_number":185,"context_line":"        nova.VmStatusDetails.set_vm_status([\u0027ACTIVE\u0027,"},{"line_number":186,"context_line":"                                            \u0027ERROR\u0027,"},{"line_number":187,"context_line":"                                            \u0027BUILD\u0027,"},{"line_number":188,"context_line":"                                            \u0027BUILD\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_52904f43","line":185,"range":{"start_line":185,"start_character":45,"end_line":185,"end_character":51},"updated":"2016-01-04 20:32:19.000000000","message":"I think the test should explicitly set the retry count, similar to the \u0027test_create_cluster_max_retries\u0027 to ensure the retry count is high enough to reach the test conditions here and not depend on value in cue.conf","commit_id":"bacf47d5f8ac7e5735a0d1dae4b542882cc7b3ac"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"f9223701b75fe95bd2288cc6393f39f94a3f511a","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                                     new_cluster.id)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        # configure custom vm_status list"},{"line_number":185,"context_line":"        nova.VmStatusDetails.set_vm_status([\u0027ACTIVE\u0027,"},{"line_number":186,"context_line":"                                            \u0027ERROR\u0027,"},{"line_number":187,"context_line":"                                            \u0027BUILD\u0027,"},{"line_number":188,"context_line":"                                            \u0027BUILD\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_a48b5467","line":185,"range":{"start_line":185,"start_character":45,"end_line":185,"end_character":51},"in_reply_to":"fa69d971_52904f43","updated":"2016-01-05 19:36:41.000000000","message":"Done","commit_id":"bacf47d5f8ac7e5735a0d1dae4b542882cc7b3ac"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"58a089be9ba8b3096d57a2da5d471cb1c293a48e","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                                                     new_cluster.id)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        # configure custom vm_status list"},{"line_number":185,"context_line":"        nova.VmStatusDetails.set_vm_status([\u0027ACTIVE\u0027,"},{"line_number":186,"context_line":"                                            \u0027ERROR\u0027,"},{"line_number":187,"context_line":"                                            \u0027BUILD\u0027,"},{"line_number":188,"context_line":"                                            \u0027BUILD\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_de5df347","line":185,"range":{"start_line":185,"start_character":45,"end_line":185,"end_character":51},"in_reply_to":"fa69d971_52904f43","updated":"2016-01-05 22:36:25.000000000","message":"Only a single exception is returned, there is no indication of how many iterations there were based on the exception, to do that we would need a listener that logs events.","commit_id":"bacf47d5f8ac7e5735a0d1dae4b542882cc7b3ac"}],"cue/tests/unit/taskflow/test_errored_times.py":[{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"6b33e4bde5c66cca400be4aea205c7d2ff2bb978","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            revert_exception_list\u003d[cue_exceptions.VmErrorException],"},{"line_number":34,"context_line":"            attempts\u003d10,"},{"line_number":35,"context_line":"            revert_all\u003dFalse)"},{"line_number":36,"context_line":"        self.assertEqual(tf_retry.REVERT, retry_exception_times._revert_action)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a7b0d38_c36d9e05","line":36,"updated":"2015-12-23 22:17:20.000000000","message":"this test is insufficient to validate that the retry controller does what it\u0027s supposed to","commit_id":"c0a790df29fdc8edbbf9bd7a37a58fa199cb543c"}],"os_tasklib/common/check_for_vm_status.py":[{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"24a6e1ab24292b3d8dd50f82e286fd3c6ff5cdd5","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def execute(self, check_var, **kwargs):"},{"line_number":42,"context_line":"        if check_var \u003d\u003d models.Status.BUILDING:"},{"line_number":43,"context_line":"            raise cue_exceptions.VmBuildingException()"},{"line_number":44,"context_line":"        elif check_var !\u003d models.Status.ACTIVE:"},{"line_number":45,"context_line":"            raise cue_exceptions.VmErrorException()"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_7e54ddc8","line":43,"range":{"start_line":43,"start_character":52,"end_line":43,"end_character":54},"updated":"2015-12-21 21:22:02.000000000","message":"similar to the original checkfor, which had accepted a details parameter (seen in constructor above), this should be included in the exception message.  In the flow construction, we provide context to the purpose of this task.","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"5aa084b1aa7a048537567d8c7bb6d0ed81922a9a","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def execute(self, check_var, **kwargs):"},{"line_number":42,"context_line":"        if check_var \u003d\u003d models.Status.BUILDING:"},{"line_number":43,"context_line":"            raise cue_exceptions.VmBuildingException()"},{"line_number":44,"context_line":"        elif check_var !\u003d models.Status.ACTIVE:"},{"line_number":45,"context_line":"            raise cue_exceptions.VmErrorException()"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_0de228d6","line":43,"range":{"start_line":43,"start_character":52,"end_line":43,"end_character":54},"in_reply_to":"3a7e1126_7e54ddc8","updated":"2015-12-22 18:42:16.000000000","message":"Done","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"24a6e1ab24292b3d8dd50f82e286fd3c6ff5cdd5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        if check_var \u003d\u003d models.Status.BUILDING:"},{"line_number":43,"context_line":"            raise cue_exceptions.VmBuildingException()"},{"line_number":44,"context_line":"        elif check_var !\u003d models.Status.ACTIVE:"},{"line_number":45,"context_line":"            raise cue_exceptions.VmErrorException()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def revert(self, check_var, *args, **kwargs):"},{"line_number":48,"context_line":"        if self.sleep_time !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_5e6481b7","line":45,"range":{"start_line":45,"start_character":49,"end_line":45,"end_character":51},"updated":"2015-12-21 21:22:02.000000000","message":"same as above","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"5aa084b1aa7a048537567d8c7bb6d0ed81922a9a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        if check_var \u003d\u003d models.Status.BUILDING:"},{"line_number":43,"context_line":"            raise cue_exceptions.VmBuildingException()"},{"line_number":44,"context_line":"        elif check_var !\u003d models.Status.ACTIVE:"},{"line_number":45,"context_line":"            raise cue_exceptions.VmErrorException()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def revert(self, check_var, *args, **kwargs):"},{"line_number":48,"context_line":"        if self.sleep_time !\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a7b0d38_ade674e6","line":45,"range":{"start_line":45,"start_character":49,"end_line":45,"end_character":51},"in_reply_to":"3a7e1126_5e6481b7","updated":"2015-12-22 18:42:16.000000000","message":"Done","commit_id":"8eaf31bc1abe0ba3ee96121f656269cf7e8a1dd6"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"09a62d21c4bce6578396df56672c763b034333e4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if self.details is not None:"},{"line_number":45,"context_line":"            error_string +\u003d \", message: %s\" % self.details"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        if check_var \u003d\u003d models.Status.BUILDING:"},{"line_number":48,"context_line":"            raise cue_exceptions.VmBuildingException(error_string)"},{"line_number":49,"context_line":"        elif check_var !\u003d models.Status.ACTIVE:"},{"line_number":50,"context_line":"            raise cue_exceptions.VmErrorException(error_string)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a7b0d38_de2a842c","line":47,"range":{"start_line":47,"start_character":38,"end_line":47,"end_character":46},"updated":"2015-12-22 19:48:20.000000000","message":"should not be using Cue status\u0027s here to compare with Nova status.  In this case, a VM in bulding state is returned as \u0027BUILD\u0027 state from Nova.","commit_id":"7e62674a715d03b593c96aeb17f2f91a104ef2ea"}]}
