)]}'
{"ironic/drivers/base.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"462719ae1bba69a52b4468b656c4672e48128fd2","unresolved":false,"context_lines":[{"line_number":759,"context_line":"        :returns: dictionary of \u003cproperty name\u003e:\u003cproperty description\u003e entries."},{"line_number":760,"context_line":"        \"\"\""},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    @abc.abstractmethod"},{"line_number":763,"context_line":"    def validate(self, task, method\u003dNone, **kwargs):"},{"line_number":764,"context_line":"        \"\"\"Validate vendor-specific actions."},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"        If invalid, raises an exception; otherwise returns None."},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"        :param task: a task from TaskManager."},{"line_number":769,"context_line":"        :param method: method to be validated"},{"line_number":770,"context_line":"        :param kwargs: info for action."},{"line_number":771,"context_line":"        :raises: UnsupportedDriverExtension if \u0027method\u0027 can not be mapped to"},{"line_number":772,"context_line":"                 the supported interfaces."},{"line_number":773,"context_line":"        :raises: InvalidParameterValue if kwargs does not contain \u0027method\u0027."},{"line_number":774,"context_line":"        :raises: MissingParameterValue"},{"line_number":775,"context_line":"        \"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def driver_validate(self, method, **kwargs):"},{"line_number":778,"context_line":"        \"\"\"Validate driver-vendor-passthru actions."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_9425070c","side":"PARENT","line":775,"range":{"start_line":762,"start_character":0,"end_line":775,"end_character":11},"updated":"2016-11-04 17:14:13.000000000","message":"oops, I should not delete this","commit_id":"8c6b8e2625e5a2c79af7d0db133a8ae311ce5a4a"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"4ccb858e86449b90465a79ad2eccb2c591046658","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        This method validates whether the \u0027driver_info\u0027 property of the"},{"line_number":200,"context_line":"        task\u0027s node contains the required information for this driver to"},{"line_number":201,"context_line":"        deploy images to the node. If invalid, raises an exception; otherwise"},{"line_number":202,"context_line":"        returns None."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_ba7dade9","line":201,"range":{"start_line":201,"start_character":21,"end_line":201,"end_character":22},"updated":"2016-11-07 09:27:56.000000000","message":"This docstring describe validate() for DeployInterface only. What do you think about:\n\n\"This method validates whether node contain required information for driver to complete its operations. If invalid, raises an exception; otherwise returns None.\"","commit_id":"ba92da2bd54ff9c8497058ba9cdfda52962751d6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a26eef9d4d1d8f78757b9972f45a54290f3aec83","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        This method validates whether the \u0027driver_info\u0027 property of the"},{"line_number":200,"context_line":"        task\u0027s node contains the required information for this driver to"},{"line_number":201,"context_line":"        deploy images to the node. If invalid, raises an exception; otherwise"},{"line_number":202,"context_line":"        returns None."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a629dbe_40e4a40c","line":201,"range":{"start_line":201,"start_character":21,"end_line":201,"end_character":22},"in_reply_to":"9a629dbe_ba7dade9","updated":"2016-11-07 10:00:27.000000000","message":"Good catch","commit_id":"ba92da2bd54ff9c8497058ba9cdfda52962751d6"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"c9e5397ec012aef280af9039c7079ba520a9b045","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    @abc.abstractmethod"},{"line_number":196,"context_line":"    def validate(self, task):"},{"line_number":197,"context_line":"        \"\"\"Validate the driver-specific Node deployment info."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        This method validates whether the \u0027driver_info\u0027 and/or \u0027instance_info\u0027"},{"line_number":200,"context_line":"        properties of the task\u0027s node contains the required information for"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_5953e416","line":197,"range":{"start_line":197,"start_character":45,"end_line":197,"end_character":55},"updated":"2016-11-11 12:44:17.000000000","message":"Not only deployment info.","commit_id":"565a0ed6b940df2d45172065840700bbc3802c99"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"bc01a03b81bef556e075140c546fe6771e352d57","unresolved":false,"context_lines":[{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    def __new__(cls, *args, **kwargs):"},{"line_number":651,"context_line":"        super_new \u003d super(VendorInterface, cls).__new__"},{"line_number":652,"context_line":"        if super_new is object.__new__:"},{"line_number":653,"context_line":"            inst \u003d super_new(cls)"},{"line_number":654,"context_line":"        else:"},{"line_number":655,"context_line":"            inst \u003d super_new(cls, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_012b0e95","line":652,"updated":"2016-11-09 17:47:17.000000000","message":"No need for this check now.","commit_id":"565a0ed6b940df2d45172065840700bbc3802c99"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"bc01a03b81bef556e075140c546fe6771e352d57","unresolved":false,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":"        :returns: dictionary of \u003cproperty name\u003e:\u003cproperty description\u003e entries."},{"line_number":831,"context_line":"        \"\"\""},{"line_number":832,"context_line":"        return {}"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"    def validate(self, task):"},{"line_number":835,"context_line":"        \"\"\"Validates the RAID Interface."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_01c06e29","line":832,"updated":"2016-11-09 17:47:17.000000000","message":"While this avoids breaking someone, it does change the return value from None to {}... But anyway, as docstring says it should be a dict, let\u0027s make it a dict.","commit_id":"565a0ed6b940df2d45172065840700bbc3802c99"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"bea7fb8563833dffddd27474590eabcc0690cd82","unresolved":false,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":"        :returns: dictionary of \u003cproperty name\u003e:\u003cproperty description\u003e entries."},{"line_number":831,"context_line":"        \"\"\""},{"line_number":832,"context_line":"        return {}"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"    def validate(self, task):"},{"line_number":835,"context_line":"        \"\"\"Validates the RAID Interface."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_1ca9a724","line":832,"in_reply_to":"9a629dbe_01c06e29","updated":"2016-11-09 22:28:18.000000000","message":"++","commit_id":"565a0ed6b940df2d45172065840700bbc3802c99"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"c9e5397ec012aef280af9039c7079ba520a9b045","unresolved":false,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":"        :returns: dictionary of \u003cproperty name\u003e:\u003cproperty description\u003e entries."},{"line_number":831,"context_line":"        \"\"\""},{"line_number":832,"context_line":"        return {}"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"    def validate(self, task):"},{"line_number":835,"context_line":"        \"\"\"Validates the RAID Interface."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_9943bc12","line":832,"in_reply_to":"9a629dbe_01c06e29","updated":"2016-11-11 12:44:17.000000000","message":"Maybe add also comment here about avoid breaking?","commit_id":"565a0ed6b940df2d45172065840700bbc3802c99"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e4d686748a857c74c89c7e6176e68564057efec5","unresolved":false,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":"        :returns: dictionary of \u003cproperty name\u003e:\u003cproperty description\u003e entries."},{"line_number":831,"context_line":"        \"\"\""},{"line_number":832,"context_line":"        return {}"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"    def validate(self, task):"},{"line_number":835,"context_line":"        \"\"\"Validates the RAID Interface."}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_b90fa035","line":832,"in_reply_to":"9a629dbe_9943bc12","updated":"2016-11-11 13:07:47.000000000","message":"Sorry, I don\u0027t quite get what useful comment I could leave here.","commit_id":"565a0ed6b940df2d45172065840700bbc3802c99"}]}
