)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2f05e4653be76de1140f790faf0ab15a34a46319","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"VMwareSSHPowerManager is to use VMs on ESXi as baremetal nodes."},{"line_number":10,"context_line":"It controls the VMs by running vim-cmd on the ESXi via SSH. So"},{"line_number":11,"context_line":"SSH service on the ESXi have to be enabled."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Note that pm_address holds ESXi\u0027s address and VM\u0027s name. They"},{"line_number":14,"context_line":"are separated by a comma (e.g. \"192.168.1.10,baremetal-vm\")."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2BQe8%3D","line":11,"updated":"2013-11-28 09:13:28.000000000","message":"have \u003d\u003e has","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"e1ac9a97b5ce1a98ecd906edcd7ac0a3d5741aac","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"VMwareSSHPowerManager is to use VMs on ESXi as baremetal nodes."},{"line_number":10,"context_line":"It controls the VMs by running vim-cmd on the ESXi via SSH. So"},{"line_number":11,"context_line":"SSH service on the ESXi have to be enabled."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Note that pm_address holds ESXi\u0027s address and VM\u0027s name. They"},{"line_number":14,"context_line":"are separated by a comma (e.g. \"192.168.1.10,baremetal-vm\")."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2BNl4%3D","line":11,"in_reply_to":"AAAATn%2F%2BQe8%3D","updated":"2013-11-29 03:13:36.000000000","message":"Will do","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"e2421e0628e19edc12cf2fd33cc42ee863757f83","unresolved":false,"context_lines":[{"line_number":10,"context_line":"ESXi using vim-cmd."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note that SSH service on the ESXi has to be enabled."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I47e2d0a40c565ba4cd1dbc172448800c72bf6bb9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAU3%2F%2Fe5Q%3D","line":13,"updated":"2014-02-26 11:17:19.000000000","message":"Need to add DocImpact","commit_id":"0b2ec637eb5131775c30edf212340fff8ea1b80e"}],"nova/virt/baremetal/virtual_power_driver.py":[{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"185992d560ba57b856cb2a630944084ac6b6d807","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        running_node_list \u003d self._run_command(cmd)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        for node in running_node_list:"},{"line_number":209,"context_line":"            if self._matched_name \u003d\u003d node:"},{"line_number":210,"context_line":"                return True"},{"line_number":211,"context_line":"        return False"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BBKQ%3D","line":209,"updated":"2013-12-03 12:35:59.000000000","message":"Someone who knows why this was \u0027in\u0027? Can I really change it?","commit_id":"7af0df3ba89c88a87a7d08509e749073bbc6d682"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a8df72bbb24cdbddaeee018342278174b98fe3d4","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            for mac in mac_address_list:"},{"line_number":154,"context_line":"                if _normalize_mac(mac) in self._mac_addresses:"},{"line_number":155,"context_line":"                    self._matched_name \u003d node"},{"line_number":156,"context_line":"                    break"},{"line_number":157,"context_line":"        return self._matched_name"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9Ubw%3D","line":155,"updated":"2013-12-12 17:42:22.000000000","message":"I don\u0027t think the quotes should be removed. They prevent \"sub name\" matches. ie. test, test01.\n\nalso Vbox list vms displays the names with quotes and the virsh driver adds quotes to the list with line 50 of settings file.","commit_id":"9def0feb2f8c61ae8980480e0cc8dc372448d141"}],"nova/virt/baremetal/virtual_power_driver_settings.py":[{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"5f2c27013fd63e0387cf0ba446d52c3781b24347","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.start_cmd \u003d \u0027vmsvc/power.on {_NodeName_}\u0027"},{"line_number":65,"context_line":"        self.stop_cmd \u003d \u0027vmsvc/power.off {_NodeName_}\u0027"},{"line_number":66,"context_line":"        self.reboot_cmd \u003d \u0027vmsvc/power.reboot {_NodeName_}\u0027"},{"line_number":67,"context_line":"        self.list_cmd \u003d \"vmsvc/getallvms | tail -n +2 | awk \u0027{print $1}\u0027\""},{"line_number":68,"context_line":"        # NOTE(arata): In spite of its name, list_running_cmd shows a single"},{"line_number":69,"context_line":"        #              vmid, not a list. But it is OK."},{"line_number":70,"context_line":"        self.list_running_cmd \u003d \"vmsvc/power.getstate {_NodeName_} | \" \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2FrbA%3D","line":67,"updated":"2014-01-03 17:02:34.000000000","message":"I am not very confident, if this would always fetch the vmid. Sometimes when the annotation field is longer, it runs over to the next line. Did you give it a thought ?","commit_id":"a5e65c668f71068ffd2e27a2459466b6d8f33ed0"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"f02bc4dec556058c0390088e7213322feaf5d372","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.start_cmd \u003d \u0027vmsvc/power.on {_NodeName_}\u0027"},{"line_number":65,"context_line":"        self.stop_cmd \u003d \u0027vmsvc/power.off {_NodeName_}\u0027"},{"line_number":66,"context_line":"        self.reboot_cmd \u003d \u0027vmsvc/power.reboot {_NodeName_}\u0027"},{"line_number":67,"context_line":"        self.list_cmd \u003d \"vmsvc/getallvms | tail -n +2 | awk \u0027{print $1}\u0027\""},{"line_number":68,"context_line":"        # NOTE(arata): In spite of its name, list_running_cmd shows a single"},{"line_number":69,"context_line":"        #              vmid, not a list. But it is OK."},{"line_number":70,"context_line":"        self.list_running_cmd \u003d \"vmsvc/power.getstate {_NodeName_} | \" \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2FrN4%3D","line":67,"in_reply_to":"AAAAT3%2F%2FrbA%3D","updated":"2014-01-03 17:18:04.000000000","message":"vmsvc/getallvms | sed -e \u00271d\u0027 | awk \u0027$1 ~ /^[0-9]+$/ {print $1}\u0027 may work. Just a suggestion, please test it.","commit_id":"a5e65c668f71068ffd2e27a2459466b6d8f33ed0"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"514db2cd6958fddf57c445f0b6ff8af7db9776c4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"class vmware(object):"},{"line_number":60,"context_line":"    \"\"\"set commands for basic VMware ESXi control.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":"        self.base_cmd \u003d \u0027vim-cmd\u0027"},{"line_number":64,"context_line":"        self.start_cmd \u003d \u0027vmsvc/power.on {_NodeName_}\u0027"},{"line_number":65,"context_line":"        self.stop_cmd \u003d \u0027vmsvc/power.off {_NodeName_}\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2BTMU%3D","line":62,"updated":"2014-01-28 08:39:23.000000000","message":"You can also simulate pausing a VM using :\nkill -STOP [pid]\nkill -CONT [pid]\n\nAlthough, it is not officially supported.","commit_id":"0d923d319bf2aa4a4c7e787230d1449ad32114d5"}],"nova/virt/baremetal/vmware_ssh.py":[{"author":{"_account_id":7948,"name":"Subbu","email":"subramanian.neelakantan@gmail.com","username":"subbu"},"change_message_id":"587d57c996f07c527989b5f82f6d2ec2f2bac88b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        stdout \u003d self._run_ssh(cmd)"},{"line_number":54,"context_line":"        return stdout.strip().splitlines()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_vm_id(self):"},{"line_number":57,"context_line":"        LOG.debug(_(\"Looking up ID for name %s.\"), self._vm_name)"},{"line_number":58,"context_line":"        if not self._vm_id:"},{"line_number":59,"context_line":"            cmd \u003d \u0027vim-cmd vmsvc/getallvms\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BP7A%3D","line":56,"updated":"2013-11-28 10:46:01.000000000","message":"Note that you could have multiple VMs with same name in the same ESX. Do you want to handle this case?","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":7948,"name":"Subbu","email":"subramanian.neelakantan@gmail.com","username":"subbu"},"change_message_id":"2f412c6ef4634778a412eb00bf2493d43f0c8ba6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        stdout \u003d self._run_ssh(cmd)"},{"line_number":54,"context_line":"        return stdout.strip().splitlines()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_vm_id(self):"},{"line_number":57,"context_line":"        LOG.debug(_(\"Looking up ID for name %s.\"), self._vm_name)"},{"line_number":58,"context_line":"        if not self._vm_id:"},{"line_number":59,"context_line":"            cmd \u003d \u0027vim-cmd vmsvc/getallvms\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BNiE%3D","line":56,"in_reply_to":"AAAATn%2F%2BNmM%3D","updated":"2013-11-29 04:17:37.000000000","message":"Great! As long as that is the expected behaviour.","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"e1ac9a97b5ce1a98ecd906edcd7ac0a3d5741aac","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        stdout \u003d self._run_ssh(cmd)"},{"line_number":54,"context_line":"        return stdout.strip().splitlines()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_vm_id(self):"},{"line_number":57,"context_line":"        LOG.debug(_(\"Looking up ID for name %s.\"), self._vm_name)"},{"line_number":58,"context_line":"        if not self._vm_id:"},{"line_number":59,"context_line":"            cmd \u003d \u0027vim-cmd vmsvc/getallvms\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BNmM%3D","line":56,"in_reply_to":"AAAATn%2F%2BP7A%3D","updated":"2013-11-29 03:13:36.000000000","message":"I would like to simply pick the first-found one. Perhaps the one having the smallest ID would be picked among VMs of the same name.","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":7948,"name":"Subbu","email":"subramanian.neelakantan@gmail.com","username":"subbu"},"change_message_id":"587d57c996f07c527989b5f82f6d2ec2f2bac88b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return stdout.strip().splitlines()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_vm_id(self):"},{"line_number":57,"context_line":"        LOG.debug(_(\"Looking up ID for name %s.\"), self._vm_name)"},{"line_number":58,"context_line":"        if not self._vm_id:"},{"line_number":59,"context_line":"            cmd \u003d \u0027vim-cmd vmsvc/getallvms\u0027"},{"line_number":60,"context_line":"            lines \u003d self._run_command(cmd, replace_vm_id\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BQHM%3D","line":57,"updated":"2013-11-28 10:46:01.000000000","message":"Could move the log line under if condition since it does not need to print when returning cached vm_id.","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"e1ac9a97b5ce1a98ecd906edcd7ac0a3d5741aac","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return stdout.strip().splitlines()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_vm_id(self):"},{"line_number":57,"context_line":"        LOG.debug(_(\"Looking up ID for name %s.\"), self._vm_name)"},{"line_number":58,"context_line":"        if not self._vm_id:"},{"line_number":59,"context_line":"            cmd \u003d \u0027vim-cmd vmsvc/getallvms\u0027"},{"line_number":60,"context_line":"            lines \u003d self._run_command(cmd, replace_vm_id\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BNmE%3D","line":57,"in_reply_to":"AAAATn%2F%2BQHM%3D","updated":"2013-11-29 03:13:36.000000000","message":"Will do","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":7948,"name":"Subbu","email":"subramanian.neelakantan@gmail.com","username":"subbu"},"change_message_id":"587d57c996f07c527989b5f82f6d2ec2f2bac88b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                if end_of_name \u003d\u003d -1:"},{"line_number":73,"context_line":"                    LOG.warn(_(\u0027An unexpected line from getallvms: %s\u0027), line)"},{"line_number":74,"context_line":"                    continue"},{"line_number":75,"context_line":"                vm_id, _sep, vm_name \u003d line[0:end_of_name].partition(\u0027 \u0027)"},{"line_number":76,"context_line":"                vm_name \u003d vm_name.strip()"},{"line_number":77,"context_line":"                if vm_name \u003d\u003d self._vm_name:"},{"line_number":78,"context_line":"                    self._vm_id \u003d vm_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BQCU%3D","line":75,"updated":"2013-11-28 10:46:01.000000000","message":"Is this a safer way to parse this line:\nvm_id \u003d line.split()[0]\nvm_name \u003d line.split()[1]","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":7948,"name":"Subbu","email":"subramanian.neelakantan@gmail.com","username":"subbu"},"change_message_id":"2f412c6ef4634778a412eb00bf2493d43f0c8ba6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                if end_of_name \u003d\u003d -1:"},{"line_number":73,"context_line":"                    LOG.warn(_(\u0027An unexpected line from getallvms: %s\u0027), line)"},{"line_number":74,"context_line":"                    continue"},{"line_number":75,"context_line":"                vm_id, _sep, vm_name \u003d line[0:end_of_name].partition(\u0027 \u0027)"},{"line_number":76,"context_line":"                vm_name \u003d vm_name.strip()"},{"line_number":77,"context_line":"                if vm_name \u003d\u003d self._vm_name:"},{"line_number":78,"context_line":"                    self._vm_id \u003d vm_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BNiY%3D","line":75,"in_reply_to":"AAAATn%2F%2BNmo%3D","updated":"2013-11-29 04:17:37.000000000","message":"No concerns. I was only suggesting split() since that is lessor number of lines of code, and no dependency on a VM name not containing \u0027[\u0027. Totally your call whether to use partition() or split().","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"e1ac9a97b5ce1a98ecd906edcd7ac0a3d5741aac","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                if end_of_name \u003d\u003d -1:"},{"line_number":73,"context_line":"                    LOG.warn(_(\u0027An unexpected line from getallvms: %s\u0027), line)"},{"line_number":74,"context_line":"                    continue"},{"line_number":75,"context_line":"                vm_id, _sep, vm_name \u003d line[0:end_of_name].partition(\u0027 \u0027)"},{"line_number":76,"context_line":"                vm_name \u003d vm_name.strip()"},{"line_number":77,"context_line":"                if vm_name \u003d\u003d self._vm_name:"},{"line_number":78,"context_line":"                    self._vm_id \u003d vm_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BNmo%3D","line":75,"in_reply_to":"AAAATn%2F%2BQCU%3D","updated":"2013-11-29 03:13:36.000000000","message":"If use split(), I have to check the length of the result in case no separator is found. On the other hand, in that case, partition() silently sets vm_name to an empty string (\u0027\u0027) and I can go ahead without checking the result. So I prefer partition() here. Do you have any concern?","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2f05e4653be76de1140f790faf0ab15a34a46319","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return self.state"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def reboot_node(self):"},{"line_number":107,"context_line":"        LOG.info(_(\"reset node: %s\"), self._vm_name)"},{"line_number":108,"context_line":"        cmd \u003d \u0027vim-cmd vmsvc/power.reboot \"{_VmId_}\"\u0027"},{"line_number":109,"context_line":"        self._run_command(cmd)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BQdQ%3D","line":107,"updated":"2013-11-28 09:13:28.000000000","message":"maybe to be consistent with the log messages above consider \u0027reboot_node\u0027 instead of \u0027reset node\u0027","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"},{"author":{"_account_id":3068,"name":"Arata Notsu","email":"notsu@virtualtech.jp","username":"arata776"},"change_message_id":"e1ac9a97b5ce1a98ecd906edcd7ac0a3d5741aac","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        return self.state"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def reboot_node(self):"},{"line_number":107,"context_line":"        LOG.info(_(\"reset node: %s\"), self._vm_name)"},{"line_number":108,"context_line":"        cmd \u003d \u0027vim-cmd vmsvc/power.reboot \"{_VmId_}\"\u0027"},{"line_number":109,"context_line":"        self._run_command(cmd)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BNl8%3D","line":107,"in_reply_to":"AAAATn%2F%2BQdQ%3D","updated":"2013-11-29 03:13:36.000000000","message":"Will do","commit_id":"dad3a692dc8698c430f647335e7e2eb7c3d09e0a"}]}
