)]}'
{"ironic/drivers/modules/agent.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"831c6d9962e881c4c02480e22c638def0ca9c585","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        :returns: A list of clean step dictionaries"},{"line_number":289,"context_line":"        \"\"\""},{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return task.node.driver_internal_info[\u0027agent_cached_clean_steps\u0027]"},{"line_number":292,"context_line":"        except KeyError:"},{"line_number":293,"context_line":"            raise exception.CleanStepsNotAvailable(node\u003dtask.node.id)"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_922380a7","line":291,"updated":"2015-09-09 10:20:11.000000000","message":"I don\u0027t know if we want to apply the overrides in priority again when deploying in deploy.get_clean_steps().  The reason being, an operator might have changed the priority of the clean step when it was caches vs when the cleaning is just about to happen.  They might wonder why the new change hasn\u0027t taken effect.\n\n\nAlso, here we have an assumption that all cached clean steps will belong to deploy interface, which is not true when raid comes into picture.  Can we filter out and return only the steps that are part of deploy. \n\nI am not sure if we want to avoid searching the list again and again, so readjust the data structure accordingly.\n\n  node.driver_internal_info[\u0027agent_cached_clean_steps\u0027] \u003d {\n     \u0027deploy\u0027: [list of steps for deploy],\n     \u0027raid\u0027: [list of steps for raid]}","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"53643763a20cbdd68c9c24ad586ddac12abf0219","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        :returns: A list of clean step dictionaries"},{"line_number":289,"context_line":"        \"\"\""},{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return task.node.driver_internal_info[\u0027agent_cached_clean_steps\u0027]"},{"line_number":292,"context_line":"        except KeyError:"},{"line_number":293,"context_line":"            raise exception.CleanStepsNotAvailable(node\u003dtask.node.id)"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_35af1e7f","line":291,"in_reply_to":"da20952f_922380a7","updated":"2016-01-08 02:20:42.000000000","message":"+1","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea2224db4aa3d72e386b467fe4ce484418592f31","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return task.node.driver_internal_info[\u0027agent_cached_clean_steps\u0027]"},{"line_number":292,"context_line":"        except KeyError:"},{"line_number":293,"context_line":"            raise exception.CleanStepsNotAvailable(node\u003dtask.node.id)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def execute_clean_step(self, task, step):"},{"line_number":296,"context_line":"        \"\"\"Execute a clean step asynchronously on the agent."}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_4063bb1a","line":293,"updated":"2015-09-02 18:52:17.000000000","message":"Just a thought. This code is the same as in ilo/deploy.py, which seems to indicate that it might be good to have one method that does this. Since the clean steps are cached in agent_base_vendor.py, it might make sense to put that method there.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"831c6d9962e881c4c02480e22c638def0ca9c585","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        try:"},{"line_number":291,"context_line":"            return task.node.driver_internal_info[\u0027agent_cached_clean_steps\u0027]"},{"line_number":292,"context_line":"        except KeyError:"},{"line_number":293,"context_line":"            raise exception.CleanStepsNotAvailable(node\u003dtask.node.id)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def execute_clean_step(self, task, step):"},{"line_number":296,"context_line":"        \"\"\"Execute a clean step asynchronously on the agent."}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_d06354dc","line":293,"in_reply_to":"da20952f_4063bb1a","updated":"2015-09-09 10:20:11.000000000","message":"task.node.uuid ?","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"}],"ironic/drivers/modules/agent_base_vendor.py":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"cac4a4dc5337e3e336a875b3185a27a429717bfc","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        The steps are cached to make get_clean_step() calls synchronous, and"},{"line_number":162,"context_line":"        should be refreshed as soon as the agent boots to start cleaning or"},{"line_number":163,"context_line":"        if cleaning is restarted because of an cleaning versio mismatch."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        :param task: a TaskManager instance"},{"line_number":166,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_14ee17b4","line":163,"updated":"2015-08-29 17:32:13.000000000","message":"s/versio/version/; please fix it if you have a chance to update.","commit_id":"e872cec7922182034bfb254a782ba14140be2963"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"8488f8c6d72ddca12a5a20f9f2a3f94770901c2a","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        The steps are cached to make get_clean_step() calls synchronous, and"},{"line_number":162,"context_line":"        should be refreshed as soon as the agent boots to start cleaning or"},{"line_number":163,"context_line":"        if cleaning is restarted because of an cleaning versio mismatch."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        :param task: a TaskManager instance"},{"line_number":166,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_452264a4","line":163,"in_reply_to":"da20952f_14ee17b4","updated":"2015-08-31 17:48:59.000000000","message":"Done","commit_id":"e872cec7922182034bfb254a782ba14140be2963"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c8b4fc7b9ce9c953252d2150b7476fd1b08b7ed8","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":193,"context_line":"        info[\u0027agent_cached_clean_steps\u0027] \u003d steps"},{"line_number":194,"context_line":"        # Store the last time the steps were refreshed"},{"line_number":195,"context_line":"        info[\u0027agent_cached_clean_steps_refreshed\u0027] \u003d str(datetime.now())"},{"line_number":196,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":197,"context_line":"        node.save()"},{"line_number":198,"context_line":"        LOG.info(_LI(\u0027Refreshed agent clean step cache for node %(node)s: \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_18e6ea43","line":195,"updated":"2015-09-01 13:17:59.000000000","message":"utcnow() should be used instead.","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"ecc5a815dda3ae79ac2e8b8563244c426c478f96","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":193,"context_line":"        info[\u0027agent_cached_clean_steps\u0027] \u003d steps"},{"line_number":194,"context_line":"        # Store the last time the steps were refreshed"},{"line_number":195,"context_line":"        info[\u0027agent_cached_clean_steps_refreshed\u0027] \u003d str(datetime.now())"},{"line_number":196,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":197,"context_line":"        node.save()"},{"line_number":198,"context_line":"        LOG.info(_LI(\u0027Refreshed agent clean step cache for node %(node)s: \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_874492b7","line":195,"in_reply_to":"da20952f_18e6ea43","updated":"2015-09-02 16:06:16.000000000","message":"Done","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea2224db4aa3d72e386b467fe4ce484418592f31","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    def _refresh_clean_steps(self, task):"},{"line_number":159,"context_line":"        \"\"\"Refresh the node\u0027s cached clean steps from the booted agent."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        The steps are cached to make get_clean_step() calls synchronous, and"},{"line_number":162,"context_line":"        should be refreshed as soon as the agent boots to start cleaning or"},{"line_number":163,"context_line":"        if cleaning is restarted because of an cleaning version mismatch."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_40889b22","line":161,"updated":"2015-09-02 18:52:17.000000000","message":"I was trying to figure out where the steps came from. Maybe \u0027Gets the node\u0027s clean steps from the booted agent and caches them. The steps are cached ...","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea2224db4aa3d72e386b467fe4ce484418592f31","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        The steps are cached to make get_clean_step() calls synchronous, and"},{"line_number":162,"context_line":"        should be refreshed as soon as the agent boots to start cleaning or"},{"line_number":163,"context_line":"        if cleaning is restarted because of an cleaning version mismatch."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        :param task: a TaskManager instance"},{"line_number":166,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_6d2fd83e","line":163,"updated":"2015-09-02 18:52:17.000000000","message":"s/an/a/","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea2224db4aa3d72e386b467fe4ce484418592f31","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027steps\u0027: previous_steps})"},{"line_number":173,"context_line":"        steps \u003d deploy_utils.agent_get_clean_steps(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Use the agent override if present, else the deprecated iLO override"},{"line_number":176,"context_line":"        erase_override \u003d None"},{"line_number":177,"context_line":"        if CONF.agent.agent_erase_devices_priority is not None:"},{"line_number":178,"context_line":"            erase_override \u003d CONF.agent.agent_erase_devices_priority"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_60503f0b","line":175,"updated":"2015-09-02 18:52:17.000000000","message":"I\u0027m not sure that\u0027s the right logic. Take a look at pxe.py: _get_pxe_conf_option(). I think if it is the iloDeploy, we should look at the ilo config first. if it is the agentDeploy, we should *only* look at the agent config.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"831c6d9962e881c4c02480e22c638def0ca9c585","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027steps\u0027: previous_steps})"},{"line_number":173,"context_line":"        steps \u003d deploy_utils.agent_get_clean_steps(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Use the agent override if present, else the deprecated iLO override"},{"line_number":176,"context_line":"        erase_override \u003d None"},{"line_number":177,"context_line":"        if CONF.agent.agent_erase_devices_priority is not None:"},{"line_number":178,"context_line":"            erase_override \u003d CONF.agent.agent_erase_devices_priority"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_ec1b017f","line":175,"in_reply_to":"da20952f_60503f0b","updated":"2015-09-09 10:20:11.000000000","message":"+1. Also, since only agent_ilo driver was using CONF.ilo.clean_priority_erase_devices, we can directly check task.driver.deploy \u003d\u003d ilo.deploy.IloVirtualMediaAgentDeploy.\n\nNOTE: We might need to revisit this once the boot/deploy refactoring of ilo drivers.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea2224db4aa3d72e386b467fe4ce484418592f31","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            erase_override \u003d CONF.ilo.clean_priority_erase_devices"},{"line_number":181,"context_line":"            LOG.warning(_LW(\u0027The ilo.clean_priority_erase_devices config \u0027"},{"line_number":182,"context_line":"                            \u0027option is deprecated. Please use \u0027"},{"line_number":183,"context_line":"                            \u0027agent.agent_erase_devices_priority\u0027))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if erase_override is not None:"},{"line_number":186,"context_line":"            for step in steps:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_207fa767","line":183,"updated":"2015-09-02 18:52:17.000000000","message":"how about \u0027The CONF option [ilo]clean_priority_erase_devices is deprecated and will be removed in Mitaka release. Please use [agent]agent_erase_devices_priority\u0027","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"831c6d9962e881c4c02480e22c638def0ca9c585","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":193,"context_line":"        info[\u0027agent_cached_clean_steps\u0027] \u003d steps"},{"line_number":194,"context_line":"        # Store the last time the steps were refreshed"},{"line_number":195,"context_line":"        info[\u0027agent_cached_clean_steps_refreshed\u0027] \u003d str(datetime.utcnow())"},{"line_number":196,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":197,"context_line":"        node.save()"},{"line_number":198,"context_line":"        LOG.info(_LI(\u0027Refreshed agent clean step cache for node %(node)s: \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_f7c2ee33","line":195,"updated":"2015-09-09 10:20:11.000000000","message":"Rest of ironic code uses timeutils.utcnow(), but I don\u0027t see a reason why it would be required here unless we use the timezone parameter.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"53643763a20cbdd68c9c24ad586ddac12abf0219","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":193,"context_line":"        info[\u0027agent_cached_clean_steps\u0027] \u003d steps"},{"line_number":194,"context_line":"        # Store the last time the steps were refreshed"},{"line_number":195,"context_line":"        info[\u0027agent_cached_clean_steps_refreshed\u0027] \u003d str(datetime.utcnow())"},{"line_number":196,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":197,"context_line":"        node.save()"},{"line_number":198,"context_line":"        LOG.info(_LI(\u0027Refreshed agent clean step cache for node %(node)s: \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_c902b10b","line":195,"in_reply_to":"da20952f_f7c2ee33","updated":"2016-01-08 02:20:42.000000000","message":"I think for consistency with the rest of the code, we should use utcnow.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea2224db4aa3d72e386b467fe4ce484418592f31","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":197,"context_line":"        node.save()"},{"line_number":198,"context_line":"        LOG.info(_LI(\u0027Refreshed agent clean step cache for node %(node)s: \u0027"},{"line_number":199,"context_line":"                     \u0027%(steps)s\u0027), {\u0027node\u0027: node.uuid, \u0027steps\u0027: steps})"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def continue_cleaning(self, task, **kwargs):"},{"line_number":202,"context_line":"        \"\"\"Start the next cleaning step if the previous one is complete."}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_00262368","line":199,"updated":"2015-09-02 18:52:17.000000000","message":"This could be ok, I\u0027m just pointing out that we didn\u0027t log this before. Now it is going to be logged each time it is refreshed.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"}],"ironic/drivers/modules/ilo/deploy.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ea2224db4aa3d72e386b467fe4ce484418592f31","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                      \u0027disabled and will not run during cleaning. NOTE: \u0027"},{"line_number":56,"context_line":"                      \u0027deprecated for removal in Mitaka. Please use \u0027"},{"line_number":57,"context_line":"                      \u0027agent.agent_erase_devices_priority.\u0027),"},{"line_number":58,"context_line":"               deprecated_for_removal\u003dTrue)"},{"line_number":59,"context_line":"]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"REQUIRED_PROPERTIES \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_3bbcbf6b","line":58,"updated":"2015-09-02 18:52:17.000000000","message":"I\u0027m not sure why you want to deprecate this in this particular patch, but I\u0027m still reviewing so maybe it will be obvious later.\n\nIf you do this, you\u0027ll need to update etc/ironic/ironic.conf.sample\n\nAlso, I just looked at [agent] agent_pxe_append_params. To be consistent, maybe\n\nDEPRECATED. \u003cexisting help string\u003e. This option is deprecated and will be removed in Mitaka release. Please use [agent]agent_erase_devices_priority.\n\nAre we assuming that IPA will be the only thing that can do this clean step? It is now, I just don\u0027t know what ilo folks are planning.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"53643763a20cbdd68c9c24ad586ddac12abf0219","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                      \u0027disabled and will not run during cleaning. NOTE: \u0027"},{"line_number":56,"context_line":"                      \u0027deprecated for removal in Mitaka. Please use \u0027"},{"line_number":57,"context_line":"                      \u0027agent.agent_erase_devices_priority.\u0027),"},{"line_number":58,"context_line":"               deprecated_for_removal\u003dTrue)"},{"line_number":59,"context_line":"]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"REQUIRED_PROPERTIES \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_c9bab10a","line":58,"in_reply_to":"da20952f_3bbcbf6b","updated":"2016-01-08 02:20:42.000000000","message":"There\u0027s a bug to track this, so will remove it from this patch: https://bugs.launchpad.net/ironic/+bug/1515871","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"831c6d9962e881c4c02480e22c638def0ca9c585","unresolved":false,"context_lines":[{"line_number":586,"context_line":"        :returns: A list of clean step dictionaries"},{"line_number":587,"context_line":"        \"\"\""},{"line_number":588,"context_line":"        try:"},{"line_number":589,"context_line":"            return task.node.driver_internal_info[\u0027agent_cached_clean_steps\u0027]"},{"line_number":590,"context_line":"        except KeyError:"},{"line_number":591,"context_line":"            raise exception.CleanStepsNotAvailable(node\u003dtask.node.id)"},{"line_number":592,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_d277b89d","line":589,"updated":"2015-09-09 10:20:11.000000000","message":"Ditto, we should filter out and return only the steps that are part of deploy.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"831c6d9962e881c4c02480e22c638def0ca9c585","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        try:"},{"line_number":589,"context_line":"            return task.node.driver_internal_info[\u0027agent_cached_clean_steps\u0027]"},{"line_number":590,"context_line":"        except KeyError:"},{"line_number":591,"context_line":"            raise exception.CleanStepsNotAvailable(node\u003dtask.node.id)"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"    def execute_clean_step(self, task, step):"},{"line_number":594,"context_line":"        \"\"\"Execute a clean step asynchronously on the agent."}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_128f70cd","line":591,"updated":"2015-09-09 10:20:11.000000000","message":"task.node.uuid ?","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"}],"ironic/tests/drivers/ilo/test_deploy.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c8b4fc7b9ce9c953252d2150b7476fd1b08b7ed8","unresolved":false,"context_lines":[{"line_number":836,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":837,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":838,"context_line":"            steps \u003d task.driver.deploy.get_clean_steps(task)"},{"line_number":839,"context_line":"            self.assertEqual(steps[0], clean_step)"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"class VendorPassthruTestCase(db_base.DbTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_d314d5a0","line":839,"updated":"2015-09-01 13:17:59.000000000","message":"Should be the other way around - self.assertEqual(clean_step, steps[0]). Also maybe self.assertEqual([clean_step], steps) instead so that list size also checked.","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"ecc5a815dda3ae79ac2e8b8563244c426c478f96","unresolved":false,"context_lines":[{"line_number":836,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":837,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":838,"context_line":"            steps \u003d task.driver.deploy.get_clean_steps(task)"},{"line_number":839,"context_line":"            self.assertEqual(steps[0], clean_step)"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"class VendorPassthruTestCase(db_base.DbTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_477c3aeb","line":839,"in_reply_to":"da20952f_d314d5a0","updated":"2015-09-02 16:06:16.000000000","message":"Oh whoops on the ordering there. This is why you shouldn\u0027t be writing tests late on a Friday :)\n\nGood call on the size bit. Thanks!","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"}],"ironic/tests/drivers/test_agent.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c8b4fc7b9ce9c953252d2150b7476fd1b08b7ed8","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":421,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":422,"context_line":"            steps \u003d task.driver.deploy.get_clean_steps(task)"},{"line_number":423,"context_line":"            self.assertEqual(steps[0], clean_step)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"class TestAgentVendor(db_base.DbTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_53b3e597","line":423,"updated":"2015-09-01 13:17:59.000000000","message":"ditto","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"ecc5a815dda3ae79ac2e8b8563244c426c478f96","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":421,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":422,"context_line":"            steps \u003d task.driver.deploy.get_clean_steps(task)"},{"line_number":423,"context_line":"            self.assertEqual(steps[0], clean_step)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"class TestAgentVendor(db_base.DbTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_27c7c613","line":423,"in_reply_to":"da20952f_53b3e597","updated":"2015-09-02 16:06:16.000000000","message":"Done","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"}],"ironic/tests/drivers/test_agent_base_vendor.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c8b4fc7b9ce9c953252d2150b7476fd1b08b7ed8","unresolved":false,"context_lines":[{"line_number":332,"context_line":"    @mock.patch.object(agent_base_vendor.BaseAgentVendor,"},{"line_number":333,"context_line":"                       \u0027_notify_conductor_resume_clean\u0027, autospec\u003dTrue)"},{"line_number":334,"context_line":"    def test_heartbeat_resume_clean(self, mock_notify, mock_set_steps,"},{"line_number":335,"context_line":"                                    mock_refresh, mock_touch):"},{"line_number":336,"context_line":"        kwargs \u003d {"},{"line_number":337,"context_line":"            \u0027agent_url\u0027: \u0027http://127.0.0.1:9999/bar\u0027"},{"line_number":338,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_ee632caf","line":335,"updated":"2015-09-01 13:17:59.000000000","message":"mock_refresh should be before mock_set_steps, this makes unittest to fail.","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"ecc5a815dda3ae79ac2e8b8563244c426c478f96","unresolved":false,"context_lines":[{"line_number":332,"context_line":"    @mock.patch.object(agent_base_vendor.BaseAgentVendor,"},{"line_number":333,"context_line":"                       \u0027_notify_conductor_resume_clean\u0027, autospec\u003dTrue)"},{"line_number":334,"context_line":"    def test_heartbeat_resume_clean(self, mock_notify, mock_set_steps,"},{"line_number":335,"context_line":"                                    mock_refresh, mock_touch):"},{"line_number":336,"context_line":"        kwargs \u003d {"},{"line_number":337,"context_line":"            \u0027agent_url\u0027: \u0027http://127.0.0.1:9999/bar\u0027"},{"line_number":338,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_4a775f9f","line":335,"in_reply_to":"da20952f_ee632caf","updated":"2015-09-02 16:06:16.000000000","message":"Ahh great catch. Since they\u0027re both being called with the same args, it doesn\u0027t cause a test failure either way.","commit_id":"9cfc7fe91d1bd461dcaa2b922ceef5197e86523e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"831c6d9962e881c4c02480e22c638def0ca9c585","unresolved":false,"context_lines":[{"line_number":684,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":685,"context_line":"            task.driver.vendor._refresh_clean_steps(task)"},{"line_number":686,"context_line":"            get_clean_step_mock.assert_called_once_with(task)"},{"line_number":687,"context_line":"            self.assertEqual(task.node.driver_internal_info["},{"line_number":688,"context_line":"                             \u0027agent_cached_clean_steps\u0027],"},{"line_number":689,"context_line":"                             expected_steps)"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_52d728bf","line":687,"updated":"2015-09-09 10:20:11.000000000","message":"Not sure if we care about agent_cached_clean_steps_refreshed, but might be worth checking it\u0027s not None.","commit_id":"018395fd459f69fbd35bf5796862f0c480e7fe32"}]}
