)]}'
{"sushy/exceptions.py":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"44395c9b54958a4febd5785c6d7824947ca8913d","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self.code \u003d self.body.get(\u0027code\u0027, \u0027Base.1.0.GeneralError\u0027)"},{"line_number":102,"context_line":"            self.detail \u003d self.body.get(\u0027message\u0027)"},{"line_number":103,"context_line":"            ext_info \u003d self.body.get(\u0027@Message.ExtendedInfo\u0027, [{}])"},{"line_number":104,"context_line":"            self.detail \u003d ext_info[0].get(\u0027Message\u0027, self.detail)"},{"line_number":105,"context_line":"            error \u003d \u0027%s: %s\u0027 % (self.code, self.detail or \u0027unknown error\u0027)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        kwargs \u003d {\u0027method\u0027: method, \u0027url\u0027: url, \u0027code\u0027: self.status_code,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_5cb7ef87","line":104,"range":{"start_line":104,"start_character":35,"end_line":104,"end_character":36},"updated":"2019-06-03 08:57:46.000000000","message":"Would it make sense to pick the most severe message among possible many?","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"2b0563bfc2b32cab895056d416b39ae78c6d37fa","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self.code \u003d self.body.get(\u0027code\u0027, \u0027Base.1.0.GeneralError\u0027)"},{"line_number":102,"context_line":"            self.detail \u003d self.body.get(\u0027message\u0027)"},{"line_number":103,"context_line":"            ext_info \u003d self.body.get(\u0027@Message.ExtendedInfo\u0027, [{}])"},{"line_number":104,"context_line":"            self.detail \u003d ext_info[0].get(\u0027Message\u0027, self.detail)"},{"line_number":105,"context_line":"            error \u003d \u0027%s: %s\u0027 % (self.code, self.detail or \u0027unknown error\u0027)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        kwargs \u003d {\u0027method\u0027: method, \u0027url\u0027: url, \u0027code\u0027: self.status_code,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_2380ce8b","line":104,"range":{"start_line":104,"start_character":35,"end_line":104,"end_character":36},"in_reply_to":"9fb8cfa7_5cb7ef87","updated":"2019-06-03 23:42:29.000000000","message":"Yes, it would. I\u0027ll add that in patch set 4.","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"259624a21c62c114d4b7e2c45ff880c0765dfb54","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @staticmethod"},{"line_number":115,"context_line":"    def _get_most_severe_msg_index(extended_info):"},{"line_number":116,"context_line":"        if len(extended_info) \u003e 0:"},{"line_number":117,"context_line":"            for sev in [\u0027Critical\u0027, \u0027Warning\u0027]:"},{"line_number":118,"context_line":"                for i, m in enumerate(extended_info):"},{"line_number":119,"context_line":"                    if m.get(\u0027Severity\u0027) \u003d\u003d sev:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_443e63b8","line":116,"updated":"2019-06-14 08:40:25.000000000","message":"nit:\n\n if not extended_info:\n    return 0","commit_id":"343f7a6c6370cade2e05f57458497cc16681d858"}],"sushy/resources/common.py":[{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"44395c9b54958a4febd5785c6d7824947ca8913d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                                adapter\u003dlist)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class InitializeActionField(ActionField):"},{"line_number":60,"context_line":"    allowed_values \u003d base.Field(\u0027InitializeType@Redfish.AllowableValues\u0027,"},{"line_number":61,"context_line":"                                adapter\u003dlist)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_1fdc0973","line":59,"range":{"start_line":59,"start_character":6,"end_line":59,"end_character":27},"updated":"2019-06-03 08:57:46.000000000","message":"Is `AllowableValues` is part of any Action? Would it make sense to move it to the base `ActionField` then?","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"2b0563bfc2b32cab895056d416b39ae78c6d37fa","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                                adapter\u003dlist)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class InitializeActionField(ActionField):"},{"line_number":60,"context_line":"    allowed_values \u003d base.Field(\u0027InitializeType@Redfish.AllowableValues\u0027,"},{"line_number":61,"context_line":"                                adapter\u003dlist)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_e69ac4c3","line":59,"range":{"start_line":59,"start_character":6,"end_line":59,"end_character":27},"in_reply_to":"9fb8cfa7_1fdc0973","updated":"2019-06-03 23:42:29.000000000","message":"Unfortunately, no. Not all Actions will have them. And for those that do have them, you can\u0027t derive the @Redfish.AllowableValues property name (e.g. \u0027ResetType@Redfish.AllowableValues\u0027) from the Action property name (e.g. \u0027#ComputerSystem.Reset\u0027).\n\nAnd you can even have multiple @Redfish.AllowableValues in one Action.\n\nWe should probably add an enhancement to sushy to support the ActionInfo resources, which is the new and improved way to convey that type of info about Actions. (But that should be via a new task rather than this Storage task I think.)","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"}],"sushy/resources/system/storage/storage.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"259624a21c62c114d4b7e2c45ff880c0765dfb54","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    device_protocols \u003d base.Field(\u0027SupportedDeviceProtocols\u0027,"},{"line_number":51,"context_line":"                                  adapter\u003dlist)"},{"line_number":52,"context_line":"    \"\"\"The protocols which the controller can use tocommunicate with devices\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class Storage(base.ResourceBase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_24432f44","line":52,"updated":"2019-06-14 08:40:25.000000000","message":"nit: keep optional fields ordered","commit_id":"343f7a6c6370cade2e05f57458497cc16681d858"}],"sushy/resources/system/storage/volume.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"99061c3a3c2a1dcecf0aa0fb07fee142e21e9e18","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class ActionsField(base.CompositeField):"},{"line_number":28,"context_line":"    initialize \u003d common.InitializeActionField(\u0027#Volume.Initialize\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Volume(base.ResourceBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_3616044b","line":28,"updated":"2019-05-30 20:41:49.000000000","message":"#?","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"99bb92c6d8272b0f89d27c3f987db05439c7f0c2","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class ActionsField(base.CompositeField):"},{"line_number":28,"context_line":"    initialize \u003d common.InitializeActionField(\u0027#Volume.Initialize\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Volume(base.ResourceBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_d6df680a","line":28,"in_reply_to":"bfb3d3c7_3616044b","updated":"2019-05-30 21:20:49.000000000","message":"This is for the Initialize action for Volumes. Similar to the Reset action for ComputerSystem:\n\nhttps://opendev.org/openstack/sushy/src/commit/f21e4f500eac55cb53c753321303197b3e801f38/sushy/resources/system/system.py#L41-L42\n\nNot sure if that answers your question or not. If not, let me know a bit more about question/concern.","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1d94b71d1ec6339484d8fafdc00825906a486bb1","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class ActionsField(base.CompositeField):"},{"line_number":28,"context_line":"    initialize \u003d common.InitializeActionField(\u0027#Volume.Initialize\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Volume(base.ResourceBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_0ecff97f","line":28,"in_reply_to":"bfb3d3c7_d6df680a","updated":"2019-06-03 14:11:24.000000000","message":"Okay, thanks for the information, my raised eyebrow was rally at how the field name started which seems a little different,, but as you point out Reset action is similar.","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"44395c9b54958a4febd5785c6d7824947ca8913d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                parameter\u003d\u0027value\u0027, value\u003dvalue, valid_values\u003dvalid_values)"},{"line_number":97,"context_line":"        value \u003d store_maps.VOLUME_INIT_TYPE_MAP_REV[value]"},{"line_number":98,"context_line":"        target_uri \u003d self._get_initialize_action_element().target_uri"},{"line_number":99,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":100,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":101,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":102,"context_line":"        self._conn.post(target_uri, data\u003d{\u0027InitializeType\u0027: value},"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_1fae49e7","line":99,"range":{"start_line":99,"start_character":20,"end_line":99,"end_character":26},"updated":"2019-06-03 08:57:46.000000000","message":"Do we need to specify response type if we do not seemingly consume the response here?","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"2b0563bfc2b32cab895056d416b39ae78c6d37fa","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                parameter\u003d\u0027value\u0027, value\u003dvalue, valid_values\u003dvalid_values)"},{"line_number":97,"context_line":"        value \u003d store_maps.VOLUME_INIT_TYPE_MAP_REV[value]"},{"line_number":98,"context_line":"        target_uri \u003d self._get_initialize_action_element().target_uri"},{"line_number":99,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":100,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":101,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":102,"context_line":"        self._conn.post(target_uri, data\u003d{\u0027InitializeType\u0027: value},"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_495161d8","line":99,"range":{"start_line":99,"start_character":20,"end_line":99,"end_character":26},"in_reply_to":"9fb8cfa7_1fae49e7","updated":"2019-06-03 23:42:29.000000000","message":"It\u0027s not required to do so. But it is recommended practice (it is a SHOULD in the spec).","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"51671ac3abd4a57429b37580197aad53ff9069cf","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                parameter\u003d\u0027value\u0027, value\u003dvalue, valid_values\u003dvalid_values)"},{"line_number":97,"context_line":"        value \u003d store_maps.VOLUME_INIT_TYPE_MAP_REV[value]"},{"line_number":98,"context_line":"        target_uri \u003d self._get_initialize_action_element().target_uri"},{"line_number":99,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":100,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":101,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":102,"context_line":"        self._conn.post(target_uri, data\u003d{\u0027InitializeType\u0027: value},"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_f6f4a55d","line":99,"range":{"start_line":99,"start_character":20,"end_line":99,"end_character":26},"in_reply_to":"9fb8cfa7_495161d8","updated":"2019-06-04 13:30:10.000000000","message":"Actually, I double-checked the `requests` behavior and it is sending an \u0027Accept: */*\u0027  header if no other Accept header was specified. This should be sufficient for interoperability. So I will eliminate the explicit Accept header usage in patch set 4.","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"44395c9b54958a4febd5785c6d7824947ca8913d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        value \u003d store_maps.VOLUME_INIT_TYPE_MAP_REV[value]"},{"line_number":98,"context_line":"        target_uri \u003d self._get_initialize_action_element().target_uri"},{"line_number":99,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":100,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":101,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":102,"context_line":"        self._conn.post(target_uri, data\u003d{\u0027InitializeType\u0027: value},"},{"line_number":103,"context_line":"                        headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_dfb7513a","line":100,"range":{"start_line":100,"start_character":48,"end_line":100,"end_character":52},"updated":"2019-06-03 08:57:46.000000000","message":"Does using `data` kwarg in `post` imply JSON?","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"2b0563bfc2b32cab895056d416b39ae78c6d37fa","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        value \u003d store_maps.VOLUME_INIT_TYPE_MAP_REV[value]"},{"line_number":98,"context_line":"        target_uri \u003d self._get_initialize_action_element().target_uri"},{"line_number":99,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":100,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":101,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":102,"context_line":"        self._conn.post(target_uri, data\u003d{\u0027InitializeType\u0027: value},"},{"line_number":103,"context_line":"                        headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_29542dca","line":100,"range":{"start_line":100,"start_character":48,"end_line":100,"end_character":52},"in_reply_to":"9fb8cfa7_dfb7513a","updated":"2019-06-03 23:42:29.000000000","message":"Ah, it does! Though I initially did not think it did because in the `requests` package, the `data` arg does NOT imply JSON. But the `json` arg does. And now I see that in the sushy connector.py, the `data` arg gets passed to `requests` as the `json` arg. :-)\n\nSo, I don\u0027t need to pass the Content-Type header here. Will remove it in patch set 4.","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"44395c9b54958a4febd5785c6d7824947ca8913d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        target_uri \u003d self._get_initialize_action_element().target_uri"},{"line_number":99,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":100,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":101,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":102,"context_line":"        self._conn.post(target_uri, data\u003d{\u0027InitializeType\u0027: value},"},{"line_number":103,"context_line":"                        headers\u003dheaders)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_bf885d71","line":101,"range":{"start_line":101,"start_character":20,"end_line":101,"end_character":33},"updated":"2019-06-03 08:57:46.000000000","message":"Out of curiosity: why do we need this here and not anywhere else?","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"2b0563bfc2b32cab895056d416b39ae78c6d37fa","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        target_uri \u003d self._get_initialize_action_element().target_uri"},{"line_number":99,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":100,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":101,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":102,"context_line":"        self._conn.post(target_uri, data\u003d{\u0027InitializeType\u0027: value},"},{"line_number":103,"context_line":"                        headers\u003dheaders)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_e95ff5e2","line":101,"range":{"start_line":101,"start_character":20,"end_line":101,"end_character":33},"in_reply_to":"9fb8cfa7_bf885d71","updated":"2019-06-03 23:42:29.000000000","message":"The OData-Version header is not required per the current spec. But it was required in earlier spec versions. And there are vendor service implementations in the field that require it in requests. Or behave differently/badly if it is missing. So it is recommended for best interoperability.\n\nThat said, you bring up a good point that all the other requests in sushy are not supplying it. I think it may be better to create a new task to make an update to add the OData-Version header at a higher level (like in connections.py:Connector._op()). That would be cleaner than adding it in multiple places scattered throughout the code.\n\nLet me know what you think about that idea.","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"44395c9b54958a4febd5785c6d7824947ca8913d","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        :raises: ConnectionError"},{"line_number":110,"context_line":"        :raises: HTTPError"},{"line_number":111,"context_line":"        \"\"\""},{"line_number":112,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":113,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":114,"context_line":"        if payload:"},{"line_number":115,"context_line":"            headers[\u0027Content-Type\u0027] \u003d \u0027application/json\u0027"},{"line_number":116,"context_line":"        self._conn.delete(self._path, data\u003dpayload, headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_3f946d8b","line":113,"range":{"start_line":112,"start_character":19,"end_line":113,"end_character":41},"updated":"2019-06-03 08:57:46.000000000","message":"Ditto","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"44395c9b54958a4febd5785c6d7824947ca8913d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        :raises: ConnectionError"},{"line_number":157,"context_line":"        :raises: HTTPError"},{"line_number":158,"context_line":"        \"\"\""},{"line_number":159,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":160,"context_line":"                   \u0027Content-Type\u0027: \u0027application/json\u0027,"},{"line_number":161,"context_line":"                   \u0027OData-Version\u0027: \u00274.0\u0027}"},{"line_number":162,"context_line":"        r \u003d self._conn.post(self._path, data\u003dpayload, headers\u003dheaders)"},{"line_number":163,"context_line":"        location \u003d r.headers.get(\u0027Location\u0027)"},{"line_number":164,"context_line":"        new_volume \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_9fe8f916","line":161,"range":{"start_line":159,"start_character":20,"end_line":161,"end_character":40},"updated":"2019-06-03 08:57:46.000000000","message":"Ditto","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"}],"sushy/tests/unit/resources/test_base.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"99061c3a3c2a1dcecf0aa0fb07fee142e21e9e18","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        self.test_resource_collection.members_identities \u003d (\u00271\u0027,)"},{"line_number":215,"context_line":"        self.conn.get.side_effect \u003d exceptions.ResourceNotFoundError("},{"line_number":216,"context_line":"            method\u003d\u0027GET\u0027, url\u003d\u0027http://foo.bar:8000/redfish/v1/Fakes/2\u0027,"},{"line_number":217,"context_line":"            response\u003dmock.MagicMock(status_code\u003dhttp_client.NOT_FOUND))"},{"line_number":218,"context_line":"        # | WHEN \u0026 THEN |"},{"line_number":219,"context_line":"        self.assertRaises(exceptions.ResourceNotFoundError,"},{"line_number":220,"context_line":"                          self.test_resource_collection.get_member, \u00272\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_76ac7cec","line":217,"range":{"start_line":217,"start_character":26,"end_line":217,"end_character":32},"updated":"2019-05-30 20:41:49.000000000","message":"Any reason for the change?","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":28128,"name":"Bill Dodd","email":"billdodd@gmail.com","username":"billdodd"},"change_message_id":"99bb92c6d8272b0f89d27c3f987db05439c7f0c2","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        self.test_resource_collection.members_identities \u003d (\u00271\u0027,)"},{"line_number":215,"context_line":"        self.conn.get.side_effect \u003d exceptions.ResourceNotFoundError("},{"line_number":216,"context_line":"            method\u003d\u0027GET\u0027, url\u003d\u0027http://foo.bar:8000/redfish/v1/Fakes/2\u0027,"},{"line_number":217,"context_line":"            response\u003dmock.MagicMock(status_code\u003dhttp_client.NOT_FOUND))"},{"line_number":218,"context_line":"        # | WHEN \u0026 THEN |"},{"line_number":219,"context_line":"        self.assertRaises(exceptions.ResourceNotFoundError,"},{"line_number":220,"context_line":"                          self.test_resource_collection.get_member, \u00272\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_f6f5cc57","line":217,"range":{"start_line":217,"start_character":26,"end_line":217,"end_character":32},"in_reply_to":"bfb3d3c7_76ac7cec","updated":"2019-05-30 21:20:49.000000000","message":"Yes. I changed HTTPError in exceptions.py to be able to extract a message from an array of messages in the error response body. When using mock.Mock() for the response above, the test gets an error like this:\n\n\"TypeError: \u0027Mock\u0027 object does not support indexing\"\n\nBut mock.MagicMock() does support indexing, so this error is eliminated. There were a small handful of these mocked responses that needed that change.","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1d94b71d1ec6339484d8fafdc00825906a486bb1","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        self.test_resource_collection.members_identities \u003d (\u00271\u0027,)"},{"line_number":215,"context_line":"        self.conn.get.side_effect \u003d exceptions.ResourceNotFoundError("},{"line_number":216,"context_line":"            method\u003d\u0027GET\u0027, url\u003d\u0027http://foo.bar:8000/redfish/v1/Fakes/2\u0027,"},{"line_number":217,"context_line":"            response\u003dmock.MagicMock(status_code\u003dhttp_client.NOT_FOUND))"},{"line_number":218,"context_line":"        # | WHEN \u0026 THEN |"},{"line_number":219,"context_line":"        self.assertRaises(exceptions.ResourceNotFoundError,"},{"line_number":220,"context_line":"                          self.test_resource_collection.get_member, \u00272\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_8ea0c9a7","line":217,"range":{"start_line":217,"start_character":26,"end_line":217,"end_character":32},"in_reply_to":"bfb3d3c7_f6f5cc57","updated":"2019-06-03 14:11:24.000000000","message":"Okay, thanks!","commit_id":"dafbfe317ecb47e6b3b9e76c201e3e277ebe4b04"}]}
