)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8f715740f42ae463fe0a8a3a4032feb31c5e6476","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Agent Inband RAID configuration available in cleaning"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch makes inband RAID configuration using agent ramdisk"},{"line_number":10,"context_line":"available as steps in the automated cleaning operation."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This was refactored from revision 21 of"},{"line_number":13,"context_line":"Ifa640d4839b2f08410ceec57c2972e2f9dc69db3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_5f2143b3","line":10,"updated":"2015-09-22 13:30:34.000000000","message":"I think it would be worthwhile to mention that:\n\ncontrary to how AgentDeploy gets the clean steps (via querying the agent ramdisk), AgentRAID\u0027s clean steps are known: create-configuration \u0026 delete-configuration. If the agent ramdisk does not support these two clean steps, the cleaning operation will fail if  they are enabled or if the target_raid_config is set.","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a982c25b45ec4af03bf75ed74779715fab61da65","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Agent Inband RAID configuration available in cleaning"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch makes inband RAID configuration using agent ramdisk"},{"line_number":10,"context_line":"available as steps in the automated cleaning operation."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This was refactored from revision 21 of"},{"line_number":13,"context_line":"Ifa640d4839b2f08410ceec57c2972e2f9dc69db3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_3047dc4c","line":10,"in_reply_to":"ba15a1d1_42264acf","updated":"2015-09-22 14:06:36.000000000","message":"Done","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d5a0c50b6cf06ac786920a581027512ed4d47bda","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Agent Inband RAID configuration available in cleaning"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch makes inband RAID configuration using agent ramdisk"},{"line_number":10,"context_line":"available as steps in the automated cleaning operation."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This was refactored from revision 21 of"},{"line_number":13,"context_line":"Ifa640d4839b2f08410ceec57c2972e2f9dc69db3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_42264acf","line":10,"in_reply_to":"ba15a1d1_5f2143b3","updated":"2015-09-22 13:42:29.000000000","message":"Also, we should mention the interaction based on node.target_raid_config. If it is set vs not set when this clean step is enabled or disabled.","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"}],"etc/ironic/ironic.conf.sample":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"831eca6754edd3f26a8dad412edbfda332c7ff5b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[DEFAULT]"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Options defined in oslo.messaging"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# Size of RPC connection pool. (integer value)"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"ba15a1d1_90b4d3d1","line":4,"updated":"2015-09-21 17:48:35.000000000","message":"these changes are unrelated and shouldn\u0027t be part of this patch","commit_id":"ad071284d6d5a8649aedee2de74f1ad4b8ebb9f2"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"aee9405b4b75e1beeed685f490fce77d9321c09e","unresolved":false,"context_lines":[{"line_number":489,"context_line":"#max_retry\u003d6"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"[cisco_ucs]"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"#"},{"line_number":495,"context_line":"# Options defined in ironic.drivers.modules.ucs.power"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"9a1a9d01_77c13080","line":492,"updated":"2015-09-24 13:42:42.000000000","message":"Hmmmm, this part is not right :(","commit_id":"2b66237c063fe86b4233bd95519441d715c5a9ae"}],"ironic/drivers/modules/agent.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"089d0f50237c64cadb626e31efe9edef20da0f29","unresolved":false,"context_lines":[{"line_number":527,"context_line":"            if node.provision_state \u003d\u003d states.CLEANING:"},{"line_number":528,"context_line":"                LOG.info(\"Skipping agent RAID create_configuration during \""},{"line_number":529,"context_line":"                         \"cleaning for node %(node)s as target RAID \""},{"line_number":530,"context_line":"                         \"configuration is empty.\","},{"line_number":531,"context_line":"                         node.uuid)"},{"line_number":532,"context_line":"                return"},{"line_number":533,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_8c573057","line":530,"updated":"2015-09-18 12:10:50.000000000","message":"please use _LI()","commit_id":"2a1b7c796c954f5df6b8dfccdecacbf132e1d051"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"31273982bfd4db401112e2d4940deeee753502bf","unresolved":false,"context_lines":[{"line_number":527,"context_line":"            if node.provision_state \u003d\u003d states.CLEANING:"},{"line_number":528,"context_line":"                LOG.info(\"Skipping agent RAID create_configuration during \""},{"line_number":529,"context_line":"                         \"cleaning for node %(node)s as target RAID \""},{"line_number":530,"context_line":"                         \"configuration is empty.\","},{"line_number":531,"context_line":"                         node.uuid)"},{"line_number":532,"context_line":"                return"},{"line_number":533,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_3eac038b","line":530,"in_reply_to":"ba15a1d1_8c573057","updated":"2015-09-18 14:15:26.000000000","message":"Done","commit_id":"2a1b7c796c954f5df6b8dfccdecacbf132e1d051"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a2bb2984fea502406f9e0978c441748c3755e17b","unresolved":false,"context_lines":[{"line_number":613,"context_line":"        # invoked for every node when it is enabled as a clean step, we should"},{"line_number":614,"context_line":"        # skip nodes without node.target_raid_config during cleaning."},{"line_number":615,"context_line":"        if (not node.target_raid_config and"},{"line_number":616,"context_line":"                node.provision_state \u003d\u003d states.CLEANING):"},{"line_number":617,"context_line":"            LOG.info(\"Skipping agent RAID delete_configuration during \""},{"line_number":618,"context_line":"                     \"cleaning for node %(node)s as target RAID configuration \""},{"line_number":619,"context_line":"                     \"is empty.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_2c1864d2","line":616,"updated":"2015-09-18 12:10:08.000000000","message":"I think it should use current raid_config, not target one. or even driver_internal_info[\u0027target_raid_config\u0027]","commit_id":"2a1b7c796c954f5df6b8dfccdecacbf132e1d051"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"31273982bfd4db401112e2d4940deeee753502bf","unresolved":false,"context_lines":[{"line_number":613,"context_line":"        # invoked for every node when it is enabled as a clean step, we should"},{"line_number":614,"context_line":"        # skip nodes without node.target_raid_config during cleaning."},{"line_number":615,"context_line":"        if (not node.target_raid_config and"},{"line_number":616,"context_line":"                node.provision_state \u003d\u003d states.CLEANING):"},{"line_number":617,"context_line":"            LOG.info(\"Skipping agent RAID delete_configuration during \""},{"line_number":618,"context_line":"                     \"cleaning for node %(node)s as target RAID configuration \""},{"line_number":619,"context_line":"                     \"is empty.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_3ef16395","line":616,"in_reply_to":"ba15a1d1_2c1864d2","updated":"2015-09-18 14:15:26.000000000","message":"Well I thought about it.  The problem is that they will not be able to run delete_configuration for the first time as node.raid_config is populated only after raid configuration is done once.  So in effect, delete_configuration won\u0027t run for the first time.  \n\nHow about skipping if both node.target_raid_config and node.raid_config are empty. Please see next patch set.","commit_id":"2a1b7c796c954f5df6b8dfccdecacbf132e1d051"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"089d0f50237c64cadb626e31efe9edef20da0f29","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                node.provision_state \u003d\u003d states.CLEANING):"},{"line_number":617,"context_line":"            LOG.info(\"Skipping agent RAID delete_configuration during \""},{"line_number":618,"context_line":"                     \"cleaning for node %(node)s as target RAID configuration \""},{"line_number":619,"context_line":"                     \"is empty.\","},{"line_number":620,"context_line":"                     node.uuid)"},{"line_number":621,"context_line":"            return"},{"line_number":622,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_4c4d98c2","line":619,"updated":"2015-09-18 12:10:50.000000000","message":"please use _LI()","commit_id":"2a1b7c796c954f5df6b8dfccdecacbf132e1d051"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"31273982bfd4db401112e2d4940deeee753502bf","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                node.provision_state \u003d\u003d states.CLEANING):"},{"line_number":617,"context_line":"            LOG.info(\"Skipping agent RAID delete_configuration during \""},{"line_number":618,"context_line":"                     \"cleaning for node %(node)s as target RAID configuration \""},{"line_number":619,"context_line":"                     \"is empty.\","},{"line_number":620,"context_line":"                     node.uuid)"},{"line_number":621,"context_line":"            return"},{"line_number":622,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_5ea777a6","line":619,"in_reply_to":"ba15a1d1_4c4d98c2","updated":"2015-09-18 14:15:26.000000000","message":"Done","commit_id":"2a1b7c796c954f5df6b8dfccdecacbf132e1d051"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"09b0b08abca59c821561a8e9f616b68560acd0d3","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_865c9dee","line":93,"updated":"2015-09-21 18:33:51.000000000","message":"Some thoughts here...\n\n1) Do we want to have these steps disabled by default in the future? I wonder because if we add it like this now it\u0027s not desirable to be changed later or we might mess up with someone\u0027s workflow here and break them.\n\n...\n\n2) Another thing I have in mind is the software vs hardware RAID that options will enable and disable. By reading the spec this interface should support both types of RAID correct?\n\nSo I wonder if a global configuration option is the right way to do it. Because, for the software RAID we have to recreate it after erasing the disks (since we are just zeroing all the devices we find locally). But for hardware RAID it\u0027s not very desirable to delete and recreate it every time the node goes trough cleaning, and, the way Ironic is architect we could have different drivers using both software and hardware raid at the same time.\n\nWhat you think? Should we be able to differentiate those types of RAID and enable each one individually? Should the interface we have right now be the same for both types?\n\nPlease let me know your thoughts on it.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9b0bb1874e3d78e28f6c1d3ad03561b056e040e9","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_fcdf0c38","line":93,"in_reply_to":"ba15a1d1_2037b2b1","updated":"2015-09-22 10:52:29.000000000","message":"@Jim, I think it does.\n\nre 2), assuming you have software and hardware RAID for different drivers and you have both drivers enabled in your cloud I think you will always want to have RAID configuration enabled for the software RAID as part of cleaning (but not for hardware RAID). Otherwise, one will create the software RAID as part of the Zapping then he/she move it to available state and passing trough cleaning it will erase all the local disks deleting the software RAID.\n\nBut, yeah we should move one. The spec mentions that the interface could potentially be used to create software RAID but it\u0027s not part of the scope of the spec [1]\n\n[1] http://specs.openstack.org/openstack/ironic-specs/specs/approved/inband-raid-configuration.html#proposed-change","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"897fe3c7641bc58ae4cca13874eb8518f1067c8f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_9c9aacc4","line":93,"in_reply_to":"ba15a1d1_865c9dee","updated":"2015-09-21 18:55:20.000000000","message":"Software RAID is something that we have discussed, but nobody has put a good enough investigation on it.  Yes, it should be possible to do software raid with the same interface, but I don\u0027t know it for sure.\n\nThe main reason why I wanted to have steps disabled by default is because RAID is truly optional.  The majority of users using Ironic might not even use it. So why not, just ask people to enable it if/when they want it.  I think it should be that way even for software RAID (even if we have software RAID supported in generic hardware manager) and it shouldn\u0027t be enabled by default unless people desire it\n\nSo in short, I think we should be able to support both types, but we don\u0027t know for sure.  Hence we shouldn\u0027t make any distinction right now and just go by what we know now.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dbe3ad3f6f30052172ed38b508f404b56809eee0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_2037b2b1","line":93,"in_reply_to":"ba15a1d1_9c9aacc4","updated":"2015-09-21 20:14:37.000000000","message":"Yeah, I\u0027m okay with this code, for the following reasons:\n\n1. We\u0027ll never enable this by default. RAID should always be opt-in since not all hardware supports it, and target_raid_config needs to be set manually anyway.\n\n2. I don\u0027t think enabling only certain types of RAID makes sense; this can be done by changing the node\u0027s target_raid_config if need be.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7f5429ae55afa257dbdd97d6f725b0d9fb13a338","unresolved":false,"context_lines":[{"line_number":527,"context_line":""},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"class AgentRAID(base.RAIDInterface):"},{"line_number":530,"context_line":"    \"\"\"Implementation of RAIDInterface which uses agent ramdisk.\"\"\""},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def get_properties(self):"},{"line_number":533,"context_line":"        \"\"\"Return the properties of the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_a9af2de2","line":530,"updated":"2015-09-21 21:19:26.000000000","message":"I know we had a bit of a discussion about get_clean_steps(). I see you\u0027re using the base version, with the base.clean_step() decorators.\n\nWhich means that we don\u0027t go to IPA to see what/if it supports RAID, but it will assume that create_configuration() \u0026 delete_configuration() are available in the IPA ramdisk if someone configures the priorities to be non-zero.\n\nAre we OK with AgentDeploy getting the clean steps from the ramdisk, but AgentRAID not? It is inconsistent but I don\u0027t know whether it should be consistent or not.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f42625ac775e9217d9b729505d0573630c4f1c6e","unresolved":false,"context_lines":[{"line_number":527,"context_line":""},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"class AgentRAID(base.RAIDInterface):"},{"line_number":530,"context_line":"    \"\"\"Implementation of RAIDInterface which uses agent ramdisk.\"\"\""},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def get_properties(self):"},{"line_number":533,"context_line":"        \"\"\"Return the properties of the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_e29e7eb7","line":530,"in_reply_to":"ba15a1d1_a015f7e5","updated":"2015-09-22 13:30:49.000000000","message":"I\u0027m not sure I agree because either way (with @base.clean_step or without) there will be issues and I\u0027m concerned about the discrepancy wrt how we are handling/getting clean steps via the agent. AgentDeploy and AgentRAID behave differently now :-(\n\nHaving said that, I haven\u0027t sat down to itemize all the pros/cons for each method.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"6cfef1fc58000e9d7e41d44acb6614cd9299d867","unresolved":false,"context_lines":[{"line_number":527,"context_line":""},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"class AgentRAID(base.RAIDInterface):"},{"line_number":530,"context_line":"    \"\"\"Implementation of RAIDInterface which uses agent ramdisk.\"\"\""},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def get_properties(self):"},{"line_number":533,"context_line":"        \"\"\"Return the properties of the interface.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_a015f7e5","line":530,"in_reply_to":"ba15a1d1_a9af2de2","updated":"2015-09-22 02:18:09.000000000","message":"Yes, this seemed a better alternative because it keeps the user informed if someone set node.target_raid_config but agent doesn\u0027t support RAID. If operator provided node.target_raid_config but agent ramdisk didn\u0027t have such a method, node will be moved to CLEANFAIL with the following message:\n\n  2015-09-21 19:21:13.176 ERROR ironic.drivers.modules.agent_base_vendor \n  [-] Agent returned error for clean step {u\u0027priority\u0027: 20, u\u0027interface\u0027: \n  u\u0027raid\u0027, u\u0027step\u0027: u\u0027delete_configuration\u0027} on node \n  169f5a78-1405-405c-b9c7-c82b627a22fd : {u\u0027message\u0027: u\u0027Clean step failed: \n  Error performing clean_step delete_configuration: No HardwareManager found to \n  handle method: Could not find method: delete_configuration\u0027, u\u0027code\u0027: 500, \n  u\u0027type\u0027: u\u0027CleaningError\u0027, u\u0027details\u0027: u\u0027Error performing clean_step \n  delete_configuration: No HardwareManager found to handle method: Could not \n  find method: delete_configuration\u0027}.\n\n\nIf rather we were not using @base.clean_step and we implemented our own get_clean_steps() like the AgentDeploy, then it would never get executed and we won\u0027t be able to inform users that raid config was never done.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dbe3ad3f6f30052172ed38b508f404b56809eee0","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        \"\"\"Return the properties of the interface.\"\"\""},{"line_number":534,"context_line":"        return {}"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    @base.clean_step(priority\u003dCONF.agent.create_raid_config_priority)"},{"line_number":537,"context_line":"    def create_configuration(self, task,"},{"line_number":538,"context_line":"                             create_root_volume\u003dTrue,"},{"line_number":539,"context_line":"                             create_nonroot_volumes\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_a0d182fd","line":536,"updated":"2015-09-21 20:14:37.000000000","message":"I feel like the CONF object might not be loaded at import time (which IIRC is when this code will be executed). Need to test.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4c799cf31baf84d3cec16ef5c92484b7b8d64dc5","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        \"\"\"Return the properties of the interface.\"\"\""},{"line_number":534,"context_line":"        return {}"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    @base.clean_step(priority\u003dCONF.agent.create_raid_config_priority)"},{"line_number":537,"context_line":"    def create_configuration(self, task,"},{"line_number":538,"context_line":"                             create_root_volume\u003dTrue,"},{"line_number":539,"context_line":"                             create_nonroot_volumes\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_e608f22a","line":536,"in_reply_to":"ba15a1d1_a0d182fd","updated":"2015-09-21 20:39:42.000000000","message":"Tested this, I\u0027m wrong. :)","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"6cfef1fc58000e9d7e41d44acb6614cd9299d867","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        \"\"\"Return the properties of the interface.\"\"\""},{"line_number":534,"context_line":"        return {}"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    @base.clean_step(priority\u003dCONF.agent.create_raid_config_priority)"},{"line_number":537,"context_line":"    def create_configuration(self, task,"},{"line_number":538,"context_line":"                             create_root_volume\u003dTrue,"},{"line_number":539,"context_line":"                             create_nonroot_volumes\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_205b27f8","line":536,"in_reply_to":"ba15a1d1_e608f22a","updated":"2015-09-22 02:18:09.000000000","message":"We have a unit test get_clean_steps which tests if the priority of this step is 0.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dbe3ad3f6f30052172ed38b508f404b56809eee0","unresolved":false,"context_lines":[{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        raid.update_raid_info(task.node, clean_result)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    @base.clean_step(priority\u003dCONF.agent.delete_raid_config_priority)"},{"line_number":646,"context_line":"    def delete_configuration(self, task):"},{"line_number":647,"context_line":"        \"\"\"Deletes RAID configuration on the given node."},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_00eaaeac","line":645,"updated":"2015-09-21 20:14:37.000000000","message":"I feel like the CONF object might not be loaded at import time (which IIRC is when this code will be executed). Need to test.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4c799cf31baf84d3cec16ef5c92484b7b8d64dc5","unresolved":false,"context_lines":[{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        raid.update_raid_info(task.node, clean_result)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    @base.clean_step(priority\u003dCONF.agent.delete_raid_config_priority)"},{"line_number":646,"context_line":"    def delete_configuration(self, task):"},{"line_number":647,"context_line":"        \"\"\"Deletes RAID configuration on the given node."},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_060c063a","line":645,"in_reply_to":"ba15a1d1_00eaaeac","updated":"2015-09-21 20:39:42.000000000","message":"Tested this, I\u0027m wrong :)","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"6cfef1fc58000e9d7e41d44acb6614cd9299d867","unresolved":false,"context_lines":[{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        raid.update_raid_info(task.node, clean_result)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    @base.clean_step(priority\u003dCONF.agent.delete_raid_config_priority)"},{"line_number":646,"context_line":"    def delete_configuration(self, task):"},{"line_number":647,"context_line":"        \"\"\"Deletes RAID configuration on the given node."},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_e06d2f9a","line":645,"in_reply_to":"ba15a1d1_060c063a","updated":"2015-09-22 02:18:09.000000000","message":"We have a unit test get_clean_steps which tests if the priority of this step is 0.","commit_id":"693aedb3b321fb6e2c3e602002de432ddc826777"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"56bb0739dd0395cf45651739a686bf56ad5b5201","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_5ce5d8a5","line":93,"updated":"2015-09-22 10:57:05.000000000","message":"... from the previous patch-set.\n\nI think we can move one with this since the spec mentions software raid but it explicitly says that it\u0027s out of the scope there. Tho I still believe that a differentiation for both types as part of the CLEANING should be done.\n\nAnd, one more thing about the names of this configuration options, should it mention \"cleaning\" ? Otherwise once the raid configuration for zapping gets introduced how we are going to call the configuration option to set the priority there?","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"4958df83561d58bde1b64808160924468331be1d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_6f7ca0b5","line":93,"in_reply_to":"ba15a1d1_5ce5d8a5","updated":"2015-09-22 11:21:37.000000000","message":"Well, I think I just named it like agent_erase_devices_priority above.  Since agent_ prefix seemed duplicate just removed it off.\n\niLO driver has priorities like cleaning_*,.  If\u0027/When the raid configuration gets introduced as part of zapping, I think it doesn\u0027t matter and people needn\u0027t do any change here - because zapping doesn\u0027t demand the clean step to have a specific priority.  Any clean step can be invoked as a zap step. \n\nDo you meant something like create_raid_config_cleaning_priority and delete_raid_config_cleaning_priority","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8f715740f42ae463fe0a8a3a4032feb31c5e6476","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_bfc73f11","line":93,"in_reply_to":"ba15a1d1_6f7ca0b5","updated":"2015-09-22 13:30:34.000000000","message":"Lucas has a good point. I don\u0027t think it is necessary to add some \u0027clean\u0027 string to the name of the config, but I think it would be helpful to put something in the help string. Someone could go through and make sure all the clean-step configs are described the same way. (Ie, in another patch:)\n\nI see that erase_devices_priority has \u0027If set to 0, will not run during cleaning.\u0027 We could do something like s/Priority/Priority (of this clean step)/ or be even more verbose.","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a982c25b45ec4af03bf75ed74779715fab61da65","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_50e850e2","line":93,"in_reply_to":"ba15a1d1_bfc73f11","updated":"2015-09-22 14:06:36.000000000","message":"Done","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b8c83fb9ffcf9ceb02dce05f4aaf49b924ee3a90","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               help\u003d\u0027Priority to run in-band delete RAID configuration via \u0027"},{"line_number":91,"context_line":"                    \u0027the Ironic Python Agent ramdisk. If unset, will use \u0027"},{"line_number":92,"context_line":"                    \u0027default value of 0 and hence deletion of RAID config \u0027"},{"line_number":93,"context_line":"                    \u0027will be disabled for cleaning.\u0027),"},{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_503b70d1","line":93,"in_reply_to":"ba15a1d1_bfc73f11","updated":"2015-09-22 14:21:31.000000000","message":"Right, ok I think I understand zapping better now; in zapping we explicitly pass which steps we want it to execute, the steps are not ordered as they are in cleaning (by priority).","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8f715740f42ae463fe0a8a3a4032feb31c5e6476","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            if node.provision_state \u003d\u003d states.CLEANING:"},{"line_number":573,"context_line":"                LOG.info(_LI(\"Skipping agent RAID create_configuration during \""},{"line_number":574,"context_line":"                             \"cleaning for node %s as target RAID \""},{"line_number":575,"context_line":"                             \"configuration is empty.\"), node.uuid)"},{"line_number":576,"context_line":"                return"},{"line_number":577,"context_line":"            else:"},{"line_number":578,"context_line":"                raise exception.MissingParameterValue("}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_a244061b","line":575,"updated":"2015-09-22 13:30:34.000000000","message":"I thought we had this discussion before; how do you know if the operator meant for RAID not to be done, versus wanting RAID but forgetting to set target_raid_config?\n\nI think that in the case of automated cleaning, if they enabled RAID, it is RAID for all nodes. We don\u0027t have a way (yet) to opt out of other clean steps -- we should come up with a mechanism to opt out if that\u0027s a feature we want. I don\u0027t think we should use the absence of target_raid_config to mean \u0027opt out\u0027. If we DO want it to mean opt out, we should document it.","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b8c83fb9ffcf9ceb02dce05f4aaf49b924ee3a90","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            if node.provision_state \u003d\u003d states.CLEANING:"},{"line_number":573,"context_line":"                LOG.info(_LI(\"Skipping agent RAID create_configuration during \""},{"line_number":574,"context_line":"                             \"cleaning for node %s as target RAID \""},{"line_number":575,"context_line":"                             \"configuration is empty.\"), node.uuid)"},{"line_number":576,"context_line":"                return"},{"line_number":577,"context_line":"            else:"},{"line_number":578,"context_line":"                raise exception.MissingParameterValue("}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_90e8287e","line":575,"in_reply_to":"ba15a1d1_a244061b","updated":"2015-09-22 14:21:31.000000000","message":"Right, same for delete_configuration(), say I have a RAID configuration for that node and just want to delete it, but if target_raid_config or raid_config is not set it will skip it. So I have to set it to something to be able to delete it.","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a982c25b45ec4af03bf75ed74779715fab61da65","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            if node.provision_state \u003d\u003d states.CLEANING:"},{"line_number":573,"context_line":"                LOG.info(_LI(\"Skipping agent RAID create_configuration during \""},{"line_number":574,"context_line":"                             \"cleaning for node %s as target RAID \""},{"line_number":575,"context_line":"                             \"configuration is empty.\"), node.uuid)"},{"line_number":576,"context_line":"                return"},{"line_number":577,"context_line":"            else:"},{"line_number":578,"context_line":"                raise exception.MissingParameterValue("}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_f03ac497","line":575,"in_reply_to":"ba15a1d1_a244061b","updated":"2015-09-22 14:06:36.000000000","message":"Yeah, as we have discussed before RAID is optional.  RAID for all nodes might not be possible.  Not even all bare metals from the same vendor might support RAID.  So we should have a mechanism to opt out.\n\nThe other way to indicate an opt-out would be with some special value in node.target_raid_config or somewhere else (like in driver_info) if operator wants to skip RAID configuration.  But I am not sure if it\u0027s going to complicate things more.  Operator will need to do this for each and every bare metal that they don\u0027t consider RAID.\n\nWe can document the current behaviour.  Do we really need to take care of operator forgetting to put target RAID configuration for cleaning ?","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1a7e16edd5cc23d7d433f77264cad1a679657037","unresolved":false,"context_lines":[{"line_number":572,"context_line":"            if node.provision_state \u003d\u003d states.CLEANING:"},{"line_number":573,"context_line":"                LOG.info(_LI(\"Skipping agent RAID create_configuration during \""},{"line_number":574,"context_line":"                             \"cleaning for node %s as target RAID \""},{"line_number":575,"context_line":"                             \"configuration is empty.\"), node.uuid)"},{"line_number":576,"context_line":"                return"},{"line_number":577,"context_line":"            else:"},{"line_number":578,"context_line":"                raise exception.MissingParameterValue("}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_cb0595c2","line":575,"in_reply_to":"ba15a1d1_f03ac497","updated":"2015-09-22 14:23:50.000000000","message":"I don\u0027t know if we need to take care of operator forgetting, but I would guess that some operator WILL forget (or not know) to specify target RAID, or their process fails and doesn\u0027t do it or ...\n\nI am (sort of) fine if we use .target_raid_config as a way to opt out. What I\u0027m not fine is that we didn\u0027t discuss/agree to that (or is that mentioned in the spec?). I want to be sure we/reviewers are aware of the behaviour.\n\nIf we use this for opting out, I don\u0027t know how we can take care of operators forgetting to set it. And if we decide in the future that we want to use it to determine whether operators forgot to set it, I don\u0027t know that it will be backwards compatible with this behaviour :-(","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b8c83fb9ffcf9ceb02dce05f4aaf49b924ee3a90","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                             \"cleaning for node %s as target RAID \""},{"line_number":575,"context_line":"                             \"configuration is empty.\"), node.uuid)"},{"line_number":576,"context_line":"                return"},{"line_number":577,"context_line":"            else:"},{"line_number":578,"context_line":"                raise exception.MissingParameterValue("},{"line_number":579,"context_line":"                    _(\"Node %s has no target RAID configuration.\") % node.uuid)"},{"line_number":580,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_d074609d","line":577,"updated":"2015-09-22 14:21:31.000000000","message":"nit: else not needed here","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ccc436cbeafa9f80ea81fa5677f8859fb22e3aa2","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        # skip nodes without node.target_raid_config or node.raid_config"},{"line_number":659,"context_line":"        # during cleaning."},{"line_number":660,"context_line":"        if (node.provision_state \u003d\u003d states.CLEANING"},{"line_number":661,"context_line":"                and not (node.target_raid_config or node.raid_config)):"},{"line_number":662,"context_line":"            LOG.info(_LI(\"Skipping agent RAID delete_configuration during \""},{"line_number":663,"context_line":"                         \"cleaning for node %s as target RAID \""},{"line_number":664,"context_line":"                         \"configuration and current RAID configuration is \""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_6b91e951","line":661,"updated":"2015-09-22 14:26:27.000000000","message":"continuing from comment at L575...\n\nThere\u0027s a problem skipping it here if not set, that goes:\n\n1. Node doesn\u0027t have a RAID configuration\n\n2. Tentant creates a RAID in-band (talking to ramesh it\u0027s possible and can be expected)\n\n3. Once it goes trough cleaning, since \"target_raid_config\" nor \"raid_config\" is set on that node, so cleaning will skip it.\n\n4. New tenant will have the RAID configuration from previous tenant.","commit_id":"1f17304e2d7f0cd9d4ce08235c499796bdb5f48e"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8b11c36eaf940e1cad8b4ac01dab5c81ba9a25cb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                    \u0027unset, will use default value of 0 and hence creation \u0027"},{"line_number":76,"context_line":"                    \u0027of RAID config will be disabled for cleaning. Please \u0027"},{"line_number":77,"context_line":"                    \u0027note that enabling RAID for cleaning is experimental \u0027"},{"line_number":78,"context_line":"                    \u0027and the it\\\u0027s behaviour might not be backwards \u0027"},{"line_number":79,"context_line":"                    \u0027compatible.\u0027),"},{"line_number":80,"context_line":"    cfg.IntOpt(\u0027delete_raid_config_priority\u0027,"},{"line_number":81,"context_line":"               default\u003d0,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_07a422a4","line":78,"updated":"2015-09-25 09:20:13.000000000","message":"nit - s/the it\u0027s/its","commit_id":"332ae181765dd8884d56edc511e826e5c33b5115"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8b11c36eaf940e1cad8b4ac01dab5c81ba9a25cb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    \u0027unset, will use default value of 0 and hence deletion \u0027"},{"line_number":85,"context_line":"                    \u0027of RAID config will be disabled for cleaning. Please \u0027"},{"line_number":86,"context_line":"                    \u0027note that enabling RAID for cleaning is experimental \u0027"},{"line_number":87,"context_line":"                    \u0027and the it\\\u0027s behaviour might not be backwards \u0027"},{"line_number":88,"context_line":"                    \u0027compatible.\u0027),"},{"line_number":89,"context_line":"]"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_27a12695","line":87,"updated":"2015-09-25 09:20:13.000000000","message":"ditto","commit_id":"332ae181765dd8884d56edc511e826e5c33b5115"}],"ironic/tests/drivers/test_agent.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a2bb2984fea502406f9e0978c441748c3755e17b","unresolved":false,"context_lines":[{"line_number":676,"context_line":"            ret \u003d task.driver.raid.get_clean_steps(task)"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        self.assertEqual(0, ret[0][\u0027priority\u0027])"},{"line_number":679,"context_line":"        self.assertEqual(0, ret[1][\u0027priority\u0027])"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    @mock.patch.object(deploy_utils, \u0027agent_execute_clean_step\u0027,"},{"line_number":682,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_cc81a8c4","side":"PARENT","line":679,"updated":"2015-09-18 12:10:08.000000000","message":"do we really need to drop this test?","commit_id":"190e70fd3735878c0373aff5681c772f4e68cb16"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"31273982bfd4db401112e2d4940deeee753502bf","unresolved":false,"context_lines":[{"line_number":676,"context_line":"            ret \u003d task.driver.raid.get_clean_steps(task)"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        self.assertEqual(0, ret[0][\u0027priority\u0027])"},{"line_number":679,"context_line":"        self.assertEqual(0, ret[1][\u0027priority\u0027])"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    @mock.patch.object(deploy_utils, \u0027agent_execute_clean_step\u0027,"},{"line_number":682,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba15a1d1_7e427baf","side":"PARENT","line":679,"in_reply_to":"ba15a1d1_cc81a8c4","updated":"2015-09-18 14:15:26.000000000","message":"Oh yeah, it makes sense to keep this test.","commit_id":"190e70fd3735878c0373aff5681c772f4e68cb16"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4d2951634efba9cadf6a81f649acddf9bf9d7537","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        self.config(group\u003d\u0027agent\u0027, create_raid_config_priority\u003d10)"},{"line_number":660,"context_line":"        self.config(group\u003d\u0027agent\u0027, delete_raid_config_priority\u003d20)"},{"line_number":661,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":662,"context_line":"            reload(agent)"},{"line_number":663,"context_line":"            task.driver.raid \u003d agent.AgentRAID()"},{"line_number":664,"context_line":"            ret \u003d task.driver.raid.get_clean_steps(task)"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a1a9d01_f7a540b5","line":662,"updated":"2015-09-24 13:46:44.000000000","message":"There\u0027s a six method for this: \n\nsix.moves.reload_module(sys.modules[\u0027ironic.drivers.modules.agent\u0027])","commit_id":"2b66237c063fe86b4233bd95519441d715c5a9ae"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6a9781564bb679fa899f09c01ef8ed0aa52c7f06","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        self.config(group\u003d\u0027agent\u0027, create_raid_config_priority\u003d10)"},{"line_number":660,"context_line":"        self.config(group\u003d\u0027agent\u0027, delete_raid_config_priority\u003d20)"},{"line_number":661,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":662,"context_line":"            reload(agent)"},{"line_number":663,"context_line":"            task.driver.raid \u003d agent.AgentRAID()"},{"line_number":664,"context_line":"            ret \u003d task.driver.raid.get_clean_steps(task)"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a1a9d01_d7303c0a","line":662,"in_reply_to":"9a1a9d01_f7a540b5","updated":"2015-09-24 13:54:34.000000000","message":"I don\u0027t think we should call any reload() to be honest, this can potentially mess up with other tests","commit_id":"2b66237c063fe86b4233bd95519441d715c5a9ae"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"6a9781564bb679fa899f09c01ef8ed0aa52c7f06","unresolved":false,"context_lines":[{"line_number":668,"context_line":"                      ret)"},{"line_number":669,"context_line":"        self.assertIn({\u0027priority\u0027: 10, \u0027interface\u0027: \u0027raid\u0027,"},{"line_number":670,"context_line":"                       \u0027step\u0027: \u0027create_configuration\u0027, \u0027abortable\u0027: False},"},{"line_number":671,"context_line":"                      ret)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @mock.patch.object(deploy_utils, \u0027agent_execute_clean_step\u0027,"},{"line_number":674,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a1a9d01_97116460","line":671,"updated":"2015-09-24 13:54:34.000000000","message":"Also I don\u0027t think we should add this test, It\u0027s basically testing the @clean_step() decorator which is already tested.","commit_id":"2b66237c063fe86b4233bd95519441d715c5a9ae"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0547d04d42d0a3eca34212ef1dd3c22dd3356918","unresolved":false,"context_lines":[{"line_number":668,"context_line":"                      ret)"},{"line_number":669,"context_line":"        self.assertIn({\u0027priority\u0027: 10, \u0027interface\u0027: \u0027raid\u0027,"},{"line_number":670,"context_line":"                       \u0027step\u0027: \u0027create_configuration\u0027, \u0027abortable\u0027: False},"},{"line_number":671,"context_line":"                      ret)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @mock.patch.object(deploy_utils, \u0027agent_execute_clean_step\u0027,"},{"line_number":674,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a1a9d01_fa51a50f","line":671,"updated":"2015-09-24 14:00:38.000000000","message":"(re adding comment from previous patch)\n\nDoing a reload is risky, and may cause the test_get_clean_steps_default() to fail if test_get_clean_steps_configured() runs first...\n\nTo do a quick test, invert the test order and run everything in 1 theread http://paste.openstack.org/show/473885/","commit_id":"c05316ae050a59fe8a9c62a26813d6b694742aac"}]}
