)]}'
{"driver-requirements.txt":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b83acddb98d43db3e853785075aa2a3f24baac5f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"python-scciclient\u003e\u003d0.2.0"},{"line_number":13,"context_line":"python-seamicroclient\u003e\u003d0.4.0"},{"line_number":14,"context_line":"UcsSdk\u003d\u003d0.8.2.2"},{"line_number":15,"context_line":"python-dracclient"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# The drac and amt driver import a python module called \"pywsman\", however,"},{"line_number":18,"context_line":"# this does not exist on pypi."}],"source_content_type":"text/plain","patch_set":2,"id":"9a8ffd7b_61773803","line":15,"updated":"2015-11-24 15:36:26.000000000","message":"any version? Even 0.0.1 should work?","commit_id":"cb5da3b302d744354c4b7ac24e743037bb7645dd"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"72f2cd409ad81b1e104689e6a87346c7490b2c46","unresolved":false,"context_lines":[{"line_number":12,"context_line":"python-scciclient\u003e\u003d0.2.0"},{"line_number":13,"context_line":"python-seamicroclient\u003e\u003d0.4.0"},{"line_number":14,"context_line":"UcsSdk\u003d\u003d0.8.2.2"},{"line_number":15,"context_line":"python-dracclient"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# The drac and amt driver import a python module called \"pywsman\", however,"},{"line_number":18,"context_line":"# this does not exist on pypi."}],"source_content_type":"text/plain","patch_set":2,"id":"9a8ffd7b_8494c18a","line":15,"in_reply_to":"9a8ffd7b_61773803","updated":"2015-11-30 11:18:46.000000000","message":"Done","commit_id":"cb5da3b302d744354c4b7ac24e743037bb7645dd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":12,"context_line":"python-scciclient\u003e\u003d0.3.0"},{"line_number":13,"context_line":"python-seamicroclient\u003e\u003d0.4.0"},{"line_number":14,"context_line":"UcsSdk\u003d\u003d0.8.2.2"},{"line_number":15,"context_line":"python-dracclient\u003e\u003d0.0.5"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# The drac and amt driver import a python module called \"pywsman\", however,"},{"line_number":18,"context_line":"# this does not exist on pypi."}],"source_content_type":"text/plain","patch_set":9,"id":"5a710552_5b58e556","line":15,"updated":"2015-12-14 23:05:07.000000000","message":"do we need a reno with an upgrade note about this?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"python-scciclient\u003e\u003d0.3.0"},{"line_number":13,"context_line":"python-seamicroclient\u003e\u003d0.4.0"},{"line_number":14,"context_line":"UcsSdk\u003d\u003d0.8.2.2"},{"line_number":15,"context_line":"python-dracclient\u003e\u003d0.0.5"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# The drac and amt driver import a python module called \"pywsman\", however,"},{"line_number":18,"context_line":"# this does not exist on pypi."}],"source_content_type":"text/plain","patch_set":9,"id":"5a710552_9a06301f","line":15,"in_reply_to":"5a710552_5b58e556","updated":"2015-12-15 13:43:35.000000000","message":"I am planning to add the release note in the last patch of the series, as Dmitry pointed out: I6223dbbeb770d773ebdd72277017156cbdb1d035\n\nDo you think I should add it elsewhere?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"9e200f8b9c2bd161f4097f2e838d1eb87ff0007c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"python-scciclient\u003e\u003d0.3.0"},{"line_number":13,"context_line":"python-seamicroclient\u003e\u003d0.4.0"},{"line_number":14,"context_line":"UcsSdk\u003d\u003d0.8.2.2"},{"line_number":15,"context_line":"python-dracclient\u003e\u003d0.0.5"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# The drac and amt driver import a python module called \"pywsman\", however,"},{"line_number":18,"context_line":"# this does not exist on pypi."}],"source_content_type":"text/plain","patch_set":9,"id":"5a710552_079de558","line":15,"in_reply_to":"5a710552_9a06301f","updated":"2015-12-15 19:55:03.000000000","message":"Oh. The reno should really be with the code that has the change, which is here. So if someone is using master, they can see in the reno that they\u0027ll need to upgrade. You don\u0027t know when the rest of the patches in this series will get merged, but after this is merged, python-dracclient will be needed, right?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"}],"ironic/common/exception.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":484,"context_line":""},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"class DracOperationError(IronicException):"},{"line_number":487,"context_line":"    _msg_fmt \u003d _(\u0027DRAC operation failed. Message: %(error)s\u0027)"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"class DracRequestFailed(IronicException):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_81bd1a6a","line":487,"updated":"2015-12-07 08:23:25.000000000","message":"Just to follow convention. Could uses \u0027Error\u0027 or \u0027Reason\u0027 instead of \u0027Message\u0027.","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":484,"context_line":""},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"class DracOperationError(IronicException):"},{"line_number":487,"context_line":"    _msg_fmt \u003d _(\u0027DRAC operation failed. Message: %(error)s\u0027)"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"class DracRequestFailed(IronicException):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_ec327ca6","line":487,"in_reply_to":"7a740942_81bd1a6a","updated":"2015-12-09 14:04:11.000000000","message":"Done","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"90bef7db95a373a514b183708b1155f9c222f5aa","unresolved":false,"context_lines":[{"line_number":484,"context_line":""},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"class DracOperationError(IronicException):"},{"line_number":487,"context_line":"    _msg_fmt \u003d _(\u0027DRAC operation failed. Message: %(error)s\u0027)"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"class DracRequestFailed(IronicException):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_68b46334","line":487,"in_reply_to":"7a740942_81bd1a6a","updated":"2015-12-07 22:48:16.000000000","message":"I agree with this one.","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"class DracOperationError(IronicException):"},{"line_number":488,"context_line":"    _msg_fmt \u003d _(\u0027DRAC operation failed. Reason: %(error)s\u0027)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"class DracRequestFailed(IronicException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_5ec8d374","line":488,"updated":"2015-12-14 23:05:07.000000000","message":"What\u0027s the diff between this and DracOperationFailed?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"9e200f8b9c2bd161f4097f2e838d1eb87ff0007c","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"class DracOperationError(IronicException):"},{"line_number":488,"context_line":"    _msg_fmt \u003d _(\u0027DRAC operation failed. Reason: %(error)s\u0027)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"class DracRequestFailed(IronicException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_47644d48","line":488,"in_reply_to":"5a710552_5db682dd","updated":"2015-12-15 19:55:03.000000000","message":"So you\u0027re deleting DracOperationFailed? What not just use that and not introduce a new exception?\n\nOh. You\u0027re replacing a lot of existing exceptions with a new exception.","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"class DracOperationError(IronicException):"},{"line_number":488,"context_line":"    _msg_fmt \u003d _(\u0027DRAC operation failed. Reason: %(error)s\u0027)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"class DracRequestFailed(IronicException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_5db682dd","line":488,"in_reply_to":"5a710552_5ec8d374","updated":"2015-12-15 13:43:35.000000000","message":"DracOperationFailed is thrown by the ironic.drivers.modules.drac.client.Client class which is based on a pywsman client implementation. If you check the last patch in the series (I6223dbbeb770d773ebdd72277017156cbdb1d035), only DracOperationError is used, others are deleted.","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"}],"ironic/drivers/drac.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b83acddb98d43db3e853785075aa2a3f24baac5f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":38,"context_line":"                reason\u003d_(\u0027Unable to import pywsman library\u0027))"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self.power \u003d power.DRACPower()"},{"line_number":41,"context_line":"        self.boot \u003d pxe.PXEBoot()"},{"line_number":42,"context_line":"        self.deploy \u003d iscsi_deploy.ISCSIDeploy()"},{"line_number":43,"context_line":"        self.management \u003d management.DracManagement()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_a4268e14","line":40,"updated":"2015-11-24 15:36:26.000000000","message":"Don\u0027t wanna be picky about it, but we may want to skip this change. I wonder if someone may have been using the DracPower() interface to compose their own driver downstream. This change would break them.\n\nI would avoid if possible.","commit_id":"cb5da3b302d744354c4b7ac24e743037bb7645dd"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"72f2cd409ad81b1e104689e6a87346c7490b2c46","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":38,"context_line":"                reason\u003d_(\u0027Unable to import pywsman library\u0027))"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self.power \u003d power.DRACPower()"},{"line_number":41,"context_line":"        self.boot \u003d pxe.PXEBoot()"},{"line_number":42,"context_line":"        self.deploy \u003d iscsi_deploy.ISCSIDeploy()"},{"line_number":43,"context_line":"        self.management \u003d management.DracManagement()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_64e0bd29","line":40,"in_reply_to":"9a8ffd7b_a4268e14","updated":"2015-11-30 11:18:46.000000000","message":"That\u0027s a good point. Reverting to the original name...","commit_id":"cb5da3b302d744354c4b7ac24e743037bb7645dd"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"17e34a20e59e75966206213f681942bb3891123b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if not importutils.try_import(\u0027pywsman\u0027):"},{"line_number":37,"context_line":"            raise exception.DriverLoadError("},{"line_number":38,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":39,"context_line":"                reason\u003d_(\u0027Unable to import pywsman library\u0027))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        if not importutils.try_import(\u0027dracclient\u0027):"},{"line_number":42,"context_line":"            raise exception.DriverLoadError("}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_11eaaa0f","line":39,"updated":"2015-12-11 22:31:29.000000000","message":"Is it still necessary to pull in pywsman?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"642a811197620844f37f2dfead1e1613474b2451","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if not importutils.try_import(\u0027pywsman\u0027):"},{"line_number":37,"context_line":"            raise exception.DriverLoadError("},{"line_number":38,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":39,"context_line":"                reason\u003d_(\u0027Unable to import pywsman library\u0027))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        if not importutils.try_import(\u0027dracclient\u0027):"},{"line_number":42,"context_line":"            raise exception.DriverLoadError("}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_22172b46","line":39,"in_reply_to":"7a740942_11eaaa0f","updated":"2015-12-14 08:54:16.000000000","message":"yes, the management interface and the bios vendor-passthru are still using it. but it\u0027s deleted in the cleanup patch: I6223dbbeb770d773ebdd72277017156cbdb1d035","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"}],"ironic/drivers/fake.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"17e34a20e59e75966206213f681942bb3891123b","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if not importutils.try_import(\u0027pywsman\u0027):"},{"line_number":181,"context_line":"            raise exception.DriverLoadError("},{"line_number":182,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":183,"context_line":"                reason\u003d_(\u0027Unable to import pywsman library\u0027))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if not importutils.try_import(\u0027dracclient\u0027):"},{"line_number":186,"context_line":"            raise exception.DriverLoadError("}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_91977a8f","line":183,"updated":"2015-12-11 22:31:29.000000000","message":"Is it still necessary to pull in pywsman?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"642a811197620844f37f2dfead1e1613474b2451","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if not importutils.try_import(\u0027pywsman\u0027):"},{"line_number":181,"context_line":"            raise exception.DriverLoadError("},{"line_number":182,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":183,"context_line":"                reason\u003d_(\u0027Unable to import pywsman library\u0027))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if not importutils.try_import(\u0027dracclient\u0027):"},{"line_number":186,"context_line":"            raise exception.DriverLoadError("}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_a258fb31","line":183,"in_reply_to":"7a740942_91977a8f","updated":"2015-12-14 08:54:16.000000000","message":"same here","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        if not importutils.try_import(\u0027dracclient\u0027):"},{"line_number":186,"context_line":"            raise exception.DriverLoadError("},{"line_number":187,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":188,"context_line":"                reason\u003d_(\u0027Unable to import dracclient library\u0027))"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        self.power \u003d drac_power.DracPower()"},{"line_number":191,"context_line":"        self.deploy \u003d fake.FakeDeploy()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_5e1d3365","line":188,"updated":"2015-12-14 23:05:07.000000000","message":"is it \u0027python-dracclient\u0027 (see drac.py) or \u0027dracclient\u0027?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        if not importutils.try_import(\u0027dracclient\u0027):"},{"line_number":186,"context_line":"            raise exception.DriverLoadError("},{"line_number":187,"context_line":"                driver\u003dself.__class__.__name__,"},{"line_number":188,"context_line":"                reason\u003d_(\u0027Unable to import dracclient library\u0027))"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        self.power \u003d drac_power.DracPower()"},{"line_number":191,"context_line":"        self.deploy \u003d fake.FakeDeploy()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_1d355a45","line":188,"in_reply_to":"5a710552_5e1d3365","updated":"2015-12-15 13:43:35.000000000","message":"Done","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"}],"ironic/drivers/modules/drac/common.py":[{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"909e7f6443cdb213f6ef8c2b4a4357385eea191f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \u0027drac_password\u0027: _(\u0027password used for authentication. Required.\u0027)"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":"OPTIONAL_PROPERTIES \u003d {"},{"line_number":35,"context_line":"    \u0027drac_port\u0027: _(\u0027port used for WS-Man endpoint; default is 443. Optional.\u0027),"},{"line_number":36,"context_line":"    \u0027drac_path\u0027: _(\u0027path used for WS-Man endpoint; default is \"/wsman\". \u0027"},{"line_number":37,"context_line":"                   \u0027Optional.\u0027),"},{"line_number":38,"context_line":"    \u0027drac_protocol\u0027: _(\u0027protocol used for WS-Man endpoint; one of http, https;\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_7e503d5f","line":35,"updated":"2015-11-30 14:23:48.000000000","message":"I know this is not really a part of this change,\n\nbut could you please make those default values for these optional properties to be named constants and not magic numbers? This would simplify handling/changing them later.","commit_id":"fa42b292e0e9ace5339cf44e89b71734c2667bd9"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"1656809e289ffbcc138a0344e25523bbbe51711b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \u0027drac_password\u0027: _(\u0027password used for authentication. Required.\u0027)"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":"OPTIONAL_PROPERTIES \u003d {"},{"line_number":35,"context_line":"    \u0027drac_port\u0027: _(\u0027port used for WS-Man endpoint; default is 443. Optional.\u0027),"},{"line_number":36,"context_line":"    \u0027drac_path\u0027: _(\u0027path used for WS-Man endpoint; default is \"/wsman\". \u0027"},{"line_number":37,"context_line":"                   \u0027Optional.\u0027),"},{"line_number":38,"context_line":"    \u0027drac_protocol\u0027: _(\u0027protocol used for WS-Man endpoint; one of http, https;\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_04ba04c1","line":35,"in_reply_to":"9a8ffd7b_7e503d5f","updated":"2015-11-30 14:51:38.000000000","message":"443 is not a magic number, that\u0027s the default port for https. I don\u0027t really feel the need to create a constant for a well-known port number.","commit_id":"fa42b292e0e9ace5339cf44e89b71734c2667bd9"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"909e7f6443cdb213f6ef8c2b4a4357385eea191f","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    try:"},{"line_number":78,"context_line":"        parsed_driver_info[\u0027drac_protocol\u0027] \u003d str("},{"line_number":79,"context_line":"            driver_info.get(\u0027drac_protocol\u0027, \u0027https\u0027))"},{"line_number":80,"context_line":"    except UnicodeEncodeError:"},{"line_number":81,"context_line":"        error_msgs.append(_(\"\u0027drac_protocol\u0027 contains non-ASCII symbol.\"))"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_9eb40183","line":79,"updated":"2015-11-30 14:23:48.000000000","message":"there is no check that the value is indeed one of (\u0027http\u0027, \u0027https\u0027)","commit_id":"fa42b292e0e9ace5339cf44e89b71734c2667bd9"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"1656809e289ffbcc138a0344e25523bbbe51711b","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    try:"},{"line_number":78,"context_line":"        parsed_driver_info[\u0027drac_protocol\u0027] \u003d str("},{"line_number":79,"context_line":"            driver_info.get(\u0027drac_protocol\u0027, \u0027https\u0027))"},{"line_number":80,"context_line":"    except UnicodeEncodeError:"},{"line_number":81,"context_line":"        error_msgs.append(_(\"\u0027drac_protocol\u0027 contains non-ASCII symbol.\"))"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_44d7aced","line":79,"in_reply_to":"9a8ffd7b_9eb40183","updated":"2015-11-30 14:51:38.000000000","message":"Done","commit_id":"fa42b292e0e9ace5339cf44e89b71734c2667bd9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    return parsed_driver_info"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def get_drac_client(node):"},{"line_number":100,"context_line":"    \"\"\"Returns an DRACClient object from python-dracclient library."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_c7b57231","line":99,"updated":"2015-12-07 08:23:25.000000000","message":"Add a testcase for this method","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    return parsed_driver_info"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def get_drac_client(node):"},{"line_number":100,"context_line":"    \"\"\"Returns an DRACClient object from python-dracclient library."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_a7224da1","line":99,"in_reply_to":"7a740942_c7b57231","updated":"2015-12-09 14:04:11.000000000","message":"Done","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    :param node: an ironic node object."},{"line_number":103,"context_line":"    :returns: a DRACClient object."},{"line_number":104,"context_line":"    :raises: InvalidParameterValue if mandatory information is missing on the"},{"line_number":105,"context_line":"             node or on invalid input."},{"line_number":106,"context_line":"    \"\"\""},{"line_number":107,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":108,"context_line":"    client \u003d drac_client.DRACClient(driver_info[\u0027drac_host\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_2c21bd9f","line":105,"updated":"2015-12-07 08:23:25.000000000","message":"s/ \"on invalid input.\" / \"if input is invalid.\"","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    :param node: an ironic node object."},{"line_number":103,"context_line":"    :returns: a DRACClient object."},{"line_number":104,"context_line":"    :raises: InvalidParameterValue if mandatory information is missing on the"},{"line_number":105,"context_line":"             node or on invalid input."},{"line_number":106,"context_line":"    \"\"\""},{"line_number":107,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":108,"context_line":"    client \u003d drac_client.DRACClient(driver_info[\u0027drac_host\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_6c252c07","line":105,"in_reply_to":"7a740942_2c21bd9f","updated":"2015-12-09 14:04:11.000000000","message":"Are you sure the wording is incorrect here? There are examples of this elsewhere in the codebase...","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def get_drac_client(node):"},{"line_number":100,"context_line":"    \"\"\"Returns an DRACClient object from python-dracclient library."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    :param node: an ironic node object."},{"line_number":103,"context_line":"    :returns: a DRACClient object."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_5e6213da","line":100,"updated":"2015-12-14 23:05:07.000000000","message":"s/an/a/","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def get_drac_client(node):"},{"line_number":100,"context_line":"    \"\"\"Returns an DRACClient object from python-dracclient library."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    :param node: an ironic node object."},{"line_number":103,"context_line":"    :returns: a DRACClient object."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_fd3c0e31","line":100,"in_reply_to":"5a710552_5e6213da","updated":"2015-12-15 13:43:35.000000000","message":"Done","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"}],"ironic/drivers/modules/drac/power.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"if drac_constants:"},{"line_number":34,"context_line":"    POWER_STATES \u003d {"},{"line_number":35,"context_line":"        drac_constants.POWER_ON: states.POWER_ON,"},{"line_number":36,"context_line":"        drac_constants.POWER_OFF: states.POWER_OFF,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_6c4b4588","line":33,"updated":"2015-12-07 08:23:25.000000000","message":"Any use of this check? If import were to fail, all future reference to POWER_STATES would anyway fail.","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"if drac_constants:"},{"line_number":34,"context_line":"    POWER_STATES \u003d {"},{"line_number":35,"context_line":"        drac_constants.POWER_ON: states.POWER_ON,"},{"line_number":36,"context_line":"        drac_constants.POWER_OFF: states.POWER_OFF,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_111faeb8","line":33,"in_reply_to":"7a740942_6c4b4588","updated":"2015-12-09 14:04:11.000000000","message":"Yes, that\u0027s exactly the problem, which can results in \"DriverLoadError: Driver fake could not be loaded. Reason: \u0027NoneType\u0027 object has no attribute \u0027POWER_ON\u0027\"","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    REVERSE_POWER_STATES \u003d dict((v, k) for (k, v) in POWER_STATES.items())"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _get_power_state(node):"},{"line_number":44,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_cc02790b","line":43,"updated":"2015-12-07 08:23:25.000000000","message":"Add docstring","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    REVERSE_POWER_STATES \u003d dict((v, k) for (k, v) in POWER_STATES.items())"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _get_power_state(node):"},{"line_number":44,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_ecf4bc5b","line":43,"in_reply_to":"7a740942_cc02790b","updated":"2015-12-09 14:04:11.000000000","message":"Docstrings are not required for private methods.","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return POWER_STATES[drac_power_state]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def _set_power_state(node, power_state):"},{"line_number":58,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":59,"context_line":"    target_power_state \u003d REVERSE_POWER_STATES[power_state]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_67003e02","line":57,"updated":"2015-12-07 08:23:25.000000000","message":"Add docstring","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return POWER_STATES[drac_power_state]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def _set_power_state(node, power_state):"},{"line_number":58,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":59,"context_line":"    target_power_state \u003d REVERSE_POWER_STATES[power_state]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_4cdf10d9","line":57,"in_reply_to":"7a740942_67003e02","updated":"2015-12-09 14:04:11.000000000","message":"Same here.","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return drac_common.parse_driver_info(task.node)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_power_state(self, task):"},{"line_number":93,"context_line":"        \"\"\"Return the power state of the node."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":96,"context_line":"        :returns: the power state, one of :mod:`ironic.common.states`."}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_c73012eb","line":93,"updated":"2015-12-07 08:23:25.000000000","message":"s/ Return the power/ Return power","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return drac_common.parse_driver_info(task.node)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def get_power_state(self, task):"},{"line_number":93,"context_line":"        \"\"\"Return the power state of the node."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":96,"context_line":"        :returns: the power state, one of :mod:`ironic.common.states`."}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_ec503c34","line":93,"in_reply_to":"7a740942_c73012eb","updated":"2015-12-09 14:04:11.000000000","message":"Are you sure the wording is incorrect here? There are examples of this elsewhere in the codebase...","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    REVERSE_POWER_STATES \u003d dict((v, k) for (k, v) in POWER_STATES.items())"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _get_power_state(node):"},{"line_number":44,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_7e690f8b","line":43,"updated":"2015-12-14 23:05:07.000000000","message":"I don\u0027t see why you couldn\u0027t keep the docstring from before. The only thing that changed is what is raised, right?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    REVERSE_POWER_STATES \u003d dict((v, k) for (k, v) in POWER_STATES.items())"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _get_power_state(node):"},{"line_number":44,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_3f4045a5","line":43,"in_reply_to":"5a710552_7e690f8b","updated":"2015-12-15 13:43:35.000000000","message":"Done","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        LOG.error(_LE(\u0027DRAC driver failed to get power state for node \u0027"},{"line_number":50,"context_line":"                      \u0027%(node_uuid)s. Reason: %(error)s.\u0027),"},{"line_number":51,"context_line":"                  {\u0027node_uuid\u0027: node.uuid, \u0027error\u0027: exc})"},{"line_number":52,"context_line":"        raise exception.DracOperationError(error\u003dexc)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    return POWER_STATES[drac_power_state]"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_1ed00b53","line":52,"updated":"2015-12-14 23:05:07.000000000","message":"You don\u0027t want the exception to include the \u0027DRAC driver failed to get power state for node..\u0027 part?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        LOG.error(_LE(\u0027DRAC driver failed to get power state for node \u0027"},{"line_number":50,"context_line":"                      \u0027%(node_uuid)s. Reason: %(error)s.\u0027),"},{"line_number":51,"context_line":"                  {\u0027node_uuid\u0027: node.uuid, \u0027error\u0027: exc})"},{"line_number":52,"context_line":"        raise exception.DracOperationError(error\u003dexc)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    return POWER_STATES[drac_power_state]"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_62115252","line":52,"in_reply_to":"5a710552_1ed00b53","updated":"2015-12-15 13:43:35.000000000","message":"No, I think this is fine. It\u0027s already logged anyway.","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return POWER_STATES[drac_power_state]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def _set_power_state(node, power_state):"},{"line_number":58,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":59,"context_line":"    target_power_state \u003d REVERSE_POWER_STATES[power_state]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_7e002fab","line":57,"updated":"2015-12-14 23:05:07.000000000","message":"ditto comment about docstring from original.","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    return POWER_STATES[drac_power_state]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def _set_power_state(node, power_state):"},{"line_number":58,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":59,"context_line":"    target_power_state \u003d REVERSE_POWER_STATES[power_state]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_5f3d112a","line":57,"in_reply_to":"5a710552_7e002fab","updated":"2015-12-15 13:43:35.000000000","message":"Done","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                  {\u0027node_uuid\u0027: node.uuid,"},{"line_number":68,"context_line":"                   \u0027power_state\u0027: power_state,"},{"line_number":69,"context_line":"                   \u0027error\u0027: exc})"},{"line_number":70,"context_line":"        raise exception.DracOperationError(error\u003dexc)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class DracPower(base.PowerInterface):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_be48d72e","line":70,"updated":"2015-12-14 23:05:07.000000000","message":"ditto","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                  {\u0027node_uuid\u0027: node.uuid,"},{"line_number":68,"context_line":"                   \u0027power_state\u0027: power_state,"},{"line_number":69,"context_line":"                   \u0027error\u0027: exc})"},{"line_number":70,"context_line":"        raise exception.DracOperationError(error\u003dexc)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class DracPower(base.PowerInterface):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_8220fe9c","line":70,"in_reply_to":"5a710552_be48d72e","updated":"2015-12-15 13:43:35.000000000","message":"same here","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"507b8d242965668ec9289418b7ea49399832a391","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        \"\"\"Set the power state of the node."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":109,"context_line":"        :param target_state: a power state from :mod:`ironic.common.states`."},{"line_number":110,"context_line":"        :raises: InvalidParameterValue if required DRAC credentials are"},{"line_number":111,"context_line":"                 missing."},{"line_number":112,"context_line":"        :raises: DracOperationError on an error from python-dracclient."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_9e207b4b","line":109,"updated":"2015-12-14 23:05:07.000000000","message":"it is power_state, not target_state","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        \"\"\"Set the power state of the node."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":109,"context_line":"        :param target_state: a power state from :mod:`ironic.common.states`."},{"line_number":110,"context_line":"        :raises: InvalidParameterValue if required DRAC credentials are"},{"line_number":111,"context_line":"                 missing."},{"line_number":112,"context_line":"        :raises: DracOperationError on an error from python-dracclient."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_dd6d9233","line":109,"in_reply_to":"5a710552_9e207b4b","updated":"2015-12-15 13:43:35.000000000","message":"Done","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"}],"ironic/tests/unit/drivers/modules/drac/test_power.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"52c5f0255b96defdea4b3525f95c5fe4540c09a6","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"},{"line_number":38,"context_line":"                   autospec\u003dTrue)"},{"line_number":39,"context_line":"class DracPowerTestCase(base.DbTestCase):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_a7e86611","line":38,"updated":"2015-12-07 08:23:25.000000000","message":"Need to retain testcases for internal methods as well.","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"48be2cec4aa69aecec46a281f146365f4b4ad53c","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"},{"line_number":38,"context_line":"                   autospec\u003dTrue)"},{"line_number":39,"context_line":"class DracPowerTestCase(base.DbTestCase):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_ff3244a6","line":38,"in_reply_to":"7a740942_48ef27e9","updated":"2015-12-08 02:30:07.000000000","message":"My comment is for the internal methods that are still available in power.py\n\nhttps://review.openstack.org/#/c/238488/7/ironic/drivers/modules/drac/power.py     \nL44 - _get_power_state()\n\nL57 - _set_power_state()","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"90bef7db95a373a514b183708b1155f9c222f5aa","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"},{"line_number":38,"context_line":"                   autospec\u003dTrue)"},{"line_number":39,"context_line":"class DracPowerTestCase(base.DbTestCase):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_48ef27e9","line":38,"in_reply_to":"7a740942_a7e86611","updated":"2015-12-07 22:48:16.000000000","message":"I disagree on this one.  Since the code that these tests test has been moved into a separate repo, the test cases should be moved there as well, and they have been.  See https://review.openstack.org/#/c/214160/21/dracclient/tests/test_client.py","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"3dfd6e5812be9c603b4ade2c41bdcbb426cac117","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"},{"line_number":38,"context_line":"                   autospec\u003dTrue)"},{"line_number":39,"context_line":"class DracPowerTestCase(base.DbTestCase):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_e72cd59a","line":38,"in_reply_to":"7a740942_ff3244a6","updated":"2015-12-09 14:04:11.000000000","message":"Please check the coverage, all internal methods are tested via the DracPowerTestCase class.","commit_id":"8dc92a066630a02cadb12f17af13f557dd0787dc"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"2445a1e209bfa4c5402d102fd6c70da570e001d7","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        driver \u003d drac_power.DracPower()"},{"line_number":49,"context_line":"        self.assertEqual(expected, driver.get_properties())"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_get_power_state(self, mock_get_drac_client):"},{"line_number":52,"context_line":"        mock_client \u003d mock_get_drac_client.return_value"},{"line_number":53,"context_line":"        mock_client.get_power_state.return_value \u003d drac_constants.POWER_ON"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7a740942_f76eabc6","line":51,"updated":"2015-12-14 16:46:55.000000000","message":"Though there are no conditional blocks in get_power_state() and set_power_state(). But for future addition of code into these methods, it would have been better if testcases were to be separated for:\n\n_get_power_state() / get_power_state()\n\n_set_power_state() / set_power_state()","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"ecbb6ac4ca04b92a3f41edc9ed7cc01119cb1ed1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        driver \u003d drac_power.DracPower()"},{"line_number":49,"context_line":"        self.assertEqual(expected, driver.get_properties())"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_get_power_state(self, mock_get_drac_client):"},{"line_number":52,"context_line":"        mock_client \u003d mock_get_drac_client.return_value"},{"line_number":53,"context_line":"        mock_client.get_power_state.return_value \u003d drac_constants.POWER_ON"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a710552_22e58a36","line":51,"in_reply_to":"7a740942_f76eabc6","updated":"2015-12-15 13:43:35.000000000","message":"I see your point, but I don\u0027t expect them becoming significantly more complex. How about separating them when this will be the case?","commit_id":"f078861a9566ed6176d0251687e81d947c82ab19"}]}
