)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"58ff84ba0e14cb4330d2fac606c7afc52fc40fea","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is intended to make the handle of the resources"},{"line_number":10,"context_line":"identification more flexible in the library. Prior to this patch the"},{"line_number":11,"context_line":"library had some assumptions about the path of a give resources and"},{"line_number":12,"context_line":"tried to build such paths within it. Turns out that it\u0027s not that"},{"line_number":13,"context_line":"simple, the Redfish specification does allow things like resources from"},{"line_number":14,"context_line":"a different authority to be registered in a different controller [0]."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_5e63f941","line":11,"updated":"2017-03-22 13:02:00.000000000","message":"Typo: \"a given resource\"","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"88e6b4b326ab342cafe0cc2616a9b536ed588e0a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is intended to make the handle of the resources"},{"line_number":10,"context_line":"identification more flexible in the library. Prior to this patch the"},{"line_number":11,"context_line":"library had some assumptions about the path of a give resources and"},{"line_number":12,"context_line":"tried to build such paths within it. Turns out that it\u0027s not that"},{"line_number":13,"context_line":"simple, the Redfish specification does allow things like resources from"},{"line_number":14,"context_line":"a different authority to be registered in a different controller [0]."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_2f81a98f","line":11,"in_reply_to":"1a1ced50_5e63f941","updated":"2017-03-22 13:43:45.000000000","message":"Done","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"58ff84ba0e14cb4330d2fac606c7afc52fc40fea","unresolved":false,"context_lines":[{"line_number":25,"context_line":"be either: \"/redfish/v1/Systems/12345\" or"},{"line_number":26,"context_line":"\"//another-service.com/redfish/v1/Systems/12345\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This break many of the assumptions we had before of how to handle these"},{"line_number":29,"context_line":"resources from the controller."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"So, this patch is basically making sushy more \"dumb\" about the location"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_1e4ee1c0","line":28,"updated":"2017-03-22 13:02:00.000000000","message":"Typo: \"breaks\"","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"88e6b4b326ab342cafe0cc2616a9b536ed588e0a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"be either: \"/redfish/v1/Systems/12345\" or"},{"line_number":26,"context_line":"\"//another-service.com/redfish/v1/Systems/12345\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This break many of the assumptions we had before of how to handle these"},{"line_number":29,"context_line":"resources from the controller."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"So, this patch is basically making sushy more \"dumb\" about the location"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_6f4d6199","line":28,"in_reply_to":"1a1ced50_1e4ee1c0","updated":"2017-03-22 13:43:45.000000000","message":"Done","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"58ff84ba0e14cb4330d2fac606c7afc52fc40fea","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Note that, this patch is non-backward compatible and changes the usage"},{"line_number":41,"context_line":"of the library but, since we haven\u0027t had any release yet (so it\u0027s not"},{"line_number":42,"context_line":"even alpha or beta, but completely under-development) it seems to be the"},{"line_number":43,"context_line":"right time for such a change."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[0] http://redfish.dmtf.org/schemas/DSP0266_1.1.html#resource-identifier-property"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_9ee731ab","line":43,"updated":"2017-03-22 13:02:00.000000000","message":"According to semver.org, \"Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.\" So this is perfectly OK.","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"88e6b4b326ab342cafe0cc2616a9b536ed588e0a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Note that, this patch is non-backward compatible and changes the usage"},{"line_number":41,"context_line":"of the library but, since we haven\u0027t had any release yet (so it\u0027s not"},{"line_number":42,"context_line":"even alpha or beta, but completely under-development) it seems to be the"},{"line_number":43,"context_line":"right time for such a change."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"[0] http://redfish.dmtf.org/schemas/DSP0266_1.1.html#resource-identifier-property"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_cf3d75de","line":43,"in_reply_to":"1a1ced50_9ee731ab","updated":"2017-03-22 13:43:45.000000000","message":"+1 thanks for confirming","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"}],"doc/source/usage.rst":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"2cddae59f26c3e60636e1a78b7abca7128ea8b1b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  LOG.setLevel(logging.DEBUG)"},{"line_number":18,"context_line":"  LOG.addHandler(logging.StreamHandler())"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  s \u003d sushy.Sushy(\u0027http://localhost:8000\u0027, username\u003d\u0027foo\u0027, password\u003d\u0027bar\u0027)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  # Get the Redfish version"},{"line_number":23,"context_line":"  print(s.redfish_version)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a1ced50_18ceec62","line":20,"range":{"start_line":20,"start_character":19,"end_line":20,"end_character":23},"updated":"2017-03-22 15:57:59.000000000","message":"probably this scheme ``http`` may not work for sushy as is coz of the default value of ``verify`` getting changed to True now. Just to be technically more accurate in terms of usage documentation.","commit_id":"053907016edcb701dc7f422c555ae81b639cf1c3"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  print(s.redfish_version)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  # Instantiate a system object"},{"line_number":26,"context_line":"  sys_inst \u003d s.get_system(\u0027/redfish/v1/Systems/437XR1138R2\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"  # Using system collections"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_0e076f82","line":26,"range":{"start_line":26,"start_character":2,"end_line":26,"end_character":60},"updated":"2017-03-23 04:18:01.000000000","message":"I am still unsure abt whether to put the unique resource id path here or to keep only the barebone identity or to give the option to provide both (at least one)...\n\n    s.get_system(\u0027437XR1138R2\u0027)\n    s.get_system(path\u003d\u0027/redfish/v1/Systems/437XR1138R2\u0027)\n\nSo, inherently the signatrure becomes::\n\n    def get_system(self, identity, path\u003dNone):\n      ...","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  print(s.redfish_version)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  # Instantiate a system object"},{"line_number":26,"context_line":"  sys_inst \u003d s.get_system(\u0027/redfish/v1/Systems/437XR1138R2\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"  # Using system collections"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_f4f3b870","line":26,"range":{"start_line":26,"start_character":2,"end_line":26,"end_character":60},"in_reply_to":"1a1ced50_0e076f82","updated":"2017-03-23 10:13:50.000000000","message":"It\u0027s a good point and I also think that only passing the ID looks much better as a library.\n\nBut I think the problem is that it won\u0027t work for the edge cases (for resources that are not part of the same authority [1]) and that will make the use of the function inconsistent.\n\nWe probably could add some validations for such cases and raise an error if the resource belongs to another authority when only the ID was passed. But, it just adds up more complexity and I think it\u0027s something that we want to avoid at the beginning. I personally don\u0027t know enough about Redfish and it\u0027s variations so I believe that, the more dumb (but consistent) we can make the library the better it will be for future improvements. Once Redfish becomes more popular we will have a better idea of how it works and how it\u0027s being implemented by different parts and then we can improve the usage of the library.\n\n[1] http://redfish.dmtf.org/schemas/DSP0266_1.1.html#resource-identifier-property","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"d04fcc3e77c11662f65472dc846d55264de6b877","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  print(s.redfish_version)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"  # Instantiate a system object"},{"line_number":26,"context_line":"  sys_inst \u003d s.get_system(\u0027/redfish/v1/Systems/437XR1138R2\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"  # Using system collections"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a1ced50_65b8dd2b","line":26,"range":{"start_line":26,"start_character":2,"end_line":26,"end_character":60},"in_reply_to":"1a1ced50_f4f3b870","updated":"2017-03-23 19:11:30.000000000","message":"Agree. The redfish use canonical path as unique indentifier for every resource, like refer to another resource.\n\n{\n  \"Links\" : {\n    \"ManagedBy\": {\n      \"@odata.id\":\"/redfish/v1/Chassis/Encl1\"\n    }\n  }\n}\n\nI think it would be safe for library to use the same way to identify a resource at the very beginning.","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"}],"sushy/connector.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            if data is not None:"},{"line_number":59,"context_line":"                data \u003d json.dumps(data)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            url \u003d os.path.join(self._url, path.lstrip(\u0027/\u0027))"},{"line_number":62,"context_line":"            # TODO(lucasagomes): We should mask the data to remove sensitive"},{"line_number":63,"context_line":"            # information"},{"line_number":64,"context_line":"            LOG.debug(\u0027Issuing a HTTP %(method)s request at %(url)s with \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_eeb3f34a","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":59},"updated":"2017-03-23 04:18:01.000000000","message":"I think it\u0027s better to use ``urlparse.urljoin`` to arrive at the final url. My first hand dig shows these:\n\n\t\u003e\u003e\u003e from urlparse import urljoin\n\t\u003e\u003e\u003e print urljoin(\u0027http://www.example.com\u0027, \u0027redfish/v1/Systems\u0027)\n\thttp://www.example.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print urljoin(\u0027http://www.example.com/\u0027, \u0027/redfish/v1/Systems\u0027)\n\thttp://www.example.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print urljoin(\u0027http://www.example.com/\u0027, \u0027//some-other-service.com/redfish/v1/Systems\u0027)\n\thttp://some-other-service.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print urljoin(\u0027http://www.example.com\u0027, \u0027//some-other-service.com/redfish/v1/Systems\u0027)\n\thttp://some-other-service.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print urljoin(\u0027http://www.example.com\u0027, \u0027/some-other-service.com/redfish/v1/Systems\u0027)\n\thttp://www.example.com/some-other-service.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print urljoin(\u0027http://www.example.com/\u0027, \u0027/some-other-service.com/redfish/v1/Systems\u0027)\n\thttp://www.example.com/some-other-service.com/redfish/v1/Systems\n\n\n\t\u003e\u003e\u003e import os\n\t\u003e\u003e\u003e print os.path.join(\u0027http://www.example.com\u0027, \u0027redfish/v1/Systems\u0027)\n\thttp://www.example.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print os.path.join(\u0027http://www.example.com/\u0027, \u0027redfish/v1/Systems\u0027)\n\thttp://www.example.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print os.path.join(\u0027http://www.example.com/\u0027, \u0027/redfish/v1/Systems\u0027)\n\t/redfish/v1/Systems\n\t\u003e\u003e\u003e print os.path.join(\u0027http://www.example.com/\u0027, \u0027//some-other-service.com/redfish/v1/Systems\u0027)\n\t//some-other-service.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print os.path.join(\u0027http://www.example.com/\u0027, \u0027/some-other-service.com/redfish/v1/Systems\u0027)\n\t/some-other-service.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print os.path.join(\u0027http://www.example.com\u0027, \u0027/some-other-service.com/redfish/v1/Systems\u0027)\n\t/some-other-service.com/redfish/v1/Systems\n\t\u003e\u003e\u003e print os.path.join(\u0027http://www.example.com\u0027, \u0027some-other-service.com/redfish/v1/Systems\u0027)\n\thttp://www.example.com/some-other-service.com/redfish/v1/Systems\n\nNo need of lstrip/rstrip forward-slashes. And ``urljoin`` does the job reasonably well :)","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"063ec02e59741e90a3667b739a35e5960b89df4f","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            if data is not None:"},{"line_number":59,"context_line":"                data \u003d json.dumps(data)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            url \u003d os.path.join(self._url, path.lstrip(\u0027/\u0027))"},{"line_number":62,"context_line":"            # TODO(lucasagomes): We should mask the data to remove sensitive"},{"line_number":63,"context_line":"            # information"},{"line_number":64,"context_line":"            LOG.debug(\u0027Issuing a HTTP %(method)s request at %(url)s with \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_77c8aa55","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":59},"in_reply_to":"1a1ced50_17f21606","updated":"2017-03-23 10:32:47.000000000","message":"My bad, the unit-tests were wrong... The connector now only connects to the base URL","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"372e2a5c76d2553e50da2c7c8bdd31236b53c7ca","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            if data is not None:"},{"line_number":59,"context_line":"                data \u003d json.dumps(data)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            url \u003d os.path.join(self._url, path.lstrip(\u0027/\u0027))"},{"line_number":62,"context_line":"            # TODO(lucasagomes): We should mask the data to remove sensitive"},{"line_number":63,"context_line":"            # information"},{"line_number":64,"context_line":"            LOG.debug(\u0027Issuing a HTTP %(method)s request at %(url)s with \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_17f21606","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":59},"in_reply_to":"1a1ced50_72619d04","updated":"2017-03-23 10:23:23.000000000","message":"We will still need the lstrip, testing it locally here and:\n\nIn [2]: parse.urljoin(\u0027http://foo.bar:1234/redfish/v1/\u0027, \u0027/fake/path\u0027)\nOut[2]: \u0027http://foo.bar:1234/fake/path\u0027\n\nIn [3]: parse.urljoin(\u0027http://foo.bar:1234/redfish/v1/\u0027, \u0027fake/path\u0027)\nOut[3]: \u0027http://foo.bar:1234/redfish/v1/fake/path\u0027","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            if data is not None:"},{"line_number":59,"context_line":"                data \u003d json.dumps(data)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            url \u003d os.path.join(self._url, path.lstrip(\u0027/\u0027))"},{"line_number":62,"context_line":"            # TODO(lucasagomes): We should mask the data to remove sensitive"},{"line_number":63,"context_line":"            # information"},{"line_number":64,"context_line":"            LOG.debug(\u0027Issuing a HTTP %(method)s request at %(url)s with \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_72619d04","line":61,"range":{"start_line":61,"start_character":18,"end_line":61,"end_character":59},"in_reply_to":"1a1ced50_eeb3f34a","updated":"2017-03-23 10:13:50.000000000","message":"Great point! Will do","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"}],"sushy/main.py":[{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"58ff84ba0e14cb4330d2fac606c7afc52fc40fea","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        :param verify: Either a boolean value, a path to a CA_BUNDLE"},{"line_number":47,"context_line":"            file or directory with certificates of trusted CAs. If set to"},{"line_number":48,"context_line":"            True the driver will verify the host certificates; if False"},{"line_number":49,"context_line":"            the driver will ignore verifying the SSL certificate; If it\u0027s"},{"line_number":50,"context_line":"            a path the driver will use the specified certificate or one of"},{"line_number":51,"context_line":"            the certificates in the directory. Defaults to True."},{"line_number":52,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_5e1bf980","line":49,"updated":"2017-03-22 13:02:00.000000000","message":"Typo: \"if\"","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"88e6b4b326ab342cafe0cc2616a9b536ed588e0a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        :param verify: Either a boolean value, a path to a CA_BUNDLE"},{"line_number":47,"context_line":"            file or directory with certificates of trusted CAs. If set to"},{"line_number":48,"context_line":"            True the driver will verify the host certificates; if False"},{"line_number":49,"context_line":"            the driver will ignore verifying the SSL certificate; If it\u0027s"},{"line_number":50,"context_line":"            a path the driver will use the specified certificate or one of"},{"line_number":51,"context_line":"            the certificates in the directory. Defaults to True."},{"line_number":52,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_ea3dbfc4","line":49,"in_reply_to":"1a1ced50_5e1bf980","updated":"2017-03-22 13:43:45.000000000","message":"Done","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"58ff84ba0e14cb4330d2fac606c7afc52fc40fea","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        :returns: a SystemCollection object"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        col_path \u003d os.path.join(self._default_prefix, \u0027Systems\u0027)"},{"line_number":70,"context_line":"        return system.SystemCollection(self._conn, col_path,"},{"line_number":71,"context_line":"                                       redfish_version\u003dself.redfish_version)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_41187e75","line":69,"updated":"2017-03-22 13:02:00.000000000","message":"I guess the HATEOASy thing would be to determine this path by hitting the root endpoint and seeing what resources it lists, but I think this is fine for now.","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"9ca169caa9832fead85e5aeb3591cde24476ea56","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        :returns: a SystemCollection object"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        col_path \u003d os.path.join(self._default_prefix, \u0027Systems\u0027)"},{"line_number":70,"context_line":"        return system.SystemCollection(self._conn, col_path,"},{"line_number":71,"context_line":"                                       redfish_version\u003dself.redfish_version)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_937c7fed","line":69,"in_reply_to":"1a1ced50_0aae9be5","updated":"2017-03-22 16:07:28.000000000","message":"I get to see this conversation now. Okay then, I am fine with this for now.\n\nIf you look into the ``DSP2043-server/index.json`` file of unzipped portion of https://www.dmtf.org/sites/default/files/standards/documents/DSP2043_1.0.0.zip then probably you might get some mock data to test against for this root resource (/redfish/v1) url hitting.","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"88e6b4b326ab342cafe0cc2616a9b536ed588e0a","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        :returns: a SystemCollection object"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        col_path \u003d os.path.join(self._default_prefix, \u0027Systems\u0027)"},{"line_number":70,"context_line":"        return system.SystemCollection(self._conn, col_path,"},{"line_number":71,"context_line":"                                       redfish_version\u003dself.redfish_version)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_0aae9be5","line":69,"in_reply_to":"1a1ced50_41187e75","updated":"2017-03-22 13:43:45.000000000","message":"Exactly, ideally we would look at some identifier in this resource (the root resource) such as the Redfish version to determine the paths but, since I don\u0027t have that info cause I\u0027m only playing with the mockups that the DMTF made available we better leave it as-is for now.","commit_id":"863e389269edde97ac9ef0776dd24d9596ad31ea"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"2cddae59f26c3e60636e1a78b7abca7128ea8b1b","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        :returns: a SystemCollection object"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        col_path \u003d os.path.join(self._default_prefix, \u0027Systems\u0027)"},{"line_number":70,"context_line":"        return system.SystemCollection(self._conn, col_path,"},{"line_number":71,"context_line":"                                       redfish_version\u003dself.redfish_version)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_78e0c096","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":64},"updated":"2017-03-22 15:57:59.000000000","message":"why not sense the all the resources urls from the root_resource path? \n\nIn the ``_parse_attributes`` method (if you can mange to hit the root_resource path as part of init of Sushy object) you can parse suitably to get all the resource collection specific sub-urls (w/o the base_path)","commit_id":"053907016edcb701dc7f422c555ae81b639cf1c3"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bd065c8eded0921f8016ba16c219f0097fc692f6","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        :returns: a SystemCollection object"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        col_path \u003d os.path.join(self._default_prefix, \u0027Systems\u0027)"},{"line_number":70,"context_line":"        return system.SystemCollection(self._conn, col_path,"},{"line_number":71,"context_line":"                                       redfish_version\u003dself.redfish_version)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_50bcb8ba","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":64},"in_reply_to":"1a1ced50_09106056","updated":"2017-03-23 09:10:53.000000000","message":"Looked more into it: Just like we use @odata.id for the paths of the specific Systems [0] we should use @odata.id as the path to the collection too (the attribute is there [1])\n\nBut just like other attributes that we check (such as the ResetAction or the Boot attribute for changing boot device) they are all done inside the function scope instead of in the _parse_attributes(), maybe it\u0027s something we can change in the future but, for consistency I will do the same with this patch. \n\n[0] https://github.com/openstack/sushy/blob/master/sushy/utils.py#L41\n\n[1] http://redfish.dmtf.org/schemas/v1/ComputerSystemCollection.json#/definitions/ComputerSystemCollection","commit_id":"053907016edcb701dc7f422c555ae81b639cf1c3"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"48b2d22f75cc34236a7ff8df5921889c56aba07d","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        :returns: a SystemCollection object"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        col_path \u003d os.path.join(self._default_prefix, \u0027Systems\u0027)"},{"line_number":70,"context_line":"        return system.SystemCollection(self._conn, col_path,"},{"line_number":71,"context_line":"                                       redfish_version\u003dself.redfish_version)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_09106056","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":64},"in_reply_to":"1a1ced50_78e0c096","updated":"2017-03-22 16:52:09.000000000","message":"That\u0027s a good point, the _parse_attributes() is the place where we should figure out these things, So I will move this code there.","commit_id":"053907016edcb701dc7f422c555ae81b639cf1c3"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \"\"\"The Redfish system UUID\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, base_url, username\u003dNone, password\u003dNone,"},{"line_number":34,"context_line":"                 default_prefix\u003d\u0027/redfish/v1/\u0027, verify\u003dTrue):"},{"line_number":35,"context_line":"        \"\"\"A class representing a RootService"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param base_url: The base URL to the Redfish controller. It"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_0ed3ef60","line":34,"range":{"start_line":34,"start_character":17,"end_line":34,"end_character":31},"updated":"2017-03-23 04:18:01.000000000","message":"nit: s/default_prefix/root_prefix (or something similar to root_service_ver_prefix)\n\nFeel free to ignore :-)","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \"\"\"The Redfish system UUID\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, base_url, username\u003dNone, password\u003dNone,"},{"line_number":34,"context_line":"                 default_prefix\u003d\u0027/redfish/v1/\u0027, verify\u003dTrue):"},{"line_number":35,"context_line":"        \"\"\"A class representing a RootService"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param base_url: The base URL to the Redfish controller. It"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_323ac5e7","line":34,"range":{"start_line":34,"start_character":17,"end_line":34,"end_character":31},"in_reply_to":"1a1ced50_0ed3ef60","updated":"2017-03-23 10:13:50.000000000","message":"Yeah, I really didn\u0027t know what name to give to it. I\u0027m good with root_prefix as well, I will change it.\n\nNaming is hard, so thanks for the suggestion!","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.redfish_version \u003d self.json.get(\u0027RedfishVersion\u0027)"},{"line_number":61,"context_line":"        self.uuid \u003d self.json.get(\u0027UUID\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _parse_system_collection_path(self):"},{"line_number":64,"context_line":"        \"\"\"Helper function to find the SystemCollection path\"\"\""},{"line_number":65,"context_line":"        systems_col \u003d self.json.get(\u0027Systems\u0027)"},{"line_number":66,"context_line":"        if not systems_col:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_8efc3fb9","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":37},"updated":"2017-03-23 04:18:01.000000000","message":"nit: s/_parse_system_collection_path/_get_system_collection_path","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.redfish_version \u003d self.json.get(\u0027RedfishVersion\u0027)"},{"line_number":61,"context_line":"        self.uuid \u003d self.json.get(\u0027UUID\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _parse_system_collection_path(self):"},{"line_number":64,"context_line":"        \"\"\"Helper function to find the SystemCollection path\"\"\""},{"line_number":65,"context_line":"        systems_col \u003d self.json.get(\u0027Systems\u0027)"},{"line_number":66,"context_line":"        if not systems_col:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_7228bd9a","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":37},"in_reply_to":"1a1ced50_8efc3fb9","updated":"2017-03-23 10:13:50.000000000","message":"++","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\"Get the SystemCollection object"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        :raises: MissingAttributeError, if the collection attribute is"},{"line_number":75,"context_line":"            not found"},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":"        return system.SystemCollection("},{"line_number":78,"context_line":"            self._conn, self._parse_system_collection_path(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_0e2f6f3f","line":75,"updated":"2017-03-23 04:18:01.000000000","message":":returns: a SystemCollection object\nmissing...","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        \"\"\"Get the SystemCollection object"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        :raises: MissingAttributeError, if the collection attribute is"},{"line_number":75,"context_line":"            not found"},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":"        return system.SystemCollection("},{"line_number":78,"context_line":"            self._conn, self._parse_system_collection_path(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_b22eb5a2","line":75,"in_reply_to":"1a1ced50_0e2f6f3f","updated":"2017-03-23 10:13:50.000000000","message":"++","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"c5b5a5fd75f702a8a944a7c69f4c64f46d9ec888","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            not found"},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":"        return system.SystemCollection("},{"line_number":78,"context_line":"            self._conn, self._parse_system_collection_path(),"},{"line_number":79,"context_line":"            redfish_version\u003dself.redfish_version)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_system(self, identity):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_8a599490","line":78,"range":{"start_line":78,"start_character":24,"end_line":78,"end_character":60},"updated":"2017-03-22 22:08:52.000000000","message":"How about add \u0027path\u0027 parameter here to allow user to specify path for Systems resource? If user didn\u0027t specify, then call _parse_system_collection_path() to use default name \u0027Systems\u0027 to get uri.","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            not found"},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":"        return system.SystemCollection("},{"line_number":78,"context_line":"            self._conn, self._parse_system_collection_path(),"},{"line_number":79,"context_line":"            redfish_version\u003dself.redfish_version)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_system(self, identity):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_110ea6e4","line":78,"range":{"start_line":78,"start_character":24,"end_line":78,"end_character":60},"in_reply_to":"1a1ced50_8a599490","updated":"2017-03-23 10:13:50.000000000","message":"It\u0027s a good point but the reason why I think we should not do it is because of the way we lazily parse the resources attributes when consuming a ReST API, there are not many checks to verify if a certain resource is what it is or even if an attribute really exist in a given resource (e.g self.json.get(\u003cattr name\u003e))\n\nFor example, if we allow people to pass the path they could pass something like:\n\nsys_col \u003d get_system_collection(path\u003d\u0027Managers\u0027)\n\nAnd that would work because collection resources are pretty much the same, they all have a \"name\" attribute, a \"members\" attribute and so on... But the result of that call, even tho it won\u0027t fail, will be wrong, we would have instantiated the wrong resource there.\n\nAlso, I don\u0027t expect much variations in the names, right now we know about two: \u0027Systems\u0027 and \u0027Nodes\u0027. And, I believe that, if we can map the existing ones the final UX of the library will be better. And, a change to include a new name variation for a certain resource is going to be trivial.","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"c5b5a5fd75f702a8a944a7c69f4c64f46d9ec888","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            self._conn, self._parse_system_collection_path(),"},{"line_number":79,"context_line":"            redfish_version\u003dself.redfish_version)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_system(self, identity):"},{"line_number":82,"context_line":"        \"\"\"Given the identity return a System object"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        :param identity: The identity of the System resource"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_aae9f0b8","line":81,"range":{"start_line":81,"start_character":25,"end_line":81,"end_character":33},"updated":"2017-03-22 22:08:52.000000000","message":"Please change the name \"identity\" to \"path\" to align with systems module.","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            self._conn, self._parse_system_collection_path(),"},{"line_number":79,"context_line":"            redfish_version\u003dself.redfish_version)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_system(self, identity):"},{"line_number":82,"context_line":"        \"\"\"Given the identity return a System object"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        :param identity: The identity of the System resource"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_aef65b8c","line":81,"range":{"start_line":81,"start_character":25,"end_line":81,"end_character":33},"updated":"2017-03-23 04:18:01.000000000","message":"Please refer my comment at: https://review.openstack.org/#/c/448539/5/doc/source/usage.rst@26","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"c5b5a5fd75f702a8a944a7c69f4c64f46d9ec888","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        :param identity: The identity of the System resource"},{"line_number":85,"context_line":"        :returns: The System object"},{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":"        return system.System(self._conn, identity,"},{"line_number":88,"context_line":"                             redfish_version\u003dself.redfish_version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_4a079c81","line":87,"range":{"start_line":87,"start_character":41,"end_line":87,"end_character":49},"updated":"2017-03-22 22:08:52.000000000","message":"same here.","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"}],"sushy/resources/base.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"06566f8f2658e0abfd27f1d439fb12d64a5edade","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    name \u003d None"},{"line_number":86,"context_line":"    \"\"\"The name of the collection\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    members_paths \u003d None"},{"line_number":89,"context_line":"    \"\"\"A tuple with the members paths\"\"\""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def __init__(self, connector, path, redfish_version\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffe62b97_3ee30d36","line":88,"updated":"2017-03-24 12:29:45.000000000","message":"I\u0027d prefer we continue call them \"identities\", as from Redfish point of view they are identities. \"Path\" may be unclear.","commit_id":"e2c5a5f7117fb12557d745de5663d2b8f4310045"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bd5e564f2b8574a0a1b40572548e1c6f084a5af7","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    name \u003d None"},{"line_number":86,"context_line":"    \"\"\"The name of the collection\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    members_paths \u003d None"},{"line_number":89,"context_line":"    \"\"\"A tuple with the members paths\"\"\""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def __init__(self, connector, path, redfish_version\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffe62b97_52bc8004","line":88,"in_reply_to":"ffe62b97_3ee30d36","updated":"2017-03-24 14:06:26.000000000","message":"Hmm... I don\u0027t actually mind... Naming is pretty hard.\n\nI name it back","commit_id":"e2c5a5f7117fb12557d745de5663d2b8f4310045"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"06566f8f2658e0abfd27f1d439fb12d64a5edade","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        self.members_paths \u003d ("},{"line_number":116,"context_line":"            utils.get_members_paths(self.json.get(\u0027Members\u0027, [])))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def get_member(self, path):"},{"line_number":119,"context_line":"        \"\"\"Given the path return a ``_resource_type`` object"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param path: The canonical path of the ``_resource_type`` resource"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffe62b97_1ed2895d","line":118,"updated":"2017-03-24 12:29:45.000000000","message":"ditto here and everywhere","commit_id":"e2c5a5f7117fb12557d745de5663d2b8f4310045"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bd5e564f2b8574a0a1b40572548e1c6f084a5af7","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        self.members_paths \u003d ("},{"line_number":116,"context_line":"            utils.get_members_paths(self.json.get(\u0027Members\u0027, [])))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def get_member(self, path):"},{"line_number":119,"context_line":"        \"\"\"Given the path return a ``_resource_type`` object"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param path: The canonical path of the ``_resource_type`` resource"}],"source_content_type":"text/x-python","patch_set":7,"id":"ffe62b97_123cb891","line":118,"in_reply_to":"ffe62b97_1ed2895d","updated":"2017-03-24 14:06:26.000000000","message":"ditto","commit_id":"e2c5a5f7117fb12557d745de5663d2b8f4310045"}],"sushy/resources/system/system.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        value \u003d sys_maps.RESET_SYSTEM_VALUE_MAP_REV[value]"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        reset_action \u003d self._get_reset_action_element()"},{"line_number":157,"context_line":"        target_uri \u003d reset_action.get(\u0027target\u0027)"},{"line_number":158,"context_line":"        if not target_uri:"},{"line_number":159,"context_line":"            raise exceptions.MissingAttributeError("},{"line_number":160,"context_line":"                attribute\u003d\u0027Actions/ComputerSystem.Reset/target\u0027,"},{"line_number":161,"context_line":"                resource\u003dself._path)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # TODO(lucasagomes): Check the return code and response body ?"},{"line_number":164,"context_line":"        #                    Probably we should call refresh() as well."}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_0ebf6f61","line":161,"range":{"start_line":156,"start_character":8,"end_line":161,"end_character":36},"updated":"2017-03-23 04:18:01.000000000","message":"I feel we can still keep the method ``_get_reset_system_path`` with returning only ``target_url`` instead of ``utils.strip_redfish_base(target_url)``. At least, lookwise ``reset_system`` method will be thinner. wdyt?","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        value \u003d sys_maps.RESET_SYSTEM_VALUE_MAP_REV[value]"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        reset_action \u003d self._get_reset_action_element()"},{"line_number":157,"context_line":"        target_uri \u003d reset_action.get(\u0027target\u0027)"},{"line_number":158,"context_line":"        if not target_uri:"},{"line_number":159,"context_line":"            raise exceptions.MissingAttributeError("},{"line_number":160,"context_line":"                attribute\u003d\u0027Actions/ComputerSystem.Reset/target\u0027,"},{"line_number":161,"context_line":"                resource\u003dself._path)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # TODO(lucasagomes): Check the return code and response body ?"},{"line_number":164,"context_line":"        #                    Probably we should call refresh() as well."}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_2dd0a8c8","line":161,"range":{"start_line":156,"start_character":8,"end_line":161,"end_character":36},"in_reply_to":"1a1ced50_0ebf6f61","updated":"2017-03-23 10:13:50.000000000","message":"++ sounds good to me, I will add it back","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"}],"sushy/tests/unit/test_main.py":[{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"c5b5a5fd75f702a8a944a7c69f4c64f46d9ec888","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":33,"context_line":"        mock_connector.return_code \u003d self.conn"},{"line_number":34,"context_line":"        self.root \u003d main.Sushy("},{"line_number":35,"context_line":"            \u0027http://foo.bar:1234/redfish/v1\u0027, username\u003d\u0027foo\u0027, password\u003d\u0027bar\u0027,"},{"line_number":36,"context_line":"            verify\u003dTrue)"},{"line_number":37,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/root.json\u0027, \u0027r\u0027) as f:"},{"line_number":38,"context_line":"            self.root._json \u003d json.loads(f.read())"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_c5161f4b","line":35,"range":{"start_line":35,"start_character":33,"end_line":35,"end_character":43},"updated":"2017-03-22 22:08:52.000000000","message":"no need to include prefix \u0027redfish/v1\u0027 into base_url anymore.","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":33,"context_line":"        mock_connector.return_code \u003d self.conn"},{"line_number":34,"context_line":"        self.root \u003d main.Sushy("},{"line_number":35,"context_line":"            \u0027http://foo.bar:1234/redfish/v1\u0027, username\u003d\u0027foo\u0027, password\u003d\u0027bar\u0027,"},{"line_number":36,"context_line":"            verify\u003dTrue)"},{"line_number":37,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/root.json\u0027, \u0027r\u0027) as f:"},{"line_number":38,"context_line":"            self.root._json \u003d json.loads(f.read())"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_ce80f78d","line":35,"range":{"start_line":35,"start_character":33,"end_line":35,"end_character":43},"in_reply_to":"1a1ced50_c5161f4b","updated":"2017-03-23 04:18:01.000000000","message":"++","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.conn \u003d mock.Mock()"},{"line_number":33,"context_line":"        mock_connector.return_code \u003d self.conn"},{"line_number":34,"context_line":"        self.root \u003d main.Sushy("},{"line_number":35,"context_line":"            \u0027http://foo.bar:1234/redfish/v1\u0027, username\u003d\u0027foo\u0027, password\u003d\u0027bar\u0027,"},{"line_number":36,"context_line":"            verify\u003dTrue)"},{"line_number":37,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/root.json\u0027, \u0027r\u0027) as f:"},{"line_number":38,"context_line":"            self.root._json \u003d json.loads(f.read())"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_54056c43","line":35,"range":{"start_line":35,"start_character":33,"end_line":35,"end_character":43},"in_reply_to":"1a1ced50_ce80f78d","updated":"2017-03-23 10:13:50.000000000","message":"Done","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":12597,"name":"Lin Yang","email":"lin.a.yang@intel.com","username":"lin.yang"},"change_message_id":"c5b5a5fd75f702a8a944a7c69f4c64f46d9ec888","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/root.json\u0027, \u0027r\u0027) as f:"},{"line_number":38,"context_line":"            self.root._json \u003d json.loads(f.read())"},{"line_number":39,"context_line":"        mock_connector.assert_called_once_with("},{"line_number":40,"context_line":"            \u0027http://foo.bar:1234/redfish/v1\u0027, \u0027foo\u0027, \u0027bar\u0027, True)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test__parse_attributes(self):"},{"line_number":43,"context_line":"        self.root._parse_attributes()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_45294f89","line":40,"range":{"start_line":40,"start_character":33,"end_line":40,"end_character":43},"updated":"2017-03-22 22:08:52.000000000","message":"same here.","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e42c97264b7ae509a2742f547156c5090a711041","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/root.json\u0027, \u0027r\u0027) as f:"},{"line_number":38,"context_line":"            self.root._json \u003d json.loads(f.read())"},{"line_number":39,"context_line":"        mock_connector.assert_called_once_with("},{"line_number":40,"context_line":"            \u0027http://foo.bar:1234/redfish/v1\u0027, \u0027foo\u0027, \u0027bar\u0027, True)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test__parse_attributes(self):"},{"line_number":43,"context_line":"        self.root._parse_attributes()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_7400a834","line":40,"range":{"start_line":40,"start_character":33,"end_line":40,"end_character":43},"in_reply_to":"1a1ced50_0e4daf99","updated":"2017-03-23 10:13:50.000000000","message":"Done","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"c5a655373ae5ecfb8b50bcee5e329d104ad405aa","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        with open(\u0027sushy/tests/unit/json_samples/root.json\u0027, \u0027r\u0027) as f:"},{"line_number":38,"context_line":"            self.root._json \u003d json.loads(f.read())"},{"line_number":39,"context_line":"        mock_connector.assert_called_once_with("},{"line_number":40,"context_line":"            \u0027http://foo.bar:1234/redfish/v1\u0027, \u0027foo\u0027, \u0027bar\u0027, True)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test__parse_attributes(self):"},{"line_number":43,"context_line":"        self.root._parse_attributes()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_0e4daf99","line":40,"range":{"start_line":40,"start_character":33,"end_line":40,"end_character":43},"in_reply_to":"1a1ced50_45294f89","updated":"2017-03-23 04:18:01.000000000","message":"++","commit_id":"ba1eb40df56e957d6e9e2b629393e8c6b8f83e1a"}]}
