)]}'
{"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":12119,"name":"Can ZHANG","email":"zhangcan@letv.com","username":"can_zhang"},"change_message_id":"6d4378953fb1da79035328bf939a46435e46186d","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":99,"context_line":"        if len(ip_path) \u003e len(\"/bin/ip\"):"},{"line_number":100,"context_line":"            cmd \u003d ip_path[:-1] + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_b8d9d623","line":99,"updated":"2014-10-17 01:23:39.000000000","message":"What if we get ip_path \u003d \u0027/bin/ip\u0027 ?","commit_id":"026982f6e7fed71449400a0f333c81176dfc75fb"},{"author":{"_account_id":12412,"name":"Shang Yong","email":"yong.shang@me.com","username":"bshang"},"change_message_id":"3947045fd6fa37a8fcb3679bfaed5e7b787c08cf","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":99,"context_line":"        if len(ip_path) \u003e len(\"/bin/ip\"):"},{"line_number":100,"context_line":"            cmd \u003d ip_path[:-1] + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_73adcf9a","line":99,"in_reply_to":"baa201ad_b8d9d623","updated":"2014-10-17 02:37:38.000000000","message":"If the real path is \"/bin/ip\", it will return \"/bin/ip\\n\".","commit_id":"026982f6e7fed71449400a0f333c81176dfc75fb"},{"author":{"_account_id":12119,"name":"Can ZHANG","email":"zhangcan@letv.com","username":"can_zhang"},"change_message_id":"6d4378953fb1da79035328bf939a46435e46186d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":99,"context_line":"        if len(ip_path) \u003e len(\"/bin/ip\"):"},{"line_number":100,"context_line":"            cmd \u003d ip_path[:-1] + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":103,"context_line":"        return self.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_f8dfde0a","line":100,"updated":"2014-10-17 01:23:39.000000000","message":"Why not use full path since you already get it?","commit_id":"026982f6e7fed71449400a0f333c81176dfc75fb"},{"author":{"_account_id":12412,"name":"Shang Yong","email":"yong.shang@me.com","username":"bshang"},"change_message_id":"6e228a883f867d10c11f39c4f2cd1269e06e3728","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":99,"context_line":"        if len(ip_path) \u003e len(\"/bin/ip\"):"},{"line_number":100,"context_line":"            cmd \u003d ip_path[:-1] + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":103,"context_line":"        return self.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_8da68fa9","line":100,"in_reply_to":"baa201ad_a4936fa1","updated":"2014-10-17 08:41:32.000000000","message":"Good, I will modify it in next patch.","commit_id":"026982f6e7fed71449400a0f333c81176dfc75fb"},{"author":{"_account_id":12119,"name":"Can ZHANG","email":"zhangcan@letv.com","username":"can_zhang"},"change_message_id":"9d31cef7c73734fb3f5d70ee5592e9eade6b4b2b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":99,"context_line":"        if len(ip_path) \u003e len(\"/bin/ip\"):"},{"line_number":100,"context_line":"            cmd \u003d ip_path[:-1] + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":103,"context_line":"        return self.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_a4936fa1","line":100,"in_reply_to":"baa201ad_b392d754","updated":"2014-10-17 08:11:10.000000000","message":"This kind of detail should be handled by method _get_binary_path","commit_id":"026982f6e7fed71449400a0f333c81176dfc75fb"},{"author":{"_account_id":12412,"name":"Shang Yong","email":"yong.shang@me.com","username":"bshang"},"change_message_id":"3947045fd6fa37a8fcb3679bfaed5e7b787c08cf","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def get_mac_address(self):"},{"line_number":98,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":99,"context_line":"        if len(ip_path) \u003e len(\"/bin/ip\"):"},{"line_number":100,"context_line":"            cmd \u003d ip_path[:-1] + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":103,"context_line":"        return self.exec_command(cmd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_b392d754","line":100,"in_reply_to":"baa201ad_f8dfde0a","updated":"2014-10-17 02:37:38.000000000","message":"we need to remove \u0027\\n\u0027 character.","commit_id":"026982f6e7fed71449400a0f333c81176dfc75fb"},{"author":{"_account_id":12119,"name":"Can ZHANG","email":"zhangcan@letv.com","username":"can_zhang"},"change_message_id":"888b63de4deb8f6770d3d4ba30bf0bb5818a2523","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    def _get_binary_path(self, name):"},{"line_number":94,"context_line":"        cmd \u003d \"/usr/bin/whereis -b \" + name + \"| awk \u0027{print $2}\u0027\""},{"line_number":95,"context_line":"        ret \u003d self.exec_command(cmd)"},{"line_number":96,"context_line":"        # remove \u0027\\n\u0027 charactor"},{"line_number":97,"context_line":"        return ret[:-1]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_mac_address(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_5e1b6b72","line":96,"updated":"2014-10-17 10:15:36.000000000","message":"character","commit_id":"4ad3e8e75adc4d4f0c8886fbfc2ffda1f6ceccf1"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"041524de19261c6ab39010b802b609b8ce13dfb1","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_mac_address(self):"},{"line_number":100,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":101,"context_line":"        if len(ip_path) \u003e\u003d len(\"/bin/ip\"):"},{"line_number":102,"context_line":"            cmd \u003d ip_path + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":103,"context_line":"        else:"},{"line_number":104,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_3b3762b2","line":101,"updated":"2014-10-19 09:07:31.000000000","message":"is this check used to verify that \"ip\" exists? why does the path matter? if its /user/sbin/ip instead?\nAs long as \"which\" commands returns a valid path, we are ok.\nI suggest to make sure that return-code is valid (no excepting raised by \"which\" command) instead of comparing against a hard coded path","commit_id":"4dd282070b2a7a4c475704bd94e48a1b52032d5d"},{"author":{"_account_id":12412,"name":"Shang Yong","email":"yong.shang@me.com","username":"bshang"},"change_message_id":"315c343dc29198013e42a79a8181e494d8749060","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_mac_address(self):"},{"line_number":100,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":101,"context_line":"        if len(ip_path) \u003e\u003d len(\"/bin/ip\"):"},{"line_number":102,"context_line":"            cmd \u003d ip_path + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":103,"context_line":"        else:"},{"line_number":104,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_c2f827c7","line":101,"in_reply_to":"9aa7fdbe_3b3762b2","updated":"2014-10-20 03:36:18.000000000","message":"1. Yes, \"ip\" path is different in different systems, like \"usr/sbin/ip\" in fedora, \"/sbin/ip\" in centos.\n2. \"which\" is a friendly command to get path, but  it\u0027s not installed in some systems(like fedora) by default, \"whereis\" is a util tool, almost installed in every distributed systems.","commit_id":"4dd282070b2a7a4c475704bd94e48a1b52032d5d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"041524de19261c6ab39010b802b609b8ce13dfb1","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":101,"context_line":"        if len(ip_path) \u003e\u003d len(\"/bin/ip\"):"},{"line_number":102,"context_line":"            cmd \u003d ip_path + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":103,"context_line":"        else:"},{"line_number":104,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":105,"context_line":"        return self.exec_command(cmd)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_1b529edd","line":103,"updated":"2014-10-19 09:07:31.000000000","message":"if we are going to use \"ip\", I believe we should drop \"ifconfig\".","commit_id":"4dd282070b2a7a4c475704bd94e48a1b52032d5d"},{"author":{"_account_id":12412,"name":"Shang Yong","email":"yong.shang@me.com","username":"bshang"},"change_message_id":"315c343dc29198013e42a79a8181e494d8749060","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":101,"context_line":"        if len(ip_path) \u003e\u003d len(\"/bin/ip\"):"},{"line_number":102,"context_line":"            cmd \u003d ip_path + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":103,"context_line":"        else:"},{"line_number":104,"context_line":"            cmd \u003d \"/sbin/ifconfig | awk \u0027/HWaddr/ {print $5}\u0027\""},{"line_number":105,"context_line":"        return self.exec_command(cmd)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_422c374b","line":103,"in_reply_to":"9aa7fdbe_1b529edd","updated":"2014-10-20 03:36:18.000000000","message":"OK, I will remove it.","commit_id":"4dd282070b2a7a4c475704bd94e48a1b52032d5d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"b76c67b20d39494685fd09a80c7b311978aba291","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_mac_address(self):"},{"line_number":100,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":101,"context_line":"        if len(ip_path) \u003e\u003d len(\"/bin/ip\"):"},{"line_number":102,"context_line":"            # Use the real path of different Linux distributions."},{"line_number":103,"context_line":"            cmd \u003d ip_path + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":104,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_812b7c81","line":101,"updated":"2014-10-20 06:44:50.000000000","message":"I still don\u0027t understand why you are comparing against a hard-coded path, that might change, instead of just checking that whereis is successful, or that len\u003e0","commit_id":"16fdbc2341eba87ac0a126148345a82b21025a70"},{"author":{"_account_id":12412,"name":"Shang Yong","email":"yong.shang@me.com","username":"bshang"},"change_message_id":"33cedafad07bb31fc73e0c42a36a94187306e5c4","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_mac_address(self):"},{"line_number":100,"context_line":"        ip_path \u003d self._get_binary_path(\"ip\")"},{"line_number":101,"context_line":"        if len(ip_path) \u003e\u003d len(\"/bin/ip\"):"},{"line_number":102,"context_line":"            # Use the real path of different Linux distributions."},{"line_number":103,"context_line":"            cmd \u003d ip_path + \" addr | awk \u0027/ether/ {print $2}\u0027\""},{"line_number":104,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_47bb640e","line":101,"in_reply_to":"9aa7fdbe_812b7c81","updated":"2014-10-20 08:42:32.000000000","message":"\"/bin/ip\" is the shortest path in all valid paths, like \"/sbin/ip\", \"/usr/bin/ip\", \"/usr/sbin/ip\", etc.","commit_id":"16fdbc2341eba87ac0a126148345a82b21025a70"}]}
