)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6fc3c944f7e9834b3c8e9de663a631eb3e9ec459","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The function _check_for_missing_params was raising InvalidParameterValue,"},{"line_number":10,"context_line":"when it should be a MissingParamenteValue. This way we can differentiate"},{"line_number":11,"context_line":"both exceptions when needed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia5ce05e30b3fb00261854857aeef46238a8b00f8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"baada198_c56aebb4","line":11,"updated":"2014-07-29 17:19:42.000000000","message":"Seems to me the scope of this patch is much bigger than just _check_for_missing_params? (Where is _check_for_missing_params anyway?)","commit_id":"f1fdade2f496099cf0df7fbd835eb506a68a72bb"}],"ironic/common/exception.py":[{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"97136ae7fc9ac0feeb728a83bb3e4f3db1582011","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class MissingParameterValue(Invalid):"},{"line_number":185,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_da15ba95","line":184,"updated":"2014-08-11 14:58:32.000000000","message":"IMHO you should subclass from InvalidParameterValue. Since you are replacing a generic exception with a more specific exception. This way it will be backwards compatible with existing try: ... except clauses","commit_id":"ae5d2623c5e63eb021487882d5354bdc178369dd"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"b8187bfeed034847d2c73727558d11a9d966679b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class MissingParameterValue(Invalid):"},{"line_number":185,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_011ecc0c","line":184,"in_reply_to":"baada198_6566cabd","updated":"2014-08-12 07:42:52.000000000","message":"Done","commit_id":"ae5d2623c5e63eb021487882d5354bdc178369dd"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"64b4a4e0d126d3ca40b1ec8a118e0f54f829a6b7","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class MissingParameterValue(Invalid):"},{"line_number":185,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_e59f3ab1","line":184,"in_reply_to":"baada198_da15ba95","updated":"2014-08-11 18:02:52.000000000","message":"I don\u0027t see how one exception is more generic than the other. Both are pretty specific and focus on different cases. Truth be told, it shouldn\u0027t even be a subclass of Invalid, because is not neither valid or invalid, simply missing.","commit_id":"ae5d2623c5e63eb021487882d5354bdc178369dd"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"e77d326e6294c91d13bc3ccec4863e50ee29f53c","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class MissingParameterValue(Invalid):"},{"line_number":185,"context_line":"    message \u003d _(\"%(err)s\")"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_6566cabd","line":184,"in_reply_to":"baada198_e59f3ab1","updated":"2014-08-11 18:07:38.000000000","message":"Well for me they form some sort of hierarchy: for example you may want to add a malformed parameter value exception type which could be another subclass of this exception.\n\nAnd even if they don\u0027t form a good hierarchy it could be simpler to create one to maintain backwards compatibility. You won\u0027t have to update dozen files since old exceptions handling will work as expected.\n\nWhat do you think?","commit_id":"ae5d2623c5e63eb021487882d5354bdc178369dd"}],"ironic/conductor/manager.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2e48df78a965406ce6cf7a62fe75eec2f44386f0","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                                                  node\u003dnode.uuid)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"            try:"},{"line_number":394,"context_line":"                task.driver.deploy.validate(task)"},{"line_number":395,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":396,"context_line":"                raise exception.InstanceDeployFailure(_("},{"line_number":397,"context_line":"                    \"RPC do_node_deploy failed to validate deploy info. \""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_6b5a4683","line":394,"updated":"2014-07-25 12:32:15.000000000","message":"We catch only InvalidParameterValue here.","commit_id":"7f811b61a6147b94bd4ace2ceb5a6928fe27f1c0"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2e48df78a965406ce6cf7a62fe75eec2f44386f0","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                    % {\u0027node\u0027: node_id, \u0027state\u0027: node.provision_state})"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"            try:"},{"line_number":465,"context_line":"                task.driver.deploy.validate(task)"},{"line_number":466,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":467,"context_line":"                raise exception.InstanceDeployFailure(_("},{"line_number":468,"context_line":"                    \"RPC do_node_tear_down failed to validate deploy info. \""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_4bcca234","line":465,"updated":"2014-07-25 12:32:15.000000000","message":"ditto","commit_id":"7f811b61a6147b94bd4ace2ceb5a6928fe27f1c0"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2e48df78a965406ce6cf7a62fe75eec2f44386f0","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        # prevent node from switching to maintenance mode."},{"line_number":534,"context_line":"        if node.power_state is None:"},{"line_number":535,"context_line":"            try:"},{"line_number":536,"context_line":"                task.driver.power.validate(task)"},{"line_number":537,"context_line":"            except exception.InvalidParameterValue:"},{"line_number":538,"context_line":"                return"},{"line_number":539,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_8bd95af6","line":536,"updated":"2014-07-25 12:32:15.000000000","message":"ditto","commit_id":"7f811b61a6147b94bd4ace2ceb5a6928fe27f1c0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6fc3c944f7e9834b3c8e9de663a631eb3e9ec459","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        \"\"\"Periodic tasks are run at pre-specified interval.\"\"\""},{"line_number":211,"context_line":"        return self.run_periodic_tasks(context, raise_on_error\u003draise_on_error)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @messaging.expected_exceptions(exception.InvalidParameterValue,"},{"line_number":214,"context_line":"                                   exception.NodeLocked,"},{"line_number":215,"context_line":"                                   exception.NodeInWrongPowerState)"},{"line_number":216,"context_line":"    def update_node(self, context, node_obj):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_e0a6fd0e","line":213,"updated":"2014-07-29 17:19:42.000000000","message":"MissingParameterValue should be added here too.\n\nYou\u0027ve changed the \u0027contract\u0027 for ..validate(). Wherever validate() is called, both InvalidParameterValue and MissingParameterValue need to be dealt with.","commit_id":"f1fdade2f496099cf0df7fbd835eb506a68a72bb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"436ed94e18bb036e23bd348742bd55a0e682bf1f","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                             task.driver.vendor.vendor_passthru, task,"},{"line_number":325,"context_line":"                             method\u003ddriver_method, **info)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    @messaging.expected_exceptions(exception.InvalidParameterValue,"},{"line_number":328,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":329,"context_line":"                                   exception.DriverNotFound)"},{"line_number":330,"context_line":"    def driver_vendor_passthru(self, context, driver_name, driver_method,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_e8363101","line":327,"updated":"2014-08-04 09:10:20.000000000","message":"it\u0027s reasonable to expect exception.MissingParameterValue to be risen here as well","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"969e69f55e5aea1f1f3b8bfc0b0e1843cfb928fe","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                             task.driver.vendor.vendor_passthru, task,"},{"line_number":325,"context_line":"                             method\u003ddriver_method, **info)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    @messaging.expected_exceptions(exception.InvalidParameterValue,"},{"line_number":328,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":329,"context_line":"                                   exception.DriverNotFound)"},{"line_number":330,"context_line":"    def driver_vendor_passthru(self, context, driver_name, driver_method,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_7b40a95f","line":327,"in_reply_to":"baada198_e8363101","updated":"2014-08-07 06:24:35.000000000","message":"Done","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":951,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":952,"context_line":"                 support console."},{"line_number":953,"context_line":"        :raises: NodeConsoleNotEnabled if the console is not enabled."},{"line_number":954,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is specified."},{"line_number":955,"context_line":"        \"\"\""},{"line_number":956,"context_line":"        LOG.debug(\u0027RPC get_console_information called for node %s\u0027 % node_id)"},{"line_number":957,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_126c4e32","line":954,"updated":"2014-08-12 14:26:54.000000000","message":"nit: doesn\u0027t have MissingParameterValue","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":951,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":952,"context_line":"                 support console."},{"line_number":953,"context_line":"        :raises: NodeConsoleNotEnabled if the console is not enabled."},{"line_number":954,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is specified."},{"line_number":955,"context_line":"        \"\"\""},{"line_number":956,"context_line":"        LOG.debug(\u0027RPC get_console_information called for node %s\u0027 % node_id)"},{"line_number":957,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_cca5cf02","line":954,"in_reply_to":"baada198_126c4e32","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":984,"context_line":"                        disabled."},{"line_number":985,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":986,"context_line":"                 support console."},{"line_number":987,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is specified."},{"line_number":988,"context_line":"        :raises: NoFreeConductorWorker when there is no free worker to start"},{"line_number":989,"context_line":"                 async task"},{"line_number":990,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_f247daa1","line":987,"updated":"2014-08-12 14:26:54.000000000","message":"ditto","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":984,"context_line":"                        disabled."},{"line_number":985,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":986,"context_line":"                 support console."},{"line_number":987,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is specified."},{"line_number":988,"context_line":"        :raises: NoFreeConductorWorker when there is no free worker to start"},{"line_number":989,"context_line":"                 async task"},{"line_number":990,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_ecb29349","line":987,"in_reply_to":"baada198_f247daa1","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"    @messaging.expected_exceptions(exception.NodeLocked,"},{"line_number":1153,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":1154,"context_line":"                                   exception.InvalidParameterValue)"},{"line_number":1155,"context_line":"    def set_boot_device(self, context, node_id, device, persistent\u003dFalse):"},{"line_number":1156,"context_line":"        \"\"\"Set the boot device for a node."},{"line_number":1157,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_d256562a","line":1154,"updated":"2014-08-12 14:26:54.000000000","message":"task.driver.management.validate() could raise MissingParameterValue, but that should be OK since MissingParameterValue is an InvalidParameterValue.\n\nHowever, this is inconsistent with the rest where MissingParameterValue is explicitly mentioned.","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"    @messaging.expected_exceptions(exception.NodeLocked,"},{"line_number":1153,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":1154,"context_line":"                                   exception.InvalidParameterValue)"},{"line_number":1155,"context_line":"    def set_boot_device(self, context, node_id, device, persistent\u003dFalse):"},{"line_number":1156,"context_line":"        \"\"\"Set the boot device for a node."},{"line_number":1157,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_2ccacba3","line":1154,"in_reply_to":"baada198_d256562a","updated":"2014-08-12 21:23:52.000000000","message":"Done.\n\nThose three methods were recently added and missed when rebasing the patch.","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"    @messaging.expected_exceptions(exception.NodeLocked,"},{"line_number":1185,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":1186,"context_line":"                                   exception.InvalidParameterValue)"},{"line_number":1187,"context_line":"    def get_boot_device(self, context, node_id):"},{"line_number":1188,"context_line":"        \"\"\"Get the current boot device."},{"line_number":1189,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_d21d7678","line":1186,"updated":"2014-08-12 14:26:54.000000000","message":"similar comment to set_boot_device()","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"    @messaging.expected_exceptions(exception.NodeLocked,"},{"line_number":1185,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":1186,"context_line":"                                   exception.InvalidParameterValue)"},{"line_number":1187,"context_line":"    def get_boot_device(self, context, node_id):"},{"line_number":1188,"context_line":"        \"\"\"Get the current boot device."},{"line_number":1189,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_6ceda324","line":1186,"in_reply_to":"baada198_d21d7678","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":1214,"context_line":""},{"line_number":1215,"context_line":"    @messaging.expected_exceptions(exception.NodeLocked,"},{"line_number":1216,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":1217,"context_line":"                                   exception.InvalidParameterValue)"},{"line_number":1218,"context_line":"    def get_supported_boot_devices(self, context, node_id):"},{"line_number":1219,"context_line":"        \"\"\"Get the list of supported devices."},{"line_number":1220,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_0d40b330","line":1217,"updated":"2014-08-12 14:26:54.000000000","message":"similar comment to set_boot_device()","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":1214,"context_line":""},{"line_number":1215,"context_line":"    @messaging.expected_exceptions(exception.NodeLocked,"},{"line_number":1216,"context_line":"                                   exception.UnsupportedDriverExtension,"},{"line_number":1217,"context_line":"                                   exception.InvalidParameterValue)"},{"line_number":1218,"context_line":"    def get_supported_boot_devices(self, context, node_id):"},{"line_number":1219,"context_line":"        \"\"\"Get the list of supported devices."},{"line_number":1220,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_8cf2f703","line":1217,"in_reply_to":"baada198_0d40b330","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/conductor/rpcapi.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        :raises: NodeLocked if node is locked by another conductor."},{"line_number":353,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":354,"context_line":"                 support management."},{"line_number":355,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is"},{"line_number":356,"context_line":"                 specified or an invalid boot device is specified."},{"line_number":357,"context_line":"        \"\"\""},{"line_number":358,"context_line":"        cctxt \u003d self.client.prepare(topic\u003dtopic or self.topic, version\u003d\u00271.17\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_adda6776","line":355,"updated":"2014-08-12 14:26:54.000000000","message":"The three boot_device methods don\u0027t mention MissingParameterValue.","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        :raises: NodeLocked if node is locked by another conductor."},{"line_number":353,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":354,"context_line":"                 support management."},{"line_number":355,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is"},{"line_number":356,"context_line":"                 specified or an invalid boot device is specified."},{"line_number":357,"context_line":"        \"\"\""},{"line_number":358,"context_line":"        cctxt \u003d self.client.prepare(topic\u003dtopic or self.topic, version\u003d\u00271.17\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_4c5d3feb","line":355,"in_reply_to":"baada198_adda6776","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/drivers/base.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"11da5c53e34cd7609024710c0554ec8e414740fb","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        :param kwargs: info for action."},{"line_number":325,"context_line":"        :raises: UnsupportedDriverExtension if \u0027method\u0027 can not be mapped to"},{"line_number":326,"context_line":"                 the supported interfaces."},{"line_number":327,"context_line":"        :raises: InvalidParameterValue if **kwargs does not contain \u0027method\u0027."},{"line_number":328,"context_line":"        \"\"\""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_8ab454d5","line":327,"updated":"2014-07-23 09:14:12.000000000","message":":raises: MissingParameterValue\n\nThe Fake example and other drivers are already raising MissingParameterValue","commit_id":"2231d42e09f6dda12e8d8d915179abfe22d56ee2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"563f2cdfdb0f3ef7130239599aaab7404469ad09","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        :param kwargs: info for action."},{"line_number":325,"context_line":"        :raises: UnsupportedDriverExtension if \u0027method\u0027 can not be mapped to"},{"line_number":326,"context_line":"                 the supported interfaces."},{"line_number":327,"context_line":"        :raises: InvalidParameterValue if **kwargs does not contain \u0027method\u0027."},{"line_number":328,"context_line":"        \"\"\""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b286e6b8","line":327,"in_reply_to":"baada198_8ab454d5","updated":"2014-07-23 12:47:49.000000000","message":"Done","commit_id":"2231d42e09f6dda12e8d8d915179abfe22d56ee2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"436ed94e18bb036e23bd348742bd55a0e682bf1f","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                           Default: False."},{"line_number":457,"context_line":"        :raises: InvalidParameterValue if an invalid boot device is"},{"line_number":458,"context_line":"                 specified."},{"line_number":459,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":460,"context_line":"        \"\"\""},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_eb1b8b6c","line":459,"updated":"2014-08-04 09:10:20.000000000","message":"Why is it here? validate() will be called before set_boot_device IIRC","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"741a105bc8e9ef55d6f27941df5bfdd61d77167e","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                           Default: False."},{"line_number":457,"context_line":"        :raises: InvalidParameterValue if an invalid boot device is"},{"line_number":458,"context_line":"                 specified."},{"line_number":459,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":460,"context_line":"        \"\"\""},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_462a2ce7","line":459,"in_reply_to":"baada198_1b17ad9e","updated":"2014-08-07 06:54:02.000000000","message":"Right, but it will be essentially risen by validate() before. Actually, following your logic we must add :raises: MissingParameterValue to every method in every driver, because nearly all of them call _parse_driver_info :) but seems like we don\u0027t do it, that\u0027s why I suggest not to do it here as well.","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"a914cde3ae0ed4421cbbb954cb93d9aa4fe62de4","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                           Default: False."},{"line_number":457,"context_line":"        :raises: InvalidParameterValue if an invalid boot device is"},{"line_number":458,"context_line":"                 specified."},{"line_number":459,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":460,"context_line":"        \"\"\""},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_a16db29c","line":459,"in_reply_to":"baada198_462a2ce7","updated":"2014-08-07 07:23:30.000000000","message":"If done correctly, :raises: MissingParameterValue should be added to every method that don\u0027t capture it. I\u0027m sure some will be missed, but that\u0027s what I\u0027m trying to accomplish.","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"969e69f55e5aea1f1f3b8bfc0b0e1843cfb928fe","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                           Default: False."},{"line_number":457,"context_line":"        :raises: InvalidParameterValue if an invalid boot device is"},{"line_number":458,"context_line":"                 specified."},{"line_number":459,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":460,"context_line":"        \"\"\""},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_1b17ad9e","line":459,"in_reply_to":"baada198_eb1b8b6c","updated":"2014-08-07 06:24:35.000000000","message":"At least ipmitool and ipminative will call _parse_driver_info in set_boot_device, which can raise this exception","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"436ed94e18bb036e23bd348742bd55a0e682bf1f","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        all drivers support this."},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        :param task: a task from TaskManager."},{"line_number":470,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":471,"context_line":"        :returns: a dictionary containing:"},{"line_number":472,"context_line":"            :boot_device: the boot device, one of"},{"line_number":473,"context_line":"                :mod:`ironic.common.boot_devices` or None if it is unknown."}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_0b1fdf5a","line":470,"updated":"2014-08-04 09:10:20.000000000","message":"ditto","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"969e69f55e5aea1f1f3b8bfc0b0e1843cfb928fe","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        all drivers support this."},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        :param task: a task from TaskManager."},{"line_number":470,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":471,"context_line":"        :returns: a dictionary containing:"},{"line_number":472,"context_line":"            :boot_device: the boot device, one of"},{"line_number":473,"context_line":"                :mod:`ironic.common.boot_devices` or None if it is unknown."}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_5b7845f7","line":470,"in_reply_to":"baada198_0b1fdf5a","updated":"2014-08-07 06:24:35.000000000","message":"ditto","commit_id":"c50057d3436f14ee6721e9aa30ea57ed3e2b75bf"}],"ironic/drivers/modules/fake.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":36,"context_line":"            \"Unsupported method (%s) passed through to vendor extension.\")"},{"line_number":37,"context_line":"            % method)"},{"line_number":38,"context_line":"    raise exception.InvalidParameterValue(_("},{"line_number":39,"context_line":"        \"Method not specified when calling vendor extension.\"))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_adf6e7d5","line":38,"updated":"2014-08-12 14:26:54.000000000","message":"Should this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":36,"context_line":"            \"Unsupported method (%s) passed through to vendor extension.\")"},{"line_number":37,"context_line":"            % method)"},{"line_number":38,"context_line":"    raise exception.InvalidParameterValue(_("},{"line_number":39,"context_line":"        \"Method not specified when calling vendor extension.\"))"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_ec6533b1","line":38,"in_reply_to":"baada198_adf6e7d5","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/drivers/modules/ipminative.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c810cb036344f0ac9ef2e85a2d9ac33ef8905c80","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                 or required ipmi credentials are missing."},{"line_number":333,"context_line":"        :raises: MissingParameterValue when required ipmi credentials"},{"line_number":334,"context_line":"                 are missing."},{"line_number":335,"context_line":"        :raises: IPMIFailure when the native ipmi call fails."},{"line_number":336,"context_line":"        \"\"\""},{"line_number":337,"context_line":"        if device not in self.get_supported_boot_devices():"},{"line_number":338,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_980c0646","line":335,"updated":"2014-08-12 12:02:06.000000000","message":"nit: the \"when the native ipmi calls fails\" seems an out of scope change","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                 or required ipmi credentials are missing."},{"line_number":333,"context_line":"        :raises: MissingParameterValue when required ipmi credentials"},{"line_number":334,"context_line":"                 are missing."},{"line_number":335,"context_line":"        :raises: IPMIFailure when the native ipmi call fails."},{"line_number":336,"context_line":"        \"\"\""},{"line_number":337,"context_line":"        if device not in self.get_supported_boot_devices():"},{"line_number":338,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_8cdcb747","line":335,"in_reply_to":"baada198_980c0646","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        \"\"\"Cycles the power to the task\u0027s node."},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":522,"context_line":"        :raises: MissingParameterValue if required ipmi parameters are missing."},{"line_number":523,"context_line":"        :raises: PowerStateFailure if the final state of the node is not"},{"line_number":524,"context_line":"            POWER_ON."},{"line_number":525,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_ad7427d0","line":522,"updated":"2014-08-12 14:26:54.000000000","message":"Also InvalidParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        \"\"\"Cycles the power to the task\u0027s node."},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":522,"context_line":"        :raises: MissingParameterValue if required ipmi parameters are missing."},{"line_number":523,"context_line":"        :raises: PowerStateFailure if the final state of the node is not"},{"line_number":524,"context_line":"            POWER_ON."},{"line_number":525,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_cc994f6d","line":522,"in_reply_to":"baada198_ad7427d0","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        :param task: a TaskManager instance."},{"line_number":660,"context_line":"        :raises: FailedToGetSensorData when getting the sensor data fails."},{"line_number":661,"context_line":"        :raises: FailedToParseSensorData when parsing sensor data fails."},{"line_number":662,"context_line":"        :raises: InvalidParameterValue if required ipmi parameters are missing"},{"line_number":663,"context_line":"        :returns: returns a dict of sensor data group by sensor type."},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_2dbad770","line":662,"updated":"2014-08-12 14:26:54.000000000","message":"also MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        :param task: a TaskManager instance."},{"line_number":660,"context_line":"        :raises: FailedToGetSensorData when getting the sensor data fails."},{"line_number":661,"context_line":"        :raises: FailedToParseSensorData when parsing sensor data fails."},{"line_number":662,"context_line":"        :raises: InvalidParameterValue if required ipmi parameters are missing"},{"line_number":663,"context_line":"        :returns: returns a dict of sensor data group by sensor type."},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_acf17b99","line":662,"in_reply_to":"baada198_2dbad770","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":711,"context_line":"        :param task: a TaskManager instance."},{"line_number":712,"context_line":"        :param warm: boolean parameter to decide on warm or cold reset."},{"line_number":713,"context_line":"        :raises: IPMIFailure on an error from ipmitool."},{"line_number":714,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        \"\"\""},{"line_number":717,"context_line":"        node_uuid \u003d task.node.uuid"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_0dfb5316","line":714,"updated":"2014-08-12 14:26:54.000000000","message":"and InvalidParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":711,"context_line":"        :param task: a TaskManager instance."},{"line_number":712,"context_line":"        :param warm: boolean parameter to decide on warm or cold reset."},{"line_number":713,"context_line":"        :raises: IPMIFailure on an error from ipmitool."},{"line_number":714,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        \"\"\""},{"line_number":717,"context_line":"        node_uuid \u003d task.node.uuid"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_ac66db54","line":714,"in_reply_to":"baada198_0dfb5316","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":824,"context_line":"        \"\"\""},{"line_number":825,"context_line":"        driver_info \u003d _parse_driver_info(task.node)"},{"line_number":826,"context_line":"        if not driver_info[\u0027port\u0027]:"},{"line_number":827,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":828,"context_line":"                \"IPMI terminal port not supplied to IPMI driver.\"))"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"    def start_console(self, task):"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_387213b0","line":827,"updated":"2014-08-12 14:26:54.000000000","message":"Shouldn\u0027t this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":824,"context_line":"        \"\"\""},{"line_number":825,"context_line":"        driver_info \u003d _parse_driver_info(task.node)"},{"line_number":826,"context_line":"        if not driver_info[\u0027port\u0027]:"},{"line_number":827,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":828,"context_line":"                \"IPMI terminal port not supplied to IPMI driver.\"))"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"    def start_console(self, task):"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_8c591790","line":827,"in_reply_to":"baada198_387213b0","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b024cbfe032130a5eee0fbe19822281251e9d990","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    This method validates whether the \u0027driver_info\u0027 property of the"},{"line_number":104,"context_line":"    supplied node contains the required information for this driver to"},{"line_number":105,"context_line":"    deploy images to the node."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    :param node: a single Node."},{"line_number":108,"context_line":"    :returns: A dict with the driver_info values."},{"line_number":109,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_bb0c533b","line":106,"updated":"2014-07-22 08:39:55.000000000","message":":raises: MissingParameterValue","commit_id":"7114152f5f85ecbf4197c8f59e36a7f9a424be63"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b024cbfe032130a5eee0fbe19822281251e9d990","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    This method validates whether the \u0027instance_info\u0027 property of the"},{"line_number":124,"context_line":"    supplied node contains the required information for this driver to"},{"line_number":125,"context_line":"    deploy images to the node."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    :param node: a single Node."},{"line_number":128,"context_line":"    :returns: A dict with the instance_info values."},{"line_number":129,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_fb2deb90","line":126,"updated":"2014-07-22 08:39:55.000000000","message":":raises: MissingParameterValue","commit_id":"7114152f5f85ecbf4197c8f59e36a7f9a424be63"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b024cbfe032130a5eee0fbe19822281251e9d990","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    This method validates whether the \u0027instance_info\u0027 and \u0027driver_info\u0027"},{"line_number":172,"context_line":"    property of the supplied node contains the required information for"},{"line_number":173,"context_line":"    this driver to deploy images to the node."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    :param node: a single Node."},{"line_number":176,"context_line":"    :returns: A dict with the instance_info and driver_info values."},{"line_number":177,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_7b70fba4","line":174,"updated":"2014-07-22 08:39:55.000000000","message":":raises: MissingParameterValue","commit_id":"7114152f5f85ecbf4197c8f59e36a7f9a424be63"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b024cbfe032130a5eee0fbe19822281251e9d990","unresolved":false,"context_lines":[{"line_number":429,"context_line":""},{"line_number":430,"context_line":"    Check if the image exist in Glance and if it contains the"},{"line_number":431,"context_line":"    \u0027kernel_id\u0027 and \u0027ramdisk_id\u0027 properties."},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    :raises: InvalidParameterValue."},{"line_number":434,"context_line":"    \"\"\""},{"line_number":435,"context_line":"    image_id \u003d deploy_info[\u0027image_source\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_bb3a93c2","line":432,"updated":"2014-07-22 08:39:55.000000000","message":":raises: MissingParameterValue","commit_id":"7114152f5f85ecbf4197c8f59e36a7f9a424be63"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b024cbfe032130a5eee0fbe19822281251e9d990","unresolved":false,"context_lines":[{"line_number":464,"context_line":"    def validate(self, task):"},{"line_number":465,"context_line":"        \"\"\"Validate the deployment information for the task\u0027s node."},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":468,"context_line":"        :raises: InvalidParameterValue."},{"line_number":469,"context_line":"        \"\"\""},{"line_number":470,"context_line":"        node \u003d task.node"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_7b59db34","line":467,"updated":"2014-07-22 08:39:55.000000000","message":":raises: MissingParameterValue","commit_id":"7114152f5f85ecbf4197c8f59e36a7f9a424be63"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2e48df78a965406ce6cf7a62fe75eec2f44386f0","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    :param node: a single Node."},{"line_number":143,"context_line":"    :returns: A dict with the instance_info values."},{"line_number":144,"context_line":"    :raises: MissingParameterValue"},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    info \u003d node.instance_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_abc53e3e","line":144,"updated":"2014-07-25 12:32:15.000000000","message":"And InvalidParameterValue can be raised too.","commit_id":"7f811b61a6147b94bd4ace2ceb5a6928fe27f1c0"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2e48df78a965406ce6cf7a62fe75eec2f44386f0","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    :param node: a single Node."},{"line_number":192,"context_line":"    :returns: A dict with the instance_info and driver_info values."},{"line_number":193,"context_line":"    :raises: MissingParameterValue"},{"line_number":194,"context_line":"    \"\"\""},{"line_number":195,"context_line":"    info \u003d {}"},{"line_number":196,"context_line":"    info.update(_parse_instance_info(node))"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_ebbbb6bb","line":193,"updated":"2014-07-25 12:32:15.000000000","message":"ditto","commit_id":"7f811b61a6147b94bd4ace2ceb5a6928fe27f1c0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    if missing_props:"},{"line_number":501,"context_line":"        props \u003d \u0027, \u0027.join(missing_props)"},{"line_number":502,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":503,"context_line":"            \"Image %(image)s is missing the following properties: \""},{"line_number":504,"context_line":"            \"%(properties)s\") % {\u0027image\u0027: image_id, \u0027properties\u0027: props})"},{"line_number":505,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_f84edb37","line":502,"updated":"2014-08-12 14:26:54.000000000","message":"Should this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    if missing_props:"},{"line_number":501,"context_line":"        props \u003d \u0027, \u0027.join(missing_props)"},{"line_number":502,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":503,"context_line":"            \"Image %(image)s is missing the following properties: \""},{"line_number":504,"context_line":"            \"%(properties)s\") % {\u0027image\u0027: image_id, \u0027properties\u0027: props})"},{"line_number":505,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_cc6dcf03","line":502,"in_reply_to":"baada198_f84edb37","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        \"\"\""},{"line_number":520,"context_line":"        node \u003d task.node"},{"line_number":521,"context_line":"        if not driver_utils.get_node_mac_addresses(task):"},{"line_number":522,"context_line":"            raise exception.InvalidParameterValue(_(\"Node %s does not have \""},{"line_number":523,"context_line":"                                \"any port associated with it.\") % node.uuid)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        d_info \u003d _parse_deploy_info(node)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_5806e7cd","line":522,"updated":"2014-08-12 14:26:54.000000000","message":"Should this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        \"\"\""},{"line_number":520,"context_line":"        node \u003d task.node"},{"line_number":521,"context_line":"        if not driver_utils.get_node_mac_addresses(task):"},{"line_number":522,"context_line":"            raise exception.InvalidParameterValue(_(\"Node %s does not have \""},{"line_number":523,"context_line":"                                \"any port associated with it.\") % node.uuid)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        d_info \u003d _parse_deploy_info(node)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_8c9e7705","line":522,"in_reply_to":"baada198_5806e7cd","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        if CONF.pxe.ipxe_enabled:"},{"line_number":528,"context_line":"            if not CONF.pxe.http_url or not CONF.pxe.http_root:"},{"line_number":529,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":530,"context_line":"                    \"iPXE boot is enabled but no HTTP URL or HTTP \""},{"line_number":531,"context_line":"                    \"root was specified.\"))"},{"line_number":532,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_d8183721","line":529,"updated":"2014-08-12 14:26:54.000000000","message":"Should this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        if CONF.pxe.ipxe_enabled:"},{"line_number":528,"context_line":"            if not CONF.pxe.http_url or not CONF.pxe.http_root:"},{"line_number":529,"context_line":"                raise exception.InvalidParameterValue(_("},{"line_number":530,"context_line":"                    \"iPXE boot is enabled but no HTTP URL or HTTP \""},{"line_number":531,"context_line":"                    \"root was specified.\"))"},{"line_number":532,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_ec8c53db","line":529,"in_reply_to":"baada198_d8183721","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"115263106d37c684ecb666a1e6767bd68030deb5","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        missing \u003d [key for key in params.keys() if params[key] is None]"},{"line_number":661,"context_line":"        if missing:"},{"line_number":662,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":663,"context_line":"                    \"Parameters %s were not passed to ironic\""},{"line_number":664,"context_line":"                    \" for deploy.\") % missing)"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_f8ea5bd7","line":662,"updated":"2014-08-12 14:26:54.000000000","message":"Should this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        missing \u003d [key for key in params.keys() if params[key] is None]"},{"line_number":661,"context_line":"        if missing:"},{"line_number":662,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":663,"context_line":"                    \"Parameters %s were not passed to ironic\""},{"line_number":664,"context_line":"                    \" for deploy.\") % missing)"},{"line_number":665,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_6c676325","line":662,"in_reply_to":"baada198_f8ea5bd7","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/drivers/modules/seamicro.py":[{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"3fdb66f14b0bee4d6262a3a746fe248e7dd3e1ca","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":366,"context_line":"        :param pstate: Either POWER_ON or POWER_OFF from :class:"},{"line_number":367,"context_line":"            `ironic.common.states`."},{"line_number":368,"context_line":"        :raises: MissingParameterValue if an invalid power state was specified."},{"line_number":369,"context_line":"        :raises: PowerStateFailure if the desired power state couldn\u0027t be set."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_e12ffc87","line":368,"updated":"2014-07-29 05:02:06.000000000","message":"Sorry, but this should be back as an InvalidParameterValue exception. i.e. it\u0027s been wrongly changed","commit_id":"458931d76d0d389696c83fd7d72f74761d158307"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"850f782da526a1144a4a3147186dc219295f97b6","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        Poll the host for the current power state of the node."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":352,"context_line":"        :raises: InvalidParameterValue if required seamicro parameters are"},{"line_number":353,"context_line":"            missing."},{"line_number":354,"context_line":"        :raises: ServiceUnavailable on an error from SeaMicro Client."},{"line_number":355,"context_line":"        :returns: power state. One of :class:`ironic.common.states`."}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_58c8a720","line":352,"updated":"2014-08-12 14:37:19.000000000","message":"I think this should be deleted.","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        Poll the host for the current power state of the node."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":352,"context_line":"        :raises: InvalidParameterValue if required seamicro parameters are"},{"line_number":353,"context_line":"            missing."},{"line_number":354,"context_line":"        :raises: ServiceUnavailable on an error from SeaMicro Client."},{"line_number":355,"context_line":"        :returns: power state. One of :class:`ironic.common.states`."}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_2c448b75","line":352,"in_reply_to":"baada198_58c8a720","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"850f782da526a1144a4a3147186dc219295f97b6","unresolved":false,"context_lines":[{"line_number":426,"context_line":"        node \u003d task.node"},{"line_number":427,"context_line":"        vlan_id \u003d kwargs.get(\u0027vlan_id\u0027)"},{"line_number":428,"context_line":"        if not vlan_id:"},{"line_number":429,"context_line":"            raise exception.InvalidParameterValue(_(\"No vlan id provided\"))"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        seamicro_info \u003d _parse_driver_info(node)"},{"line_number":432,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_b8ff0334","line":429,"updated":"2014-08-12 14:37:19.000000000","message":"Should this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":426,"context_line":"        node \u003d task.node"},{"line_number":427,"context_line":"        vlan_id \u003d kwargs.get(\u0027vlan_id\u0027)"},{"line_number":428,"context_line":"        if not vlan_id:"},{"line_number":429,"context_line":"            raise exception.InvalidParameterValue(_(\"No vlan id provided\"))"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"        seamicro_info \u003d _parse_driver_info(node)"},{"line_number":432,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_ec28d39a","line":429,"in_reply_to":"baada198_b8ff0334","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"850f782da526a1144a4a3147186dc219295f97b6","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        if volume_id is None:"},{"line_number":464,"context_line":"            volume_size \u003d kwargs.get(\u0027volume_size\u0027)"},{"line_number":465,"context_line":"            if volume_size is None:"},{"line_number":466,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":467,"context_line":"                    _(\"No volume size provided for creating volume\"))"},{"line_number":468,"context_line":"            volume_id \u003d _create_volume(seamicro_info, volume_size)"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_18f1cf63","line":466,"updated":"2014-08-12 14:37:19.000000000","message":"Should that be MIssingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        if volume_id is None:"},{"line_number":464,"context_line":"            volume_size \u003d kwargs.get(\u0027volume_size\u0027)"},{"line_number":465,"context_line":"            if volume_size is None:"},{"line_number":466,"context_line":"                raise exception.InvalidParameterValue("},{"line_number":467,"context_line":"                    _(\"No volume size provided for creating volume\"))"},{"line_number":468,"context_line":"            volume_id \u003d _create_volume(seamicro_info, volume_size)"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_472518ac","line":466,"in_reply_to":"baada198_18f1cf63","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"850f782da526a1144a4a3147186dc219295f97b6","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        task\u0027s node contains the required credentials information."},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        :param task: a task from TaskManager."},{"line_number":498,"context_line":"        :raises: InvalidParameterValue if required seamicro parameters"},{"line_number":499,"context_line":"            are missing."},{"line_number":500,"context_line":"        :raises: MissingParameterValue when a required parameter is missing"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_d88117a1","line":498,"updated":"2014-08-12 14:37:19.000000000","message":"Not sure this should be here.","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        task\u0027s node contains the required credentials information."},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        :param task: a task from TaskManager."},{"line_number":498,"context_line":"        :raises: InvalidParameterValue if required seamicro parameters"},{"line_number":499,"context_line":"            are missing."},{"line_number":500,"context_line":"        :raises: MissingParameterValue when a required parameter is missing"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_c73768da","line":498,"in_reply_to":"baada198_d88117a1","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/drivers/modules/ssh.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"11da5c53e34cd7609024710c0554ec8e414740fb","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    :param node: the Node of interest."},{"line_number":152,"context_line":"    :returns: dictionary of information."},{"line_number":153,"context_line":"    :raises: InvalidParameterValue if any required parameters are incorrect."},{"line_number":154,"context_line":"    :raises: InvalidParameterValue if any required parameters are missing."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    info \u003d node.driver_info or {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_4a531ce2","line":154,"updated":"2014-07-23 09:14:12.000000000","message":"s/InvalidParameterValue/MissingParameterValue","commit_id":"2231d42e09f6dda12e8d8d915179abfe22d56ee2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"563f2cdfdb0f3ef7130239599aaab7404469ad09","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    :param node: the Node of interest."},{"line_number":152,"context_line":"    :returns: dictionary of information."},{"line_number":153,"context_line":"    :raises: InvalidParameterValue if any required parameters are incorrect."},{"line_number":154,"context_line":"    :raises: InvalidParameterValue if any required parameters are missing."},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    info \u003d node.driver_info or {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_92b72285","line":154,"in_reply_to":"baada198_4a531ce2","updated":"2014-07-23 12:47:49.000000000","message":"Done","commit_id":"2231d42e09f6dda12e8d8d915179abfe22d56ee2"}],"ironic/drivers/utils.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"11da5c53e34cd7609024710c0554ec8e414740fb","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        :raises: UnsupportedDriverExtension if \u0027method\u0027 can not be mapped to"},{"line_number":53,"context_line":"                 the supported interfaces."},{"line_number":54,"context_line":"        :raises: InvalidParameterValue if **kwargs does not contain \u0027method\u0027."},{"line_number":55,"context_line":"        :raisee: MissingParameterValue ig missing parameters in kwargs."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        route \u003d self._map(**kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_ea5950fe","line":55,"updated":"2014-07-23 09:14:12.000000000","message":"s/ig/if","commit_id":"2231d42e09f6dda12e8d8d915179abfe22d56ee2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"563f2cdfdb0f3ef7130239599aaab7404469ad09","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        :raises: UnsupportedDriverExtension if \u0027method\u0027 can not be mapped to"},{"line_number":53,"context_line":"                 the supported interfaces."},{"line_number":54,"context_line":"        :raises: InvalidParameterValue if **kwargs does not contain \u0027method\u0027."},{"line_number":55,"context_line":"        :raisee: MissingParameterValue ig missing parameters in kwargs."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        route \u003d self._map(**kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b27426d1","line":55,"in_reply_to":"baada198_ea5950fe","updated":"2014-07-23 12:47:49.000000000","message":"Done","commit_id":"2231d42e09f6dda12e8d8d915179abfe22d56ee2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"850f782da526a1144a4a3147186dc219295f97b6","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        raise exception.UnsupportedDriverExtension(_("},{"line_number":22,"context_line":"            \"Unsupported method (%s) passed through to vendor extension.\")"},{"line_number":23,"context_line":"            % method)"},{"line_number":24,"context_line":"    raise exception.InvalidParameterValue(_("},{"line_number":25,"context_line":"        \"Method not specified when calling vendor extension.\"))"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_b809c333","line":24,"updated":"2014-08-12 14:37:19.000000000","message":"Should this be MissingParameterValue?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        raise exception.UnsupportedDriverExtension(_("},{"line_number":22,"context_line":"            \"Unsupported method (%s) passed through to vendor extension.\")"},{"line_number":23,"context_line":"            % method)"},{"line_number":24,"context_line":"    raise exception.InvalidParameterValue(_("},{"line_number":25,"context_line":"        \"Method not specified when calling vendor extension.\"))"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_477358b3","line":24,"in_reply_to":"baada198_b809c333","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"850f782da526a1144a4a3147186dc219295f97b6","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        :raises: UnsupportedDriverExtension if \u0027method\u0027 can not be mapped to"},{"line_number":79,"context_line":"                 the supported interfaces."},{"line_number":80,"context_line":"        :raises: InvalidParameterValue if **kwargs does not contain \u0027method\u0027."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        \"\"\""},{"line_number":83,"context_line":"        route \u003d self._map(**kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_f32d1c91","line":80,"updated":"2014-08-12 14:37:19.000000000","message":"if you change above to MissingParameterValue, this should change too.","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"89293ac41fe42202064f95ebe2b5b3e2a3b00211","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        :raises: UnsupportedDriverExtension if \u0027method\u0027 can not be mapped to"},{"line_number":79,"context_line":"                 the supported interfaces."},{"line_number":80,"context_line":"        :raises: InvalidParameterValue if **kwargs does not contain \u0027method\u0027."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        \"\"\""},{"line_number":83,"context_line":"        route \u003d self._map(**kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_876d70ce","line":80,"in_reply_to":"baada198_f32d1c91","updated":"2014-08-12 21:23:52.000000000","message":"Done","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}],"ironic/tests/conductor/test_manager.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c810cb036344f0ac9ef2e85a2d9ac33ef8905c80","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        # Verify reservation has been cleared."},{"line_number":520,"context_line":"        self.assertIsNone(node.reservation)"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def test_vendor_passthru_invalid_method_parameters(self):"},{"line_number":523,"context_line":"        node \u003d obj_utils.create_test_node(self.context, driver\u003d\u0027fake\u0027)"},{"line_number":524,"context_line":"        info \u003d {\u0027invalid_param\u0027: \u0027whatever\u0027}"},{"line_number":525,"context_line":"        self._start_service()"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_9e1dcf63","line":522,"updated":"2014-08-12 12:02:06.000000000","message":"s/invalid/missing/\n\nSeems like we need a different test no? one for invalid parameters another for missing?","commit_id":"1d1e3beb85e6149704316512040adf8d3923c5a2"}]}
