)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"873f23312fedc56a4ab2cf751a755ce8c6ba7144","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adds EthernetInterface to the library"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds the EthernetInterface to the library."},{"line_number":10,"context_line":"This returns the MAC addresses and its status as a dictionary to"},{"line_number":11,"context_line":"its caller."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If57184d71d244cdc6f04d3f66d56c374d4336d24"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f1d235d_5030e656","line":11,"range":{"start_line":10,"start_character":51,"end_line":11,"end_character":11},"updated":"2017-06-30 10:58:39.000000000","message":"Need some more information as part of commit message, like ...\n\n1. in what format the MAC addresses are returned?\n2. what are the keys in that dict?\n\nOn a side note, better to return a \u0027NamedTuple\u0027 instead of dict for optimised reasons.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"}],"doc/source/usage.rst":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  print(sys_inst.processors.summary)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  # Get the connected MACs"},{"line_number":87,"context_line":"  print(sys_inst.ethernet_interfaces.eth_summary)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"-----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1f1a1f67_f68fcc2b","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":48},"updated":"2017-07-14 05:35:40.000000000","message":"``sys_inst.ethernet_interfaces.eth_summary`` seems repetitive with eth_summary. why not ``sys_inst.ethernet_interfaces.summary``?","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"}],"releasenotes/notes/add_ethernet_interface-df308f814f0e4bce.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"199d673e9e1d53a1aa8af809e19a57115aa1deef","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":"    This patch adds the \"EthernetInterfaces\" to the library."},{"line_number":5,"context_line":"    It also returns the list of conncted MACs."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"7f515b1d_73e27ca2","line":4,"updated":"2017-09-27 15:19:05.000000000","message":"please remove \"This patch\", the patches are not mentioned on the final page","commit_id":"922a30d0329c68bccb8df4cedcb1148bb65db194"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"199d673e9e1d53a1aa8af809e19a57115aa1deef","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This patch adds the \"EthernetInterfaces\" to the library."},{"line_number":5,"context_line":"    It also returns the list of conncted MACs."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"7f515b1d_53df80d5","line":5,"updated":"2017-09-27 15:19:05.000000000","message":"typo on connected","commit_id":"922a30d0329c68bccb8df4cedcb1148bb65db194"}],"sushy/resources/system/constants.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"44b834ba5b8b7634eef968e3da0e97829ee225d5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"PROCESSOR_ARCH_MIPS \u003d \u0027MIPS\u0027"},{"line_number":110,"context_line":"PROCESSOR_ARCH_OEM \u003d \u0027OEM-defined\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"# Health related constants."},{"line_number":113,"context_line":"HEALTH_STATE_ENABLED \u003d \u0027Enabled\u0027"},{"line_number":114,"context_line":"HEALTH_STATE_DISABLED \u003d \u0027Disabled\u0027"},{"line_number":115,"context_line":"HEALTH_OK \u003d \u0027OK\u0027"},{"line_number":116,"context_line":"HEALTH_WARNING \u003d \u0027Warning\u0027"},{"line_number":117,"context_line":"HEALTH_CRITICAL \u003d \u0027Critical\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_58167f4b","line":117,"range":{"start_line":112,"start_character":0,"end_line":117,"end_character":28},"updated":"2017-10-09 07:17:32.000000000","message":"nit: Although nit but I think it\u0027s a good practise to keep the constant names different from the actual values. It helps.","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e82e4943f6556d440c4d0f548eb004f6ec22e854","unresolved":false,"context_lines":[{"line_number":109,"context_line":"PROCESSOR_ARCH_MIPS \u003d \u0027MIPS\u0027"},{"line_number":110,"context_line":"PROCESSOR_ARCH_OEM \u003d \u0027OEM-defined\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"# Health related constants."},{"line_number":113,"context_line":"HEALTH_STATE_ENABLED \u003d \u0027Enabled\u0027"},{"line_number":114,"context_line":"HEALTH_STATE_DISABLED \u003d \u0027Disabled\u0027"},{"line_number":115,"context_line":"HEALTH_OK \u003d \u0027OK\u0027"},{"line_number":116,"context_line":"HEALTH_WARNING \u003d \u0027Warning\u0027"},{"line_number":117,"context_line":"HEALTH_CRITICAL \u003d \u0027Critical\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_d672024a","line":117,"range":{"start_line":112,"start_character":0,"end_line":117,"end_character":28},"in_reply_to":"5f4e5783_0e884f1d","updated":"2017-12-13 02:03:15.000000000","message":"I think it is obvious why one would use them, what I don\u0027t see how keeping constant names different helps maintainability.","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"7447cd9d11362a32fb1adbbd2302496354ab9b64","unresolved":false,"context_lines":[{"line_number":109,"context_line":"PROCESSOR_ARCH_MIPS \u003d \u0027MIPS\u0027"},{"line_number":110,"context_line":"PROCESSOR_ARCH_OEM \u003d \u0027OEM-defined\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"# Health related constants."},{"line_number":113,"context_line":"HEALTH_STATE_ENABLED \u003d \u0027Enabled\u0027"},{"line_number":114,"context_line":"HEALTH_STATE_DISABLED \u003d \u0027Disabled\u0027"},{"line_number":115,"context_line":"HEALTH_OK \u003d \u0027OK\u0027"},{"line_number":116,"context_line":"HEALTH_WARNING \u003d \u0027Warning\u0027"},{"line_number":117,"context_line":"HEALTH_CRITICAL \u003d \u0027Critical\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"5f4e5783_0e884f1d","line":117,"range":{"start_line":112,"start_character":0,"end_line":117,"end_character":28},"in_reply_to":"7f515b1d_4e36a753","updated":"2017-10-10 03:35:23.000000000","message":"I actually mean the constant values (and not names). Just to give an example, when a user tries to compare the \"Health State Enabled\" value she would probably do something of this:\n\n    if health_state \u003d\u003d HEALTH_STATE_ENABLED:\n      ...\n\nAnd also when the actual json values and const values are same, then the following condition also passes and if the user has adopted this as the condition then most of the time she is oblivious of the ticking bomb there:\n\n    if health_state \u003d\u003d \"Enabled\":\n      ...\n\nWhat if there is any change to the underneath constant value (unlikely though)? And more so if there is any change to the actual JSON value (say from \"Enabled\" to \"enabled\") then the user is tempted to change her comparison to the following which to her utter dismay starts failing:\n\n    if health_state \u003d\u003d \"enabled\":\n      ...\n\nBut of course the earlier conditional expression involving the constant still works perfectly. Hope it explains my reasoning behind keeping the constant values different from actual values they represent. Also, that\u0027s why I have commented here [0] to depict the constant value as the dict key\u0027s values rather than the raw string.\n\n[0] https://review.openstack.org/#/c/452532/16/sushy/resources/system/ethernet_interface.py@70","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1ad38aa02c6ff073bdd507ea56c77ed673a0bc5a","unresolved":false,"context_lines":[{"line_number":109,"context_line":"PROCESSOR_ARCH_MIPS \u003d \u0027MIPS\u0027"},{"line_number":110,"context_line":"PROCESSOR_ARCH_OEM \u003d \u0027OEM-defined\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"# Health related constants."},{"line_number":113,"context_line":"HEALTH_STATE_ENABLED \u003d \u0027Enabled\u0027"},{"line_number":114,"context_line":"HEALTH_STATE_DISABLED \u003d \u0027Disabled\u0027"},{"line_number":115,"context_line":"HEALTH_OK \u003d \u0027OK\u0027"},{"line_number":116,"context_line":"HEALTH_WARNING \u003d \u0027Warning\u0027"},{"line_number":117,"context_line":"HEALTH_CRITICAL \u003d \u0027Critical\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_4e36a753","line":117,"range":{"start_line":112,"start_character":0,"end_line":117,"end_character":28},"in_reply_to":"7f515b1d_58167f4b","updated":"2017-10-09 15:56:30.000000000","message":"Personally, I don\u0027t see it as helping, or at least I don\u0027t see _how_ it helps maintainability down the road.","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"}],"sushy/resources/system/ethernet_interface.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":"649cc932ac7e38837185e188afe55881928878fa","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class EthernetInterface(base.ResourceBase):"},{"line_number":32,"context_line":"    \"\"\"This class adds the EthernetInterface resource\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    identity \u003d base.Field(\u0027Id\u0027, required\u003dTrue)"},{"line_number":35,"context_line":"    \"\"\"The Ethernet Interface identity string\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_4ab755f6","line":32,"range":{"start_line":32,"start_character":18,"end_line":32,"end_character":22},"updated":"2017-07-19 18:09:24.000000000","message":"It adds, or does it represent?","commit_id":"f245fcbb46e24b8f0f0bd18455c3139f5cebea0c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"649cc932ac7e38837185e188afe55881928878fa","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class EthernetInterfaceCollection(base.ResourceCollectionBase):"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    _summary \u003d None"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_cae925e3","line":56,"updated":"2017-07-19 18:09:24.000000000","message":"Please add a doc string for this class.","commit_id":"f245fcbb46e24b8f0f0bd18455c3139f5cebea0c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"649cc932ac7e38837185e188afe55881928878fa","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        This filters the MACs whose health is OK,"},{"line_number":68,"context_line":"        which means the MACs in both \u0027Enabled\u0027 and \u0027Disabled\u0027 States"},{"line_number":69,"context_line":"        are returned."},{"line_number":70,"context_line":"        \"\"\""},{"line_number":71,"context_line":"        if self._summary is None:"},{"line_number":72,"context_line":"            mac_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_6aa9f18d","line":69,"updated":"2017-07-19 18:09:24.000000000","message":"Please document what the returned value is expected to be in the :returns: format","commit_id":"f245fcbb46e24b8f0f0bd18455c3139f5cebea0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"199d673e9e1d53a1aa8af809e19a57115aa1deef","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def summary(self):"},{"line_number":65,"context_line":"        \"\"\"property to return the summary MAC addresses and state"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        This filters the MACs whose health is OK,"},{"line_number":68,"context_line":"        which means the MACs in both \u0027Enabled\u0027 and \u0027Disabled\u0027 States"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f515b1d_33f2c471","line":65,"updated":"2017-09-27 15:19:05.000000000","message":"I\u0027d just leave \"Summary of MAC addresses and interface states.\"","commit_id":"922a30d0329c68bccb8df4cedcb1148bb65db194"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"199d673e9e1d53a1aa8af809e19a57115aa1deef","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        This filters the MACs whose health is OK,"},{"line_number":68,"context_line":"        which means the MACs in both \u0027Enabled\u0027 and \u0027Disabled\u0027 States"},{"line_number":69,"context_line":"        are returned."},{"line_number":70,"context_line":"        \"\"\""},{"line_number":71,"context_line":"        if self._summary is None:"},{"line_number":72,"context_line":"            mac_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f515b1d_13f7c861","line":69,"updated":"2017-09-27 15:19:05.000000000","message":"Please mention what the result actually is (a dict with what keys)","commit_id":"922a30d0329c68bccb8df4cedcb1148bb65db194"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"199d673e9e1d53a1aa8af809e19a57115aa1deef","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                if eth.mac_address is not None:"},{"line_number":75,"context_line":"                    if (eth.status is not None and"},{"line_number":76,"context_line":"                            eth.status.health \u003d\u003d sys_cons.HEALTH_OK):"},{"line_number":77,"context_line":"                        mac_dict.update({eth.mac_address: eth.status.state})"},{"line_number":78,"context_line":"            self._summary \u003d mac_dict"},{"line_number":79,"context_line":"        return self._summary"}],"source_content_type":"text/x-python","patch_set":14,"id":"7f515b1d_f3e78cab","line":77,"updated":"2017-09-27 15:19:05.000000000","message":"nit:\n\n mac_dict[eth.mac_address] \u003d eth.status.state","commit_id":"922a30d0329c68bccb8df4cedcb1148bb65db194"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"44b834ba5b8b7634eef968e3da0e97829ee225d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_58fc3fb4","line":1,"updated":"2017-10-09 07:17:32.000000000","message":"Can we have the coverage centum for this file? Curucial portion is missing. Please refer: http://logs.openstack.org/32/452532/16/check/sushy-coverage-ubuntu-xenial/cc517f9/cover/sushy_resources_system_ethernet_interface_py.html","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c104401f8f8af36f0d390c91fb028a6b5c59dfd4","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def summary(self):"},{"line_number":65,"context_line":"        \"\"\"Summary MAC addresses and interfaces state"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        This filters the MACs whose health is OK,"},{"line_number":68,"context_line":"        which means the MACs in both \u0027Enabled\u0027 and \u0027Disabled\u0027 States"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_4ca4afb9","line":65,"updated":"2017-10-06 11:02:29.000000000","message":"nit: Summary of","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"44b834ba5b8b7634eef968e3da0e97829ee225d5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        This filters the MACs whose health is OK,"},{"line_number":68,"context_line":"        which means the MACs in both \u0027Enabled\u0027 and \u0027Disabled\u0027 States"},{"line_number":69,"context_line":"        are returned."},{"line_number":70,"context_line":"        :returns dictionary in the format {\u0027aa:bb:cc:dd:ee:ff\u0027: \u0027Enabled\u0027}"},{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        if self._summary is None:"},{"line_number":73,"context_line":"            mac_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_7847fb4d","line":70,"range":{"start_line":70,"start_character":7,"end_line":70,"end_character":74},"updated":"2017-10-09 07:17:32.000000000","message":"nit: It should be something on this line:\n\n    {\u0027aa:bb:cc:dd:ee:ff\u0027: HEALTH_STATE_ENABLED,\n     \u0027aa:bb:cc:dd:ee:gg\u0027: HEALTH_STATE_DISABLED}","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1ad38aa02c6ff073bdd507ea56c77ed673a0bc5a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        This filters the MACs whose health is OK,"},{"line_number":68,"context_line":"        which means the MACs in both \u0027Enabled\u0027 and \u0027Disabled\u0027 States"},{"line_number":69,"context_line":"        are returned."},{"line_number":70,"context_line":"        :returns dictionary in the format {\u0027aa:bb:cc:dd:ee:ff\u0027: \u0027Enabled\u0027}"},{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        if self._summary is None:"},{"line_number":73,"context_line":"            mac_dict \u003d {}"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_ee72f311","line":70,"range":{"start_line":70,"start_character":7,"end_line":70,"end_character":74},"in_reply_to":"7f515b1d_7847fb4d","updated":"2017-10-09 15:56:30.000000000","message":"s/:returns/:returns:/ and +1 to wrapping and indenting the returned data example in a follow-up","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"}],"sushy/resources/system/ethernetinterface.py":[{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"43ebceca5f587ac8727383f73a8e3ec6e3b39978","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    status \u003d HealthStatusField(\"Status\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"},{"line_number":53,"context_line":"        \"\"\"A class representing a EthernetInterface"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        :param connector: A Connector instance"},{"line_number":56,"context_line":"        :param identity: The identity of the ethernet interface."},{"line_number":57,"context_line":"        :param redfish_version: The version of RedFish. Used to construct"},{"line_number":58,"context_line":"            the object according to schema of the given version."},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        super(EthernetInterface, self).__init__(connector, identity,"},{"line_number":61,"context_line":"                                                redfish_version)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class EthernetInterfaceCollection(base.ResourceCollectionBase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_e2b1cf48","line":61,"range":{"start_line":52,"start_character":3,"end_line":61,"end_character":64},"updated":"2017-07-06 09:41:22.000000000","message":"Any reason to keep this constructor. It\u0027s the default behaviour. So can be safely removed.","commit_id":"7bf3505ebfbae06e3bcb767cd6cb71dcd8b03367"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"43ebceca5f587ac8727383f73a8e3ec6e3b39978","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def _resource_type(self):"},{"line_number":68,"context_line":"        return EthernetInterface"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    _eth_summary \u003d None"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @property"},{"line_number":73,"context_line":"    def eth_summary(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_8270db09","line":70,"range":{"start_line":70,"start_character":4,"end_line":70,"end_character":23},"updated":"2017-07-06 09:41:22.000000000","message":"Can you move this to top for readability.","commit_id":"7bf3505ebfbae06e3bcb767cd6cb71dcd8b03367"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"43ebceca5f587ac8727383f73a8e3ec6e3b39978","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                if eth.mac_address is not None:"},{"line_number":84,"context_line":"                    if eth.health \u003d\u003d \u0027OK\u0027:"},{"line_number":85,"context_line":"                        mac_dict.update({eth.mac_address: eth.state})"},{"line_number":86,"context_line":"        self._eth_summary \u003d mac_dict"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def __init__(self, connector, path, redfish_version\u003dNone):"},{"line_number":89,"context_line":"        \"\"\"A class representing a EthernetInterfaceCollection"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_a2aab715","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":36},"updated":"2017-07-06 09:41:22.000000000","message":"May be you missed to return the value.","commit_id":"7bf3505ebfbae06e3bcb767cd6cb71dcd8b03367"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"43ebceca5f587ac8727383f73a8e3ec6e3b39978","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                        mac_dict.update({eth.mac_address: eth.state})"},{"line_number":86,"context_line":"        self._eth_summary \u003d mac_dict"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def __init__(self, connector, path, redfish_version\u003dNone):"},{"line_number":89,"context_line":"        \"\"\"A class representing a EthernetInterfaceCollection"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        :param connector: A Connector instance"},{"line_number":92,"context_line":"        :param path: The canonical path to the EthernetInterface"},{"line_number":93,"context_line":"            collection resource"},{"line_number":94,"context_line":"        :param redfish_version: The version of RedFish. Used to construct"},{"line_number":95,"context_line":"            the object according to schema of the given version."},{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":"        super(EthernetInterfaceCollection, self).__init__(connector, path,"},{"line_number":98,"context_line":"                                                          redfish_version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_0285ebce","line":98,"range":{"start_line":88,"start_character":4,"end_line":98,"end_character":74},"updated":"2017-07-06 09:41:22.000000000","message":"ditto. So that it avoids cluttering this file.","commit_id":"7bf3505ebfbae06e3bcb767cd6cb71dcd8b03367"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    health \u003d base.Field(\u0027Health\u0027)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class EthernetInterface(base.ResourceBase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    identity \u003d base.Field(\u0027Id\u0027, required\u003dTrue)"},{"line_number":33,"context_line":"    \"\"\"The Ethernet Interface identity string\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_56e7a0e5","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":23},"updated":"2017-07-14 05:35:40.000000000","message":"in absence of c\u0027tor can we add the class docstring to here?","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f6758aa043ab25c537db5c04d42ab188389550ef","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    health \u003d base.Field(\u0027Health\u0027)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class EthernetInterface(base.ResourceBase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    identity \u003d base.Field(\u0027Id\u0027, required\u003dTrue)"},{"line_number":33,"context_line":"    \"\"\"The Ethernet Interface identity string\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_347df77e","line":30,"range":{"start_line":30,"start_character":6,"end_line":30,"end_character":23},"in_reply_to":"1f1a1f67_56e7a0e5","updated":"2017-07-18 04:07:09.000000000","message":"Sorry I didnt get \"c\u0027tor\". I will add docstring.","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    mac_address \u003d base.Field(\u0027MACAddress\u0027)"},{"line_number":45,"context_line":"    \"\"\"This is the currently configured MAC address of the interface.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    speedmbps \u003d base.Field(\u0027SpeedMbps\u0027)"},{"line_number":48,"context_line":"    \"\"\"This is the current speed in Mbps of this interface.\"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    status \u003d HealthStatusField(\"Status\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_968f7822","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":13},"updated":"2017-07-14 05:35:40.000000000","message":"s/speedmbps/speed_mbps","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    _eth_summary \u003d None"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @property"},{"line_number":62,"context_line":"    def eth_summary(self):"},{"line_number":63,"context_line":"        \"\"\"property to return the MAC addresses."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        This filters the MACs whose health is OK,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_368664dd","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":19},"updated":"2017-07-14 05:35:40.000000000","message":"s/eth_summary/summary as suggested here: https://review.openstack.org/#/c/452532/8/doc/source/usage.rst@87","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @property"},{"line_number":62,"context_line":"    def eth_summary(self):"},{"line_number":63,"context_line":"        \"\"\"property to return the MAC addresses."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        This filters the MACs whose health is OK,"},{"line_number":66,"context_line":"        which means the MACs in both \u0027Enabled\u0027 and \u0027Disabled\u0027 States"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_76ca9c1a","line":63,"range":{"start_line":63,"start_character":30,"end_line":63,"end_character":47},"updated":"2017-07-14 05:35:40.000000000","message":"probably, summary of MAC addresses and state.","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        mac_dict \u003d {}"},{"line_number":70,"context_line":"        for eth in self.get_members():"},{"line_number":71,"context_line":"            if eth.mac_address is not None:"},{"line_number":72,"context_line":"                if eth.status is not None and eth.status.health \u003d\u003d \u0027OK\u0027:"},{"line_number":73,"context_line":"                    mac_dict.update({eth.mac_address: eth.status.state})"},{"line_number":74,"context_line":"        self._eth_summary \u003d mac_dict"},{"line_number":75,"context_line":"        return self._eth_summary"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_76f3bc74","line":72,"range":{"start_line":72,"start_character":46,"end_line":72,"end_character":71},"updated":"2017-07-14 05:35:40.000000000","message":"this comparing against a raw string seems brittle. Could you create constant and its respective mapping?","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            if eth.mac_address is not None:"},{"line_number":72,"context_line":"                if eth.status is not None and eth.status.health \u003d\u003d \u0027OK\u0027:"},{"line_number":73,"context_line":"                    mac_dict.update({eth.mac_address: eth.status.state})"},{"line_number":74,"context_line":"        self._eth_summary \u003d mac_dict"},{"line_number":75,"context_line":"        return self._eth_summary"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_c1352cdc","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":25},"updated":"2017-07-14 05:35:40.000000000","message":"so, everytime there is a request coming to get the eth summary you re-evaluate to send the live state. Is it really required? .. If the user feels that it needs to get the re-evaluated info she can have the EthernetInterfaceCollection obj refreshed and then invoke this summary property.","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"}],"sushy/resources/system/ethernetinterfaces.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"20acfe759f30591b9f3cbc1e7815464b8a219724","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    health \u003d None"},{"line_number":37,"context_line":"    \"\"\"Health of the NIC\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    PermanentMacAddress \u003d None"},{"line_number":40,"context_line":"    \"\"\"This is the permanent MAC address assigned to this interface (port) \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    MacAddress \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_006b681f","line":39,"updated":"2017-05-02 11:45:17.000000000","message":"let\u0027s use lower case and underscores, as everywhere else: permanent_mac_address","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ecc78fce4636347f9094001bfa6a51cb2d79fc00","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    health \u003d None"},{"line_number":37,"context_line":"    \"\"\"Health of the NIC\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    PermanentMacAddress \u003d None"},{"line_number":40,"context_line":"    \"\"\"This is the permanent MAC address assigned to this interface (port) \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    MacAddress \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_1a2063b0","line":39,"in_reply_to":"5ff73747_006b681f","updated":"2017-05-02 23:11:27.000000000","message":"ok","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"20acfe759f30591b9f3cbc1e7815464b8a219724","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    PermanentMacAddress \u003d None"},{"line_number":40,"context_line":"    \"\"\"This is the permanent MAC address assigned to this interface (port) \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    MacAddress \u003d None"},{"line_number":43,"context_line":"    \"\"\"This is the currently configured MAC address of the interface.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    SpeedMbps \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_e0675c51","line":42,"updated":"2017-05-02 11:45:17.000000000","message":"ditto","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ecc78fce4636347f9094001bfa6a51cb2d79fc00","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    PermanentMacAddress \u003d None"},{"line_number":40,"context_line":"    \"\"\"This is the permanent MAC address assigned to this interface (port) \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    MacAddress \u003d None"},{"line_number":43,"context_line":"    \"\"\"This is the currently configured MAC address of the interface.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    SpeedMbps \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_fa2c97ad","line":42,"in_reply_to":"5ff73747_e0675c51","updated":"2017-05-02 23:11:27.000000000","message":"ok","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"20acfe759f30591b9f3cbc1e7815464b8a219724","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    MacAddress \u003d None"},{"line_number":43,"context_line":"    \"\"\"This is the currently configured MAC address of the interface.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    SpeedMbps \u003d None"},{"line_number":46,"context_line":"    \"\"\"This is the current speed in Mbps of this interface.\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_c0746001","line":45,"updated":"2017-05-02 11:45:17.000000000","message":"ditto","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ecc78fce4636347f9094001bfa6a51cb2d79fc00","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    MacAddress \u003d None"},{"line_number":43,"context_line":"    \"\"\"This is the currently configured MAC address of the interface.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    SpeedMbps \u003d None"},{"line_number":46,"context_line":"    \"\"\"This is the current speed in Mbps of this interface.\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_9a1d9375","line":45,"in_reply_to":"5ff73747_c0746001","updated":"2017-05-02 23:11:27.000000000","message":"ok","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_7fa3f600","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":22},"updated":"2017-06-28 12:46:17.000000000","message":"Whose rights are we reserving?","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    speedmbps \u003d None"},{"line_number":46,"context_line":"    \"\"\"This is the current speed in Mbps of this interface.\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"},{"line_number":49,"context_line":"        \"\"\"A class representing a EthernetInterface"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        :param connector: A Connector instance"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_448bcfc1","line":48,"range":{"start_line":48,"start_character":44,"end_line":48,"end_character":64},"updated":"2017-06-28 12:46:17.000000000","message":"note: This is going to conflict with https://review.openstack.org/#/c/473339/, I guess whichever lands first though. :)","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e842357f74ecaa62432e51059c1191a362750187","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    speedmbps \u003d None"},{"line_number":46,"context_line":"    \"\"\"This is the current speed in Mbps of this interface.\"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"},{"line_number":49,"context_line":"        \"\"\"A class representing a EthernetInterface"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        :param connector: A Connector instance"},{"line_number":52,"context_line":"        :param identity: The identity of the ethernet interface."},{"line_number":53,"context_line":"        :param redfish_version: The version of RedFish. Used to construct"},{"line_number":54,"context_line":"            the object according to schema of the given version."},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        super(EthernetInterfaces, self).__init__(connector, identity,"},{"line_number":57,"context_line":"                                                 redfish_version)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _parse_attributes(self):"},{"line_number":60,"context_line":"        self.identity \u003d self.json.get(\u0027Id\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_08cf1780","line":57,"range":{"start_line":48,"start_character":4,"end_line":57,"end_character":65},"updated":"2017-06-29 08:24:21.000000000","message":"We don\u0027t need this constructor. This can be removed.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        super(EthernetInterfaces, self).__init__(connector, identity,"},{"line_number":57,"context_line":"                                                 redfish_version)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _parse_attributes(self):"},{"line_number":60,"context_line":"        self.identity \u003d self.json.get(\u0027Id\u0027)"},{"line_number":61,"context_line":"        self.name \u003d self.json.get(\u0027Name\u0027)"},{"line_number":62,"context_line":"        self.description \u003d self.json.get(\u0027Description\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_2401f338","line":59,"updated":"2017-06-28 12:46:17.000000000","message":"nit: It would help fit here was a doc string, either here, or at the class level pointing to the Redfish data specification so reviewers could compare.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"626aafabfa29aadeb7206664034b4fa04fd0fd48","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            self.health \u003d status.get(\u0027Health\u0027)"},{"line_number":67,"context_line":"        self.permanent_mac_address \u003d self.json.get(\u0027PermanentMACAddress\u0027)"},{"line_number":68,"context_line":"        self.mac_address \u003d self.json.get(\u0027MACAddress\u0027)"},{"line_number":69,"context_line":"        self.speedmbps \u003d self.json.get(\u0027SpeedMbps\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"class EthernetInterfacesCollection(base.ResourceCollectionBase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_0e84985d","line":69,"updated":"2017-06-30 08:27:30.000000000","message":"+1, we absolutely need these converted to Field\u0027s","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e842357f74ecaa62432e51059c1191a362750187","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                                                 redfish_version)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _parse_attributes(self):"},{"line_number":60,"context_line":"        self.identity \u003d self.json.get(\u0027Id\u0027)"},{"line_number":61,"context_line":"        self.name \u003d self.json.get(\u0027Name\u0027)"},{"line_number":62,"context_line":"        self.description \u003d self.json.get(\u0027Description\u0027)"},{"line_number":63,"context_line":"        status \u003d self.json.get(\u0027Status\u0027)"},{"line_number":64,"context_line":"        if status is not None:"},{"line_number":65,"context_line":"            self.state \u003d status.get(\u0027State\u0027)"},{"line_number":66,"context_line":"            self.health \u003d status.get(\u0027Health\u0027)"},{"line_number":67,"context_line":"        self.permanent_mac_address \u003d self.json.get(\u0027PermanentMACAddress\u0027)"},{"line_number":68,"context_line":"        self.mac_address \u003d self.json.get(\u0027MACAddress\u0027)"},{"line_number":69,"context_line":"        self.speedmbps \u003d self.json.get(\u0027SpeedMbps\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"class EthernetInterfacesCollection(base.ResourceCollectionBase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_485bcf86","line":69,"range":{"start_line":60,"start_character":8,"end_line":69,"end_character":51},"updated":"2017-06-29 08:24:21.000000000","message":"If we can convert each of them into Fields, we don\u0027t have to override this method here(get rid of this method). However i am still thinking which one would me more elegant. directly accessin gthe values through self.json or accessing them via Fields?","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e842357f74ecaa62432e51059c1191a362750187","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def _resource_type(self):"},{"line_number":76,"context_line":"        return EthernetInterfaces"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def __init__(self, connector, path, redfish_version\u003dNone):"},{"line_number":79,"context_line":"        \"\"\"A class representing a EthernetInterfaceCollection"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        :param connector: A Connector instance"},{"line_number":82,"context_line":"        :param path: The canonical path to the EthernetInterface"},{"line_number":83,"context_line":"            collection resource"},{"line_number":84,"context_line":"        :param redfish_version: The version of RedFish. Used to construct"},{"line_number":85,"context_line":"            the object according to schema of the given version."},{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":"        super(EthernetInterfacesCollection, self).__init__(connector, path,"},{"line_number":88,"context_line":"                                                           redfish_version)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_08f9577f","line":88,"range":{"start_line":78,"start_character":4,"end_line":88,"end_character":75},"updated":"2017-06-29 08:24:21.000000000","message":"We don\u0027t require it. Not doing anything specific to this class.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"}],"sushy/resources/system/mappings.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":"649cc932ac7e38837185e188afe55881928878fa","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"PROCESSOR_ARCH_VALUE_MAP_REV \u003d ("},{"line_number":84,"context_line":"    utils.revert_dictionary(PROCESSOR_ARCH_VALUE_MAP))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"HEALTH_STATE_VALUE_MAP \u003d {"},{"line_number":87,"context_line":"    \u0027Enabled\u0027: sys_cons.HEALTH_STATE_ENABLED,"},{"line_number":88,"context_line":"    \u0027Disabled\u0027: sys_cons.HEALTH_STATE_DISABLED,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_0a1f1d08","line":85,"updated":"2017-07-19 18:09:24.000000000","message":"Are these health mapping values consistent across all of the redfish standard, or specific to networking?","commit_id":"f245fcbb46e24b8f0f0bd18455c3139f5cebea0c"}],"sushy/resources/system/system.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"20acfe759f30591b9f3cbc1e7815464b8a219724","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        return ethernet_col.get(\u0027@odata.id\u0027)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @property"},{"line_number":266,"context_line":"    def ethernetinterfaces_collection(self):"},{"line_number":267,"context_line":"        if self._ethernetinterfaces_collection is None:"},{"line_number":268,"context_line":"            eth_collection \u003d ethernetinterfaces.EthernetInterfacesCollection("},{"line_number":269,"context_line":"                self._conn, self._get_ethernetinterfaces_collection_path(),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_a071540f","line":266,"updated":"2017-05-02 11:45:17.000000000","message":"let\u0027s just call it ethernet_interfaces, adding \"collection\" just adds to typing","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ecc78fce4636347f9094001bfa6a51cb2d79fc00","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        return ethernet_col.get(\u0027@odata.id\u0027)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @property"},{"line_number":266,"context_line":"    def ethernetinterfaces_collection(self):"},{"line_number":267,"context_line":"        if self._ethernetinterfaces_collection is None:"},{"line_number":268,"context_line":"            eth_collection \u003d ethernetinterfaces.EthernetInterfacesCollection("},{"line_number":269,"context_line":"                self._conn, self._get_ethernetinterfaces_collection_path(),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_da543b24","line":266,"in_reply_to":"5ff73747_a071540f","updated":"2017-05-02 23:11:27.000000000","message":"ok","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"20acfe759f30591b9f3cbc1e7815464b8a219724","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        return self._ethernetinterfaces_collection"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    @property"},{"line_number":275,"context_line":"    def ethernet_summary(self):"},{"line_number":276,"context_line":"        if self._ethernet_summary is None:"},{"line_number":277,"context_line":"            MACS \u003d {}"},{"line_number":278,"context_line":"            members \u003d self.ethernetinterfaces_collection.get_members()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_80609837","line":275,"updated":"2017-05-02 11:45:17.000000000","message":"let\u0027s move it to the EthernetInterfacesCollection object as healty_mac_addresses() function. so that e.g. it\u0027s used as\n\n system.ethernet_interfaces().healthy_mac_addresses()","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ecc78fce4636347f9094001bfa6a51cb2d79fc00","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        return self._ethernetinterfaces_collection"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    @property"},{"line_number":275,"context_line":"    def ethernet_summary(self):"},{"line_number":276,"context_line":"        if self._ethernet_summary is None:"},{"line_number":277,"context_line":"            MACS \u003d {}"},{"line_number":278,"context_line":"            members \u003d self.ethernetinterfaces_collection.get_members()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_1a72a3e4","line":275,"in_reply_to":"5ff73747_80609837","updated":"2017-05-02 23:11:27.000000000","message":"ok","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"20acfe759f30591b9f3cbc1e7815464b8a219724","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            for eth in self._ethernet_macs:"},{"line_number":281,"context_line":"                if eth.MacAddress is not None:"},{"line_number":282,"context_line":"                    if eth.health \u003d\u003d \u0027OK\u0027:"},{"line_number":283,"context_line":"                        MACS.update({eth.MacAddress: eth.state})"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"            self._ethernet_summary \u003d MACS"},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_60658c45","line":283,"updated":"2017-05-02 11:45:17.000000000","message":"do we even need state? I thought it\u0027s just a list of MACs","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ecc78fce4636347f9094001bfa6a51cb2d79fc00","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            for eth in self._ethernet_macs:"},{"line_number":281,"context_line":"                if eth.MacAddress is not None:"},{"line_number":282,"context_line":"                    if eth.health \u003d\u003d \u0027OK\u0027:"},{"line_number":283,"context_line":"                        MACS.update({eth.MacAddress: eth.state})"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"            self._ethernet_summary \u003d MACS"},{"line_number":286,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_daa67b54","line":283,"in_reply_to":"5ff73747_60658c45","updated":"2017-05-02 23:11:27.000000000","message":"The state tells if the MAC is \"Enabled\" or \"Disabled\". Based on this we can choose to create the ironic ports in ironic.","commit_id":"aee623a19ec0f22747f39a1d028524a1211ede6d"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"873f23312fedc56a4ab2cf751a755ce8c6ba7144","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from sushy import exceptions"},{"line_number":19,"context_line":"from sushy.resources import base"},{"line_number":20,"context_line":"from sushy.resources.system import constants as sys_cons"},{"line_number":21,"context_line":"from sushy.resources.system import ethernetinterfaces"},{"line_number":22,"context_line":"from sushy.resources.system import mappings as sys_maps"},{"line_number":23,"context_line":"from sushy.resources.system import processor"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_70c76214","line":21,"range":{"start_line":21,"start_character":35,"end_line":21,"end_character":53},"updated":"2017-06-30 10:58:39.000000000","message":"s/ethernetinterfaces/ethernetinterface for consistency reasons across Sushy.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    _actions \u003d ActionsField(\u0027Actions\u0027, required\u003dTrue)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    _healthy_mac_addresses \u003d None"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def __init__(self, connector, identity, redfish_version\u003dNone):"},{"line_number":130,"context_line":"        \"\"\"A class representing a ComputerSystem"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_5f715aa7","line":127,"updated":"2017-06-28 12:46:17.000000000","message":"nit: Perhaps \"_connected_mac_addresses\" ?  We don\u0027t know if the port is actually healthy, just that we have carrier up. For all we know, I could have plugged a loopback into the port. :)","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e842357f74ecaa62432e51059c1191a362750187","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    # include a get_manager() and get_chassis() once we have an abstraction"},{"line_number":248,"context_line":"    # for those resources."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def _get_processor_collection_path(self):"},{"line_number":251,"context_line":"        \"\"\"Helper function to find the ProcessorCollection path\"\"\""},{"line_number":252,"context_line":"        processor_col \u003d self.json.get(\u0027Processors\u0027)"},{"line_number":253,"context_line":"        if not processor_col:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_4ef2b708","line":250,"range":{"start_line":250,"start_character":8,"end_line":250,"end_character":38},"updated":"2017-06-29 08:24:21.000000000","message":"Suggest to rename this to a more generic name and change the function signature, so that any resource name can be passed in for which @odata.id will be returned.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"626aafabfa29aadeb7206664034b4fa04fd0fd48","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _get_ethernetinterfaces_coll_path(self):"},{"line_number":277,"context_line":"        \"\"\"Helper function to find the EthernetInterfacesCollection path\"\"\""},{"line_number":278,"context_line":"        ethernet_col \u003d self.json.get(\u0027EthernetInterfaces\u0027)"},{"line_number":279,"context_line":"        if not ethernet_col:"},{"line_number":280,"context_line":"            raise exceptions.MissingAttributeError("},{"line_number":281,"context_line":"                attribute\u003d\u0027EthernetInterfaces\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_ee883c72","line":278,"updated":"2017-06-30 08:27:30.000000000","message":"this should be a private Field (like e.g. _actions)","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"e842357f74ecaa62432e51059c1191a362750187","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        super(System, self).refresh()"},{"line_number":274,"context_line":"        self._processors \u003d None"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def _get_ethernetinterfaces_coll_path(self):"},{"line_number":277,"context_line":"        \"\"\"Helper function to find the EthernetInterfacesCollection path\"\"\""},{"line_number":278,"context_line":"        ethernet_col \u003d self.json.get(\u0027EthernetInterfaces\u0027)"},{"line_number":279,"context_line":"        if not ethernet_col:"},{"line_number":280,"context_line":"            raise exceptions.MissingAttributeError("},{"line_number":281,"context_line":"                attribute\u003d\u0027EthernetInterfaces\u0027,"},{"line_number":282,"context_line":"                resource\u003dself._path)"},{"line_number":283,"context_line":"        return ethernet_col.get(\u0027@odata.id\u0027)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @property"},{"line_number":286,"context_line":"    def ethernet_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_ce6247d9","line":283,"range":{"start_line":276,"start_character":4,"end_line":283,"end_character":44},"updated":"2017-06-29 08:24:21.000000000","message":"This is more or less duplicated code to _get_processor_collection_path. Instead of writing a new one i\u0027d suggest to rename \"_get_processor_collection_path\" to \"_get_resource_path\" or \"_get_resource_odataid\" as below:\n\ndef _get_resource_path(self, resource_name):\n   ...\nwhere resource_name can be \"EthernetInterfaces\" or \"Processors\".","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return ethernet_col.get(\u0027@odata.id\u0027)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @property"},{"line_number":286,"context_line":"    def ethernet_interfaces(self):"},{"line_number":287,"context_line":"        mac_dict \u003d {}"},{"line_number":288,"context_line":"        if self._healthy_mac_addresses is None:"},{"line_number":289,"context_line":"            eth_collection \u003d ethernetinterfaces.EthernetInterfacesCollection("}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_7f5896f8","line":286,"updated":"2017-06-28 12:46:17.000000000","message":"My understanding is that ethernet interfaces are option, at least in the earlier redfish specification, per discussions with Bruno, and that vendors were also considering putting interface information in other areas of the data schema.\n\nAs a result, I think we need to have a doc string on this property indicating what redfish implementations this is known to work for, and pointing to the redfish API documentation so it can be maintained in the future, and hopefully it will be easier for people to identify where things have gone off the rails when they begin looking at why their vendor\u0027s hardware is not returning MAC addresses.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"873f23312fedc56a4ab2cf751a755ce8c6ba7144","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return ethernet_col.get(\u0027@odata.id\u0027)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    @property"},{"line_number":286,"context_line":"    def ethernet_interfaces(self):"},{"line_number":287,"context_line":"        mac_dict \u003d {}"},{"line_number":288,"context_line":"        if self._healthy_mac_addresses is None:"},{"line_number":289,"context_line":"            eth_collection \u003d ethernetinterfaces.EthernetInterfacesCollection("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_b0929af5","line":286,"range":{"start_line":286,"start_character":8,"end_line":286,"end_character":27},"updated":"2017-06-30 10:58:39.000000000","message":"this logic should reside in EthernetInterfaceCollection class.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                if eth.mac_address is not None:"},{"line_number":295,"context_line":"                    if eth.health \u003d\u003d \u0027OK\u0027:"},{"line_number":296,"context_line":"                        mac_dict.update({eth.mac_address: eth.state})"},{"line_number":297,"context_line":"        self._healthy_mac_addresses \u003d mac_dict"},{"line_number":298,"context_line":"        return self._healthy_mac_addresses"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_bfd50e1e","line":297,"range":{"start_line":297,"start_character":8,"end_line":297,"end_character":46},"updated":"2017-06-28 12:46:17.000000000","message":"I guess this assignment should only take place IF self._healthy_mac_addresses is None.  Except, on a second call, it will reset the list to an empty dictionary which seems like a potential problem.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"43ebceca5f587ac8727383f73a8e3ec6e3b39978","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    # include a get_manager() and get_chassis() once we have an abstraction"},{"line_number":242,"context_line":"    # for those resources."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def _get_sub_resource_collection_path(self, sub_resource):"},{"line_number":245,"context_line":"        sub_resource_col \u003d self.json.get(sub_resource)"},{"line_number":246,"context_line":"        if not sub_resource_col:"},{"line_number":247,"context_line":"            raise exceptions.MissingAttributeError(attribute\u003dsub_resource,"},{"line_number":248,"context_line":"                                                   resource\u003dself._path)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        return sub_resource_col.get(\u0027@odata.id\u0027)"},{"line_number":251,"context_line":" "},{"line_number":252,"context_line":"    def _get_processor_collection_path(self):"},{"line_number":253,"context_line":"        \"\"\"Helper function to find the ProcessorCollection path\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_bdc9b859","line":250,"range":{"start_line":244,"start_character":4,"end_line":250,"end_character":48},"updated":"2017-07-06 09:41:22.000000000","message":"That\u0027s a good idea. But better to move this to utils.py and change the signature as below:\ndef get_subresource_path(res_obj, sub_resource):\n  ...\n  ...\n\nwhere res_obj is ResourceBase instance and sub_resource can take string or list( if the value is nested).","commit_id":"7bf3505ebfbae06e3bcb767cd6cb71dcd8b03367"},{"author":{"_account_id":18781,"name":"vinay muddu","email":"vinay50muddu@yahoo.com","username":"vmud213"},"change_message_id":"43ebceca5f587ac8727383f73a8e3ec6e3b39978","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    @property"},{"line_number":275,"context_line":"    def ethernet_interfaces(self):"},{"line_number":276,"context_line":"        if self._connected_mac_addresses is None:"},{"line_number":277,"context_line":"            sub_res \u003d \u0027EthernetInterfaces\u0027"},{"line_number":278,"context_line":"            eth_collection \u003d ethernetinterface.EthernetInterfaceCollection("},{"line_number":279,"context_line":"                self._conn, self._get_sub_resource_collection_path(sub_res),"},{"line_number":280,"context_line":"                redfish_version\u003dself.redfish_version)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_3d0c88a3","line":277,"range":{"start_line":277,"start_character":12,"end_line":277,"end_character":42},"updated":"2017-07-06 09:41:22.000000000","message":"No need. Directly use the string \u0027EthernetInterfaces\u0027 s there\u0027s only one place we need it.","commit_id":"7bf3505ebfbae06e3bcb767cd6cb71dcd8b03367"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from sushy.resources import base"},{"line_number":20,"context_line":"from sushy.resources import common"},{"line_number":21,"context_line":"from sushy.resources.system import constants as sys_cons"},{"line_number":22,"context_line":"from sushy.resources.system import ethernetinterface"},{"line_number":23,"context_line":"from sushy.resources.system import mappings as sys_maps"},{"line_number":24,"context_line":"from sushy.resources.system import processor"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_e1a948dd","line":22,"range":{"start_line":22,"start_character":35,"end_line":22,"end_character":52},"updated":"2017-07-14 05:35:40.000000000","message":"preferable to have it underscore (_) delimited.\n\ns/ethernetinterface/ethernet_interface","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    # include a get_manager() and get_chassis() once we have an abstraction"},{"line_number":242,"context_line":"    # for those resources."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def _get_sub_resource_collection_path(self, sub_resource):"},{"line_number":245,"context_line":"        sub_resource_col \u003d self.json.get(sub_resource)"},{"line_number":246,"context_line":"        if not sub_resource_col:"},{"line_number":247,"context_line":"            raise exceptions.MissingAttributeError(attribute\u003dsub_resource,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_61cad81a","line":244,"range":{"start_line":244,"start_character":4,"end_line":244,"end_character":62},"updated":"2017-07-14 05:35:40.000000000","message":"I see a strong potential for this kind of utilitarian method to be part of ``utils.py`` file. This method if formulated in a more generic way can also be used in getting other (sub)resource paths, e.g. getting all resource paths from root resource, here the ``Sushy`` class. Probably like this:\n\n    def get_subresource_path_by(resource, subresource_name):\n      \"\"\"Helper function to find the subresource path\n\n      :param resource: ResourceBase instance on which the name\n          gets queried upon.\n      :param subresource_name: name of the resource field to\n          fetch the \u0027@odata.id\u0027 from.\n      \"\"\"\n      subresource_element \u003d resource.json.get(subresource_name)\n      if not subresource_element:\n        raise exceptions.MissingAttributeError(attribute\u003dsubresource_name,\n                                               resource\u003dresource.path)\n      if \u0027@odata.id\u0027 not in subresource_element:\n        raise exceptions.MissingAttributeError(\n            attribute\u003dsubresource_name+\u0027/@odata.id\u0027,\n            resource\u003dresource.path)\n\n      return subresource_element[\u0027@odata.id\u0027]","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def _get_processor_collection_path(self):"},{"line_number":253,"context_line":"        \"\"\"Helper function to find the ProcessorCollection path\"\"\""},{"line_number":254,"context_line":"        return self._get_sub_resource_collection_path(\u0027Processors\u0027)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    @property"},{"line_number":257,"context_line":"    def processors(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_c1076c1c","line":254,"range":{"start_line":254,"start_character":15,"end_line":254,"end_character":67},"updated":"2017-07-14 05:35:40.000000000","message":"further to my comment at l244 it can be used in here as:\n\n    utils.get_subresource_path_by(self, \u0027Processors\u0027)","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    @property"},{"line_number":275,"context_line":"    def ethernet_interfaces(self):"},{"line_number":276,"context_line":"        if self._connected_mac_addresses is None:"},{"line_number":277,"context_line":"            sub_res \u003d \u0027EthernetInterfaces\u0027"},{"line_number":278,"context_line":"            self._connected_mac_addresses \u003d ("},{"line_number":279,"context_line":"                ethernetinterface.EthernetInterfaceCollection("},{"line_number":280,"context_line":"                    self._conn,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_e1d7084f","line":277,"range":{"start_line":277,"start_character":12,"end_line":277,"end_character":22},"updated":"2017-07-14 05:35:40.000000000","message":"nit: no need to define a variable, I suppose.","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f6758aa043ab25c537db5c04d42ab188389550ef","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    @property"},{"line_number":275,"context_line":"    def ethernet_interfaces(self):"},{"line_number":276,"context_line":"        if self._connected_mac_addresses is None:"},{"line_number":277,"context_line":"            sub_res \u003d \u0027EthernetInterfaces\u0027"},{"line_number":278,"context_line":"            self._connected_mac_addresses \u003d ("},{"line_number":279,"context_line":"                ethernetinterface.EthernetInterfaceCollection("},{"line_number":280,"context_line":"                    self._conn,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_b472277a","line":277,"range":{"start_line":277,"start_character":12,"end_line":277,"end_character":22},"in_reply_to":"1f1a1f67_e1d7084f","updated":"2017-07-18 04:07:09.000000000","message":"This is avoid a line lengthier than 80 columns.","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            self._connected_mac_addresses \u003d ("},{"line_number":279,"context_line":"                ethernetinterface.EthernetInterfaceCollection("},{"line_number":280,"context_line":"                    self._conn,"},{"line_number":281,"context_line":"                    self._get_sub_resource_collection_path(sub_res),"},{"line_number":282,"context_line":"                    redfish_version\u003dself.redfish_version))"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        return self._connected_mac_addresses"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_7c283b85","line":281,"range":{"start_line":281,"start_character":20,"end_line":281,"end_character":67},"updated":"2017-07-14 05:35:40.000000000","message":"~ly as l254","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cd8180c42ee4b2b8b1c7f1a6a57fb3ef9f78ab73","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def refresh(self):"},{"line_number":264,"context_line":"        super(System, self).refresh()"},{"line_number":265,"context_line":"        self._processors \u003d None"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @property"},{"line_number":268,"context_line":"    def ethernet_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_b6968bef","line":265,"updated":"2017-07-18 13:28:05.000000000","message":"this should set self._connected_mac_addresses to None","commit_id":"05b7c8b825404422c10f3f54a9f921915498ef5e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cd8180c42ee4b2b8b1c7f1a6a57fb3ef9f78ab73","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @property"},{"line_number":268,"context_line":"    def ethernet_interfaces(self):"},{"line_number":269,"context_line":"        if self._connected_mac_addresses is None:"},{"line_number":270,"context_line":"            self._connected_mac_addresses \u003d ("},{"line_number":271,"context_line":"                ethernet_interface.EthernetInterfaceCollection("},{"line_number":272,"context_line":"                    self._conn,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_969b8f16","line":269,"updated":"2017-07-18 13:28:05.000000000","message":"why is it called _connected_mac_addresses? calling it _ethernet_interfaces feels more natural","commit_id":"05b7c8b825404422c10f3f54a9f921915498ef5e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"649cc932ac7e38837185e188afe55881928878fa","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        self._ethernet_interfaces \u003d None"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    @property"},{"line_number":269,"context_line":"    def ethernet_interfaces(self):"},{"line_number":270,"context_line":"        if self._ethernet_interfaces is None:"},{"line_number":271,"context_line":"            self._ethernet_interfaces \u003d ("},{"line_number":272,"context_line":"                ethernet_interface.EthernetInterfaceCollection("}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_ea0061ad","line":269,"updated":"2017-07-19 18:09:24.000000000","message":"Please add a docstring.","commit_id":"f245fcbb46e24b8f0f0bd18455c3139f5cebea0c"}],"sushy/tests/unit/json_samples/ethernetinterfaces.json":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"626aafabfa29aadeb7206664034b4fa04fd0fd48","unresolved":false,"context_lines":[{"line_number":4,"context_line":"\t\"Name\": \"Ethernet Interface\","},{"line_number":5,"context_line":"\t\"Description\": \"System NIC 1\","},{"line_number":6,"context_line":"\t\"Status\": {"},{"line_number":7,"context_line":"\t\t\"State\": \"Enabled\","},{"line_number":8,"context_line":"\t\t\"Health\": \"OK\""},{"line_number":9,"context_line":"\t},"},{"line_number":10,"context_line":"\t\"PermanentMACAddress\": \"12:44:6A:3B:04:11\","}],"source_content_type":"application/json","patch_set":4,"id":"3f1d235d_2eb51432","line":7,"updated":"2017-06-30 08:27:30.000000000","message":"+1","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":4,"context_line":"\t\"Name\": \"Ethernet Interface\","},{"line_number":5,"context_line":"\t\"Description\": \"System NIC 1\","},{"line_number":6,"context_line":"\t\"Status\": {"},{"line_number":7,"context_line":"\t\t\"State\": \"Enabled\","},{"line_number":8,"context_line":"\t\t\"Health\": \"OK\""},{"line_number":9,"context_line":"\t},"},{"line_number":10,"context_line":"\t\"PermanentMACAddress\": \"12:44:6A:3B:04:11\","}],"source_content_type":"application/json","patch_set":4,"id":"5f201791_4462af0b","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":1},"updated":"2017-06-28 12:46:17.000000000","message":"Tabs versus spaces.  I get the format actually doesn\u0027t care, but the other samples are spaces instead of tabs as far as I\u0027ve seen.  It would be preferable to have consistency between all of the samples.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\t\"FQDN\": \"web483.contoso.com\","},{"line_number":16,"context_line":"\t\"IPv6DefaultGateway\": \"fe80::3ed9:2bff:fe34:600\","},{"line_number":17,"context_line":"\t\"NameServers\": ["},{"line_number":18,"context_line":"\t\t\"names.contoso.com\""},{"line_number":19,"context_line":"\t],"},{"line_number":20,"context_line":"\t\"IPv4Addresses\": [{"},{"line_number":21,"context_line":"\t\t\"Address\": \"192.168.0.10\","}],"source_content_type":"application/json","patch_set":4,"id":"5f201791_643c8be0","line":18,"range":{"start_line":18,"start_character":3,"end_line":18,"end_character":20},"updated":"2017-06-28 12:46:17.000000000","message":"Aside/not a nit: Shouldn\u0027t this be an IP address?","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"829ca9b7858c9b41f1a6d9e9c508446ccd105a0b","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\t\"FQDN\": \"web483.contoso.com\","},{"line_number":16,"context_line":"\t\"IPv6DefaultGateway\": \"fe80::3ed9:2bff:fe34:600\","},{"line_number":17,"context_line":"\t\"NameServers\": ["},{"line_number":18,"context_line":"\t\t\"names.contoso.com\""},{"line_number":19,"context_line":"\t],"},{"line_number":20,"context_line":"\t\"IPv4Addresses\": [{"},{"line_number":21,"context_line":"\t\t\"Address\": \"192.168.0.10\","}],"source_content_type":"application/json","patch_set":4,"id":"3f1d235d_7258e686","line":18,"range":{"start_line":18,"start_character":3,"end_line":18,"end_character":20},"in_reply_to":"3f1d235d_8bc82522","updated":"2017-07-06 12:12:08.000000000","message":"Wow, that is awful :(","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"288050fdba98977a11fd7fee0bc7285937b97aee","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\t\"FQDN\": \"web483.contoso.com\","},{"line_number":16,"context_line":"\t\"IPv6DefaultGateway\": \"fe80::3ed9:2bff:fe34:600\","},{"line_number":17,"context_line":"\t\"NameServers\": ["},{"line_number":18,"context_line":"\t\t\"names.contoso.com\""},{"line_number":19,"context_line":"\t],"},{"line_number":20,"context_line":"\t\"IPv4Addresses\": [{"},{"line_number":21,"context_line":"\t\t\"Address\": \"192.168.0.10\","}],"source_content_type":"application/json","patch_set":4,"id":"3f1d235d_8bc82522","line":18,"range":{"start_line":18,"start_character":3,"end_line":18,"end_character":20},"in_reply_to":"5f201791_643c8be0","updated":"2017-07-06 03:43:53.000000000","message":"No, its a copy paste from the mock-up server data displayed at Redfish dmtf site.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"@odata.type\": \"#EthernetInterface.v1_0_2.EthernetInterface\","},{"line_number":3,"context_line":"    \"Id\": \"1\","},{"line_number":4,"context_line":"    \"Name\": \"Ethernet Interface\","}],"source_content_type":"application/json","patch_set":8,"id":"1f1a1f67_1c5a6729","line":1,"updated":"2017-07-14 05:35:40.000000000","message":"s/ethernetinterfaces.json/ethernet_interface.json","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"}],"sushy/tests/unit/json_samples/ethernetinterfaces_collection.json":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"02e7934817e5f497bc3207414bf7a1542c15fe37","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"\t\"@odata.type\": \"#EthernetInterfaceCollection.EthernetInterfaceCollection\","},{"line_number":3,"context_line":"\t\"Name\": \"Ethernet Interface Collection\","},{"line_number":4,"context_line":"\t\"Description\": \"System NICs on Contoso Servers\","},{"line_number":5,"context_line":"\t\"Members@odata.count\": 1,"},{"line_number":6,"context_line":"\t\"Members\": [{"},{"line_number":7,"context_line":"\t\t\"@odata.id\": \"/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/12446A3B0411\""}],"source_content_type":"application/json","patch_set":4,"id":"5f201791_9f049216","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":1},"updated":"2017-06-28 12:46:17.000000000","message":"Tabs instead of spaces.","commit_id":"fe5141156afea65c541a88c2152f280385f18ced"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"@odata.type\": \"#EthernetInterfaceCollection.EthernetInterfaceCollection\","},{"line_number":3,"context_line":"    \"Name\": \"Ethernet Interface Collection\","},{"line_number":4,"context_line":"    \"Description\": \"System NICs on Contoso Servers\","}],"source_content_type":"application/json","patch_set":8,"id":"1f1a1f67_fc69ebbd","line":1,"updated":"2017-07-14 05:35:40.000000000","message":"s/ethernetinterfaces_collection.json/ethernet_interface_collection.json","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"}],"sushy/tests/unit/resources/system/test_ethernetinterfaces.py":[{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.assertEqual("},{"line_number":42,"context_line":"            \u002712:44:6A:3B:04:11\u0027, self.sys_eth.permanent_mac_address)"},{"line_number":43,"context_line":"        self.assertEqual(\u002712:44:6A:3B:04:11\u0027, self.sys_eth.mac_address)"},{"line_number":44,"context_line":"        self.assertEqual(\u0027Enabled\u0027, self.sys_eth.status.state)"},{"line_number":45,"context_line":"        self.assertEqual(\u0027OK\u0027, self.sys_eth.status.health)"},{"line_number":46,"context_line":"        self.assertEqual(1000, self.sys_eth.speedmbps)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_fc97ab8f","line":44,"range":{"start_line":44,"start_character":25,"end_line":44,"end_character":34},"updated":"2017-07-14 05:35:40.000000000","message":"this should be tested against the constant, HEALTH_STATE_ENABLED.","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"e8c34d731ccf584b21d32f676b07f2f22ef2470c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        path \u003d \u0027sushy/tests/unit/json_samples/ethernetinterfaces.json\u0027"},{"line_number":98,"context_line":"        with open(path, \u0027r\u0027) as f:"},{"line_number":99,"context_line":"            self.conn.get.return_value.json.return_value \u003d json.loads(f.read())"},{"line_number":100,"context_line":"        expected_summary \u003d {\u002712:44:6A:3B:04:11\u0027: \u0027Enabled\u0027}"},{"line_number":101,"context_line":"        actual_summary \u003d self.sys_eth_col.eth_summary"},{"line_number":102,"context_line":"        self.assertEqual(expected_summary, actual_summary)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_bce6d343","line":100,"range":{"start_line":100,"start_character":49,"end_line":100,"end_character":58},"updated":"2017-07-14 05:35:40.000000000","message":"ditto","commit_id":"9a9b829be77af2b511c1951425f0fecad0cc2492"}],"sushy/utils.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":"649cc932ac7e38837185e188afe55881928878fa","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    :param resource: ResourceBase instance on which the name"},{"line_number":56,"context_line":"        gets queried upon."},{"line_number":57,"context_line":"    :param subresource_name: name of the resource field to"},{"line_number":58,"context_line":"        fetch the \u0027@odata.id\u0027 from."},{"line_number":59,"context_line":"    \"\"\""},{"line_number":60,"context_line":"    subresource_element \u003d resource.json.get(subresource_name)"},{"line_number":61,"context_line":"    if not subresource_element:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_aa3949a4","line":58,"updated":"2017-07-19 18:09:24.000000000","message":"Please add documentation of what is returned.","commit_id":"f245fcbb46e24b8f0f0bd18455c3139f5cebea0c"},{"author":{"_account_id":16635,"name":"deray","email":"debayan.ray@gmail.com","username":"deray"},"change_message_id":"44b834ba5b8b7634eef968e3da0e97829ee225d5","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    return int(x)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def get_sub_resource_path_by(resource, subresource_name):"},{"line_number":65,"context_line":"    \"\"\"Helper function to find the subresource path"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    :param resource: ResourceBase instance on which the name"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_98719779","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":28},"updated":"2017-10-09 07:17:32.000000000","message":"Could we have a test case for it? This portion is not tested http://logs.openstack.org/32/452532/16/check/sushy-coverage-ubuntu-xenial/cc517f9/cover/sushy_utils_py.html#n77","commit_id":"8fe2904a62b0f56dc3fc3fefc5a5a746911ce891"}]}
