)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d68bdb3e684211ab840aa77fafad784ee24e6075","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"An additional side effect of this bug was not running validate() against"},{"line_number":23,"context_line":"the boot interface on ramdisk boot if manage_agent_boot was false. This"},{"line_number":24,"context_line":"was also fixed as part of moving this configuration option."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"To rectify this, we move and rename the option from"},{"line_number":27,"context_line":"agent.manage_agent_boot to pxe.manage_ramdisk_boot and ensure this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a18252c_5bbd2467","line":24,"updated":"2016-04-13 21:15:07.000000000","message":"I don\u0027t see where this problem was and where it got fixed. It just looks like you moved the if-config-true-validate check from the agent to PXEBoot.validate(). Or maybe that\u0027s what this means, that PXEBoot.validate() wasn\u0027t being called (even though it now is called but does nothing if the config is true).","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9e45f3c686e285b710b155a12e210c9d93bcb05a","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"An additional side effect of this bug was not running validate() against"},{"line_number":23,"context_line":"the boot interface on ramdisk boot if manage_agent_boot was false. This"},{"line_number":24,"context_line":"was also fixed as part of moving this configuration option."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"To rectify this, we move and rename the option from"},{"line_number":27,"context_line":"agent.manage_agent_boot to pxe.manage_ramdisk_boot and ensure this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a18252c_ae919454","line":24,"in_reply_to":"5a18252c_5bbd2467","updated":"2016-04-13 21:21:08.000000000","message":"The key there is that was impacting all drivers for essentially a setting that was only valid for the PXE driver. \n\nThink about this: if half my nodes use the pxe driver, and the other half use some other driver (lets say, something with vmedia support like iLO), we skipped validate in *both* cases for a setting that was only supposed to modify pxe booting. By limiting the scope we make it more correct for mixed use cases.","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fdde263a97a5d51c86457ad8fc0aa05220cf7da6","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"An additional side effect of this bug was not running validate() against"},{"line_number":23,"context_line":"the boot interface on ramdisk boot if manage_agent_boot was false. This"},{"line_number":24,"context_line":"was also fixed as part of moving this configuration option."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"To rectify this, we move and rename the option from"},{"line_number":27,"context_line":"agent.manage_agent_boot to pxe.manage_ramdisk_boot and ensure this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a18252c_4ebd6067","line":24,"in_reply_to":"5a18252c_ae919454","updated":"2016-04-13 21:37:19.000000000","message":"Words are hard :) I probably wouldn\u0027t have mentioned this at all. It *could* have been a problem if we used the agent with some other boot interface. But that\u0027s ok, now that you\u0027ve explained what you meant. Thx.","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d889f78d9c3aa2a72a1c4140cda46ca89fdd98ef","unresolved":false,"context_lines":[{"line_number":10,"context_line":"when using the agent driver with PXE boot interface when calling"},{"line_number":11,"context_line":"prepare_inband_cleaning."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This was a change in behavior when the manage_tftp option was renamed"},{"line_number":14,"context_line":"to manage_agent_boot. manage_agent_boot is supposed to control whether"},{"line_number":15,"context_line":"ironic hosts the agent image or not, but it now also controls whether"},{"line_number":16,"context_line":"ironic sets nodes to PXE boot when preparing them for inband cleaning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3aaa91ec_f69a0961","line":13,"range":{"start_line":13,"start_character":21,"end_line":13,"end_character":29},"updated":"2016-06-30 07:34:41.000000000","message":"s/behavior/behaviour","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"when using the agent driver with PXE boot interface when calling"},{"line_number":11,"context_line":"prepare_inband_cleaning."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This was a change in behavior when the manage_tftp option was renamed"},{"line_number":14,"context_line":"to manage_agent_boot. manage_agent_boot is supposed to control whether"},{"line_number":15,"context_line":"ironic hosts the agent image or not, but it now also controls whether"},{"line_number":16,"context_line":"ironic sets nodes to PXE boot when preparing them for inband cleaning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa6399be_8d9b23c9","line":13,"in_reply_to":"3aaa91ec_63bc6fdc","updated":"2016-10-11 19:17:33.000000000","message":"Yeah, both spellings should be fine.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7fd6c037ad06a58261119518c8aa58dcf981d3e1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"when using the agent driver with PXE boot interface when calling"},{"line_number":11,"context_line":"prepare_inband_cleaning."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This was a change in behavior when the manage_tftp option was renamed"},{"line_number":14,"context_line":"to manage_agent_boot. manage_agent_boot is supposed to control whether"},{"line_number":15,"context_line":"ironic hosts the agent image or not, but it now also controls whether"},{"line_number":16,"context_line":"ironic sets nodes to PXE boot when preparing them for inband cleaning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3aaa91ec_63bc6fdc","line":13,"in_reply_to":"3aaa91ec_87c8aa56","updated":"2016-06-30 20:48:33.000000000","message":"Leaving this as US english, IMO both British and English spellings are acceptable.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"2f31013c318291dbb7b96c4a1b88ae296d9fcd8b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"when using the agent driver with PXE boot interface when calling"},{"line_number":11,"context_line":"prepare_inband_cleaning."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This was a change in behavior when the manage_tftp option was renamed"},{"line_number":14,"context_line":"to manage_agent_boot. manage_agent_boot is supposed to control whether"},{"line_number":15,"context_line":"ironic hosts the agent image or not, but it now also controls whether"},{"line_number":16,"context_line":"ironic sets nodes to PXE boot when preparing them for inband cleaning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3aaa91ec_87c8aa56","line":13,"in_reply_to":"3aaa91ec_f69a0961","updated":"2016-06-30 10:35:21.000000000","message":"\"Behavior\" is the correct spelling in US English - do we have a preferred English dialect for commit messages etc?","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d889f78d9c3aa2a72a1c4140cda46ca89fdd98ef","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"To rectify this, we move and rename the option from"},{"line_number":27,"context_line":"agent.manage_agent_boot to pxe.manage_ramdisk_boot and ensure this"},{"line_number":28,"context_line":"only toggles behaviors around TFTP and PXE configurations, ensuring"},{"line_number":29,"context_line":"the boot device change happens as expected when cleaning, or anytime"},{"line_number":30,"context_line":"a ramdisk is booted."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"3aaa91ec_96aaa56f","line":28,"range":{"start_line":28,"start_character":13,"end_line":28,"end_character":22},"updated":"2016-06-30 07:34:41.000000000","message":"/s/behaviors/behaviours","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"To rectify this, we move and rename the option from"},{"line_number":27,"context_line":"agent.manage_agent_boot to pxe.manage_ramdisk_boot and ensure this"},{"line_number":28,"context_line":"only toggles behaviors around TFTP and PXE configurations, ensuring"},{"line_number":29,"context_line":"the boot device change happens as expected when cleaning, or anytime"},{"line_number":30,"context_line":"a ramdisk is booted."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa6399be_cd7c3b75","line":28,"range":{"start_line":28,"start_character":13,"end_line":28,"end_character":22},"in_reply_to":"3aaa91ec_96aaa56f","updated":"2016-10-11 19:17:33.000000000","message":"See above, this is US English spelling. http://www.dictionary.com/browse/behavior?s\u003dt","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"}],"ironic/conf/pxe.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d47611d4a2a8fb86997d857eef6e0824093c4c10","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    cfg.BoolOpt(\u0027manage_ramdisk_boot\u0027,"},{"line_number":117,"context_line":"                default\u003dTrue,"},{"line_number":118,"context_line":"                deprecated_opts\u003d["},{"line_number":119,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"},{"line_number":120,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_agent_boot\u0027, group\u003d\u0027agent\u0027)],"},{"line_number":121,"context_line":"                deprecated_reason\u003d\u0027manage_tftp and manage_agent_boot are no \u0027"},{"line_number":122,"context_line":"                                  \u0027longer valid configuration options and \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_75f3fb0a","line":119,"range":{"start_line":119,"start_character":20,"end_line":119,"end_character":68},"updated":"2016-11-15 14:45:36.000000000","message":"This option has been removed as part of https://review.openstack.org/#/c/316822/ I don\u0027t think we should include it back again.","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"06a299660103abf479b9b4589edb5fa1de5e2be2","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    cfg.BoolOpt(\u0027manage_ramdisk_boot\u0027,"},{"line_number":117,"context_line":"                default\u003dTrue,"},{"line_number":118,"context_line":"                deprecated_opts\u003d["},{"line_number":119,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"},{"line_number":120,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_agent_boot\u0027, group\u003d\u0027agent\u0027)],"},{"line_number":121,"context_line":"                deprecated_reason\u003d\u0027manage_tftp and manage_agent_boot are no \u0027"},{"line_number":122,"context_line":"                                  \u0027longer valid configuration options and \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_aab885e6","line":119,"range":{"start_line":119,"start_character":20,"end_line":119,"end_character":68},"in_reply_to":"7a77a97e_75f3fb0a","updated":"2016-11-16 20:11:41.000000000","message":"Done","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d47611d4a2a8fb86997d857eef6e0824093c4c10","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                deprecated_opts\u003d["},{"line_number":119,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"},{"line_number":120,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_agent_boot\u0027, group\u003d\u0027agent\u0027)],"},{"line_number":121,"context_line":"                deprecated_reason\u003d\u0027manage_tftp and manage_agent_boot are no \u0027"},{"line_number":122,"context_line":"                                  \u0027longer valid configuration options and \u0027"},{"line_number":123,"context_line":"                                  \u0027will nolonger be supported in the Pike \u0027"},{"line_number":124,"context_line":"                                  \u0027release. To keep the same behavior, set \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_1553a7e2","line":121,"range":{"start_line":121,"start_character":35,"end_line":121,"end_character":46},"updated":"2016-11-15 14:45:36.000000000","message":"ditto","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"06a299660103abf479b9b4589edb5fa1de5e2be2","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                deprecated_opts\u003d["},{"line_number":119,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"},{"line_number":120,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_agent_boot\u0027, group\u003d\u0027agent\u0027)],"},{"line_number":121,"context_line":"                deprecated_reason\u003d\u0027manage_tftp and manage_agent_boot are no \u0027"},{"line_number":122,"context_line":"                                  \u0027longer valid configuration options and \u0027"},{"line_number":123,"context_line":"                                  \u0027will nolonger be supported in the Pike \u0027"},{"line_number":124,"context_line":"                                  \u0027release. To keep the same behavior, set \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_cacf817d","line":121,"range":{"start_line":121,"start_character":35,"end_line":121,"end_character":46},"in_reply_to":"7a77a97e_1553a7e2","updated":"2016-11-16 20:11:41.000000000","message":"Done","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"}],"ironic/drivers/base.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"2b316f07a0251e965d8e69d487b79950856fec7a","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        \"\"\""},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    @abc.abstractmethod"},{"line_number":383,"context_line":"    def prepare_ramdisk(self, task, ramdisk_params, manage_boot):"},{"line_number":384,"context_line":"        \"\"\"Prepares the boot of Ironic ramdisk."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        This method prepares the boot of the deploy ramdisk after"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_c9928e9f","line":383,"updated":"2016-02-10 20:51:59.000000000","message":"You can\u0027t change the signature of the core driver API methods.\n\nWhat if an out of tree Deploy driver doesn\u0027t pass this new parameter to an in-tree Boot driver (or the inverse, an out of tree Boot driver doesn\u0027t accept it from an in-tree Deploy driver that you\u0027ve just changed)?","commit_id":"be0eb1f5290ecbe427dd0bcfe5d695df745bdf81"}],"ironic/drivers/modules/agent.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"bd5cade4adab60f00c54decea254bb628753fce7","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        :raises: InvalidParameterValue, if any of the parameters have invalid"},{"line_number":256,"context_line":"            value."},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        if CONF.pxe.manage_pxe_boot:"},{"line_number":259,"context_line":"            task.driver.boot.validate(task)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_97d6a5c3","line":258,"updated":"2016-03-29 16:20:30.000000000","message":"Moving this check into the pxe driver directly. The agent driver shouldn\u0027t need to act based on another drivers\u0027 config option.","commit_id":"a6aed7a95f61376e1b0cd7fbfc72e8a01412b4e4"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"e0adcb7317548a630c38d3ebea955a664f63d6ba","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        :raises: InvalidParameterValue, if any of the parameters have invalid"},{"line_number":256,"context_line":"            value."},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        if CONF.pxe.manage_pxe_boot:"},{"line_number":259,"context_line":"            task.driver.boot.validate(task)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_5a454d6e","line":258,"in_reply_to":"ba0121b8_97d6a5c3","updated":"2016-03-29 19:03:06.000000000","message":"+1 here","commit_id":"a6aed7a95f61376e1b0cd7fbfc72e8a01412b4e4"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        :raises: InvalidParameterValue, if any of the parameters have invalid"},{"line_number":256,"context_line":"            value."},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        task.driver.boot.validate(task)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        node \u003d task.node"},{"line_number":261,"context_line":"        params \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_9915e94a","line":258,"updated":"2016-04-06 14:00:40.000000000","message":"This also changes behavior for ilo/irmc boot interfaces.","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        :raises: InvalidParameterValue, if any of the parameters have invalid"},{"line_number":256,"context_line":"            value."},{"line_number":257,"context_line":"        \"\"\""},{"line_number":258,"context_line":"        task.driver.boot.validate(task)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        node \u003d task.node"},{"line_number":261,"context_line":"        params \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_20dc0245","line":258,"in_reply_to":"9a061dce_9915e94a","updated":"2016-04-07 22:02:01.000000000","message":"This is somewhat intentional. CONF.agent.manage_agent_boot should never have disabled validate across the board. I see this as a bugfix change, but am welcome to hear other arguments if you still disagree :).\n\nI added a line to the releasenotes highlighting this fix as well.","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":321,"context_line":"            node.save()"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"            deploy_opts \u003d deploy_utils.build_agent_options(node)"},{"line_number":324,"context_line":"            task.driver.boot.prepare_ramdisk(task, deploy_opts)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":327,"context_line":"    def clean_up(self, task):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_7c4f236b","line":324,"updated":"2016-04-06 14:00:40.000000000","message":"ditto, does the same problem exists for virtual media, with setting boot device to cdrom?","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":321,"context_line":"            node.save()"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"            deploy_opts \u003d deploy_utils.build_agent_options(node)"},{"line_number":324,"context_line":"            task.driver.boot.prepare_ramdisk(task, deploy_opts)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":327,"context_line":"    def clean_up(self, task):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_401e560c","line":324,"in_reply_to":"9a061dce_7c4f236b","updated":"2016-04-07 22:02:01.000000000","message":"Explicitly the reason I\u0027m moving this to a pxe setting instead of an agent setting is that we can\u0027t/shouldn\u0027t determine what boot device to set and similar things from the deploy interface. It has to be managed by the boot interface. This means it\u0027ll be the boot drivers\u0027 responsibility, in prepare_ramdisk(), to set whatever boot device they need.","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"46ecd76ee9d193f9e711fc14f5e4ce5b9db4e77f","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        # NOTE(mariojv) We still want to PXE boot to boot into the agent even"},{"line_number":1019,"context_line":"        # if the conductor isn\u0027t hosting the agent. This is handled in"},{"line_number":1020,"context_line":"        # prepare_ramdisk for the other case above."},{"line_number":1021,"context_line":"        try_set_boot_device(task, boot_devices.PXE)"},{"line_number":1022,"context_line":""},{"line_number":1023,"context_line":"    manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_e7d4f120","line":1021,"updated":"2016-01-05 18:43:41.000000000","message":"What if manage_boot is false AND I\u0027m booting the agent using virtual media? In this case, you\u0027d break me because you\u0027d force me to PXE instead of booting off vmedia.","commit_id":"9d35de6721d7770b5bf9056cd23d4446a92735a7"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"52bb08c9c8b3c1a9ca57b704c67f9367cb4e3eb3","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        # NOTE(mariojv) We still want to PXE boot to boot into the agent even"},{"line_number":1019,"context_line":"        # if the conductor isn\u0027t hosting the agent. This is handled in"},{"line_number":1020,"context_line":"        # prepare_ramdisk for the other case above."},{"line_number":1021,"context_line":"        try_set_boot_device(task, boot_devices.PXE)"},{"line_number":1022,"context_line":""},{"line_number":1023,"context_line":"    manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_8701753a","line":1021,"in_reply_to":"fa69d971_67d32105","updated":"2016-01-05 18:56:02.000000000","message":"`manage_boot` is realistically \"manage tftp\". Why don\u0027t we always call prepare_ramdisk, pass in this option, and let prepare_ramdisk do things conditionally?","commit_id":"9d35de6721d7770b5bf9056cd23d4446a92735a7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"5e62eeb396b2c0aaea8c967556e7d597720d7b8f","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        # NOTE(mariojv) We still want to PXE boot to boot into the agent even"},{"line_number":1019,"context_line":"        # if the conductor isn\u0027t hosting the agent. This is handled in"},{"line_number":1020,"context_line":"        # prepare_ramdisk for the other case above."},{"line_number":1021,"context_line":"        try_set_boot_device(task, boot_devices.PXE)"},{"line_number":1022,"context_line":""},{"line_number":1023,"context_line":"    manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_e7f70e89","line":1021,"in_reply_to":"fa69d971_8701753a","updated":"2016-01-05 20:30:32.000000000","message":"I like Jim\u0027s idea. We should switch the boot method in prepare_ramdisk since that comes from the driver boot interface, so if it\u0027s PXE prepare_ramdisk we should always PXE boot. That will solve the problem with agent+iLO as well.","commit_id":"9d35de6721d7770b5bf9056cd23d4446a92735a7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"f9dfe10fb3dee2880144109bc25cb2131a829d42","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        # NOTE(mariojv) We still want to PXE boot to boot into the agent even"},{"line_number":1019,"context_line":"        # if the conductor isn\u0027t hosting the agent. This is handled in"},{"line_number":1020,"context_line":"        # prepare_ramdisk for the other case above."},{"line_number":1021,"context_line":"        try_set_boot_device(task, boot_devices.PXE)"},{"line_number":1022,"context_line":""},{"line_number":1023,"context_line":"    manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_67d32105","line":1021,"in_reply_to":"fa69d971_a796f93b","updated":"2016-01-05 18:50:55.000000000","message":"agent + iLO driver supports virtual media. I\u0027d suggest looking to see how they handle some of these cases there.","commit_id":"9d35de6721d7770b5bf9056cd23d4446a92735a7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"82f33ee94313fa600cec022d905e212117f7c8bc","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        # NOTE(mariojv) We still want to PXE boot to boot into the agent even"},{"line_number":1019,"context_line":"        # if the conductor isn\u0027t hosting the agent. This is handled in"},{"line_number":1020,"context_line":"        # prepare_ramdisk for the other case above."},{"line_number":1021,"context_line":"        try_set_boot_device(task, boot_devices.PXE)"},{"line_number":1022,"context_line":""},{"line_number":1023,"context_line":"    manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_a796f93b","line":1021,"in_reply_to":"fa69d971_e7d4f120","updated":"2016-01-05 18:48:07.000000000","message":"Is there an existing case in ironic where someone would want to do this? If so we can make this a config option.","commit_id":"9d35de6721d7770b5bf9056cd23d4446a92735a7"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"e0adcb7317548a630c38d3ebea955a664f63d6ba","unresolved":false,"context_lines":[{"line_number":1044,"context_line":""},{"line_number":1045,"context_line":"    This method does the following:"},{"line_number":1046,"context_line":"    1. Powers off the bare metal node."},{"line_number":1047,"context_line":"    2. If \u0027manage_boot\u0027 parameter is set to true, it also"},{"line_number":1048,"context_line":"    calls the \u0027clean_up_ramdisk\u0027 method of boot interface to clean up"},{"line_number":1049,"context_line":"    the environment that was set for booting agent ramdisk."},{"line_number":1050,"context_line":"    3. Deletes the cleaning ports which were setup as part"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_1aef5588","line":1047,"updated":"2016-03-29 19:03:06.000000000","message":"clean_up_ramdisk is called wherever manage_boot is true or not","commit_id":"a6aed7a95f61376e1b0cd7fbfc72e8a01412b4e4"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"cb83291f989b3de3cd7f9de0721c81a8c153e364","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        be removed or if new cleaning ports cannot be created"},{"line_number":1010,"context_line":"    \"\"\""},{"line_number":1011,"context_line":"    if manage_boot is not None:"},{"line_number":1012,"context_line":"        LOG.warn(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1013,"context_line":"                 \u0027deprecated, and the kwarg will be removed in a future \u0027"},{"line_number":1014,"context_line":"                 \u0027Ironic release. Please update any out of tree drivers.\u0027)"},{"line_number":1015,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_abe34c04","line":1012,"range":{"start_line":1012,"start_character":8,"end_line":1012,"end_character":16},"updated":"2016-03-30 14:44:44.000000000","message":"Use LOG.warning instead of deprecated LOG.warn.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        be removed or if new cleaning ports cannot be created"},{"line_number":1010,"context_line":"    \"\"\""},{"line_number":1011,"context_line":"    if manage_boot is not None:"},{"line_number":1012,"context_line":"        LOG.warn(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1013,"context_line":"                 \u0027deprecated, and the kwarg will be removed in a future \u0027"},{"line_number":1014,"context_line":"                 \u0027Ironic release. Please update any out of tree drivers.\u0027)"},{"line_number":1015,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_bc7ee916","line":1012,"range":{"start_line":1012,"start_character":8,"end_line":1012,"end_character":16},"in_reply_to":"ba0121b8_abe34c04","updated":"2016-03-30 16:19:14.000000000","message":"Done","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"5aad04da9cab90a858fb0f0e7882ab482bdd1d91","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"    # to pass to IPA."},{"line_number":1020,"context_line":"    agent_add_clean_params(task)"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    ramdisk_opts \u003d None"},{"line_number":1023,"context_line":"    ramdisk_opts \u003d build_agent_options(task.node)"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    # TODO(rameshg87): Below code is to make sure that bash ramdisk"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_864ae4c3","line":1022,"range":{"start_line":1022,"start_character":1,"end_line":1022,"end_character":23},"updated":"2016-03-30 01:42:58.000000000","message":"this is useless now. ramdisk_opts is defined and assign in next line.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"    # to pass to IPA."},{"line_number":1020,"context_line":"    agent_add_clean_params(task)"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    ramdisk_opts \u003d None"},{"line_number":1023,"context_line":"    ramdisk_opts \u003d build_agent_options(task.node)"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    # TODO(rameshg87): Below code is to make sure that bash ramdisk"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_9c7b2528","line":1022,"range":{"start_line":1022,"start_character":1,"end_line":1022,"end_character":23},"in_reply_to":"ba0121b8_864ae4c3","updated":"2016-03-30 16:19:14.000000000","message":"Done","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"cb83291f989b3de3cd7f9de0721c81a8c153e364","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        removed."},{"line_number":1057,"context_line":"    \"\"\""},{"line_number":1058,"context_line":"    if manage_boot is not None:"},{"line_number":1059,"context_line":"        LOG.warn(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1060,"context_line":"                 \u0027deprecated, and the kwarg will be removed in a future \u0027"},{"line_number":1061,"context_line":"                 \u0027Ironic release. Please update any out of tree drivers.\u0027)"},{"line_number":1062,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_ebc42460","line":1059,"range":{"start_line":1059,"start_character":8,"end_line":1059,"end_character":16},"updated":"2016-03-30 14:44:44.000000000","message":"Use LOG.warning instead of deprecated LOG.warn.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        removed."},{"line_number":1057,"context_line":"    \"\"\""},{"line_number":1058,"context_line":"    if manage_boot is not None:"},{"line_number":1059,"context_line":"        LOG.warn(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1060,"context_line":"                 \u0027deprecated, and the kwarg will be removed in a future \u0027"},{"line_number":1061,"context_line":"                 \u0027Ironic release. Please update any out of tree drivers.\u0027)"},{"line_number":1062,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_fc74e136","line":1059,"range":{"start_line":1059,"start_character":8,"end_line":1059,"end_character":16},"in_reply_to":"ba0121b8_ebc42460","updated":"2016-03-30 16:19:14.000000000","message":"Done","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"a262d0d6951022d4a7f88ae74ee7b89c8e724391","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1009,"context_line":"        be removed or if new cleaning ports cannot be created"},{"line_number":1010,"context_line":"    \"\"\""},{"line_number":1011,"context_line":"    if manage_boot is not None:"},{"line_number":1012,"context_line":"        LOG.warning(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1013,"context_line":"                    \u0027deprecated, and the kwarg will be removed in a future \u0027"},{"line_number":1014,"context_line":"                    \u0027Ironic release. Please update any out of tree drivers.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_c5e0d62b","line":1011,"updated":"2016-03-31 21:43:48.000000000","message":"this should probably use a modulevar so that it\u0027s only logged once -- not on every method call.\n\nit should also provide the driver name in the warning, which could be gleaned from task.driver\n\nhmm. perhaps a module array so that it\u0027s logged once per driver name.","commit_id":"cd48819a92535e3dc48a516fcbe94309aa141eda"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"a262d0d6951022d4a7f88ae74ee7b89c8e724391","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"    :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":1055,"context_line":"        removed."},{"line_number":1056,"context_line":"    \"\"\""},{"line_number":1057,"context_line":"    if manage_boot is not None:"},{"line_number":1058,"context_line":"        LOG.warning(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1059,"context_line":"                    \u0027deprecated, and the kwarg will be removed in a future \u0027"},{"line_number":1060,"context_line":"                    \u0027Ironic release. Please update any out of tree drivers.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_a5c20283","line":1057,"updated":"2016-03-31 21:43:48.000000000","message":"ditto","commit_id":"cd48819a92535e3dc48a516fcbe94309aa141eda"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"DISK_LAYOUT_PARAMS \u003d (\u0027root_gb\u0027, \u0027swap_mb\u0027, \u0027ephemeral_gb\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"prep_cleaning_mb_deprecation_seen \u003d []"},{"line_number":107,"context_line":"td_cleaning_mb_deprecation_seen \u003d []"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_7901f504","line":106,"updated":"2016-04-06 14:00:40.000000000","message":"Might be worth making these sets.","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"    if (manage_boot is not None and"},{"line_number":1017,"context_line":"            task.driver not in prep_cleaning_mb_deprecation_seen):"},{"line_number":1018,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_da60f403","line":1019,"updated":"2016-04-06 14:00:40.000000000","message":"s/the kwarg/this argument","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"    if (manage_boot is not None and"},{"line_number":1017,"context_line":"            task.driver not in prep_cleaning_mb_deprecation_seen):"},{"line_number":1018,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_80706e41","line":1019,"in_reply_to":"9a061dce_da60f403","updated":"2016-04-07 22:02:01.000000000","message":"Done","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"            task.driver not in prep_cleaning_mb_deprecation_seen):"},{"line_number":1018,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1023,"context_line":"        prep_cleaning_mb_deprecation_seen.append(task.driver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_1a2eeca4","line":1020,"updated":"2016-04-06 14:00:40.000000000","message":"Maybe your driver\u0027s prepare_cleaning method?","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"            task.driver not in prep_cleaning_mb_deprecation_seen):"},{"line_number":1018,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1023,"context_line":"        prep_cleaning_mb_deprecation_seen.append(task.driver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_a075b232","line":1020,"in_reply_to":"9a061dce_1a2eeca4","updated":"2016-04-07 22:02:01.000000000","message":"I don\u0027t think this is the only place a potential out of tree driver could be calling this from. I\u0027d rather not assume in the log message, it\u0027s easy enough to grep manage_boot * :).","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1023,"context_line":"        prep_cleaning_mb_deprecation_seen.append(task.driver)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_35514337","line":1021,"updated":"2016-04-06 14:00:40.000000000","message":"s/%/,/","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1023,"context_line":"        prep_cleaning_mb_deprecation_seen.append(task.driver)"},{"line_number":1024,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_00b29ee4","line":1021,"in_reply_to":"9a061dce_35514337","updated":"2016-04-07 22:02:01.000000000","message":"Pretty sure this is supposed to be a %? Why do you think it should be a comma?","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2ee7328ff3e1128617b13f6bbed498439d8b9bf0","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1023,"context_line":"        prep_cleaning_mb_deprecation_seen.append(task.driver)"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    prepare_cleaning_ports(task)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_ade88bb5","line":1022,"updated":"2016-04-06 00:07:38.000000000","message":"I\u0027m not convinced that:\n\n1) I can\u0027t find a better thing to print here than the driver instance. Any suggestions?\n2) This is the best way to do this.\n\nSuggestions appreciated, but I\u0027ve verified via tests this approach at least works.","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1023,"context_line":"        prep_cleaning_mb_deprecation_seen.append(task.driver)"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    prepare_cleaning_ports(task)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_40cc9688","line":1022,"in_reply_to":"9a061dce_1abd4c02","updated":"2016-04-07 22:02:01.000000000","message":"I literally just changed this in response to Devananda asking me to make it this way. I\u0027m going to leave it that way, if you think we should handle these differently in the future, please bring it up in the IRC meeting. \n\n(tl;dr: I don\u0027t care which way to do it, but I\u0027m not changing it back unless I explicitly hear +1 print the log everytime from Deva or Jim).","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"6288eac5e8d5ef2aa3702b0b8768a514d70ea6ff","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1020,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1021,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1022,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1023,"context_line":"        prep_cleaning_mb_deprecation_seen.append(task.driver)"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"    prepare_cleaning_ports(task)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_1abd4c02","line":1022,"in_reply_to":"9a061dce_ade88bb5","updated":"2016-04-06 13:25:17.000000000","message":"not sure that it makes sense to handle this. Why we can\u0027t just show warning with each call?","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        removed."},{"line_number":1065,"context_line":"    \"\"\""},{"line_number":1066,"context_line":"    global td_cleaning_mb_deprecation_seen"},{"line_number":1067,"context_line":"    if manage_boot is not None and not td_cleaning_mb_deprecation_seen:"},{"line_number":1068,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1069,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1070,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_351f836d","line":1067,"range":{"start_line":1067,"start_character":35,"end_line":1067,"end_character":70},"updated":"2016-04-06 14:00:40.000000000","message":"Should be also task.driver not in?","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        removed."},{"line_number":1065,"context_line":"    \"\"\""},{"line_number":1066,"context_line":"    global td_cleaning_mb_deprecation_seen"},{"line_number":1067,"context_line":"    if manage_boot is not None and not td_cleaning_mb_deprecation_seen:"},{"line_number":1068,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1069,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1070,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_20e6c2e7","line":1067,"range":{"start_line":1067,"start_character":35,"end_line":1067,"end_character":70},"in_reply_to":"9a061dce_351f836d","updated":"2016-04-07 22:02:01.000000000","message":"Done","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3ab352236b7e6976c4254e7d9551efe1f4a512d2","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"    if manage_boot is not None and not td_cleaning_mb_deprecation_seen:"},{"line_number":1068,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1069,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1070,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1071,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1072,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1073,"context_line":"        td_cleaning_mb_deprecation_seen.append(task.driver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_95076f17","line":1070,"updated":"2016-04-06 14:00:40.000000000","message":"ditto","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"    if manage_boot is not None and not td_cleaning_mb_deprecation_seen:"},{"line_number":1068,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1069,"context_line":"                        \u0027deprecated, and the kwarg will be removed in a \u0027"},{"line_number":1070,"context_line":"                        \u0027future Ironic release. Please update your driver: \u0027"},{"line_number":1071,"context_line":"                        \u0027%(driver)s.\u0027) %"},{"line_number":1072,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1073,"context_line":"        td_cleaning_mb_deprecation_seen.append(task.driver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_00e9feb6","line":1070,"in_reply_to":"9a061dce_95076f17","updated":"2016-04-07 22:02:01.000000000","message":"Done","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d06c27aaa5b1e2adaa312ce195db58ed8e35bb29","unresolved":false,"context_lines":[{"line_number":104,"context_line":"DISK_LAYOUT_PARAMS \u003d (\u0027root_gb\u0027, \u0027swap_mb\u0027, \u0027ephemeral_gb\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"prep_cleaning_mb_deprecation_seen \u003d []"},{"line_number":107,"context_line":"td_cleaning_mb_deprecation_seen \u003d []"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# All functions are called from deploy() directly or indirectly."}],"source_content_type":"text/x-python","patch_set":9,"id":"9a061dce_b68b211e","line":107,"updated":"2016-04-08 10:26:51.000000000","message":"Not sure that we should do logging on warning level only once. Conductor is long-running service.","commit_id":"5d8af6b2e7f51fcdac400966b09c2b62b4a89313"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7696a54e7bedf1d77e545251fba0ae86635c2449","unresolved":false,"context_lines":[{"line_number":104,"context_line":"DISK_LAYOUT_PARAMS \u003d (\u0027root_gb\u0027, \u0027swap_mb\u0027, \u0027ephemeral_gb\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"prep_cleaning_mb_deprecation_seen \u003d []"},{"line_number":107,"context_line":"td_cleaning_mb_deprecation_seen \u003d []"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# All functions are called from deploy() directly or indirectly."}],"source_content_type":"text/x-python","patch_set":9,"id":"7a1b2928_4babdb74","line":107,"in_reply_to":"9a061dce_75115f5d","updated":"2016-04-11 18:08:21.000000000","message":"Per https://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html#operator-deprecation-warnings it should be printed exactly once, at WARNING level, as it is now.","commit_id":"5d8af6b2e7f51fcdac400966b09c2b62b4a89313"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"f06d3ce401183b3ec9e52a60eed35b21282d470d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"DISK_LAYOUT_PARAMS \u003d (\u0027root_gb\u0027, \u0027swap_mb\u0027, \u0027ephemeral_gb\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"prep_cleaning_mb_deprecation_seen \u003d []"},{"line_number":107,"context_line":"td_cleaning_mb_deprecation_seen \u003d []"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# All functions are called from deploy() directly or indirectly."}],"source_content_type":"text/x-python","patch_set":9,"id":"9a061dce_75115f5d","line":107,"in_reply_to":"9a061dce_b68b211e","updated":"2016-04-08 20:10:19.000000000","message":"Please see previous comments. Going around in circles with some cores wanting it this way and some wanting it another way. I literally couldn\u0027t care less if it prints one time or a bunch of times :)","commit_id":"5d8af6b2e7f51fcdac400966b09c2b62b4a89313"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d68bdb3e684211ab840aa77fafad784ee24e6075","unresolved":false,"context_lines":[{"line_number":104,"context_line":"DISK_LAYOUT_PARAMS \u003d (\u0027root_gb\u0027, \u0027swap_mb\u0027, \u0027ephemeral_gb\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"prep_cleaning_mb_deprecation_seen \u003d []"},{"line_number":107,"context_line":"td_cleaning_mb_deprecation_seen \u003d []"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# All functions are called from deploy() directly or indirectly."}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_0446aebe","line":107,"updated":"2016-04-13 21:15:07.000000000","message":"If you do another revision, I think it\u0027d be useful to have some documentation here for the above two. This is the list of drivers that ...\n\nWe tend to use upper case for global variables, although I don\u0027t know if that is a *must* or not.","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9e45f3c686e285b710b155a12e210c9d93bcb05a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"DISK_LAYOUT_PARAMS \u003d (\u0027root_gb\u0027, \u0027swap_mb\u0027, \u0027ephemeral_gb\u0027)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"prep_cleaning_mb_deprecation_seen \u003d []"},{"line_number":107,"context_line":"td_cleaning_mb_deprecation_seen \u003d []"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# All functions are called from deploy() directly or indirectly."}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_ae9fd44e","line":107,"in_reply_to":"5a18252c_0446aebe","updated":"2016-04-13 21:21:08.000000000","message":"I\u0027ll comment this with my next revision, thanks!","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d68bdb3e684211ab840aa77fafad784ee24e6075","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    3. Reboots the bare metal node."},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1010,"context_line":"    :param manage_boot: DEPRECATED. This parameter is now ignored."},{"line_number":1011,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1012,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1013,"context_line":"        be removed or if new cleaning ports cannot be created"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_24500a5d","line":1010,"updated":"2016-04-13 21:15:07.000000000","message":"deprecated does not mean ignored. I thought it meant that it will be removed in the future, but is still handled properly during the deprecation period.\n\nBasically it is ignored cuz it is wrong? Can you think of another usecase where someone might want to configure this so it doesn\u0027t always boot when starting the cleaning process? Although if this code is *only* used with the agent...\n\nWhy not deprecate but leave it defaulting to True with the code that was there, but put the warning below if it was passed with False?","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9e45f3c686e285b710b155a12e210c9d93bcb05a","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    3. Reboots the bare metal node."},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1010,"context_line":"    :param manage_boot: DEPRECATED. This parameter is now ignored."},{"line_number":1011,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1012,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1013,"context_line":"        be removed or if new cleaning ports cannot be created"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_8e9ad861","line":1010,"in_reply_to":"5a18252c_24500a5d","updated":"2016-04-13 21:21:08.000000000","message":"IMO the behavior of this option was always wrong, and is the core cause of the bug this is resolving. This is why I implemented the deprecation this way. If consensus says that keeping the previous, incorrect behavior intact is the better way to deprecate, I\u0027ll go with that, but in this case I think we\u0027re fixing something that\u0027s invalid, so I\u0027m more-okay with completely ignoring the parameter.","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fdde263a97a5d51c86457ad8fc0aa05220cf7da6","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"    3. Reboots the bare metal node."},{"line_number":1008,"context_line":""},{"line_number":1009,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1010,"context_line":"    :param manage_boot: DEPRECATED. This parameter is now ignored."},{"line_number":1011,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1012,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1013,"context_line":"        be removed or if new cleaning ports cannot be created"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_ae08742e","line":1010,"in_reply_to":"5a18252c_8e9ad861","updated":"2016-04-13 21:37:19.000000000","message":"In that case, I\u0027d put more comments there explaining why it is ignored. Cuz it was wrong :) Ie, something like \u0027DEPRECATED. It was used to blah blah, but that was a bug, so now it is ignored (to not break out-of-tree drivers) and we always bleh bleh now. I think this is close to being approved, so it would be worth mentioning that it will be removed in the O* (I forgot the name) cycle.","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"788d9aada7464d57619cb61b9bc453069e74b33e","unresolved":false,"context_lines":[{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1012,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1013,"context_line":"        was invalid."},{"line_number":1014,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1015,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1016,"context_line":"        be removed or if new cleaning ports cannot be created"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a18252c_88d61e4d","line":1013,"updated":"2016-04-14 16:53:08.000000000","message":"I think we still need to mention that it is deprecated and will be removed in a future (O*) release.","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2f0f3c6972e97890101c51a7005a612298b4628e","unresolved":false,"context_lines":[{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1012,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1013,"context_line":"        was invalid."},{"line_number":1014,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1015,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1016,"context_line":"        be removed or if new cleaning ports cannot be created"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_bfc48540","line":1013,"in_reply_to":"5a18252c_88d61e4d","updated":"2016-04-15 16:52:14.000000000","message":"Done","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"36e1535cdf693bcc372f25fc222710a2ae502907","unresolved":false,"context_lines":[{"line_number":107,"context_line":"# for prepare_ramdisk and prepare_inband_cleaning."},{"line_number":108,"context_line":"# TODO(JayF): Remove during Ocata cycle."},{"line_number":109,"context_line":"prep_cleaning_mb_deprecation_seen \u003d False"},{"line_number":110,"context_line":"td_cleaning_mb_deprecation_seen \u003d False"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"# All functions are called from deploy() directly or indirectly."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a122d0e_87acdfee","line":110,"updated":"2016-04-15 18:12:07.000000000","message":"Here\u0027s an alternative to having globals lying around :\nSince the warning seen is clearly related to the task.driver you could add it as a dynamic attribute:\n\nif ! hasattr(task.driver, \"deprecation_seen\"):\n   log the warning\n   setattr(task.driver, \"deprecation_seen\", True)\n\nYou can even put the name in a CONSTANT for better rafactorability","commit_id":"443d38b1d077d009e98685fe6f049e99ab621e79"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"abb9758e8ade6904c880af6bd0ec2cc18cbbdcdc","unresolved":false,"context_lines":[{"line_number":107,"context_line":"# for prepare_ramdisk and prepare_inband_cleaning."},{"line_number":108,"context_line":"# TODO(JayF): Remove during Ocata cycle."},{"line_number":109,"context_line":"prep_cleaning_mb_deprecation_seen \u003d False"},{"line_number":110,"context_line":"td_cleaning_mb_deprecation_seen \u003d False"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"# All functions are called from deploy() directly or indirectly."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a122d0e_00d9d021","line":110,"in_reply_to":"1a122d0e_87acdfee","updated":"2016-04-15 23:24:26.000000000","message":"When implementing your suggestion, my unit tests show this strategy is ineffective;\n\nironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_deprecation\n-------------------------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    b\u0027Traceback (most recent call last):\u0027\n    b\u0027  File \"/data/Users/jason.faulkner/dev/ironic/.tox/py34/lib/python3.4/site-packages/mock/mock.py\", line 1305, in patched\u0027\n    b\u0027    return func(*args, **keywargs)\u0027\n    b\u0027  File \"/data/Users/jason.faulkner/dev/ironic/ironic/tests/unit/drivers/modules/test_deploy_utils.py\", line 1794, in test_tear_down_inband_cleaning_deprecation\u0027\n    b\u0027    self.assertEqual(1, log_mock.call_count)\u0027\n    b\u0027  File \"/data/Users/jason.faulkner/dev/ironic/.tox/py34/lib/python3.4/site-packages/testtools/testcase.py\", line 362, in assertEqual\u0027\n    b\u0027    self.assertThat(observed, matcher, message)\u0027\n    b\u0027  File \"/data/Users/jason.faulkner/dev/ironic/.tox/py34/lib/python3.4/site-packages/testtools/testcase.py\", line 447, in assertThat\u0027\n    b\u0027    raise mismatch_error\u0027\n    b\u0027testtools.matchers._impl.MismatchError: 1 !\u003d 2\u0027\n    b\u0027\u0027\n\nwith the relevant copy of one of the methods here: https://gist.github.com/jayofdoom/3b1282fae5ee0ace28a90025119d2fee\n\nand the tests being run are unchanged.\n\nIf you have a suggestion on how to make this work, I\u0027m all ears, but it appears this doesn\u0027t work in the way you suggested.","commit_id":"443d38b1d077d009e98685fe6f049e99ab621e79"},{"author":{"_account_id":7080,"name":"Mathieu Mitchell","email":"mat128@gmail.com","username":"mat128"},"change_message_id":"1a792686e479c57735eea25850ac88b25d25ac04","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1021,"context_line":"                        \u0027no longer supported, and ignored. This deprecated \u0027"},{"line_number":1022,"context_line":"                        \u0027argument will be removed in the Ocata release. \u0027"},{"line_number":1023,"context_line":"                        \u0027Please update your driver: %(driver)s\u0027) %"},{"line_number":1024,"context_line":"                    {\u0027driver\u0027: task.driver})"},{"line_number":1025,"context_line":"        prep_cleaning_mb_deprecation_seen \u003d True"},{"line_number":1026,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a122d0e_74c9745a","line":1023,"updated":"2016-04-21 18:46:30.000000000","message":"This logs \"Passing manage_boot to tear_down_inband_cleaning is no longer supported, and ignored. This deprecated argument will be removed in the Ocata release. Please update your driver: \u003cironic.drivers.base.BareDriver object at 0x10d5f5c50\u003e\" in the test.","commit_id":"443d38b1d077d009e98685fe6f049e99ab621e79"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"aef208260a8311ce27a2ee15689856acfa8a2c19","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"    3. Reboots the bare metal node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1014,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1015,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1016,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_66bdef67","line":1014,"updated":"2016-06-29 14:44:45.000000000","message":"Nit: \"the previous behavior\"","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7fd6c037ad06a58261119518c8aa58dcf981d3e1","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"    3. Reboots the bare metal node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1014,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1015,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1016,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_83acfb9f","line":1014,"in_reply_to":"3aaa91ec_091f97b7","updated":"2016-06-30 20:48:33.000000000","message":"Will fix but am out for a while; would appreciate if it would be accepted for this to be a followup patch.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e3b6bdc1b40daff8d4470778a2740a107333d727","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"    3. Reboots the bare metal node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1014,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1015,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1016,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_091f97b7","line":1014,"in_reply_to":"3aaa91ec_56b15d8e","updated":"2016-06-30 17:37:18.000000000","message":"Vasyl, that is British English ;)\n\nAmerican English is:\n http://www.merriam-webster.com/dictionary/behavior","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d889f78d9c3aa2a72a1c4140cda46ca89fdd98ef","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"    3. Reboots the bare metal node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1014,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1015,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1016,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_56b15d8e","line":1014,"in_reply_to":"3aaa91ec_66bdef67","updated":"2016-06-30 07:34:41.000000000","message":"s/behavior/behaviour","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"    3. Reboots the bare metal node."},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1014,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1015,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1016,"context_line":"    :returns: states.CLEANWAIT to signify an asynchronous prepare."},{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa6399be_cdf35b09","line":1014,"in_reply_to":"3aaa91ec_83acfb9f","updated":"2016-10-11 19:17:33.000000000","message":"US English should be fine.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d889f78d9c3aa2a72a1c4140cda46ca89fdd98ef","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1018,"context_line":"        be removed or if new cleaning ports cannot be created"},{"line_number":1019,"context_line":"    \"\"\""},{"line_number":1020,"context_line":"    if manage_boot is not None:"},{"line_number":1021,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1022,"context_line":"                        \u0027no longer supported, and ignored. This deprecated \u0027"},{"line_number":1023,"context_line":"                        \u0027argument will be removed in the Ocata release. \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_11a87f8b","line":1020,"updated":"2016-06-30 07:34:41.000000000","message":"The deprecation warning message should be shown only once https://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html#operator-deprecation-warnings","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7fd6c037ad06a58261119518c8aa58dcf981d3e1","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1018,"context_line":"        be removed or if new cleaning ports cannot be created"},{"line_number":1019,"context_line":"    \"\"\""},{"line_number":1020,"context_line":"    if manage_boot is not None:"},{"line_number":1021,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1022,"context_line":"                        \u0027no longer supported, and ignored. This deprecated \u0027"},{"line_number":1023,"context_line":"                        \u0027argument will be removed in the Ocata release. \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_c3cba370","line":1020,"in_reply_to":"3aaa91ec_11a87f8b","updated":"2016-06-30 20:48:33.000000000","message":"There was a lot of discussion about how these messages should be printed in earlier patchsets and in IRC. Due to technical constraints and the idea this isn\u0027t exactly an operator warning, this method was chosen for displaying the deprecation message.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"    :raises NodeCleaningFailure: if the previous cleaning ports cannot"},{"line_number":1018,"context_line":"        be removed or if new cleaning ports cannot be created"},{"line_number":1019,"context_line":"    \"\"\""},{"line_number":1020,"context_line":"    if manage_boot is not None:"},{"line_number":1021,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to prepare_inband_cleaning is \u0027"},{"line_number":1022,"context_line":"                        \u0027no longer supported, and ignored. This deprecated \u0027"},{"line_number":1023,"context_line":"                        \u0027argument will be removed in the Ocata release. \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa6399be_b8990771","line":1020,"in_reply_to":"3aaa91ec_c3cba370","updated":"2016-10-11 19:17:33.000000000","message":"How is this not just an operator warning about configuration, and what\u0027s the technical limitation? I\u0027m also wondering if we should bump the deprecation to Pike since this isn\u0027t yet merged and we\u0027re starting a new cycle.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"aef208260a8311ce27a2ee15689856acfa8a2c19","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"    of cleaning."},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1054,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1055,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1056,"context_line":"    :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":1057,"context_line":"        removed."}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_267f67ac","line":1054,"updated":"2016-06-29 14:44:45.000000000","message":"As above","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d889f78d9c3aa2a72a1c4140cda46ca89fdd98ef","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"    of cleaning."},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1054,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1055,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1056,"context_line":"    :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":1057,"context_line":"        removed."}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_5114c742","line":1054,"range":{"start_line":1054,"start_character":66,"end_line":1054,"end_character":74},"updated":"2016-06-30 07:34:41.000000000","message":"ditto","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"    of cleaning."},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    :param task: a TaskManager object containing the node"},{"line_number":1054,"context_line":"    :param manage_boot: This parameter is now ignored as previous behavior"},{"line_number":1055,"context_line":"        was invalid. It is deprecated and will be removed during Ocata cycle."},{"line_number":1056,"context_line":"    :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":1057,"context_line":"        removed."}],"source_content_type":"text/x-python","patch_set":17,"id":"fa6399be_f8a37f9c","line":1054,"range":{"start_line":1054,"start_character":66,"end_line":1054,"end_character":74},"in_reply_to":"3aaa91ec_5114c742","updated":"2016-10-11 19:17:33.000000000","message":"US English is fine","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d889f78d9c3aa2a72a1c4140cda46ca89fdd98ef","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"    :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":1057,"context_line":"        removed."},{"line_number":1058,"context_line":"    \"\"\""},{"line_number":1059,"context_line":"    if manage_boot is not None:"},{"line_number":1060,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1061,"context_line":"                        \u0027no longer supported, and ignored. This deprecated \u0027"},{"line_number":1062,"context_line":"                        \u0027argument will be removed in the Ocata release. \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_f1833301","line":1059,"updated":"2016-06-30 07:34:41.000000000","message":"ditto","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"    :raises NodeCleaningFailure: if the cleaning ports cannot be"},{"line_number":1057,"context_line":"        removed."},{"line_number":1058,"context_line":"    \"\"\""},{"line_number":1059,"context_line":"    if manage_boot is not None:"},{"line_number":1060,"context_line":"        LOG.warning(_LW(\u0027Passing manage_boot to tear_down_inband_cleaning is \u0027"},{"line_number":1061,"context_line":"                        \u0027no longer supported, and ignored. This deprecated \u0027"},{"line_number":1062,"context_line":"                        \u0027argument will be removed in the Ocata release. \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa6399be_78b68fdd","line":1059,"in_reply_to":"3aaa91ec_f1833301","updated":"2016-10-11 19:17:33.000000000","message":"Discussed on L1020","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d47611d4a2a8fb86997d857eef6e0824093c4c10","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"        cannot be removed or if new cleaning ports cannot be created."},{"line_number":1077,"context_line":"    :raises: InvalidParameterValue if cleaning network UUID config option has"},{"line_number":1078,"context_line":"        an invalid value."},{"line_number":1079,"context_line":"    \"\"\""},{"line_number":1080,"context_line":"    prepare_cleaning_ports(task)"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"    # Append required config parameters to node\u0027s driver_internal_info"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_f5c8eb76","line":1079,"updated":"2016-11-15 14:45:36.000000000","message":"food for thought: Are we keeping the manage_boot parameter here due potential out-of-tree drivers using this method ?\n\nIf so, it would be good to log a warning message about removing it next cycle so people will be aware and update their code.","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"06a299660103abf479b9b4589edb5fa1de5e2be2","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"        cannot be removed or if new cleaning ports cannot be created."},{"line_number":1077,"context_line":"    :raises: InvalidParameterValue if cleaning network UUID config option has"},{"line_number":1078,"context_line":"        an invalid value."},{"line_number":1079,"context_line":"    \"\"\""},{"line_number":1080,"context_line":"    prepare_cleaning_ports(task)"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"    # Append required config parameters to node\u0027s driver_internal_info"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_cad22100","line":1079,"in_reply_to":"7a77a97e_f5c8eb76","updated":"2016-11-16 20:11:41.000000000","message":"Yes.\n\nThere was a discussion about this on previous patch sets [1] where there were -1s because OpenStack policy says that deprecation warnings should appear once on service startup and not again after that: https://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html#operator-deprecation-warnings\n\n[1]  https://review.openstack.org/#/c/263842/17/ironic/drivers/modules/deploy_utils.py","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d47611d4a2a8fb86997d857eef6e0824093c4c10","unresolved":false,"context_lines":[{"line_number":1108,"context_line":"        was invalid. It is deprecated and will be removed during Pike cycle."},{"line_number":1109,"context_line":"    :raises: NetworkError, NodeCleaningFailure if the cleaning ports cannot be"},{"line_number":1110,"context_line":"        removed."},{"line_number":1111,"context_line":"    \"\"\""},{"line_number":1112,"context_line":"    manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":1113,"context_line":"    task.driver.boot.clean_up_ramdisk(task)"},{"line_number":1114,"context_line":"    tear_down_cleaning_ports(task)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_55a6ffc1","line":1111,"updated":"2016-11-15 14:45:36.000000000","message":"ditto manage_boot","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"06a299660103abf479b9b4589edb5fa1de5e2be2","unresolved":false,"context_lines":[{"line_number":1108,"context_line":"        was invalid. It is deprecated and will be removed during Pike cycle."},{"line_number":1109,"context_line":"    :raises: NetworkError, NodeCleaningFailure if the cleaning ports cannot be"},{"line_number":1110,"context_line":"        removed."},{"line_number":1111,"context_line":"    \"\"\""},{"line_number":1112,"context_line":"    manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":1113,"context_line":"    task.driver.boot.clean_up_ramdisk(task)"},{"line_number":1114,"context_line":"    tear_down_cleaning_ports(task)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_eacd1d5e","line":1111,"in_reply_to":"7a77a97e_55a6ffc1","updated":"2016-11-16 20:11:41.000000000","message":"see L1079","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"}],"ironic/drivers/modules/fake.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"a262d0d6951022d4a7f88ae74ee7b89c8e724391","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def validate(self, task):"},{"line_number":64,"context_line":"        pass"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def prepare_ramdisk(self, task, ramdisk_opts):"},{"line_number":67,"context_line":"        pass"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def clean_up_ramdisk(self, task):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_25d9d257","line":66,"updated":"2016-03-31 21:43:48.000000000","message":"I dont understand wy you\u0027re changing the function sig here. maybe just left over from old patch set?","commit_id":"cd48819a92535e3dc48a516fcbe94309aa141eda"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"2b316f07a0251e965d8e69d487b79950856fec7a","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            props \u003d [\u0027kernel\u0027, \u0027ramdisk\u0027]"},{"line_number":426,"context_line":"        deploy_utils.validate_image_properties(task.context, d_info, props)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def prepare_ramdisk(self, task, ramdisk_params, manage_boot):"},{"line_number":429,"context_line":"        \"\"\"Prepares the boot of Ironic ramdisk using PXE."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        This method prepares the boot of the deploy kernel/ramdisk."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_a997128f","line":428,"updated":"2016-02-10 20:51:59.000000000","message":"what if an out of tree power driver is mixed with the PXE deploy driver?","commit_id":"be0eb1f5290ecbe427dd0bcfe5d695df745bdf81"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"b72c7f2f5026fb8eb27f7dd61b89fa3c11ba4bf8","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        instance_info."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        :param task: a task from TaskManager."},{"line_number":441,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk."},{"line_number":442,"context_line":"            pxe driver passes these parameters as kernel command-line"},{"line_number":443,"context_line":"            arguments."},{"line_number":444,"context_line":"        :returns: None"},{"line_number":445,"context_line":"        :raises: MissingParameterValue, if some information is missing in"},{"line_number":446,"context_line":"            node\u0027s driver_info or instance_info."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_25eea78b","side":"PARENT","line":443,"range":{"start_line":441,"start_character":0,"end_line":443,"end_character":22},"updated":"2016-03-29 06:29:24.000000000","message":"ditto, I think you have to re-base your patch on master, there are some changes merged.","commit_id":"7bdfdf048ef26c250049d0909d3c32ec9993562c"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a6620d40a0575135b904a57860d9864ee0cc6c54","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        instance_info."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        :param task: a task from TaskManager."},{"line_number":441,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk."},{"line_number":442,"context_line":"            pxe driver passes these parameters as kernel command-line"},{"line_number":443,"context_line":"            arguments."},{"line_number":444,"context_line":"        :returns: None"},{"line_number":445,"context_line":"        :raises: MissingParameterValue, if some information is missing in"},{"line_number":446,"context_line":"            node\u0027s driver_info or instance_info."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_c1417f0d","side":"PARENT","line":443,"range":{"start_line":441,"start_character":0,"end_line":443,"end_character":22},"in_reply_to":"ba0121b8_25eea78b","updated":"2016-03-29 15:42:56.000000000","message":"This was a bad rebase on my part; nice catch and I\u0027ll try to clean it up.","commit_id":"7bdfdf048ef26c250049d0909d3c32ec9993562c"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"b72c7f2f5026fb8eb27f7dd61b89fa3c11ba4bf8","unresolved":false,"context_lines":[{"line_number":89,"context_line":"               default\u003d\u00274\u0027,"},{"line_number":90,"context_line":"               choices\u003d[\u00274\u0027, \u00276\u0027],"},{"line_number":91,"context_line":"               help\u003d_(\u0027The IP version that will be used for PXE booting. \u0027"},{"line_number":92,"context_line":"                      \u0027Can be either 4 or 6. Defaults to 4. EXPERIMENTAL\u0027)),"},{"line_number":93,"context_line":"    cfg.StrOpt(\u0027manage_pxe_boot\u0027,"},{"line_number":94,"context_line":"               default\u003dTrue,"},{"line_number":95,"context_line":"               deprecated_opts\u003d["}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_05656344","line":92,"range":{"start_line":92,"start_character":23,"end_line":92,"end_character":45},"updated":"2016-03-29 06:29:24.000000000","message":"This is not needed any more since we already have choices and will output it as possible values/allowed values","commit_id":"b2effeaafcac8e7b569ec73a29b5ef2c411365b8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a6620d40a0575135b904a57860d9864ee0cc6c54","unresolved":false,"context_lines":[{"line_number":89,"context_line":"               default\u003d\u00274\u0027,"},{"line_number":90,"context_line":"               choices\u003d[\u00274\u0027, \u00276\u0027],"},{"line_number":91,"context_line":"               help\u003d_(\u0027The IP version that will be used for PXE booting. \u0027"},{"line_number":92,"context_line":"                      \u0027Can be either 4 or 6. Defaults to 4. EXPERIMENTAL\u0027)),"},{"line_number":93,"context_line":"    cfg.StrOpt(\u0027manage_pxe_boot\u0027,"},{"line_number":94,"context_line":"               default\u003dTrue,"},{"line_number":95,"context_line":"               deprecated_opts\u003d["}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_01fa57bd","line":92,"range":{"start_line":92,"start_character":23,"end_line":92,"end_character":45},"in_reply_to":"ba0121b8_05656344","updated":"2016-03-29 15:42:56.000000000","message":"Another bad rebase artifact; will fix.","commit_id":"b2effeaafcac8e7b569ec73a29b5ef2c411365b8"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"b72c7f2f5026fb8eb27f7dd61b89fa3c11ba4bf8","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        the deploy ramdisk. It unlinks the deploy kernel/ramdisk in the node\u0027s"},{"line_number":503,"context_line":"        directory in tftproot and removes it\u0027s PXE config."},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        If CONF.pxe.manage_pxe_boot is set, don\u0027t do anything as there\u0027s"},{"line_number":506,"context_line":"        nothing to clean up."},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        :param task: a task from TaskManager."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_8574d3cf","line":505,"range":{"start_line":505,"start_character":39,"end_line":505,"end_character":42},"updated":"2016-03-29 06:29:24.000000000","message":"nit:set to False, I assume this is what you mean","commit_id":"b2effeaafcac8e7b569ec73a29b5ef2c411365b8"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a6620d40a0575135b904a57860d9864ee0cc6c54","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        the deploy ramdisk. It unlinks the deploy kernel/ramdisk in the node\u0027s"},{"line_number":503,"context_line":"        directory in tftproot and removes it\u0027s PXE config."},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        If CONF.pxe.manage_pxe_boot is set, don\u0027t do anything as there\u0027s"},{"line_number":506,"context_line":"        nothing to clean up."},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        :param task: a task from TaskManager."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_61eeb323","line":505,"range":{"start_line":505,"start_character":39,"end_line":505,"end_character":42},"in_reply_to":"ba0121b8_8574d3cf","updated":"2016-03-29 15:42:56.000000000","message":"Done","commit_id":"b2effeaafcac8e7b569ec73a29b5ef2c411365b8"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"91305730dccb9baff90cef8666a9f1a30242c633","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               choices\u003d[\u00274\u0027, \u00276\u0027],"},{"line_number":91,"context_line":"               help\u003d_(\u0027The IP version that will be used for PXE booting. \u0027"},{"line_number":92,"context_line":"                      \u0027Defaults to 4. EXPERIMENTAL\u0027)),"},{"line_number":93,"context_line":"    cfg.StrOpt(\u0027manage_ramdisk_boot\u0027,"},{"line_number":94,"context_line":"               default\u003dTrue,"},{"line_number":95,"context_line":"               deprecated_opts\u003d["},{"line_number":96,"context_line":"                   cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_0e96bf3e","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":14},"updated":"2016-03-30 15:33:47.000000000","message":"should be BoolOpt, and need to regenerate the sample config file.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               choices\u003d[\u00274\u0027, \u00276\u0027],"},{"line_number":91,"context_line":"               help\u003d_(\u0027The IP version that will be used for PXE booting. \u0027"},{"line_number":92,"context_line":"                      \u0027Defaults to 4. EXPERIMENTAL\u0027)),"},{"line_number":93,"context_line":"    cfg.StrOpt(\u0027manage_ramdisk_boot\u0027,"},{"line_number":94,"context_line":"               default\u003dTrue,"},{"line_number":95,"context_line":"               deprecated_opts\u003d["},{"line_number":96,"context_line":"                   cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_dc1bddc8","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":14},"in_reply_to":"ba0121b8_0e96bf3e","updated":"2016-03-30 16:19:14.000000000","message":"Done","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"5aad04da9cab90a858fb0f0e7882ab482bdd1d91","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        \"\"\""},{"line_number":407,"context_line":"        # Do not validate settings related to PXE configs unless"},{"line_number":408,"context_line":"        # ironic is managing the pxe boot"},{"line_number":409,"context_line":"        if not CONF.pxe.manage_ramdisk_boot:"},{"line_number":410,"context_line":"            return"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_a6e0c8cd","line":409,"updated":"2016-03-30 01:42:58.000000000","message":"Do you think it is necessary to have a warning or info to say: user boot ramdisk by himself and skip validation.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        \"\"\""},{"line_number":407,"context_line":"        # Do not validate settings related to PXE configs unless"},{"line_number":408,"context_line":"        # ironic is managing the pxe boot"},{"line_number":409,"context_line":"        if not CONF.pxe.manage_ramdisk_boot:"},{"line_number":410,"context_line":"            return"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_f156ca28","line":409,"in_reply_to":"ba0121b8_a6e0c8cd","updated":"2016-03-30 16:19:14.000000000","message":"Given this is a non-default setting; I would imagine the operator knows it\u0027s set this way. I would personally be against adding more non-actionable logs like this.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"5aad04da9cab90a858fb0f0e7882ab482bdd1d91","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        :raises: IronicException, if some power or set boot boot device"},{"line_number":467,"context_line":"            operation failed on the node."},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":470,"context_line":"            node \u003d task.node"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"            # TODO(deva): optimize this if rerun on existing files"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_06e894b3","line":469,"updated":"2016-03-30 01:42:58.000000000","message":"ditto","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        :raises: IronicException, if some power or set boot boot device"},{"line_number":467,"context_line":"            operation failed on the node."},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":470,"context_line":"            node \u003d task.node"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"            # TODO(deva): optimize this if rerun on existing files"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_5c86addb","line":469,"in_reply_to":"ba0121b8_06e894b3","updated":"2016-03-30 16:19:14.000000000","message":"I\u0027m still on the side of no log for this as well.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"5aad04da9cab90a858fb0f0e7882ab482bdd1d91","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        :param task: a task from TaskManager."},{"line_number":520,"context_line":"        :returns: None"},{"line_number":521,"context_line":"        \"\"\""},{"line_number":522,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":523,"context_line":"            node \u003d task.node"},{"line_number":524,"context_line":"            try:"},{"line_number":525,"context_line":"                images_info \u003d _get_deploy_image_info(node)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_46d28c01","line":522,"updated":"2016-03-30 01:42:58.000000000","message":"ditto","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        :param task: a task from TaskManager."},{"line_number":520,"context_line":"        :returns: None"},{"line_number":521,"context_line":"        \"\"\""},{"line_number":522,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":523,"context_line":"            node \u003d task.node"},{"line_number":524,"context_line":"            try:"},{"line_number":525,"context_line":"                images_info \u003d _get_deploy_image_info(node)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_fc7501fa","line":522,"in_reply_to":"ba0121b8_46d28c01","updated":"2016-03-30 16:19:14.000000000","message":"same as above ^ :)","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"cb83291f989b3de3cd7f9de0721c81a8c153e364","unresolved":false,"context_lines":[{"line_number":579,"context_line":"            else:"},{"line_number":580,"context_line":"                pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":581,"context_line":"                    task.node.uuid)"},{"line_number":582,"context_line":"                deploy_utils.switch_pxe_config("},{"line_number":583,"context_line":"                    pxe_config_path, root_uuid_or_disk_id,"},{"line_number":584,"context_line":"                    deploy_utils.get_boot_mode_for_deploy(node),"},{"line_number":585,"context_line":"                    iwdi, deploy_utils.is_trusted_boot_requested(node))"},{"line_number":586,"context_line":"                # In case boot mode changes from bios to uefi, boot device"},{"line_number":587,"context_line":"                # order may get lost in some platforms. Better to re-apply"},{"line_number":588,"context_line":"                # boot device."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_e4e1f19b","line":585,"range":{"start_line":582,"start_character":16,"end_line":585,"end_character":71},"updated":"2016-03-30 14:44:44.000000000","message":"Check needs to be present in all the driver methods. \nIt will not be able to switch pxe config file as it was not created by Ironic.\nIronic creates pxe config files in prepare_ramdisk()\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/pxe.py#L482-L483\n\nThis option would be applicable to all PXE driver methods and could break the PXE driver implementations if it is enabled.","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"64d9116bfe15b3938dcaa836d1b53d0956987227","unresolved":false,"context_lines":[{"line_number":579,"context_line":"            else:"},{"line_number":580,"context_line":"                pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":581,"context_line":"                    task.node.uuid)"},{"line_number":582,"context_line":"                deploy_utils.switch_pxe_config("},{"line_number":583,"context_line":"                    pxe_config_path, root_uuid_or_disk_id,"},{"line_number":584,"context_line":"                    deploy_utils.get_boot_mode_for_deploy(node),"},{"line_number":585,"context_line":"                    iwdi, deploy_utils.is_trusted_boot_requested(node))"},{"line_number":586,"context_line":"                # In case boot mode changes from bios to uefi, boot device"},{"line_number":587,"context_line":"                # order may get lost in some platforms. Better to re-apply"},{"line_number":588,"context_line":"                # boot device."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_6ec63469","line":585,"range":{"start_line":582,"start_character":16,"end_line":585,"end_character":71},"in_reply_to":"ba0121b8_7cb45181","updated":"2016-03-31 10:05:46.000000000","message":"It\u0027s really a strange case, but I wonder if you didn\u0027t create a config in prepare_ramdisk(), how do you get the pxe_config_path in prepare_instance()?","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"e35613629bc46981f3b183e0c39cc747c3852bee","unresolved":false,"context_lines":[{"line_number":579,"context_line":"            else:"},{"line_number":580,"context_line":"                pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":581,"context_line":"                    task.node.uuid)"},{"line_number":582,"context_line":"                deploy_utils.switch_pxe_config("},{"line_number":583,"context_line":"                    pxe_config_path, root_uuid_or_disk_id,"},{"line_number":584,"context_line":"                    deploy_utils.get_boot_mode_for_deploy(node),"},{"line_number":585,"context_line":"                    iwdi, deploy_utils.is_trusted_boot_requested(node))"},{"line_number":586,"context_line":"                # In case boot mode changes from bios to uefi, boot device"},{"line_number":587,"context_line":"                # order may get lost in some platforms. Better to re-apply"},{"line_number":588,"context_line":"                # boot device."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_7cb45181","line":585,"range":{"start_line":582,"start_character":16,"end_line":585,"end_character":71},"in_reply_to":"ba0121b8_e4e1f19b","updated":"2016-03-30 16:19:14.000000000","message":"Note that the option, in this case, is manage_ramdisk_boot, I specifically am trying to avoid having this method impact other pieces inside the pxe driver, as essentially it would break entire sets of use cases. Remember I\u0027m solving specifically for a bug where Ironic wouldn\u0027t set pxe boot via BMC for cleaning ramdisk.\n\nAlso it\u0027s possible for a user to have static DHCP on provisioning/cleaning network *but* still use Ironic for DHCP of instances (I know it sounds strange, and I don\u0027t run it this way either, but IMO leaving this as a possibility is better than basically breaking half of the use cases in the pxe driver).","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"a262d0d6951022d4a7f88ae74ee7b89c8e724391","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               choices\u003d[\u00274\u0027, \u00276\u0027],"},{"line_number":91,"context_line":"               help\u003d_(\u0027The IP version that will be used for PXE booting. \u0027"},{"line_number":92,"context_line":"                      \u0027Defaults to 4. EXPERIMENTAL\u0027)),"},{"line_number":93,"context_line":"    cfg.BoolOpt(\u0027manage_ramdisk_boot\u0027,"},{"line_number":94,"context_line":"                default\u003dTrue,"},{"line_number":95,"context_line":"                deprecated_opts\u003d["},{"line_number":96,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_85aa5e83","line":93,"updated":"2016-03-31 21:43:48.000000000","message":"I think this option should be defined in a different module because of non-pxe-based boot methods (eg. vmedia-based drivers) that also will be affected by this.","commit_id":"cd48819a92535e3dc48a516fcbe94309aa141eda"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8d44e0a9a7b7bc95d8ba99a49e534fb73d686b69","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               choices\u003d[\u00274\u0027, \u00276\u0027],"},{"line_number":91,"context_line":"               help\u003d_(\u0027The IP version that will be used for PXE booting. \u0027"},{"line_number":92,"context_line":"                      \u0027Defaults to 4. EXPERIMENTAL\u0027)),"},{"line_number":93,"context_line":"    cfg.BoolOpt(\u0027manage_ramdisk_boot\u0027,"},{"line_number":94,"context_line":"                default\u003dTrue,"},{"line_number":95,"context_line":"                deprecated_opts\u003d["},{"line_number":96,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_tftp\u0027, group\u003d\u0027agent\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_05adae87","line":93,"in_reply_to":"ba0121b8_85aa5e83","updated":"2016-03-31 21:44:55.000000000","message":"never mind - i get it now. this intentionally only affects pxe drivers.","commit_id":"cd48819a92535e3dc48a516fcbe94309aa141eda"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"6288eac5e8d5ef2aa3702b0b8768a514d70ea6ff","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_agent_boot\u0027, group\u003d\u0027agent\u0027)],"},{"line_number":98,"context_line":"                help\u003d_(\u0027Whether Ironic will manage pxe booting of ramdisks. \u0027"},{"line_number":99,"context_line":"                       \u0027If set to False, you will need to configure your own \u0027"},{"line_number":100,"context_line":"                       \u0027mechanism to boot the needed ramdisk.\u0027)),"},{"line_number":101,"context_line":"]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_9a0ddcea","line":100,"updated":"2016-04-06 13:25:17.000000000","message":"I think it makes sense to add deprecated_reason to deprecated option. Please have look like it done in nova https://github.com/openstack/nova/blob/ce5f9c609f7938c5f80839dd86dfcb33ad796b1c/nova/virt/libvirt/driver.py#L175","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    cfg.DeprecatedOpt(\u0027manage_agent_boot\u0027, group\u003d\u0027agent\u0027)],"},{"line_number":98,"context_line":"                help\u003d_(\u0027Whether Ironic will manage pxe booting of ramdisks. \u0027"},{"line_number":99,"context_line":"                       \u0027If set to False, you will need to configure your own \u0027"},{"line_number":100,"context_line":"                       \u0027mechanism to boot the needed ramdisk.\u0027)),"},{"line_number":101,"context_line":"]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_60fb9a79","line":100,"in_reply_to":"9a061dce_9a0ddcea","updated":"2016-04-07 22:02:01.000000000","message":"That appears to only be for options that are being removed, not moved. There\u0027s no other Ironic deprecated option that specifies deprecated_reason.","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d68bdb3e684211ab840aa77fafad784ee24e6075","unresolved":false,"context_lines":[{"line_number":405,"context_line":"            missing."},{"line_number":406,"context_line":"        \"\"\""},{"line_number":407,"context_line":"        # Do not validate settings related to PXE configs unless"},{"line_number":408,"context_line":"        # ironic is managing the pxe boot"},{"line_number":409,"context_line":"        if not CONF.pxe.manage_ramdisk_boot:"},{"line_number":410,"context_line":"            return"},{"line_number":411,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_44c0a6e0","line":408,"updated":"2016-04-13 21:15:07.000000000","message":"or \u0027Only validate if ironic is managing the pxe boot\u0027.\n\ndouble negatives confuse me. Your call to change or not :)","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d68bdb3e684211ab840aa77fafad784ee24e6075","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        This method prepares the boot of the deploy kernel/ramdisk."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        Reads relevant information from the node\u0027s driver_info and"},{"line_number":455,"context_line":"        instance_info if CONF.pxe.manage_ramdisk_boot is True."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        :param task: a task from TaskManager."},{"line_number":458,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_3be148d1","line":455,"updated":"2016-04-13 21:15:07.000000000","message":"I think these changes are more confusing than what was originally there. Ie, if that config option is True, it does more than just reading relevant info.","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d68bdb3e684211ab840aa77fafad784ee24e6075","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        instance_info if CONF.pxe.manage_ramdisk_boot is True."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        :param task: a task from TaskManager."},{"line_number":458,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk"},{"line_number":459,"context_line":"            pxe driver passes these parameters as kernel command-line"},{"line_number":460,"context_line":"            arguments."},{"line_number":461,"context_line":"        :returns: None"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_7b5bc02e","line":458,"updated":"2016-04-13 21:15:07.000000000","message":"Why did you remove the period at the end of this?","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9e45f3c686e285b710b155a12e210c9d93bcb05a","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        the deploy ramdisk. It unlinks the deploy kernel/ramdisk in the node\u0027s"},{"line_number":514,"context_line":"        directory in tftproot and removes it\u0027s PXE config."},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"        If CONF.pxe.manage_ramdisk_boot is set, don\u0027t do anything as there\u0027s"},{"line_number":517,"context_line":"        nothing to clean up."},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        :param task: a task from TaskManager."}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_cecb3052","line":516,"updated":"2016-04-13 21:21:08.000000000","message":"this should be \"is False\"","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d68bdb3e684211ab840aa77fafad784ee24e6075","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        :param task: a task from TaskManager."},{"line_number":520,"context_line":"        :returns: None"},{"line_number":521,"context_line":"        \"\"\""},{"line_number":522,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":523,"context_line":"            node \u003d task.node"},{"line_number":524,"context_line":"            try:"},{"line_number":525,"context_line":"                images_info \u003d _get_deploy_image_info(node)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_dbcf747d","line":522,"updated":"2016-04-13 21:15:07.000000000","message":"This is doing something, even though the docstring at line 516 says it isn\u0027t doing anything?","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9e45f3c686e285b710b155a12e210c9d93bcb05a","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        :param task: a task from TaskManager."},{"line_number":520,"context_line":"        :returns: None"},{"line_number":521,"context_line":"        \"\"\""},{"line_number":522,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":523,"context_line":"            node \u003d task.node"},{"line_number":524,"context_line":"            try:"},{"line_number":525,"context_line":"                images_info \u003d _get_deploy_image_info(node)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_ced21000","line":522,"in_reply_to":"5a18252c_dbcf747d","updated":"2016-04-13 21:21:08.000000000","message":"Commented my pydoc above so I will fix it, that\u0027s what\u0027s  really wrong. We do nothing if CONF.pxe.manage_ramdisk_boot is set to False.","commit_id":"4b2be80f9f80c1b950fca9b0dd9abfd1e0184e37"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"788d9aada7464d57619cb61b9bc453069e74b33e","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        :param task: a task from TaskManager."},{"line_number":457,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk."},{"line_number":458,"context_line":"            The pxe driver passes these parameters as kernel command-line"},{"line_number":459,"context_line":"            arguments. Ignored if CONF.pxe_manage_ramdisk_boot is True."},{"line_number":460,"context_line":"        :returns: None"},{"line_number":461,"context_line":"        :raises: MissingParameterValue, if some information is missing in"},{"line_number":462,"context_line":"            node\u0027s driver_info or instance_info."}],"source_content_type":"text/x-python","patch_set":12,"id":"5a18252c_4bbfe0a9","line":459,"updated":"2016-04-14 16:53:08.000000000","message":"s/True/False/","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2f0f3c6972e97890101c51a7005a612298b4628e","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        :param task: a task from TaskManager."},{"line_number":457,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk."},{"line_number":458,"context_line":"            The pxe driver passes these parameters as kernel command-line"},{"line_number":459,"context_line":"            arguments. Ignored if CONF.pxe_manage_ramdisk_boot is True."},{"line_number":460,"context_line":"        :returns: None"},{"line_number":461,"context_line":"        :raises: MissingParameterValue, if some information is missing in"},{"line_number":462,"context_line":"            node\u0027s driver_info or instance_info."}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_9f46e9bd","line":459,"in_reply_to":"5a18252c_4bbfe0a9","updated":"2016-04-15 16:52:14.000000000","message":"Done","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"dabaa5163e5a400f07982b51bb3902875d29ced4","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        :param task: a task from TaskManager."},{"line_number":412,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk."},{"line_number":413,"context_line":"            The pxe driver passes these parameters as kernel command-line"},{"line_number":414,"context_line":"            arguments. Ignored if CONF.pxe_manage_ramdisk_boot is False."},{"line_number":415,"context_line":"        :returns: None"},{"line_number":416,"context_line":"        :raises: MissingParameterValue, if some information is missing in"},{"line_number":417,"context_line":"            node\u0027s driver_info or instance_info."}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_bb14e543","line":414,"range":{"start_line":414,"start_character":23,"end_line":414,"end_character":72},"updated":"2016-06-30 09:05:25.000000000","message":"If CONF.pxe_manage_ramdisk_boot is False this method only does set boot device.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        :param task: a task from TaskManager."},{"line_number":412,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk."},{"line_number":413,"context_line":"            The pxe driver passes these parameters as kernel command-line"},{"line_number":414,"context_line":"            arguments. Ignored if CONF.pxe_manage_ramdisk_boot is False."},{"line_number":415,"context_line":"        :returns: None"},{"line_number":416,"context_line":"        :raises: MissingParameterValue, if some information is missing in"},{"line_number":417,"context_line":"            node\u0027s driver_info or instance_info."}],"source_content_type":"text/x-python","patch_set":17,"id":"fa6399be_58c2ab34","line":414,"range":{"start_line":414,"start_character":23,"end_line":414,"end_character":72},"in_reply_to":"3aaa91ec_83835b02","updated":"2016-10-11 19:17:33.000000000","message":"Yup, the pydoc is correct.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7fd6c037ad06a58261119518c8aa58dcf981d3e1","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        :param task: a task from TaskManager."},{"line_number":412,"context_line":"        :param ramdisk_params: the parameters to be passed to the ramdisk."},{"line_number":413,"context_line":"            The pxe driver passes these parameters as kernel command-line"},{"line_number":414,"context_line":"            arguments. Ignored if CONF.pxe_manage_ramdisk_boot is False."},{"line_number":415,"context_line":"        :returns: None"},{"line_number":416,"context_line":"        :raises: MissingParameterValue, if some information is missing in"},{"line_number":417,"context_line":"            node\u0027s driver_info or instance_info."}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_83835b02","line":414,"range":{"start_line":414,"start_character":23,"end_line":414,"end_character":72},"in_reply_to":"3aaa91ec_bb14e543","updated":"2016-06-30 20:48:33.000000000","message":"This means my pydoc is correct. The ramdisk_params parameter is ignored if manage_ramdisk_boot is false.\n\nI will explicitly call this out in the main part of the pydoc, and fix the s/pxe_/pxe./ bug, but would prefer to do that in a follow-up patchset as I\u0027m out for a while and would like this landed.","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d47611d4a2a8fb86997d857eef6e0824093c4c10","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        :param task: a task from TaskManager."},{"line_number":435,"context_line":"        :returns: None"},{"line_number":436,"context_line":"        \"\"\""},{"line_number":437,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":438,"context_line":"            node \u003d task.node"},{"line_number":439,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_750cdb94","line":436,"updated":"2016-11-15 14:45:36.000000000","message":"nit: Avoid indentation when it\u0027s not needed, e.g:\n\n if not CONF.pxe.manage_ramdisk_boot:\n     return\n\n node \u003d task.node\n try:\n     ...","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"06a299660103abf479b9b4589edb5fa1de5e2be2","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        :param task: a task from TaskManager."},{"line_number":435,"context_line":"        :returns: None"},{"line_number":436,"context_line":"        \"\"\""},{"line_number":437,"context_line":"        if CONF.pxe.manage_ramdisk_boot:"},{"line_number":438,"context_line":"            node \u003d task.node"},{"line_number":439,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a77a97e_8a0d8992","line":436,"in_reply_to":"7a77a97e_750cdb94","updated":"2016-11-16 20:11:41.000000000","message":"Done","commit_id":"d74afd00e40ecd7a9a9dc5fba1a8ac52cacf9bc1"}],"ironic/tests/unit/drivers/modules/test_deploy_utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"788d9aada7464d57619cb61b9bc453069e74b33e","unresolved":false,"context_lines":[{"line_number":1730,"context_line":"        self.ports[0].refresh()"},{"line_number":1731,"context_line":"        self.assertNotIn(\u0027vif_port_id\u0027, self.ports[0].extra)"},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"    @mock.patch.object(utils, \u0027try_set_boot_device\u0027)"},{"line_number":1734,"context_line":"    @mock.patch.object(pxe.PXEBoot, \u0027prepare_ramdisk\u0027, autospec\u003dTrue)"},{"line_number":1735,"context_line":"    @mock.patch(\u0027ironic.conductor.utils.node_power_action\u0027, autospec\u003dTrue)"},{"line_number":1736,"context_line":"    @mock.patch.object(iscsi_deploy, \u0027build_deploy_ramdisk_options\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a18252c_77d0bef6","line":1733,"updated":"2016-04-14 16:53:08.000000000","message":"It isn\u0027t obvious to me why you need to mock this. I don\u0027t see utils.prepare_inband_cleaning() calling this.","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2f0f3c6972e97890101c51a7005a612298b4628e","unresolved":false,"context_lines":[{"line_number":1730,"context_line":"        self.ports[0].refresh()"},{"line_number":1731,"context_line":"        self.assertNotIn(\u0027vif_port_id\u0027, self.ports[0].extra)"},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"    @mock.patch.object(utils, \u0027try_set_boot_device\u0027)"},{"line_number":1734,"context_line":"    @mock.patch.object(pxe.PXEBoot, \u0027prepare_ramdisk\u0027, autospec\u003dTrue)"},{"line_number":1735,"context_line":"    @mock.patch(\u0027ironic.conductor.utils.node_power_action\u0027, autospec\u003dTrue)"},{"line_number":1736,"context_line":"    @mock.patch.object(iscsi_deploy, \u0027build_deploy_ramdisk_options\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_ffc6fd14","line":1733,"in_reply_to":"5a18252c_77d0bef6","updated":"2016-04-15 16:52:14.000000000","message":"Yep, I believe this is a vestige of old code that did need this. Good catch and ty.","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"788d9aada7464d57619cb61b9bc453069e74b33e","unresolved":false,"context_lines":[{"line_number":1765,"context_line":"        self._test_prepare_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1766,"context_line":"        # Second run should not"},{"line_number":1767,"context_line":"        self._test_prepare_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1768,"context_line":"        self.assertEqual(1, log_mock.called)"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    @mock.patch.object(pxe.PXEBoot, \u0027clean_up_ramdisk\u0027, autospec\u003dTrue)"},{"line_number":1771,"context_line":"    @mock.patch.object(utils, \u0027tear_down_cleaning_ports\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a18252c_77c27f35","line":1768,"updated":"2016-04-14 16:53:08.000000000","message":"log_mock.called is a Boolean, not an int. So if log_mock was called twice, this would still succeed.\n\nYou could use log_mock.assert_called_once_with(...). And if you really want to show it was called the first time, you could assert after line 1765 as well as here.","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2f0f3c6972e97890101c51a7005a612298b4628e","unresolved":false,"context_lines":[{"line_number":1765,"context_line":"        self._test_prepare_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1766,"context_line":"        # Second run should not"},{"line_number":1767,"context_line":"        self._test_prepare_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1768,"context_line":"        self.assertEqual(1, log_mock.called)"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    @mock.patch.object(pxe.PXEBoot, \u0027clean_up_ramdisk\u0027, autospec\u003dTrue)"},{"line_number":1771,"context_line":"    @mock.patch.object(utils, \u0027tear_down_cleaning_ports\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_9f90a9ee","line":1768,"in_reply_to":"5a18252c_77c27f35","updated":"2016-04-15 16:52:14.000000000","message":"I changed it to len(log_mock.calls), I didn\u0027t want to use assert_called_once_with() because I thought it would be silly to test against the exact loglines, especially since they are translated.","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"788d9aada7464d57619cb61b9bc453069e74b33e","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"        self._test_tear_down_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1791,"context_line":"        # Second run should not"},{"line_number":1792,"context_line":"        self._test_tear_down_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1793,"context_line":"        self.assertEqual(1, log_mock.called)"},{"line_number":1794,"context_line":""},{"line_number":1795,"context_line":"    def test_build_agent_options_conf(self):"},{"line_number":1796,"context_line":"        self.config(api_url\u003d\u0027api-url\u0027, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a18252c_f7d68e4d","line":1793,"updated":"2016-04-14 16:53:08.000000000","message":"ditto","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2f0f3c6972e97890101c51a7005a612298b4628e","unresolved":false,"context_lines":[{"line_number":1790,"context_line":"        self._test_tear_down_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1791,"context_line":"        # Second run should not"},{"line_number":1792,"context_line":"        self._test_tear_down_inband_cleaning(manage_boot\u003dTrue)"},{"line_number":1793,"context_line":"        self.assertEqual(1, log_mock.called)"},{"line_number":1794,"context_line":""},{"line_number":1795,"context_line":"    def test_build_agent_options_conf(self):"},{"line_number":1796,"context_line":"        self.config(api_url\u003d\u0027api-url\u0027, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_9fa7094f","line":1793,"in_reply_to":"5a18252c_f7d68e4d","updated":"2016-04-15 16:52:14.000000000","message":"Done","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"}],"ironic/tests/unit/drivers/modules/test_pxe.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"788d9aada7464d57619cb61b9bc453069e74b33e","unresolved":false,"context_lines":[{"line_number":578,"context_line":"            task.driver.boot.validate(task)"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        self.assertFalse(mock_bootmode.called)"},{"line_number":581,"context_line":"        self.assertFalse(mock_validate_caps.called)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    @mock.patch.object(base_image_service.BaseImageService, \u0027_show\u0027,"},{"line_number":584,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a18252c_06b4bf7f","line":581,"updated":"2016-04-14 16:53:08.000000000","message":"mock_glance wasn\u0027t called either. (Just seems odd to have mock_glance and not do anything with it. I\u0027m fine if you delete it, but others might want it still since the test_validate_good() has it.)","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2f0f3c6972e97890101c51a7005a612298b4628e","unresolved":false,"context_lines":[{"line_number":578,"context_line":"            task.driver.boot.validate(task)"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        self.assertFalse(mock_bootmode.called)"},{"line_number":581,"context_line":"        self.assertFalse(mock_validate_caps.called)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    @mock.patch.object(base_image_service.BaseImageService, \u0027_show\u0027,"},{"line_number":584,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_bf812592","line":581,"in_reply_to":"5a18252c_06b4bf7f","updated":"2016-04-15 16:52:14.000000000","message":"Done","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"788d9aada7464d57619cb61b9bc453069e74b33e","unresolved":false,"context_lines":[{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    @mock.patch.object(pxe, \u0027_clean_up_pxe_env\u0027, autospec\u003dTrue)"},{"line_number":780,"context_line":"    @mock.patch.object(pxe, \u0027_get_deploy_image_info\u0027, autospec\u003dTrue)"},{"line_number":781,"context_line":"    def test_clean_up_ramdisk(self, get_deploy_image_info_mock,"},{"line_number":782,"context_line":"                              clean_up_pxe_env_mock):"},{"line_number":783,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":784,"context_line":"            image_info \u003d {\u0027deploy_kernel\u0027: [\u0027\u0027, \u0027/path/to/deploy_kernel\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a18252c_41b18146","line":781,"updated":"2016-04-14 16:53:08.000000000","message":"Maybe add a test_clean_up_ramdisk_no_manage_boot()?","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2f0f3c6972e97890101c51a7005a612298b4628e","unresolved":false,"context_lines":[{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    @mock.patch.object(pxe, \u0027_clean_up_pxe_env\u0027, autospec\u003dTrue)"},{"line_number":780,"context_line":"    @mock.patch.object(pxe, \u0027_get_deploy_image_info\u0027, autospec\u003dTrue)"},{"line_number":781,"context_line":"    def test_clean_up_ramdisk(self, get_deploy_image_info_mock,"},{"line_number":782,"context_line":"                              clean_up_pxe_env_mock):"},{"line_number":783,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":784,"context_line":"            image_info \u003d {\u0027deploy_kernel\u0027: [\u0027\u0027, \u0027/path/to/deploy_kernel\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_5af61fd8","line":781,"in_reply_to":"5a18252c_41b18146","updated":"2016-04-15 16:52:14.000000000","message":"Done","commit_id":"c684a0af6ab77e840f1fd1cf010321ee614e9c21"}],"releasenotes/notes/bug-1531229-set-boot-device-before-cleaning-92498dfcd0cd80ae.yaml":[{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"5aad04da9cab90a858fb0f0e7882ab482bdd1d91","unresolved":false,"context_lines":[{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - This change deprecates the config option"},{"line_number":4,"context_line":"    agent.manage_agent_boot in favor of"},{"line_number":5,"context_line":"    pxe.manage_ramdisk_boot. Adjust configs accordingly."},{"line_number":6,"context_line":"  - This change also deprecates passing manage_boot kwarg"},{"line_number":7,"context_line":"    to prepare_inband_cleaning() and"},{"line_number":8,"context_line":"    tear_down_inband_cleaning() in deploy_utils. This kwarg"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ba0121b8_46b1ec8e","line":5,"range":{"start_line":5,"start_character":29,"end_line":5,"end_character":56},"updated":"2016-03-30 01:42:58.000000000","message":"wonder should we also have this explicit in upgrade section?","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0fbc29647fa15922fac99f921f7aa32f178f9a60","unresolved":false,"context_lines":[{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - This change deprecates the config option"},{"line_number":4,"context_line":"    agent.manage_agent_boot in favor of"},{"line_number":5,"context_line":"    pxe.manage_ramdisk_boot. Adjust configs accordingly."},{"line_number":6,"context_line":"  - This change also deprecates passing manage_boot kwarg"},{"line_number":7,"context_line":"    to prepare_inband_cleaning() and"},{"line_number":8,"context_line":"    tear_down_inband_cleaning() in deploy_utils. This kwarg"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ba0121b8_fc1b4171","line":5,"range":{"start_line":5,"start_character":29,"end_line":5,"end_character":56},"in_reply_to":"ba0121b8_46b1ec8e","updated":"2016-03-30 15:53:48.000000000","message":"+1","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b584030b5d5e50e597248051c7d330eecc32e048","unresolved":false,"context_lines":[{"line_number":2,"context_line":"deprecations:"},{"line_number":3,"context_line":"  - This change deprecates the config option"},{"line_number":4,"context_line":"    agent.manage_agent_boot in favor of"},{"line_number":5,"context_line":"    pxe.manage_ramdisk_boot. Adjust configs accordingly."},{"line_number":6,"context_line":"  - This change also deprecates passing manage_boot kwarg"},{"line_number":7,"context_line":"    to prepare_inband_cleaning() and"},{"line_number":8,"context_line":"    tear_down_inband_cleaning() in deploy_utils. This kwarg"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ba0121b8_c29816c3","line":5,"range":{"start_line":5,"start_character":29,"end_line":5,"end_character":56},"in_reply_to":"ba0121b8_fc1b4171","updated":"2016-03-30 16:27:06.000000000","message":"Done","commit_id":"29e8723acf132f72ea376cf49e978a98289870b9"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"f8d6a98804d031973c42dafe5a3f985ced86f777","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    agent.manage_agent_boot to pxe.manage_ramdisk_boot. The"},{"line_number":14,"context_line":"    effective behavior of the config option remains unchanged."},{"line_number":15,"context_line":"fixes:"},{"line_number":16,"context_line":"  - A box where an ironic installation with"},{"line_number":17,"context_line":"    agent.manage_agent_boot set to False was not properly"},{"line_number":18,"context_line":"    setting boot device on the Ironic node before rebooting"},{"line_number":19,"context_line":"    into cleaning. This can cause cleaning failures if a"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9a061dce_ce421a10","line":16,"updated":"2016-04-05 22:27:53.000000000","message":"nit: s/box/bug/","commit_id":"cd48819a92535e3dc48a516fcbe94309aa141eda"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"39cc1c2173f865fcfc5ed45111caabd0f6b40c68","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    agent.manage_agent_boot to pxe.manage_ramdisk_boot. The"},{"line_number":14,"context_line":"    effective behavior of the config option remains unchanged."},{"line_number":15,"context_line":"fixes:"},{"line_number":16,"context_line":"  - A box where an ironic installation with"},{"line_number":17,"context_line":"    agent.manage_agent_boot set to False was not properly"},{"line_number":18,"context_line":"    setting boot device on the Ironic node before rebooting"},{"line_number":19,"context_line":"    into cleaning. This can cause cleaning failures if a"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9a061dce_1f1ffeb7","line":16,"updated":"2016-04-06 13:12:43.000000000","message":"nit: s/box/bug/","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a90caadf98dcb889ee2d9499838b0cc4e256e45e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    agent.manage_agent_boot to pxe.manage_ramdisk_boot. The"},{"line_number":14,"context_line":"    effective behavior of the config option remains unchanged."},{"line_number":15,"context_line":"fixes:"},{"line_number":16,"context_line":"  - A box where an ironic installation with"},{"line_number":17,"context_line":"    agent.manage_agent_boot set to False was not properly"},{"line_number":18,"context_line":"    setting boot device on the Ironic node before rebooting"},{"line_number":19,"context_line":"    into cleaning. This can cause cleaning failures if a"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9a061dce_80dfced4","line":16,"in_reply_to":"9a061dce_1f1ffeb7","updated":"2016-04-07 22:02:01.000000000","message":"Done","commit_id":"d846ef2c6dd7767871f416b6d747f10d45c56e81"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d889f78d9c3aa2a72a1c4140cda46ca89fdd98ef","unresolved":false,"context_lines":[{"line_number":11,"context_line":"upgrade:"},{"line_number":12,"context_line":"  - On upgrade, you will need to migrate the option"},{"line_number":13,"context_line":"    agent.manage_agent_boot to pxe.manage_ramdisk_boot. The"},{"line_number":14,"context_line":"    effective behavior of the config option remains unchanged."},{"line_number":15,"context_line":"fixes:"},{"line_number":16,"context_line":"  - A bug where an ironic installation with"},{"line_number":17,"context_line":"    agent.manage_agent_boot set to False was not properly"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3aaa91ec_d6dd4d15","line":14,"range":{"start_line":14,"start_character":14,"end_line":14,"end_character":22},"updated":"2016-06-30 07:34:41.000000000","message":"s/behavior/behaviour","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"4d4fe12f8ed97fb6a229bda8c19aa7e27844b0f0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"upgrade:"},{"line_number":12,"context_line":"  - On upgrade, you will need to migrate the option"},{"line_number":13,"context_line":"    agent.manage_agent_boot to pxe.manage_ramdisk_boot. The"},{"line_number":14,"context_line":"    effective behavior of the config option remains unchanged."},{"line_number":15,"context_line":"fixes:"},{"line_number":16,"context_line":"  - A bug where an ironic installation with"},{"line_number":17,"context_line":"    agent.manage_agent_boot set to False was not properly"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"fa6399be_d8ecfbc9","line":14,"range":{"start_line":14,"start_character":14,"end_line":14,"end_character":22},"in_reply_to":"3aaa91ec_d6dd4d15","updated":"2016-10-11 19:17:33.000000000","message":"US English is fine","commit_id":"ef754a44111276d0e04695c0379f30ab8d81a8fa"}]}
