)]}'
{"releasenotes/notes/add_update_service-b54c9bb0177e3468.yaml":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for the UpdateService resource to the library."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"9fdfeff1_24071a1f","line":4,"range":{"start_line":4,"start_character":25,"end_line":4,"end_character":38},"updated":"2019-02-11 15:19:12.000000000","message":"nit: May be it would be beneficial to the reader if we add a brief description of the functionality implemented. With Redfish it can be almost none or everything or in-between.","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for the UpdateService resource to the library."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"9fdfeff1_7b8494d3","line":4,"range":{"start_line":4,"start_character":25,"end_line":4,"end_character":38},"in_reply_to":"9fdfeff1_24071a1f","updated":"2019-02-14 10:32:34.000000000","message":"Done","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"}],"sushy/main.py":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d10c41870f6d96b12bb918ec9d3d2b91aeb5b3be","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                self._registries_path,"},{"line_number":208,"context_line":"                redfish_version\u003dself.redfish_version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _get_update_service(self, identity):"},{"line_number":211,"context_line":"        \"\"\"Given the identity return a UpdateService object"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param identity: The identity of the update service resource"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_5e110950","line":210,"range":{"start_line":210,"start_character":8,"end_line":210,"end_character":27},"updated":"2018-11-14 16:03:09.000000000","message":"How this method should be used? I do not see it being called so far.","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d10c41870f6d96b12bb918ec9d3d2b91aeb5b3be","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                self._registries_path,"},{"line_number":208,"context_line":"                redfish_version\u003dself.redfish_version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _get_update_service(self, identity):"},{"line_number":211,"context_line":"        \"\"\"Given the identity return a UpdateService object"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param identity: The identity of the update service resource"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_bb3dcfe7","line":210,"range":{"start_line":210,"start_character":34,"end_line":210,"end_character":42},"updated":"2018-11-14 16:03:09.000000000","message":"do we need this parameter?","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"a5fdd52a0c17aa5f8b2aee2289f6d63a92f31386","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                self._registries_path,"},{"line_number":208,"context_line":"                redfish_version\u003dself.redfish_version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _get_update_service(self, identity):"},{"line_number":211,"context_line":"        \"\"\"Given the identity return a UpdateService object"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param identity: The identity of the update service resource"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_739af361","line":210,"range":{"start_line":210,"start_character":8,"end_line":210,"end_character":27},"in_reply_to":"3f79a3b5_5e110950","updated":"2018-11-15 07:49:10.000000000","message":"Done","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"a5fdd52a0c17aa5f8b2aee2289f6d63a92f31386","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                self._registries_path,"},{"line_number":208,"context_line":"                redfish_version\u003dself.redfish_version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _get_update_service(self, identity):"},{"line_number":211,"context_line":"        \"\"\"Given the identity return a UpdateService object"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param identity: The identity of the update service resource"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_93978f38","line":210,"range":{"start_line":210,"start_character":34,"end_line":210,"end_character":42},"in_reply_to":"3f79a3b5_bb3dcfe7","updated":"2018-11-15 07:49:10.000000000","message":"Done","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d10c41870f6d96b12bb918ec9d3d2b91aeb5b3be","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                redfish_version\u003dself.redfish_version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _get_update_service(self, identity):"},{"line_number":211,"context_line":"        \"\"\"Given the identity return a UpdateService object"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param identity: The identity of the update service resource"},{"line_number":214,"context_line":"        :returns: The UpdateService object"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_78a97d24","line":211,"range":{"start_line":211,"start_character":37,"end_line":211,"end_character":38},"updated":"2018-11-14 16:03:09.000000000","message":"nit: an","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"a5fdd52a0c17aa5f8b2aee2289f6d63a92f31386","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                redfish_version\u003dself.redfish_version)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _get_update_service(self, identity):"},{"line_number":211,"context_line":"        \"\"\"Given the identity return a UpdateService object"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        :param identity: The identity of the update service resource"},{"line_number":214,"context_line":"        :returns: The UpdateService object"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_33a47ba4","line":211,"range":{"start_line":211,"start_character":37,"end_line":211,"end_character":38},"in_reply_to":"3f79a3b5_78a97d24","updated":"2018-11-15 07:49:10.000000000","message":"Done","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"}],"sushy/resources/common.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c18fc9e4a4f4fb65f38e2ebedf9f78645810c676","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\"Indicates the known state of the resource, such as if it is enabled.\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class SimpleUpdateActionField(ActionField):"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    image_uri \u003d base.Field(\u0027ImageURI\u0027)"},{"line_number":52,"context_line":"    \"\"\"The URI of the software image to be installed\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_84f71929","line":49,"updated":"2018-11-19 18:06:04.000000000","message":"This class does not seem to belong in this file, since it looks update-specific.","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"2305f20f4c71bd9a6ece6be58f39b6a59be401ba","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\"Indicates the known state of the resource, such as if it is enabled.\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class SimpleUpdateActionField(ActionField):"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    image_uri \u003d base.Field(\u0027ImageURI\u0027)"},{"line_number":52,"context_line":"    \"\"\"The URI of the software image to be installed\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_ea97ace9","line":49,"in_reply_to":"3f79a3b5_84f71929","updated":"2018-11-20 09:47:28.000000000","message":"Done","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"}],"sushy/resources/updateservice/constants.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c18fc9e4a4f4fb65f38e2ebedf9f78645810c676","unresolved":false,"context_lines":[{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"},{"line_number":27,"context_line":"TRANSFER_PROTOCOL_TYPE_NSF \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_c9ff6c01","line":27,"updated":"2018-11-19 18:06:04.000000000","message":"The same as NFS?","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dafd712a0f0235e181f57e8902aabbdfd72d7266","unresolved":false,"context_lines":[{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"},{"line_number":27,"context_line":"TRANSFER_PROTOCOL_TYPE_NSF \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_3d5f2c4d","line":27,"in_reply_to":"3f79a3b5_5d1a28c7","updated":"2018-11-20 10:34:35.000000000","message":"Then it should be in mappings, but not here.","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"2305f20f4c71bd9a6ece6be58f39b6a59be401ba","unresolved":false,"context_lines":[{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"},{"line_number":27,"context_line":"TRANSFER_PROTOCOL_TYPE_NSF \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_eab00c90","line":27,"in_reply_to":"3f79a3b5_c9ff6c01","updated":"2018-11-20 09:47:28.000000000","message":"`NSF` is the deprecated alias to `NFS`","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7f5624a3474409dd5cecdaf16af731b7768b75d4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"},{"line_number":27,"context_line":"TRANSFER_PROTOCOL_TYPE_NSF \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_5d1a28c7","line":27,"in_reply_to":"3f79a3b5_eab00c90","updated":"2018-11-20 10:26:45.000000000","message":"Yes, I\u0027ve proposed to keep `NSF` here to make sushy operable with the implementations that still use the deprecated enumerator.","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3a1c526339a7d8f7c49e52d164005a29c5196d9d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"TRANSFER_PROTOCOL_TYPE_FTP \u003d \u0027File Transfer Protocol\u0027"},{"line_number":20,"context_line":"TRANSFER_PROTOCOL_TYPE_SFTP \u003d \u0027Secure File Transfer Protocol\u0027"},{"line_number":21,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTP \u003d \u0027Hypertext Transfer Protocol\u0027"},{"line_number":22,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTPS \u003d \u0027HTTP Secure protocol\u0027"},{"line_number":23,"context_line":"TRANSFER_PROTOCOL_TYPE_SCP \u003d \u0027Secure File Copy protocol\u0027"},{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"bfdaf3ff_2af1376c","line":22,"range":{"start_line":22,"start_character":44,"end_line":22,"end_character":52},"updated":"2019-01-16 09:35:35.000000000","message":"nit: s/ protocol / Protocol /","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"86a504d2ecd1cc348463ad34f263dd13ce1bb2d6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"TRANSFER_PROTOCOL_TYPE_FTP \u003d \u0027File Transfer Protocol\u0027"},{"line_number":20,"context_line":"TRANSFER_PROTOCOL_TYPE_SFTP \u003d \u0027Secure File Transfer Protocol\u0027"},{"line_number":21,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTP \u003d \u0027Hypertext Transfer Protocol\u0027"},{"line_number":22,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTPS \u003d \u0027HTTP Secure protocol\u0027"},{"line_number":23,"context_line":"TRANSFER_PROTOCOL_TYPE_SCP \u003d \u0027Secure File Copy protocol\u0027"},{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"9fdfeff1_1509e693","line":22,"range":{"start_line":22,"start_character":44,"end_line":22,"end_character":52},"in_reply_to":"bfdaf3ff_2af1376c","updated":"2019-02-11 08:40:06.000000000","message":"Done","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3a1c526339a7d8f7c49e52d164005a29c5196d9d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"TRANSFER_PROTOCOL_TYPE_SFTP \u003d \u0027Secure File Transfer Protocol\u0027"},{"line_number":21,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTP \u003d \u0027Hypertext Transfer Protocol\u0027"},{"line_number":22,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTPS \u003d \u0027HTTP Secure protocol\u0027"},{"line_number":23,"context_line":"TRANSFER_PROTOCOL_TYPE_SCP \u003d \u0027Secure File Copy protocol\u0027"},{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"bfdaf3ff_4a991b1d","line":23,"range":{"start_line":23,"start_character":47,"end_line":23,"end_character":55},"updated":"2019-01-16 09:35:35.000000000","message":"ditto","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"86a504d2ecd1cc348463ad34f263dd13ce1bb2d6","unresolved":false,"context_lines":[{"line_number":20,"context_line":"TRANSFER_PROTOCOL_TYPE_SFTP \u003d \u0027Secure File Transfer Protocol\u0027"},{"line_number":21,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTP \u003d \u0027Hypertext Transfer Protocol\u0027"},{"line_number":22,"context_line":"TRANSFER_PROTOCOL_TYPE_HTTPS \u003d \u0027HTTP Secure protocol\u0027"},{"line_number":23,"context_line":"TRANSFER_PROTOCOL_TYPE_SCP \u003d \u0027Secure File Copy protocol\u0027"},{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"9fdfeff1_b5ffba65","line":23,"range":{"start_line":23,"start_character":47,"end_line":23,"end_character":55},"in_reply_to":"bfdaf3ff_4a991b1d","updated":"2019-02-11 08:40:06.000000000","message":"Done","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3a1c526339a7d8f7c49e52d164005a29c5196d9d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"TRANSFER_PROTOCOL_TYPE_SCP \u003d \u0027Secure File Copy protocol\u0027"},{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"bfdaf3ff_ea9faf00","line":26,"range":{"start_line":26,"start_character":50,"end_line":26,"end_character":58},"updated":"2019-01-16 09:35:35.000000000","message":"ditto","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"86a504d2ecd1cc348463ad34f263dd13ce1bb2d6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"TRANSFER_PROTOCOL_TYPE_SCP \u003d \u0027Secure File Copy protocol\u0027"},{"line_number":24,"context_line":"TRANSFER_PROTOCOL_TYPE_TFTP \u003d \u0027Trivial File Transfer Protocol\u0027"},{"line_number":25,"context_line":"TRANSFER_PROTOCOL_TYPE_OEM \u003d \u0027A protocol defined by the manufacturer\u0027"},{"line_number":26,"context_line":"TRANSFER_PROTOCOL_TYPE_NFS \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"9fdfeff1_d5027e6f","line":26,"range":{"start_line":26,"start_character":50,"end_line":26,"end_character":58},"in_reply_to":"bfdaf3ff_ea9faf00","updated":"2019-02-11 08:40:06.000000000","message":"Done","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"}],"sushy/resources/updateservice/mappings.py":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d10c41870f6d96b12bb918ec9d3d2b91aeb5b3be","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027SCP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_SCP,"},{"line_number":24,"context_line":"    \u0027TFTP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_TFTP,"},{"line_number":25,"context_line":"    \u0027OEM\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_OEM,"},{"line_number":26,"context_line":"    \u0027NFS\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_NFS"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_3bdc5fe1","line":26,"range":{"start_line":26,"start_character":5,"end_line":26,"end_character":8},"updated":"2018-11-14 16:03:09.000000000","message":"they also have `NSF` as a deprecated alias to `NFS`. Should we support parsing it?","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"a5fdd52a0c17aa5f8b2aee2289f6d63a92f31386","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027SCP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_SCP,"},{"line_number":24,"context_line":"    \u0027TFTP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_TFTP,"},{"line_number":25,"context_line":"    \u0027OEM\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_OEM,"},{"line_number":26,"context_line":"    \u0027NFS\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_NFS"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d3ae677f","line":26,"range":{"start_line":26,"start_character":5,"end_line":26,"end_character":8},"in_reply_to":"3f79a3b5_3bdc5fe1","updated":"2018-11-15 07:49:10.000000000","message":"I ignored it because of that :) But now understand, it may need for backward compatibility.","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6cf17cc7bc4ad5fba8f0bbef320b11de00cb4197","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027SCP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_SCP,"},{"line_number":24,"context_line":"    \u0027TFTP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_TFTP,"},{"line_number":25,"context_line":"    \u0027OEM\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_OEM,"},{"line_number":26,"context_line":"    \u0027NFS\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_NFS,"},{"line_number":27,"context_line":"    \u0027NSF\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_NSF"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_1d2a7096","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":46},"updated":"2018-11-20 10:36:07.000000000","message":"To clarify on my previous comment: the two values are the same here, so reversing the dict will end up with unpredictable results. We need to only keep NFS here and in the constants. Then we need to explicitly add NSF here *after* building the reversed dict.","commit_id":"d7048cce1036a63f807d0d371f8cbf196baa098f"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"51af8d1b34b8fd25308ab49a26936907be186686","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027SCP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_SCP,"},{"line_number":24,"context_line":"    \u0027TFTP\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_TFTP,"},{"line_number":25,"context_line":"    \u0027OEM\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_OEM,"},{"line_number":26,"context_line":"    \u0027NFS\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_NFS,"},{"line_number":27,"context_line":"    \u0027NSF\u0027: ups_cons.TRANSFER_PROTOCOL_TYPE_NSF"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_515c4fee","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":46},"in_reply_to":"3f79a3b5_1d2a7096","updated":"2018-11-20 13:38:11.000000000","message":"Done","commit_id":"d7048cce1036a63f807d0d371f8cbf196baa098f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"da7d98fbc5ec35ea7fb9a13e175b2f5de7a4e304","unresolved":false,"context_lines":[{"line_number":29,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("},{"line_number":30,"context_line":"    utils.revert_dictionary(TRANSFER_PROTOCOL_TYPE_VALUE_MAP))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP[\u0027NSF\u0027] \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_ae309db8","line":32,"updated":"2018-11-25 12:26:10.000000000","message":"I\u0027d prefer ups_cons.TRANSFER_PROTOCOL_TYPE_NFS here instead of the explicit value","commit_id":"0c61ec5567265a8a6a906a7ab4ee8c1200e3c233"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"4719d8febd5daa20c82fc4e824c787ad46cf5977","unresolved":false,"context_lines":[{"line_number":29,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("},{"line_number":30,"context_line":"    utils.revert_dictionary(TRANSFER_PROTOCOL_TYPE_VALUE_MAP))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP[\u0027NSF\u0027] \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_6eab6590","line":32,"in_reply_to":"3f79a3b5_ae309db8","updated":"2018-11-25 13:23:19.000000000","message":"Done","commit_id":"0c61ec5567265a8a6a906a7ab4ee8c1200e3c233"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"736f63be3bfd2d33631c3178c44eb2834f576e8a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("},{"line_number":30,"context_line":"    utils.revert_dictionary(TRANSFER_PROTOCOL_TYPE_VALUE_MAP))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"ups_cons.TRANSFER_PROTOCOL_TYPE_NSF \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_a5ff01af","line":32,"updated":"2018-12-12 10:05:50.000000000","message":"This constant is never used, and it\u0027s weird to set it here. What I think you wanted is to add mapping from \"NSF\" to TRANSFER_PROTOCOL_TYPE_NFS above.","commit_id":"39f750ba1c9b331c563828273c3f28db42776aed"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"8c7d5da9702f5c7feaf81af446fbacad5eb4de1e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"TRANSFER_PROTOCOL_TYPE_VALUE_MAP_REV \u003d ("},{"line_number":30,"context_line":"    utils.revert_dictionary(TRANSFER_PROTOCOL_TYPE_VALUE_MAP))"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"ups_cons.TRANSFER_PROTOCOL_TYPE_NSF \u003d \u0027Network File System protocol\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_55d25434","line":32,"in_reply_to":"3f79a3b5_a5ff01af","updated":"2018-12-12 14:47:59.000000000","message":"Done","commit_id":"39f750ba1c9b331c563828273c3f28db42776aed"}],"sushy/resources/updateservice/updateservice.py":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"dc05cc4a1a64f2f636b4b2041a9fdc2193293a73","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class UpdateService(base.ResourceBase):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    http_push_uri \u003d base.Field(\u0027HttpPushUri\u0027)"},{"line_number":42,"context_line":"    \"\"\"The URI used to perform an HTTP or HTTPS push update to the Update"},{"line_number":43,"context_line":"    Service\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_bea7eb0a","line":40,"updated":"2018-11-01 14:45:55.000000000","message":"Looking at [1] i think we are missing FirmareInventory, Oem and status? Maybe can be done in another patch after this one is merged, but I think would be good explain in the commit message and release not that this patch doesn\u0027t contain 100% of the feature you are adding. Or maybe I\u0027m wrong \u003d)\n\n\n[1] https://redfish.dmtf.org/schemas/UpdateService.v1_3_0.json","commit_id":"8e6ded63b9dc03ad3e19c7b8eb77d580261f34c6"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"7bf0b04dbdf09486770de0ff87f0accc961c439a","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class UpdateService(base.ResourceBase):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    http_push_uri \u003d base.Field(\u0027HttpPushUri\u0027)"},{"line_number":42,"context_line":"    \"\"\"The URI used to perform an HTTP or HTTPS push update to the Update"},{"line_number":43,"context_line":"    Service\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_edfb6211","line":40,"in_reply_to":"3f79a3b5_bea7eb0a","updated":"2018-11-02 13:28:44.000000000","message":"Yes, that\u0027s a good point :)","commit_id":"8e6ded63b9dc03ad3e19c7b8eb77d580261f34c6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c18fc9e4a4f4fb65f38e2ebedf9f78645810c676","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    http_push_uri_targets \u003d base.Field(\u0027HttpPushUriTargets\u0027)"},{"line_number":37,"context_line":"    \"\"\"The array of URIs indicating the target for applying the update"},{"line_number":38,"context_line":"    image\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    http_push_uri_targets_busy \u003d base.Field(\u0027HttpPushUriTargetsBusy\u0027)"},{"line_number":41,"context_line":"    \"\"\"This represents if the HttpPushUriTargets property is reserved by"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_e9fa6810","line":38,"updated":"2018-11-19 18:06:04.000000000","message":"Do we really need to expose these two to the users? I\u0027d assume we need to expose some methods to push updates, while hiding the actual URLs.","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"2305f20f4c71bd9a6ece6be58f39b6a59be401ba","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    http_push_uri_targets \u003d base.Field(\u0027HttpPushUriTargets\u0027)"},{"line_number":37,"context_line":"    \"\"\"The array of URIs indicating the target for applying the update"},{"line_number":38,"context_line":"    image\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    http_push_uri_targets_busy \u003d base.Field(\u0027HttpPushUriTargetsBusy\u0027)"},{"line_number":41,"context_line":"    \"\"\"This represents if the HttpPushUriTargets property is reserved by"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_aaaa1418","line":38,"in_reply_to":"3f79a3b5_e9fa6810","updated":"2018-11-20 09:47:28.000000000","message":"Done","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"da7d98fbc5ec35ea7fb9a13e175b2f5de7a4e304","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            identity,"},{"line_number":77,"context_line":"            redfish_version)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(dnuka) def simple_update()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":82,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_ce35d9a8","line":79,"updated":"2018-11-25 12:26:10.000000000","message":"Do you plan on finishing this here or in a future patch?","commit_id":"0c61ec5567265a8a6a906a7ab4ee8c1200e3c233"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"c25def5ffe9356bc481e596deb2035b46b021b87","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            identity,"},{"line_number":77,"context_line":"            redfish_version)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(dnuka) def simple_update()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":82,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_4e1b0983","line":79,"in_reply_to":"3f79a3b5_2ec9ed78","updated":"2018-11-25 16:39:03.000000000","message":"I actually implemented it and accidentally uploaded it too :)\nhttps://review.openstack.org/#/c/613828/11..13/sushy/resources/updateservice/updateservice.py\nBut feels like, there is a lot more to add and improve.\nRight now I\u0027m working on a separate patch for `simple_update()`\nThat\u0027s why I included the TODO.\nSo, I was thinking in a future patch :)","commit_id":"0c61ec5567265a8a6a906a7ab4ee8c1200e3c233"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"4719d8febd5daa20c82fc4e824c787ad46cf5977","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            identity,"},{"line_number":77,"context_line":"            redfish_version)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # TODO(dnuka) def simple_update()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":82,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_2ec9ed78","line":79,"in_reply_to":"3f79a3b5_ce35d9a8","updated":"2018-11-25 13:23:19.000000000","message":"I was thinking in a future patch :)","commit_id":"0c61ec5567265a8a6a906a7ab4ee8c1200e3c233"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"736f63be3bfd2d33631c3178c44eb2834f576e8a","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return set([up_maps.TRANSFER_PROTOCOL_TYPE_VALUE_MAP[v] for v in"},{"line_number":103,"context_line":"                   set(up_maps.TRANSFER_PROTOCOL_TYPE_VALUE_MAP)."},{"line_number":104,"context_line":"                   intersection(simple_update_action.transfer_protocol)])"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def simple_update(self, transfer_protocol):"},{"line_number":107,"context_line":"        \"\"\"Simple Update\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_4504edc4","line":104,"updated":"2018-12-12 10:05:50.000000000","message":"nit: [] is not needed. you can also use the set syntax\n\n {smth[smth..] for smth in ... }","commit_id":"39f750ba1c9b331c563828273c3f28db42776aed"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"8c7d5da9702f5c7feaf81af446fbacad5eb4de1e","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return set([up_maps.TRANSFER_PROTOCOL_TYPE_VALUE_MAP[v] for v in"},{"line_number":103,"context_line":"                   set(up_maps.TRANSFER_PROTOCOL_TYPE_VALUE_MAP)."},{"line_number":104,"context_line":"                   intersection(simple_update_action.transfer_protocol)])"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def simple_update(self, transfer_protocol):"},{"line_number":107,"context_line":"        \"\"\"Simple Update\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_75d75023","line":104,"in_reply_to":"3f79a3b5_4504edc4","updated":"2018-12-12 14:47:59.000000000","message":"Done\nStill getting used to set comprehension syntax :)","commit_id":"39f750ba1c9b331c563828273c3f28db42776aed"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"736f63be3bfd2d33631c3178c44eb2834f576e8a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                valid_values\u003dvalid_transfer_protocols)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        self._conn.post(image_uri, targets, data\u003d{"},{"line_number":118,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":121,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_6509e9d9","line":118,"updated":"2018-12-12 10:05:50.000000000","message":"This does not look correct. The schema for SimpleUpdateActionField specifies 3 values: ImageUri, Target and TransferProtocol, this does not match even the latter. Also TransferProtocol seems to be optional according to the description.","commit_id":"39f750ba1c9b331c563828273c3f28db42776aed"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"8c7d5da9702f5c7feaf81af446fbacad5eb4de1e","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                valid_values\u003dvalid_transfer_protocols)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        self._conn.post(image_uri, targets, data\u003d{"},{"line_number":118,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":121,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_35c23857","line":118,"in_reply_to":"3f79a3b5_6509e9d9","updated":"2018-12-12 14:47:59.000000000","message":"Done","commit_id":"39f750ba1c9b331c563828273c3f28db42776aed"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1a3a523e38335234b5249db79480148672179f01","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        \"\"\"Simple Update is used to update software components\"\"\""},{"line_number":108,"context_line":"        image_uri \u003d self._get_simple_update_element().image_uri"},{"line_number":109,"context_line":"        targets \u003d self._get_simple_update_element().targets"},{"line_number":110,"context_line":"        transfer_protocol \u003d self._get_simple_update_element().transfer_protocol"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        valid_transfer_protocols \u003d self.get_allowed_transfer_protocol_values()"},{"line_number":113,"context_line":"        if transfer_protocol not in valid_transfer_protocols:"}],"source_content_type":"text/x-python","patch_set":16,"id":"dfd5e7cf_f603550c","line":110,"updated":"2019-01-08 11:43:17.000000000","message":"these parameters are what your function accepts, not something that the server provides you. Essentially, a user wants to update firmware from some HTTP location. So they do\n\n conn.get_update_service().simple_update(image_uri\u003d\"https://local.server/update.exe\", targets\u003d...)","commit_id":"551a8e1588b81962817702d70387453f3063728b"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"8bf949477c646d562d502d3c9b390b9ff5511d3b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        \"\"\"Simple Update is used to update software components\"\"\""},{"line_number":108,"context_line":"        image_uri \u003d self._get_simple_update_element().image_uri"},{"line_number":109,"context_line":"        targets \u003d self._get_simple_update_element().targets"},{"line_number":110,"context_line":"        transfer_protocol \u003d self._get_simple_update_element().transfer_protocol"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        valid_transfer_protocols \u003d self.get_allowed_transfer_protocol_values()"},{"line_number":113,"context_line":"        if transfer_protocol not in valid_transfer_protocols:"}],"source_content_type":"text/x-python","patch_set":16,"id":"dfd5e7cf_56f9017e","line":110,"in_reply_to":"dfd5e7cf_f603550c","updated":"2019-01-08 12:15:57.000000000","message":"Thank you for explaining this.","commit_id":"551a8e1588b81962817702d70387453f3063728b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1a3a523e38335234b5249db79480148672179f01","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                valid_values\u003dvalid_transfer_protocols)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        self._conn.post(image_uri, data\u003d{"},{"line_number":119,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":120,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_software_inventory_collection_path(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"dfd5e7cf_9608c928","line":119,"updated":"2019-01-08 11:43:17.000000000","message":"missing ImageUri","commit_id":"551a8e1588b81962817702d70387453f3063728b"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"8bf949477c646d562d502d3c9b390b9ff5511d3b","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                valid_values\u003dvalid_transfer_protocols)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        self._conn.post(image_uri, data\u003d{"},{"line_number":119,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":120,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_software_inventory_collection_path(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"dfd5e7cf_f61835d4","line":119,"in_reply_to":"dfd5e7cf_9608c928","updated":"2019-01-08 12:15:57.000000000","message":"Done","commit_id":"551a8e1588b81962817702d70387453f3063728b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1a3a523e38335234b5249db79480148672179f01","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        self._conn.post(image_uri, data\u003d{"},{"line_number":119,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":120,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":123,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"dfd5e7cf_b60dcd38","line":120,"updated":"2019-01-08 11:43:17.000000000","message":"are you sure about the space before \"Protocol\"?","commit_id":"551a8e1588b81962817702d70387453f3063728b"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"8bf949477c646d562d502d3c9b390b9ff5511d3b","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        self._conn.post(image_uri, data\u003d{"},{"line_number":119,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":120,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":123,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"dfd5e7cf_f67d95e7","line":120,"in_reply_to":"dfd5e7cf_b60dcd38","updated":"2019-01-08 12:15:57.000000000","message":"I\u0027m not sure what you mean by this :) can you please explain this a bit.","commit_id":"551a8e1588b81962817702d70387453f3063728b"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"7756d800e9fe51f82b04f6f3df43cdb5d2a12484","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self._conn.post(data\u003d{"},{"line_number":117,"context_line":"            \u0027ImageURI\u0027: image_uri,"},{"line_number":118,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":119,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":122,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"dfd5e7cf_cfb3de4c","line":119,"range":{"start_line":119,"start_character":14,"end_line":119,"end_character":29},"updated":"2019-01-10 14:03:14.000000000","message":"What Dmitry asked was if the space between the words are necessary, according to [1] I don\u0027t think the space between the words should exist.\n\n[1] http://redfish.dmtf.org/schemas/v1/UpdateService.v1_3_0.json","commit_id":"f775935da634109e23bd934cda8363c040c7bf1f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"87e85e6a6215103f368d580e599c237606a897bd","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self._conn.post(data\u003d{"},{"line_number":117,"context_line":"            \u0027ImageURI\u0027: image_uri,"},{"line_number":118,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":119,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":122,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"dfd5e7cf_8f3156a5","line":119,"range":{"start_line":119,"start_character":14,"end_line":119,"end_character":29},"in_reply_to":"dfd5e7cf_cfb3de4c","updated":"2019-01-10 14:10:42.000000000","message":"Probably justifies a unit test?","commit_id":"f775935da634109e23bd934cda8363c040c7bf1f"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"4d13aeb26dbd38f60646c3757cefd2493c829a3c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self._conn.post(data\u003d{"},{"line_number":117,"context_line":"            \u0027ImageURI\u0027: image_uri,"},{"line_number":118,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":119,"context_line":"            \u0027Transfer Protocol\u0027: transfer_protocol})"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":122,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"bfdaf3ff_c5a7984f","line":119,"range":{"start_line":119,"start_character":14,"end_line":119,"end_character":29},"in_reply_to":"dfd5e7cf_cfb3de4c","updated":"2019-01-11 03:26:51.000000000","message":"Thank you Iury for clearing up the confusion :)","commit_id":"f775935da634109e23bd934cda8363c040c7bf1f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3a1c526339a7d8f7c49e52d164005a29c5196d9d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                   simple_update_action.transfer_protocol if v in"},{"line_number":104,"context_line":"                   up_maps.TRANSFER_PROTOCOL_TYPE_VALUE_MAP)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def simple_update(self, image_uri, targets):"},{"line_number":107,"context_line":"        \"\"\"Simple Update is used to update software components\"\"\""},{"line_number":108,"context_line":"        transfer_protocol \u003d self._get_simple_update_element().transfer_protocol"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"bfdaf3ff_2dd4f11f","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":21},"updated":"2019-01-16 09:35:35.000000000","message":"Need to add testcase for this.","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3a1c526339a7d8f7c49e52d164005a29c5196d9d","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @property"},{"line_number":130,"context_line":"    @utils.cache_it"},{"line_number":131,"context_line":"    def software_inventory(self):"},{"line_number":132,"context_line":"        \"\"\"Property to reference SoftwareInventoryCollection instance\"\"\""},{"line_number":133,"context_line":"        return softwareinventory.SoftwareInventoryCollection("},{"line_number":134,"context_line":"            self.conn, self._get_software_inventory_collection_path,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bfdaf3ff_8dfe3dac","line":131,"range":{"start_line":131,"start_character":8,"end_line":131,"end_character":26},"updated":"2019-01-16 09:35:35.000000000","message":"Need to add testcase for this.","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"86a504d2ecd1cc348463ad34f263dd13ce1bb2d6","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @property"},{"line_number":130,"context_line":"    @utils.cache_it"},{"line_number":131,"context_line":"    def software_inventory(self):"},{"line_number":132,"context_line":"        \"\"\"Property to reference SoftwareInventoryCollection instance\"\"\""},{"line_number":133,"context_line":"        return softwareinventory.SoftwareInventoryCollection("},{"line_number":134,"context_line":"            self.conn, self._get_software_inventory_collection_path,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9fdfeff1_75f9527e","line":131,"range":{"start_line":131,"start_character":8,"end_line":131,"end_character":26},"in_reply_to":"bfdaf3ff_8dfe3dac","updated":"2019-02-11 08:40:06.000000000","message":"Done","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3a1c526339a7d8f7c49e52d164005a29c5196d9d","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    @property"},{"line_number":138,"context_line":"    @utils.cache_it"},{"line_number":139,"context_line":"    def firmware_inventory(self):"},{"line_number":140,"context_line":"        \"\"\"Property to reference SoftwareInventoryCollection instance\"\"\""},{"line_number":141,"context_line":"        return softwareinventory.SoftwareInventoryCollection("},{"line_number":142,"context_line":"            self.conn, self._get_software_inventory_collection_path,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bfdaf3ff_cd93e5a2","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":26},"updated":"2019-01-16 09:35:35.000000000","message":"Need to add testcase for this.","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"86a504d2ecd1cc348463ad34f263dd13ce1bb2d6","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    @property"},{"line_number":138,"context_line":"    @utils.cache_it"},{"line_number":139,"context_line":"    def firmware_inventory(self):"},{"line_number":140,"context_line":"        \"\"\"Property to reference SoftwareInventoryCollection instance\"\"\""},{"line_number":141,"context_line":"        return softwareinventory.SoftwareInventoryCollection("},{"line_number":142,"context_line":"            self.conn, self._get_software_inventory_collection_path,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9fdfeff1_95f4f688","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":26},"in_reply_to":"bfdaf3ff_cd93e5a2","updated":"2019-02-11 08:40:06.000000000","message":"Done","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    targets \u003d base.Field(\u0027Targets\u0027)"},{"line_number":35,"context_line":"    \"\"\"The array of URIs indicating where the update image is to be"},{"line_number":36,"context_line":"    applied\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    transfer_protocol \u003d base.MappedField("},{"line_number":39,"context_line":"        \u0027TransferProtocol\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_4fe1172a","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":4},"updated":"2019-02-11 15:19:12.000000000","message":"nit: perhaps snip the spaces and possibly add line continuation (\\) if you want the docstring to render as one line?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    targets \u003d base.Field(\u0027Targets\u0027)"},{"line_number":35,"context_line":"    \"\"\"The array of URIs indicating where the update image is to be"},{"line_number":36,"context_line":"    applied\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    transfer_protocol \u003d base.MappedField("},{"line_number":39,"context_line":"        \u0027TransferProtocol\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_3b536c6d","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":4},"in_reply_to":"9fdfeff1_4fe1172a","updated":"2019-02-14 10:32:34.000000000","message":"Done","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    http_push_uri \u003d base.Field(\u0027HttpPushUri\u0027)"},{"line_number":56,"context_line":"    \"\"\"The URI used to perform an HTTP or HTTPS push update to the Update"},{"line_number":57,"context_line":"    Service\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    http_push_uri_targets \u003d base.Field(\u0027HttpPushUriTargets\u0027)"},{"line_number":60,"context_line":"    \"\"\"The array of URIs indicating the target for applying the update image\"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_2fbff3fb","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":4},"updated":"2019-02-11 15:19:12.000000000","message":"ditto","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    http_push_uri \u003d base.Field(\u0027HttpPushUri\u0027)"},{"line_number":56,"context_line":"    \"\"\"The URI used to perform an HTTP or HTTPS push update to the Update"},{"line_number":57,"context_line":"    Service\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    http_push_uri_targets \u003d base.Field(\u0027HttpPushUriTargets\u0027)"},{"line_number":60,"context_line":"    \"\"\"The array of URIs indicating the target for applying the update image\"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_1b56a85d","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":4},"in_reply_to":"9fdfeff1_2fbff3fb","updated":"2019-02-14 10:32:34.000000000","message":"Done","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    http_push_uri_targets_busy \u003d base.Field(\u0027HttpPushUriTargetsBusy\u0027)"},{"line_number":63,"context_line":"    \"\"\"This represents if the HttpPushUriTargets property is reserved by any"},{"line_number":64,"context_line":"    client\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    name \u003d base.Field(\u0027Name\u0027, required\u003dTrue)"},{"line_number":67,"context_line":"    \"\"\"The update service name\"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_4fba770a","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":4},"updated":"2019-02-11 15:19:12.000000000","message":"ditto","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    http_push_uri_targets_busy \u003d base.Field(\u0027HttpPushUriTargetsBusy\u0027)"},{"line_number":63,"context_line":"    \"\"\"This represents if the HttpPushUriTargets property is reserved by any"},{"line_number":64,"context_line":"    client\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    name \u003d base.Field(\u0027Name\u0027, required\u003dTrue)"},{"line_number":67,"context_line":"    \"\"\"The update service name\"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_fb4884b3","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":4},"in_reply_to":"9fdfeff1_4fba770a","updated":"2019-02-14 10:32:34.000000000","message":"Done","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    \"\"\"The update service name\"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    service_enabled \u003d base.Field(\u0027ServiceEnabled\u0027)"},{"line_number":70,"context_line":"    \"\"\"The status of update service is enableid\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    status \u003d common.StatusField(\u0027Status\u0027)"},{"line_number":73,"context_line":"    \"\"\"The status of the update service\"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_0f630fb3","line":70,"range":{"start_line":70,"start_character":39,"end_line":70,"end_character":47},"updated":"2019-02-11 15:19:12.000000000","message":"typo","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    \"\"\"The update service name\"\"\""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    service_enabled \u003d base.Field(\u0027ServiceEnabled\u0027)"},{"line_number":70,"context_line":"    \"\"\"The status of update service is enableid\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    status \u003d common.StatusField(\u0027Status\u0027)"},{"line_number":73,"context_line":"    \"\"\"The status of the update service\"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_dbe0209a","line":70,"range":{"start_line":70,"start_character":39,"end_line":70,"end_character":47},"in_reply_to":"9fdfeff1_0f630fb3","updated":"2019-02-14 10:32:34.000000000","message":"Done","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    _actions \u003d ActionsField(\u0027Actions\u0027, required\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"},{"line_number":78,"context_line":"        \"\"\"A class representing a UpdateService"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        :param connector: A Connector instance"},{"line_number":81,"context_line":"        :param identity: The identity of the UpdateService resource"},{"line_number":82,"context_line":"        :param redfish_version: The version of RedFish. Used to construct"},{"line_number":83,"context_line":"            the object according to schema of given version"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        super(UpdateService, self).__init__("},{"line_number":86,"context_line":"            connector,"},{"line_number":87,"context_line":"            identity,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_0f08efd6","line":84,"range":{"start_line":78,"start_character":8,"end_line":84,"end_character":11},"updated":"2019-02-11 15:19:12.000000000","message":"perhaps move this to class docstring and snip the whole __init__()?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    _actions \u003d ActionsField(\u0027Actions\u0027, required\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"},{"line_number":78,"context_line":"        \"\"\"A class representing a UpdateService"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        :param connector: A Connector instance"},{"line_number":81,"context_line":"        :param identity: The identity of the UpdateService resource"},{"line_number":82,"context_line":"        :param redfish_version: The version of RedFish. Used to construct"},{"line_number":83,"context_line":"            the object according to schema of given version"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        super(UpdateService, self).__init__("},{"line_number":86,"context_line":"            connector,"},{"line_number":87,"context_line":"            identity,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_fb7964c4","line":84,"range":{"start_line":78,"start_character":8,"end_line":84,"end_character":11},"in_reply_to":"9fdfeff1_0f08efd6","updated":"2019-02-14 10:32:34.000000000","message":"This is the common convention used in other modules in sushy :)","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                resource\u003dself._path)"},{"line_number":96,"context_line":"        return simple_update_action"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def get_allowed_transfer_protocol_values(self):"},{"line_number":99,"context_line":"        \"\"\"Get the allowed values for transfer protocol."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :returns: A set of allowed values."}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_ef8ecb25","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":44},"updated":"2019-02-11 15:19:12.000000000","message":"should this better be a property?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                resource\u003dself._path)"},{"line_number":96,"context_line":"        return simple_update_action"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def get_allowed_transfer_protocol_values(self):"},{"line_number":99,"context_line":"        \"\"\"Get the allowed values for transfer protocol."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :returns: A set of allowed values."}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_db03400f","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":44},"in_reply_to":"9fdfeff1_ef8ecb25","updated":"2019-02-14 10:32:34.000000000","message":"I had the same thought. But according to the schema, it is not. right?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":130,"context_line":"            \u0027TransferProtocol\u0027: transfer_protocol})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":133,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""},{"line_number":134,"context_line":"        soft_inv_col \u003d self.json.get(\u0027SoftwareInventory\u0027)"},{"line_number":135,"context_line":"        if not soft_inv_col:"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_cfe987b7","line":132,"range":{"start_line":132,"start_character":8,"end_line":132,"end_character":47},"updated":"2019-02-11 15:19:12.000000000","message":"should this better be a property?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            \u0027Targets\u0027: targets,"},{"line_number":130,"context_line":"            \u0027TransferProtocol\u0027: transfer_protocol})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _get_software_inventory_collection_path(self):"},{"line_number":133,"context_line":"        \"\"\"Helper function to find the SoftwareInventoryCollections path\"\"\""},{"line_number":134,"context_line":"        soft_inv_col \u003d self.json.get(\u0027SoftwareInventory\u0027)"},{"line_number":135,"context_line":"        if not soft_inv_col:"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_d706b41c","line":132,"range":{"start_line":132,"start_character":8,"end_line":132,"end_character":47},"in_reply_to":"9fdfeff1_cfe987b7","updated":"2019-02-14 10:32:34.000000000","message":"I had the same thought. But according to the schema, it is not. right?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"b77feda9b218fea9e53f196c331bf2b869f9ab84","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                resource\u003dself._path)"},{"line_number":97,"context_line":"        return simple_update_action"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_allowed_transfer_protocol_values(self):"},{"line_number":100,"context_line":"        \"\"\"Get the allowed values for transfer protocol."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        :returns: A set of allowed values."}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_8ec0e051","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":44},"updated":"2019-02-18 09:09:40.000000000","message":"Need  to add testcases for this method.","commit_id":"88aeb030c3f3dc359f0ebe6f340e1933e446fde6"}],"sushy/tests/unit/json_samples/softwareinventory.json":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"dc05cc4a1a64f2f636b4b2041a9fdc2193293a73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3f79a3b5_f9525dda","line":14,"updated":"2018-11-01 14:45:55.000000000","message":"https://www.dmtf.org/sites/default/files/standards/documents/DSP2046_2018.1.pdf page 168 have an example of response more complete I think","commit_id":"8e6ded63b9dc03ad3e19c7b8eb77d580261f34c6"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"@odata.type\": \"#SoftwareInventory.v1_2_0.SoftwareInventory\","},{"line_number":3,"context_line":"    \"Id\": \"BMC\","},{"line_number":4,"context_line":"    \"Name\": \"Contoso BMC Firmware\","},{"line_number":5,"context_line":"    \"Status\": {"}],"source_content_type":"application/json","patch_set":20,"id":"9fdfeff1_afff6365","line":2,"range":{"start_line":2,"start_character":39,"end_line":2,"end_character":45},"updated":"2019-02-11 15:19:12.000000000","message":"just to make sure - does this JSON schema version belong to the schema pack sushy claims to support?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"@odata.type\": \"#SoftwareInventory.v1_2_0.SoftwareInventory\","},{"line_number":3,"context_line":"    \"Id\": \"BMC\","},{"line_number":4,"context_line":"    \"Name\": \"Contoso BMC Firmware\","},{"line_number":5,"context_line":"    \"Status\": {"}],"source_content_type":"application/json","patch_set":20,"id":"9fdfeff1_7715883c","line":2,"range":{"start_line":2,"start_character":39,"end_line":2,"end_character":45},"in_reply_to":"9fdfeff1_afff6365","updated":"2019-02-14 10:32:34.000000000","message":"Already has the correct version.","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"}],"sushy/tests/unit/json_samples/softwareinventory_collection.json":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"b89f46bcc29874107e58029aa02760ce87a0aaf4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    \"Name\": \"Software Inventory Collection\","},{"line_number":5,"context_line":"    \"Members@odata.count\": 0,"},{"line_number":6,"context_line":"    \"Members\": ["},{"line_number":7,"context_line":"        "},{"line_number":8,"context_line":"    ]"},{"line_number":9,"context_line":"}"},{"line_number":10,"context_line":""}],"source_content_type":"application/json","patch_set":3,"id":"3f79a3b5_c676c40c","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":8},"updated":"2018-10-30 23:32:11.000000000","message":"remove blank spaces","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"ee27c51e1ac5cd9ff2ed1dc368bae5d8ece2619e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    \"Name\": \"Software Inventory Collection\","},{"line_number":5,"context_line":"    \"Members@odata.count\": 0,"},{"line_number":6,"context_line":"    \"Members\": ["},{"line_number":7,"context_line":"        "},{"line_number":8,"context_line":"    ]"},{"line_number":9,"context_line":"}"},{"line_number":10,"context_line":""}],"source_content_type":"application/json","patch_set":3,"id":"3f79a3b5_c65b195f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":8},"in_reply_to":"3f79a3b5_c676c40c","updated":"2018-10-31 13:01:16.000000000","message":"Done","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"dc05cc4a1a64f2f636b4b2041a9fdc2193293a73","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    \"Members@odata.count\": 0,"},{"line_number":6,"context_line":"    \"Members\": []"},{"line_number":7,"context_line":"}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":""}],"source_content_type":"application/json","patch_set":5,"id":"3f79a3b5_397d3570","line":10,"range":{"start_line":8,"start_character":0,"end_line":10,"end_character":0},"updated":"2018-11-01 14:45:55.000000000","message":"lines 8-10 not necessary \u003d)","commit_id":"8e6ded63b9dc03ad3e19c7b8eb77d580261f34c6"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"7bf0b04dbdf09486770de0ff87f0accc961c439a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    \"Members@odata.count\": 0,"},{"line_number":6,"context_line":"    \"Members\": []"},{"line_number":7,"context_line":"}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":""}],"source_content_type":"application/json","patch_set":5,"id":"3f79a3b5_92668928","line":10,"range":{"start_line":8,"start_character":0,"end_line":10,"end_character":0},"in_reply_to":"3f79a3b5_397d3570","updated":"2018-11-02 13:28:44.000000000","message":"Done","commit_id":"8e6ded63b9dc03ad3e19c7b8eb77d580261f34c6"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"ab2fae0923fcac4a376957cbec8812fafe49ffca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"@odata.type\": \"#SoftwareInventoryCollection.SoftwareInventoryCollection\","},{"line_number":3,"context_line":"    \"@odata.id\": \"/redfish/v1/UpdateService/SoftwareInventory\","},{"line_number":4,"context_line":"    \"Name\": \"Software Inventory Collection\","},{"line_number":5,"context_line":"    \"Members@odata.count\": 2,"}],"source_content_type":"application/json","patch_set":20,"id":"9fdfeff1_4fa6f755","line":2,"updated":"2019-02-11 15:19:12.000000000","message":"interestingly, no schema version here. may be that\u0027s ok?","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"9e79ac9ad2f25b051ee535afe8025d0c8b96788f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"@odata.type\": \"#SoftwareInventoryCollection.SoftwareInventoryCollection\","},{"line_number":3,"context_line":"    \"@odata.id\": \"/redfish/v1/UpdateService/SoftwareInventory\","},{"line_number":4,"context_line":"    \"Name\": \"Software Inventory Collection\","},{"line_number":5,"context_line":"    \"Members@odata.count\": 2,"}],"source_content_type":"application/json","patch_set":20,"id":"9fdfeff1_5b58b088","line":2,"in_reply_to":"9fdfeff1_4fa6f755","updated":"2019-02-14 10:32:34.000000000","message":"Done","commit_id":"1ec1624ea6c1481cd47b01899585e81f8633875e"}],"sushy/tests/unit/json_samples/updateservice.json":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"dc05cc4a1a64f2f636b4b2041a9fdc2193293a73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3f79a3b5_99dc8972","line":22,"updated":"2018-11-01 14:45:55.000000000","message":"https://www.dmtf.org/sites/default/files/standards/documents/DSP2046_2018.1.pdf On page 214 shows more information","commit_id":"8e6ded63b9dc03ad3e19c7b8eb77d580261f34c6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c18fc9e4a4f4fb65f38e2ebedf9f78645810c676","unresolved":false,"context_lines":[{"line_number":16,"context_line":"        \"@odata.id\": \"/redfish/v1/UpdateService/SoftwareInventory\""},{"line_number":17,"context_line":"    },"},{"line_number":18,"context_line":"    \"Actions\": {"},{"line_number":19,"context_line":"        \"#UpdateService.SimpleUpdate\": {"},{"line_number":20,"context_line":"            \"target\": \"/redfish/v1/UpdateService/Actions/SimpleUpdate\","},{"line_number":21,"context_line":"            \"@Redfish.ActionInfo\": \"/redfish/v1/UpdateService/SimpleUpdateActionInfo\""},{"line_number":22,"context_line":"        },"}],"source_content_type":"application/json","patch_set":8,"id":"3f79a3b5_a4fa550d","line":19,"updated":"2018-11-19 18:06:04.000000000","message":"We need to implement this method if it\u0027s a part of the standard","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"2305f20f4c71bd9a6ece6be58f39b6a59be401ba","unresolved":false,"context_lines":[{"line_number":16,"context_line":"        \"@odata.id\": \"/redfish/v1/UpdateService/SoftwareInventory\""},{"line_number":17,"context_line":"    },"},{"line_number":18,"context_line":"    \"Actions\": {"},{"line_number":19,"context_line":"        \"#UpdateService.SimpleUpdate\": {"},{"line_number":20,"context_line":"            \"target\": \"/redfish/v1/UpdateService/Actions/SimpleUpdate\","},{"line_number":21,"context_line":"            \"@Redfish.ActionInfo\": \"/redfish/v1/UpdateService/SimpleUpdateActionInfo\""},{"line_number":22,"context_line":"        },"}],"source_content_type":"application/json","patch_set":8,"id":"3f79a3b5_4a5fc04b","line":19,"in_reply_to":"3f79a3b5_a4fa550d","updated":"2018-11-20 09:47:28.000000000","message":"TODO","commit_id":"08306c1f817ecae2c2f435a815fcfb1eb50d267f"}],"sushy/tests/unit/resources/updateservice/test_softwareinventory.py":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"b89f46bcc29874107e58029aa02760ce87a0aaf4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            \u0027/redfish/v1/UpdateService/SoftwareInventory/1\u0027,"},{"line_number":33,"context_line":"            redfish_version\u003d\u00271.2.1\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test__parse_attributes(self):"},{"line_number":36,"context_line":"        self.soft_inv._parse_attributes()"},{"line_number":37,"context_line":"        self.assertEqual(\u0027SoftwareInventory\u0027, self.soft_inv.identity)"},{"line_number":38,"context_line":"        self.assertEqual(\u00271.0\u0027, self.soft_inv.lowest_supported_version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2637784f","line":35,"range":{"start_line":35,"start_character":12,"end_line":35,"end_character":14},"updated":"2018-10-30 23:32:11.000000000","message":"Its really necessary two underscores?","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"ee27c51e1ac5cd9ff2ed1dc368bae5d8ece2619e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            \u0027/redfish/v1/UpdateService/SoftwareInventory/1\u0027,"},{"line_number":33,"context_line":"            redfish_version\u003d\u00271.2.1\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test__parse_attributes(self):"},{"line_number":36,"context_line":"        self.soft_inv._parse_attributes()"},{"line_number":37,"context_line":"        self.assertEqual(\u0027SoftwareInventory\u0027, self.soft_inv.identity)"},{"line_number":38,"context_line":"        self.assertEqual(\u00271.0\u0027, self.soft_inv.lowest_supported_version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_067911c5","line":35,"range":{"start_line":35,"start_character":12,"end_line":35,"end_character":14},"in_reply_to":"3f79a3b5_2637784f","updated":"2018-10-31 13:01:16.000000000","message":"I just followed the common convention :)","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"b89f46bcc29874107e58029aa02760ce87a0aaf4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.assertEqual(\u0027101\u0027, self.soft_inv.software_id)"},{"line_number":43,"context_line":"        self.assertTrue(self.soft_inv.updateable)"},{"line_number":44,"context_line":"        self.assertEqual(\u00271.0\u0027, self.soft_inv.version)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class SoftwareInventoryCollectionTestCase(base.TestCase):"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a612a863","line":45,"updated":"2018-10-30 23:32:11.000000000","message":"Please add more tests to ensure that will raise an exception if some att is missing for e.g","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"ee27c51e1ac5cd9ff2ed1dc368bae5d8ece2619e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.assertEqual(\u0027101\u0027, self.soft_inv.software_id)"},{"line_number":43,"context_line":"        self.assertTrue(self.soft_inv.updateable)"},{"line_number":44,"context_line":"        self.assertEqual(\u00271.0\u0027, self.soft_inv.version)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class SoftwareInventoryCollectionTestCase(base.TestCase):"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c6447979","line":45,"in_reply_to":"3f79a3b5_a612a863","updated":"2018-10-31 13:01:16.000000000","message":"Done","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"b89f46bcc29874107e58029aa02760ce87a0aaf4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            self.conn, \u0027/redfish/v1/UpdateService/SoftwareInventory\u0027,"},{"line_number":58,"context_line":"            redfish_version\u003d\u00271.2.1\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test__parse_attributes(self):"},{"line_number":61,"context_line":"        self.soft_inv_col._parse_attributes()"},{"line_number":62,"context_line":"        self.assertEqual(\u00271.2.1\u0027, self.soft_inv_col.redfish_version)"},{"line_number":63,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_662d70fb","line":60,"range":{"start_line":60,"start_character":12,"end_line":60,"end_character":14},"updated":"2018-10-30 23:32:11.000000000","message":"ditto","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"b89f46bcc29874107e58029aa02760ce87a0aaf4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.soft_inv_col._parse_attributes()"},{"line_number":62,"context_line":"        self.assertEqual(\u00271.2.1\u0027, self.soft_inv_col.redfish_version)"},{"line_number":63,"context_line":"        self.assertEqual("},{"line_number":64,"context_line":"            \u0027Software Inventory Collection\u0027, self.soft_inv_col.name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_26069824","line":64,"updated":"2018-10-30 23:32:11.000000000","message":"ditto (more tests)","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"ee27c51e1ac5cd9ff2ed1dc368bae5d8ece2619e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.soft_inv_col._parse_attributes()"},{"line_number":62,"context_line":"        self.assertEqual(\u00271.2.1\u0027, self.soft_inv_col.redfish_version)"},{"line_number":63,"context_line":"        self.assertEqual("},{"line_number":64,"context_line":"            \u0027Software Inventory Collection\u0027, self.soft_inv_col.name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c1f78328","line":64,"in_reply_to":"3f79a3b5_26069824","updated":"2018-10-31 13:01:16.000000000","message":"I couldn\u0027t find anything related to UpdateService other than the schema. Also, there is no mockups for it too. Is there any resources that I can look up :)","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d10c41870f6d96b12bb918ec9d3d2b91aeb5b3be","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(SoftwareInventoryTestCase, self).setUp()"},{"line_number":27,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":28,"context_line":"        with open("},{"line_number":29,"context_line":"            \u0027sushy/tests/unit/json_samples/softwareinventory.json\u0027) as f:"},{"line_number":30,"context_line":"            self.conn.get.return_value.json.return_value \u003d json.load(f)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_5b6b5b1b","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":17},"updated":"2018-11-14 16:03:09.000000000","message":"nit: could be just `conn`, not `self.conn`?","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"a5fdd52a0c17aa5f8b2aee2289f6d63a92f31386","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(SoftwareInventoryTestCase, self).setUp()"},{"line_number":27,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":28,"context_line":"        with open("},{"line_number":29,"context_line":"            \u0027sushy/tests/unit/json_samples/softwareinventory.json\u0027) as f:"},{"line_number":30,"context_line":"            self.conn.get.return_value.json.return_value \u003d json.load(f)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_f3fda370","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":17},"in_reply_to":"3f79a3b5_5b6b5b1b","updated":"2018-11-15 07:49:10.000000000","message":"I think `self` is required here :)","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"51af8d1b34b8fd25308ab49a26936907be186686","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(SoftwareInventoryTestCase, self).setUp()"},{"line_number":27,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":28,"context_line":"        with open("},{"line_number":29,"context_line":"            \u0027sushy/tests/unit/json_samples/softwareinventory.json\u0027) as f:"},{"line_number":30,"context_line":"            self.conn.get.return_value.json.return_value \u003d json.load(f)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_f1079bc7","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":17},"in_reply_to":"3f79a3b5_dd2dd8fc","updated":"2018-11-20 13:38:11.000000000","message":"That make sense :)","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7f5624a3474409dd5cecdaf16af731b7768b75d4","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(SoftwareInventoryTestCase, self).setUp()"},{"line_number":27,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":28,"context_line":"        with open("},{"line_number":29,"context_line":"            \u0027sushy/tests/unit/json_samples/softwareinventory.json\u0027) as f:"},{"line_number":30,"context_line":"            self.conn.get.return_value.json.return_value \u003d json.load(f)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_dd2dd8fc","line":27,"range":{"start_line":27,"start_character":13,"end_line":27,"end_character":17},"in_reply_to":"3f79a3b5_f3fda370","updated":"2018-11-20 10:26:45.000000000","message":"Why do we have to keep a reference to the connection object for the rest of the test cases *if* `self.conn` is never used there? Could we get away with just a local variable `conn` which is only defined in `setUp`?","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d10c41870f6d96b12bb918ec9d3d2b91aeb5b3be","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(SoftwareInventoryCollectionTestCase, self).setUp()"},{"line_number":67,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":68,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/\u0027"},{"line_number":69,"context_line":"                  \u0027softwareinventory_collection.json\u0027) as f:"},{"line_number":70,"context_line":"            self.conn.get.return_value.json.return_value \u003d json.load(f)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_1b5f2375","line":67,"range":{"start_line":67,"start_character":13,"end_line":67,"end_character":17},"updated":"2018-11-14 16:03:09.000000000","message":"nit: could be just `conn`, not `self.conn`?","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3a1c526339a7d8f7c49e52d164005a29c5196d9d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            \u00271624A9DF-5E13-47FC-874A-DF3AFF143089\u0027,"},{"line_number":52,"context_line":"            self.soft_inv.software_id)"},{"line_number":53,"context_line":"        self.assertTrue(self.soft_inv.updateable)"},{"line_number":54,"context_line":"        self.assertEqual(\u00271.45.455b66-rev4\u0027, self.soft_inv.version)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test__parse_attributes_missing_identity(self):"},{"line_number":57,"context_line":"        self.soft_inv.json.pop(\u0027Id\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bfdaf3ff_2d38719e","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":67},"updated":"2019-01-16 09:35:35.000000000","message":"Add validation for \u0027UefiDevicePaths\u0027 and \u0027RelatedItem\u0027","commit_id":"2a3b63a6d0acdfe3a7e8330d9aa89b041350b989"}],"sushy/tests/unit/resources/updateservice/test_updateservice.py":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"b89f46bcc29874107e58029aa02760ce87a0aaf4","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.conn, \u0027/redfish/v1/UpdateService\u0027,"},{"line_number":31,"context_line":"            redfish_version\u003d\u00271.3.0\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test__parse_attributes(self):"},{"line_number":34,"context_line":"        self.upd_serv._parse_attributes()"},{"line_number":35,"context_line":"        self.assertEqual(\"/\", self.upd_serv.http_push_uri)"},{"line_number":36,"context_line":"        self.assertFalse(self.upd_serv.http_push_uri_targets_busy)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e6ebc0a2","line":33,"range":{"start_line":33,"start_character":12,"end_line":33,"end_character":14},"updated":"2018-10-30 23:32:11.000000000","message":"ditto","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"ee27c51e1ac5cd9ff2ed1dc368bae5d8ece2619e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.conn, \u0027/redfish/v1/UpdateService\u0027,"},{"line_number":31,"context_line":"            redfish_version\u003d\u00271.3.0\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test__parse_attributes(self):"},{"line_number":34,"context_line":"        self.upd_serv._parse_attributes()"},{"line_number":35,"context_line":"        self.assertEqual(\"/\", self.upd_serv.http_push_uri)"},{"line_number":36,"context_line":"        self.assertFalse(self.upd_serv.http_push_uri_targets_busy)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_863e81e1","line":33,"range":{"start_line":33,"start_character":12,"end_line":33,"end_character":14},"in_reply_to":"3f79a3b5_e6ebc0a2","updated":"2018-10-31 13:01:16.000000000","message":"Done","commit_id":"d25a2d4a4ee6a271e66ba7be2839f7b60af1d121"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d10c41870f6d96b12bb918ec9d3d2b91aeb5b3be","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super(UpdateServiceTestCase, self).setUp()"},{"line_number":26,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":27,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/updateservice.json\u0027) as f:"},{"line_number":28,"context_line":"            self.conn.get.return_value.json.return_value \u003d json.load(f)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_db0a0b77","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":18},"updated":"2018-11-14 16:03:09.000000000","message":"nit: could be just `conn`, not `self.conn`?","commit_id":"2f81aabcbe98e5efd7567cbd3125f7f3dacfaf6a"}]}
