)]}'
{"nova/compute/api.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":1852,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED],"},{"line_number":1853,"context_line":"                          task_state\u003d[None])"},{"line_number":1854,"context_line":"    def evacuate(self, context, instance, host\u003dNone):"},{"line_number":1855,"context_line":"        LOG.debug(\u0027in compute.api.evacuate\u0027)"},{"line_number":1856,"context_line":""},{"line_number":1857,"context_line":"        \"\"\""},{"line_number":1858,"context_line":"        Target host expicetly specified."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvpI%3D","line":1855,"updated":"2012-08-15 01:57:49.000000000","message":"leftover debug?","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"        LOG.debug(\u0027in compute.api.evacuate\u0027)"},{"line_number":1856,"context_line":""},{"line_number":1857,"context_line":"        \"\"\""},{"line_number":1858,"context_line":"        Target host expicetly specified."},{"line_number":1859,"context_line":"        Running evacuate on target host compute"},{"line_number":1860,"context_line":"        \"\"\""},{"line_number":1861,"context_line":"        return self.compute_rpcapi.rebuild_instance(context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvpM%3D","line":1858,"updated":"2012-08-15 01:57:49.000000000","message":"This docstring doesn\u0027t make sense","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"b30c0442c24c35b64fe3a2cbead493d3c4bd2c04","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                for service in services:"},{"line_number":112,"context_line":"                    if self.servicegroup_api.service_is_up(service) !\u003d is_up:"},{"line_number":113,"context_line":"                        LOG.debug(\u0027compute service state on %(host) not equals\u0027"},{"line_number":114,"context_line":"                                  \u0027expected state: %(is_up)\u0027)"},{"line_number":115,"context_line":"                        raise exception.ComputeServiceUnavailable(host)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"            return function(self, context, instance, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F4nU%3D","line":114,"updated":"2012-12-10 21:39:59.000000000","message":"this needs a _() and a % locals()","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"b30c0442c24c35b64fe3a2cbead493d3c4bd2c04","unresolved":false,"context_lines":[{"line_number":2160,"context_line":"    @check_host_state(is_up\u003dFalse)"},{"line_number":2161,"context_line":"    def evacuate(self, context, instance, host\u003dNone):"},{"line_number":2162,"context_line":"        \"\"\"Running evacuate to target host\"\"\""},{"line_number":2163,"context_line":"        LOG.debug(\u0027vm evacuation scheduled\u0027)"},{"line_number":2164,"context_line":"        instance \u003d self.update(context, instance, expected_task_state\u003dNone,"},{"line_number":2165,"context_line":"                               task_state\u003dtask_states.REBUILDING)"},{"line_number":2166,"context_line":"        return self.compute_rpcapi.rebuild_instance(context,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F4nQ%3D","line":2163,"updated":"2012-12-10 21:39:59.000000000","message":"_()","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"f07d69cfabc335be1dbf38dceeb6ae66b7fb164b","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                for service in services:"},{"line_number":115,"context_line":"                    if self.servicegroup_api.service_is_up(service) !\u003d is_up:"},{"line_number":116,"context_line":"                        LOG.debug(_(\u0027compute service state on %(host) not\u0027"},{"line_number":117,"context_line":"                                    \u0027equals expected state: %(is_up)\u0027),"},{"line_number":118,"context_line":"                                  locals())"},{"line_number":119,"context_line":"                        raise exception.ComputeServiceUnavailable(host)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAM3%2F%2FzBQ%3D","line":117,"updated":"2013-01-04 19:32:38.000000000","message":"\"not equal to\", perhaps?","commit_id":"25542f992204ba833c1810c30796647f18bed374"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"91f620b3980a663da0ec23880cc0b92d7578e142","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                for service in services:"},{"line_number":115,"context_line":"                    if self.servicegroup_api.service_is_up(service) !\u003d is_up:"},{"line_number":116,"context_line":"                        LOG.debug(_(\u0027compute service state on %(host) not\u0027"},{"line_number":117,"context_line":"                                    \u0027equals expected state: %(is_up)\u0027),"},{"line_number":118,"context_line":"                                  locals())"},{"line_number":119,"context_line":"                        raise exception.ComputeServiceUnavailable(host)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAM3%2F%2FxZ8%3D","line":117,"in_reply_to":"AAAAM3%2F%2FzBQ%3D","updated":"2013-01-06 12:02:17.000000000","message":"Done","commit_id":"25542f992204ba833c1810c30796647f18bed374"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"52b20ccbd1857ac096cd5b1546e90385945e86ca","unresolved":false,"context_lines":[{"line_number":2179,"context_line":"    @check_host_state(is_up\u003dFalse)"},{"line_number":2180,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":2181,"context_line":"                 admin_password\u003dNone):"},{"line_number":2182,"context_line":"        \"\"\"Running evacuate to target host\"\"\""},{"line_number":2183,"context_line":"        LOG.debug(_(\u0027vm evacuation scheduled\u0027))"},{"line_number":2184,"context_line":"        instance \u003d self.update(context, instance, expected_task_state\u003dNone,"},{"line_number":2185,"context_line":"                               task_state\u003dtask_states.REBUILDING)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAM3%2F%2Frto%3D","line":2182,"updated":"2013-01-09 17:45:30.000000000","message":"Please add a period to the end of the docstring; there\u0027s a series of patches pending that correct that lack across the whole code base and then enable a hacking.py check for that condition.","commit_id":"959cbc9f8c40886135a53643d9cd13d18ccc6d7c"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"497c6eed4bc4a45028b940caad0867855aec26a0","unresolved":false,"context_lines":[{"line_number":2179,"context_line":"    @check_host_state(is_up\u003dFalse)"},{"line_number":2180,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":2181,"context_line":"                 admin_password\u003dNone):"},{"line_number":2182,"context_line":"        \"\"\"Running evacuate to target host\"\"\""},{"line_number":2183,"context_line":"        LOG.debug(_(\u0027vm evacuation scheduled\u0027))"},{"line_number":2184,"context_line":"        instance \u003d self.update(context, instance, expected_task_state\u003dNone,"},{"line_number":2185,"context_line":"                               task_state\u003dtask_states.REBUILDING)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAM3%2F%2Frg4%3D","line":2182,"in_reply_to":"AAAAM3%2F%2Frto%3D","updated":"2013-01-14 15:06:03.000000000","message":"Done","commit_id":"959cbc9f8c40886135a53643d9cd13d18ccc6d7c"},{"author":{"_account_id":4419,"name":"Matthew Sherborne","email":"msherborne+openstack@gmail.com","username":"msherborne+openstack"},"change_message_id":"8c3c1f25e0846bc4fa3928dced1b51464057a86f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                    expected_state \u003d \u0027running\u0027 if is_up else \u0027inactive\u0027"},{"line_number":112,"context_line":"                    msg \u003d (_(\u0027Instance compute service state on %(host)s \u0027"},{"line_number":113,"context_line":"                             \u0027not equal expected %(expected_state)s state\u0027"},{"line_number":114,"context_line":"                             ) % locals())"},{"line_number":115,"context_line":"                    LOG.error(msg)"},{"line_number":116,"context_line":"                    raise exception.ComputeServiceUnavailable(msg)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAM3%2F%2FMqE%3D","line":114,"updated":"2013-02-03 22:04:34.000000000","message":"I wouldn\u0027t say \u0027state\u0027, as that will make people think of power_state, and try to look up \u0027inactive\u0027 which they won\u0027t find.\n\nBetter to say, \"I expected it to be up, but it wasn\u0027t\" I think.","commit_id":"d3929dcd5d8788c700f1ec0df7ba7b601b78b574"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"a18f6c6203c87de8b36067b287a229261d6af985","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                    expected_state \u003d \u0027running\u0027 if is_up else \u0027inactive\u0027"},{"line_number":112,"context_line":"                    msg \u003d (_(\u0027Instance compute service state on %(host)s \u0027"},{"line_number":113,"context_line":"                             \u0027not equal expected %(expected_state)s state\u0027"},{"line_number":114,"context_line":"                             ) % locals())"},{"line_number":115,"context_line":"                    LOG.error(msg)"},{"line_number":116,"context_line":"                    raise exception.ComputeServiceUnavailable(msg)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAM3%2F%2FMoE%3D","line":114,"in_reply_to":"AAAAM3%2F%2FMqE%3D","updated":"2013-02-04 12:20:19.000000000","message":"Done","commit_id":"d3929dcd5d8788c700f1ec0df7ba7b601b78b574"},{"author":{"_account_id":4419,"name":"Matthew Sherborne","email":"msherborne+openstack@gmail.com","username":"msherborne+openstack"},"change_message_id":"8c3c1f25e0846bc4fa3928dced1b51464057a86f","unresolved":false,"context_lines":[{"line_number":2346,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED],"},{"line_number":2347,"context_line":"                          task_state\u003d[None])"},{"line_number":2348,"context_line":"    @check_host_state(is_up\u003dFalse)"},{"line_number":2349,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":2350,"context_line":"                 admin_password\u003dNone):"},{"line_number":2351,"context_line":"        \"\"\"Running evacuate to target host.\"\"\""},{"line_number":2352,"context_line":"        LOG.debug(_(\u0027vm evacuation scheduled\u0027))"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAM3%2F%2FMpc%3D","line":2349,"updated":"2013-02-03 22:04:34.000000000","message":"I don\u0027t like the name evacuate.\n\nTo evacuate a host, there\u0027s the nova.api.compute.contrib.host.update(maintenance_mode\u003dFalse) - which is xen server only.\n\nOr the simple move for each instance.\n\nIn this case:\n * The host is down\n * We\u0027re just telling nova, don\u0027t try to build on this host any more build on another.\n * Why don\u0027t we just set the compute service to disabled, and create a new one.\n * I don\u0027t like that we\u0027re re-appropriating a host. What if it comes on line again later ? What happens to the vms on the broken host ? They won\u0027t have a working host assigned to them in the DB.\n\nI may be misunderstanding things a bit here, so I\u0027m definitely open to re-education.","commit_id":"d3929dcd5d8788c700f1ec0df7ba7b601b78b574"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"a18f6c6203c87de8b36067b287a229261d6af985","unresolved":false,"context_lines":[{"line_number":2346,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED],"},{"line_number":2347,"context_line":"                          task_state\u003d[None])"},{"line_number":2348,"context_line":"    @check_host_state(is_up\u003dFalse)"},{"line_number":2349,"context_line":"    def evacuate(self, context, instance, host, on_shared_storage,"},{"line_number":2350,"context_line":"                 admin_password\u003dNone):"},{"line_number":2351,"context_line":"        \"\"\"Running evacuate to target host.\"\"\""},{"line_number":2352,"context_line":"        LOG.debug(_(\u0027vm evacuation scheduled\u0027))"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAM3%2F%2FMJA%3D","line":2349,"in_reply_to":"AAAAM3%2F%2FMpc%3D","updated":"2013-02-04 12:20:19.000000000","message":"Going forward, we envision \"evacuate\" to handle both \"live\" evacuation (like in host maintenance), as well as this scenario -- which is a recovery of VMs from a host which already failed. Please, refer to the blueprint rebuild-for-ha for more implementation details (seems that the link didn\u0027t work for a while) -- there are several additional changes that has been submitted to handle the various aspects of the scenario (like cleanup when the original host is up again).","commit_id":"d3929dcd5d8788c700f1ec0df7ba7b601b78b574"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"564a0bada86093b14c8267f11068b17b10b8b847","unresolved":false,"context_lines":[{"line_number":97,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def check_host_state(is_up):"},{"line_number":101,"context_line":"    \"\"\"Decorator to check vm compute host state before entry to API functions."},{"line_number":102,"context_line":"    If the host not in expected_state, the wrapper will raise an exception."},{"line_number":103,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAM3%2F%2FL0A%3D","line":100,"updated":"2013-02-04 16:04:36.000000000","message":"This logic is only used in one place, yes?  If so, why not move the logic into that function?  Decorators are powerful things, but we need to try to avoid overusing them…","commit_id":"61c7bd3cede2bfb759ff54e7ce3a68940091211b"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"9aa4d5a7acaff7c21e43f1a4c0c32327ccfe7264","unresolved":false,"context_lines":[{"line_number":97,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def check_host_state(is_up):"},{"line_number":101,"context_line":"    \"\"\"Decorator to check vm compute host state before entry to API functions."},{"line_number":102,"context_line":"    If the host not in expected_state, the wrapper will raise an exception."},{"line_number":103,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAM3%2F%2FLuE%3D","line":100,"in_reply_to":"AAAAM3%2F%2FL0A%3D","updated":"2013-02-04 16:56:03.000000000","message":"Done","commit_id":"61c7bd3cede2bfb759ff54e7ce3a68940091211b"}],"nova/compute/manager.py":[{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"e34978392c176fcae8652149c4cab575ae6348e0","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                bdi \u003d self._get_instance_volume_block_device_info(context,"},{"line_number":313,"context_line":"                                                          instance[\u0027uuid\u0027])"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"                shared \u003d driver.instance_is_shared(instance)"},{"line_number":316,"context_line":"                self.driver.destroy(instance,"},{"line_number":317,"context_line":"                                    self._legacy_nw_info(network_info),"},{"line_number":318,"context_line":"                                    bdi,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fv3g%3D","line":315,"updated":"2012-08-14 22:04:06.000000000","message":"only implemented in libvirt. would the NotImplementedError exception disrupt other drivers?","commit_id":"90e0cb93462d05f1ce8ec26290a12bec90af1165"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        First of all locking all this host vm instances in db"},{"line_number":307,"context_line":"        (to prevent evacuation to other hosts)"},{"line_number":308,"context_line":"        \"\"\""},{"line_number":309,"context_line":"        for instance in instances:"},{"line_number":310,"context_line":"            locked \u003d self._get_lock(context, instance[\u0027uuid\u0027])"},{"line_number":311,"context_line":"            if not locked:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvnU%3D","line":308,"updated":"2012-08-15 01:57:49.000000000","message":"comments should not be like this\n\n# NOTE(\u003cyourname\u003e): Comment goes here..","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                LOG.info(_(\"instance \u0027%s\u0027  locked by other host\")"},{"line_number":316,"context_line":"                           % instance[\u0027uuid\u0027])"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        \"\"\"Now getting all vms uuids from libvirt on this host\"\"\""},{"line_number":319,"context_line":"        vms \u003d self.driver.list_instances()"},{"line_number":320,"context_line":"        vms.extend([vm for vm in self.driver.list_defined_instances()"},{"line_number":321,"context_line":"                    if vm not in vms])"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvnM%3D","line":318,"updated":"2012-08-15 01:57:49.000000000","message":"or just # Now getting all vm uuids from libvirt on this host\n\nif it is just a general comment about what the code is doing","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                    if vm not in vms])"},{"line_number":322,"context_line":"        LOG.info(_(\"vms found on host: \u0027%s\u0027\") % str(vms))"},{"line_number":323,"context_line":"        for vm in vms:"},{"line_number":324,"context_line":"            uuid \u003d self.driver.instance_uuid(vm)"},{"line_number":325,"context_line":"            try:"},{"line_number":326,"context_line":"                instance \u003d self.db.instance_get_by_uuid(context, uuid)"},{"line_number":327,"context_line":"            except exception.InstanceNotFound as e:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvmA%3D","line":324,"updated":"2012-08-15 01:57:49.000000000","message":"i don\u0027t think this is portable across drivers you will have to come up with another way to do this.  You should be able to get a list of all instances from libvirt and match against instance[\u0027name\u0027], from the list of instances above then you can delete any extra instances","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        \"\"\""},{"line_number":354,"context_line":"        Finished removing zombies, unlocking all this host vm instances in db"},{"line_number":355,"context_line":"        \"\"\""},{"line_number":356,"context_line":"        for instance in instances:"},{"line_number":357,"context_line":"            LOG.info(_(\"Unlocking instance: \u0027%s\u0027\") % instance[\u0027uuid\u0027])"},{"line_number":358,"context_line":"            self.unlock_instance(context, instance[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvnI%3D","line":355,"updated":"2012-08-15 01:57:49.000000000","message":"ditto","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"            if recreate:"},{"line_number":1097,"context_line":"                self._check_instance_not_already_created(context, instance)"},{"line_number":1098,"context_line":"                if self.driver.instance_is_shared(instance):"},{"line_number":1099,"context_line":"                    LOG.info(\u0027disk on shared storage,\u0027"},{"line_number":1100,"context_line":"                             \u0027recreating using existing disk\u0027)"},{"line_number":1101,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvlE%3D","line":1098,"updated":"2012-08-15 01:57:49.000000000","message":"we already have a check for shared storage in the live migration code, It would be nice if we could reuse that check instead of writing a new method to do essentially the same thing. I guess I\u0027m ok with it if we can\u0027t find a way to reuse that code, but it is just another call the other drivers will have to implement","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2a25ff8a0f5b0fc0e6efabfbf35bb64b18ea9db4","unresolved":false,"context_lines":[{"line_number":410,"context_line":"            LOG.info(_(\"Unlocking instance: \u0027%s\u0027\") % instance[\u0027uuid\u0027])"},{"line_number":411,"context_line":"            self.compute_api.unlock(context, instance)"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        instances \u003d self.db.instance_get_all_by_host(context, self.host)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        if CONF.defer_iptables_apply:"},{"line_number":416,"context_line":"            self.driver.filter_defer_apply_on()"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAMH%2F%2Fw%2F8%3D","line":413,"updated":"2012-11-26 19:43:00.000000000","message":"This should at least be removed because it duplicates the call you added above.","commit_id":"4893632abe87efb70a15b0ae6db64e435f6c9273"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2a25ff8a0f5b0fc0e6efabfbf35bb64b18ea9db4","unresolved":false,"context_lines":[{"line_number":416,"context_line":"            self.driver.filter_defer_apply_on()"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        try:"},{"line_number":419,"context_line":"            for count, instance in enumerate(instances):"},{"line_number":420,"context_line":"                db_state \u003d instance[\u0027power_state\u0027]"},{"line_number":421,"context_line":"                drv_state \u003d self._get_power_state(context, instance)"},{"line_number":422,"context_line":"                closing_vm_states \u003d (vm_states.DELETED,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAMH%2F%2Fw%2F0%3D","line":419,"updated":"2012-11-26 19:43:00.000000000","message":"It would be good to refactor what is here so that you\u0027re not iterating all the instances multiple times.","commit_id":"4893632abe87efb70a15b0ae6db64e435f6c9273"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188f5f03919474c0a401383e375f8a2c6c61550f","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        instances \u003d self.db.instance_get_all_by_host(context, self.host)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        # locking all this host vm instances in db"},{"line_number":420,"context_line":"        # (to prevent evacuation to other hosts)"},{"line_number":421,"context_line":"        for instance in instances:"},{"line_number":422,"context_line":"            if not self.compute_api.get_lock(context, instance):"},{"line_number":423,"context_line":"                LOG.debug(_(\"Locking instance: \u0027%s\u0027\") % instance[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F3tY%3D","line":420,"updated":"2012-12-11 16:46:54.000000000","message":"Shouldn\u0027t we only do this if rebuild-for-ha is enabled in the config or something? Taking the compute_api hits in all cases seems like it might be a bit excessive. Perhaps a config element for this, which the extension also honors so that evacuate() isn\u0027t valid unless that is enabled?","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"b30c0442c24c35b64fe3a2cbead493d3c4bd2c04","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                           % instance[\u0027uuid\u0027])"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        # getting all vms on this host including defined"},{"line_number":430,"context_line":"        uuids \u003d self.driver.list_instance_uuids()"},{"line_number":431,"context_line":"        LOG.debug(_(\"uuids found on host: \u0027%s\u0027\") % str(uuids))"},{"line_number":432,"context_line":"        for uuid in uuids:"},{"line_number":433,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F4lQ%3D","line":430,"updated":"2012-12-10 21:39:59.000000000","message":"can you make this work by instance_name instead? Currently this method will raise an exception with every other driver causing it to fail to start. If there is no way to get it to work by name, then at least make the parent driver have a pass so it doesn\u0027t raise an exception.","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"b30c0442c24c35b64fe3a2cbead493d3c4bd2c04","unresolved":false,"context_lines":[{"line_number":452,"context_line":"                                    bdi,"},{"line_number":453,"context_line":"                                    False)"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"                LOG.info(\u0027zombie killed\u0027)"},{"line_number":456,"context_line":"            else:"},{"line_number":457,"context_line":"                LOG.info(_(\"OK, instance %(uuid) host %(instance_host) \""},{"line_number":458,"context_line":"                           \"same as current host %(host), will unlocking\"),"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F4mI%3D","line":455,"updated":"2012-12-10 21:39:59.000000000","message":"_()","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188f5f03919474c0a401383e375f8a2c6c61550f","unresolved":false,"context_lines":[{"line_number":457,"context_line":"                LOG.info(_(\"OK, instance %(uuid) host %(instance_host) \""},{"line_number":458,"context_line":"                           \"same as current host %(host), will unlocking\"),"},{"line_number":459,"context_line":"                         locals())"},{"line_number":460,"context_line":"                self.compute_api.unlock(context, instance)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        if CONF.defer_iptables_apply:"},{"line_number":463,"context_line":"            self.driver.filter_defer_apply_on()"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F3vg%3D","line":460,"updated":"2012-12-11 16:46:54.000000000","message":"I\u0027d really like to see this new logic wrapped in a separate private method and merely called from init_host(). I\u0027m sure the docstring on the new function will help explain what\u0027s going on here as well :)","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7e78ab34e0d013e5fe4ecc8f611fb0b059a0ae12","unresolved":false,"context_lines":[{"line_number":373,"context_line":"            try:"},{"line_number":374,"context_line":"                instance_id \u003d compute_utils.parse_decimal_id(CONF"},{"line_number":375,"context_line":"                                    .instance_name_template, instance_name)"},{"line_number":376,"context_line":"                instance \u003d self.db.instance_get(context, instance_id)"},{"line_number":377,"context_line":"            except exception.InstanceNotFound as e:"},{"line_number":378,"context_line":"                LOG.warn(_(\u0027Exception %(e) getting instance \u0027"},{"line_number":379,"context_line":"                           \u0027%(instance_name)s\u0027),"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAMX%2F%2F0%2Fw%3D","line":376,"updated":"2012-12-13 18:26:09.000000000","message":"I\u0027m not sure what to suggest otherwise, but I think that parsing the instance name and pulling out the database ID is ... not right.","commit_id":"4ce16065ebb27fb3f8165c3c88114e4fe9f922e0"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"047f6db0b6cffddaeafcfeb19a00630839d527df","unresolved":false,"context_lines":[{"line_number":373,"context_line":"            try:"},{"line_number":374,"context_line":"                instance_id \u003d compute_utils.parse_decimal_id(CONF"},{"line_number":375,"context_line":"                                    .instance_name_template, instance_name)"},{"line_number":376,"context_line":"                instance \u003d self.db.instance_get(context, instance_id)"},{"line_number":377,"context_line":"            except exception.InstanceNotFound as e:"},{"line_number":378,"context_line":"                LOG.warn(_(\u0027Exception %(e) getting instance \u0027"},{"line_number":379,"context_line":"                           \u0027%(instance_name)s\u0027),"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2F5ZY%3D","line":376,"in_reply_to":"AAAAMX%2F%2F0%2Fw%3D","updated":"2012-12-23 12:06:53.000000000","message":"The other solution i considered is adding the instance name to the Instances table.","commit_id":"4ce16065ebb27fb3f8165c3c88114e4fe9f922e0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7e78ab34e0d013e5fe4ecc8f611fb0b059a0ae12","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            #checking that instance was not already evacuated to other host"},{"line_number":467,"context_line":"            self._destroy_evacuated_instances(context, instances)"},{"line_number":468,"context_line":"            for instance in instances:"},{"line_number":469,"context_line":"                self._init_instance(context, instance)"},{"line_number":470,"context_line":"        finally:"},{"line_number":471,"context_line":"            if CONF.defer_iptables_apply:"},{"line_number":472,"context_line":"                self.driver.filter_defer_apply_off()"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAMX%2F%2F1BU%3D","line":469,"updated":"2012-12-13 18:26:09.000000000","message":"I\u0027m confused. Won\u0027t the list of instances returned by instance_get_all_by_host() return an empty list if they\u0027ve been since reassigned? Seems like that would make the _init_instance() loop skip them and thus avoid restarting them here?\n\nI think the proper fix is either:\n1. Get the list of all instances that are present locally before the above loop, and then delete the ones that you didn\u0027t touch as part of that loop after it is done.\n2. Change _reclaim_queued_deletes() to handle these cleanups at idle","commit_id":"4ce16065ebb27fb3f8165c3c88114e4fe9f922e0"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"047f6db0b6cffddaeafcfeb19a00630839d527df","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            #checking that instance was not already evacuated to other host"},{"line_number":467,"context_line":"            self._destroy_evacuated_instances(context, instances)"},{"line_number":468,"context_line":"            for instance in instances:"},{"line_number":469,"context_line":"                self._init_instance(context, instance)"},{"line_number":470,"context_line":"        finally:"},{"line_number":471,"context_line":"            if CONF.defer_iptables_apply:"},{"line_number":472,"context_line":"                self.driver.filter_defer_apply_off()"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAM3%2F%2F5Zc%3D","line":469,"in_reply_to":"AAAAMX%2F%2F1BU%3D","updated":"2012-12-23 12:06:53.000000000","message":"Yes, it could be solved that way, but we don\u0027t want to delete instances that were created outside nova. We could avoid the deletion of those instances and just leave them in the \u0027defined\u0027 state, but then there a risk that they will be started manually.","commit_id":"4ce16065ebb27fb3f8165c3c88114e4fe9f922e0"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188f5f03919474c0a401383e375f8a2c6c61550f","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        2.19 - Add node to run_instance"},{"line_number":150,"context_line":"        2.20 - Add node to prep_resize"},{"line_number":151,"context_line":"        2.21 - Add recreate and host arguments to rebuild_instance()"},{"line_number":152,"context_line":"               Fixed rpcapi versioning."},{"line_number":153,"context_line":"    \u0027\u0027\u0027"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    #"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F3uw%3D","line":152,"updated":"2012-12-11 16:46:54.000000000","message":"Fixed how?","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"}],"nova/tests/api/openstack/compute/test_servers.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs,"},{"line_number":124,"context_line":"                                                          spectacular\u003dTrue)"},{"line_number":125,"context_line":"        self.UUID \u003d utils.gen_uuid()"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def test_can_check_loaded_extensions(self):"},{"line_number":128,"context_line":"        self.ext_mgr.extensions \u003d {\u0027os-fake\u0027: None}"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvoA%3D","line":125,"updated":"2012-08-15 01:57:49.000000000","message":"use lowercase for instance varaibles\nself.uuid \n\n(although these tests will probably move into a new file in nova/tests/api/openstack/compute/contrib/test_evacuate.py when the code moves into an extension.","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":3094,"name":"oshritf","email":"oshritf@il.ibm.com","username":"oshritf"},"change_message_id":"6f70296a7ac7b4dfd3158a97fc27a95fb4916e79","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs,"},{"line_number":124,"context_line":"                                                          spectacular\u003dTrue)"},{"line_number":125,"context_line":"        self.UUID \u003d utils.gen_uuid()"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def test_can_check_loaded_extensions(self):"},{"line_number":128,"context_line":"        self.ext_mgr.extensions \u003d {\u0027os-fake\u0027: None}"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvQs%3D","line":125,"in_reply_to":"AAAALH%2F%2FvoA%3D","updated":"2012-08-15 10:13:15.000000000","message":"Thanks for the useful comments. As evacuate is an admin action performed on a specific server, much as lock, migrate, pause, etc. we thought it will be a good idea to move it into admin_actions.py. Does it make sense, or would a new extension is more of a fit?","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":1303,"context_line":"        ctxt.project_id \u003d \u0027fake\u0027"},{"line_number":1304,"context_line":"        ctxt.is_admin \u003d True"},{"line_number":1305,"context_line":"        app \u003d fakes.wsgi_app(fake_auth_context\u003dctxt)"},{"line_number":1306,"context_line":"        req \u003d webob.Request.blank(\u0027/v2/fake/servers/%s/action\u0027 % self.UUID)"},{"line_number":1307,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":1308,"context_line":"        req.body \u003d jsonutils.dumps({"},{"line_number":1309,"context_line":"            \u0027evacuate\u0027: {"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvoI%3D","line":1306,"updated":"2012-08-15 01:57:49.000000000","message":"self.uuid","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"        res \u003d req.get_response(app)"},{"line_number":1315,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":1316,"context_line":"        #self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":1317,"context_line":"        #    self.controller._action_evacuate, req, FAKE_UUID, body)"},{"line_number":1318,"context_line":""},{"line_number":1319,"context_line":"    def test_evacuate_instance_with_target(self):"},{"line_number":1320,"context_line":"        self.stubs.Set(nova.db, \u0027instance_get_by_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FvoM%3D","line":1317,"updated":"2012-08-15 01:57:49.000000000","message":"old comments","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"}],"nova/tests/compute/test_compute.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188f5f03919474c0a401383e375f8a2c6c61550f","unresolved":false,"context_lines":[{"line_number":2982,"context_line":"                                      orig_image_ref\u003dNone, new_pass\u003dNone,"},{"line_number":2983,"context_line":"                                      orig_sys_metadata\u003dNone, bdms\u003d[],"},{"line_number":2984,"context_line":"                                      recreate\u003dTrue)"},{"line_number":2985,"context_line":"        self.compute.terminate_instance(self.context, instance\u003dinstance)"},{"line_number":2986,"context_line":""},{"line_number":2987,"context_line":"    def test_rebuild_on_host_updated_target(self):"},{"line_number":2988,"context_line":"        \"\"\"Confirm evacuate scenario updates host.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F3t4%3D","line":2985,"updated":"2012-12-11 16:46:54.000000000","message":"This just tests, what, that these functions can be called without hitting an exception?","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188f5f03919474c0a401383e375f8a2c6c61550f","unresolved":false,"context_lines":[{"line_number":2998,"context_line":"        dest \u003d self.compute.host"},{"line_number":2999,"context_line":""},{"line_number":3000,"context_line":"        # start test"},{"line_number":3001,"context_line":"        self.mox.ReplayAll()"},{"line_number":3002,"context_line":""},{"line_number":3003,"context_line":"        self.compute.rebuild_instance(c, instance\u003dinst_ref,"},{"line_number":3004,"context_line":"                                      injected_files\u003dNone, image_ref\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F3t0%3D","line":3001,"updated":"2012-12-11 16:46:54.000000000","message":"Don\u0027t you need to mock something first?","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188f5f03919474c0a401383e375f8a2c6c61550f","unresolved":false,"context_lines":[{"line_number":3006,"context_line":"                                      orig_sys_metadata\u003dNone, bdms\u003d[],"},{"line_number":3007,"context_line":"                                      recreate\u003dTrue)"},{"line_number":3008,"context_line":""},{"line_number":3009,"context_line":"        # make sure instance is updated with destinatioin hostname."},{"line_number":3010,"context_line":"        instance \u003d db.instance_get(c, inst_id)"},{"line_number":3011,"context_line":"        self.assertTrue(instance[\u0027host\u0027])"},{"line_number":3012,"context_line":"        self.assertEqual(instance[\u0027host\u0027], dest)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F3uI%3D","line":3009,"updated":"2012-12-11 16:46:54.000000000","message":"\u0027destination\u0027 is misspelled","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"52b20ccbd1857ac096cd5b1546e90385945e86ca","unresolved":false,"context_lines":[{"line_number":5762,"context_line":"        db.instance_destroy(self.context, instance[\u0027uuid\u0027])"},{"line_number":5763,"context_line":""},{"line_number":5764,"context_line":"    def test_evacuate(self):"},{"line_number":5765,"context_line":"        \"\"\"Make sure we can evacuate instance from failed host.\"\"\""},{"line_number":5766,"context_line":"        instance \u003d jsonutils.to_primitive(self._create_fake_instance())"},{"line_number":5767,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":5768,"context_line":"        self.compute.run_instance(self.context, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAM3%2F%2Frtc%3D","line":5765,"updated":"2013-01-09 17:45:30.000000000","message":"I prefer we eliminate docstrings from test methods…","commit_id":"959cbc9f8c40886135a53643d9cd13d18ccc6d7c"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"497c6eed4bc4a45028b940caad0867855aec26a0","unresolved":false,"context_lines":[{"line_number":5762,"context_line":"        db.instance_destroy(self.context, instance[\u0027uuid\u0027])"},{"line_number":5763,"context_line":""},{"line_number":5764,"context_line":"    def test_evacuate(self):"},{"line_number":5765,"context_line":"        \"\"\"Make sure we can evacuate instance from failed host.\"\"\""},{"line_number":5766,"context_line":"        instance \u003d jsonutils.to_primitive(self._create_fake_instance())"},{"line_number":5767,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":5768,"context_line":"        self.compute.run_instance(self.context, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAM3%2F%2Frg8%3D","line":5765,"in_reply_to":"AAAAM3%2F%2Frtc%3D","updated":"2013-01-14 15:06:03.000000000","message":"Done","commit_id":"959cbc9f8c40886135a53643d9cd13d18ccc6d7c"}],"nova/virt/driver.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"b30c0442c24c35b64fe3a2cbead493d3c4bd2c04","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        raise NotImplementedError()"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def destroy(self, instance, network_info, block_device_info\u003dNone,"},{"line_number":205,"context_line":"                destroy_disks\u003dTrue):"},{"line_number":206,"context_line":"        \"\"\"Destroy (shutdown and delete) the specified instance."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        If the instance is not found (for example if networking failed), this"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAMX%2F%2F4lo%3D","line":205,"updated":"2012-12-10 21:39:59.000000000","message":"this change needs to be added to the interfaces of the other drivers.","commit_id":"04e034a68ab777791cd5225cac5d2229b73d85eb"}],"nova/virt/fake.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":313,"context_line":"    def get_volume_connector(self, instance):"},{"line_number":314,"context_line":"        return {\u0027ip\u0027: \u0027127.0.0.1\u0027, \u0027initiator\u0027: \u0027fake\u0027, \u0027host\u0027: \u0027fakehost\u0027}"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    def list_defined_instances(self):"},{"line_number":317,"context_line":"        return []"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def instance_uuid(self, name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2Fvl4%3D","line":316,"updated":"2012-08-15 01:57:49.000000000","message":"list_instances should work for this","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"623ad09df2c7a996f1c903a63abdf8b0b189982f","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    def list_defined_instances(self):"},{"line_number":317,"context_line":"        return []"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    def instance_uuid(self, name):"},{"line_number":320,"context_line":"        pass"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def instance_is_shared(self, instance):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2Fvl0%3D","line":319,"updated":"2012-08-15 01:57:49.000000000","message":"unneeded with changes in other file","commit_id":"40e764522355fff65daf35e36bea477b7ac90595"}],"nova/virt/hyperv/volumeutilsv2.py":[{"author":{"_account_id":4419,"name":"Matthew Sherborne","email":"msherborne+openstack@gmail.com","username":"msherborne+openstack"},"change_message_id":"8c3c1f25e0846bc4fa3928dced1b51464057a86f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2012 Pedro Navarro Perez"},{"line_number":4,"context_line":"# Copyright 2013 Cloudbase Solutions Srl"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAM3%2F%2FMpg%3D","side":"PARENT","line":1,"updated":"2013-02-03 22:04:34.000000000","message":"Why are we deleting this ?","commit_id":"ee955d272ab4eef2e8371f2e460454058ce7e46c"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"e34978392c176fcae8652149c4cab575ae6348e0","unresolved":false,"context_lines":[{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        name \u003d domain.name()"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        return driver.InstanceInfo(name, state)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def list_instances_detail(self):"},{"line_number":446,"context_line":"        infos \u003d []"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fv3s%3D","line":443,"updated":"2012-08-14 22:04:06.000000000","message":"where is InstanceInfo?","commit_id":"90e0cb93462d05f1ce8ec26290a12bec90af1165"},{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"e34978392c176fcae8652149c4cab575ae6348e0","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        return driver.InstanceInfo(name, state)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def list_instances_detail(self):"},{"line_number":446,"context_line":"        infos \u003d []"},{"line_number":447,"context_line":"        for domain_id in self.list_instance_ids():"},{"line_number":448,"context_line":"            try:"},{"line_number":449,"context_line":"                # We skip domains with ID 0 (hypervisors)."}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fv30%3D","line":446,"updated":"2012-08-14 22:04:06.000000000","message":"did you mean names?","commit_id":"90e0cb93462d05f1ce8ec26290a12bec90af1165"},{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"e34978392c176fcae8652149c4cab575ae6348e0","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                # We skip domains with ID 0 (hypervisors)."},{"line_number":450,"context_line":"                if domain_id !\u003d 0:"},{"line_number":451,"context_line":"                    domain \u003d self._conn.lookupByID(domain_id)"},{"line_number":452,"context_line":"                    names.append(domain.name())"},{"line_number":453,"context_line":"            except libvirt.libvirtError:"},{"line_number":454,"context_line":"                # Instance was deleted while listing... ignore it"},{"line_number":455,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fv34%3D","line":452,"updated":"2012-08-14 22:04:06.000000000","message":"names doesn\u0027t seem to be initialized.","commit_id":"90e0cb93462d05f1ce8ec26290a12bec90af1165"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"bdccc0debde65090ab8e8e193e87fd2a310e5098","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        if defined:"},{"line_number":417,"context_line":"            names.extend([vm for vm in self._conn.listDefinedDomains()"},{"line_number":418,"context_line":"                    if vm not in names])"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        return names"},{"line_number":421,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAALH%2F%2FuRM%3D","line":418,"updated":"2012-08-16 00:36:21.000000000","message":"This doesn\u0027t really help and actually it looks like this is a bug. It seems that liks_instances should always return all instances, including defined instances that aren\u0027t running. Perahps just changing list_instance_ids to return listDomainsID() listDefiinedDomains() would be sufficient here.","commit_id":"3ceda07aec66ecbe88769b323b408ff5ecf23cb4"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"b01a66fe17d0a985da7afca2685915e42d4af8e0","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            except libvirt.libvirtError:"},{"line_number":413,"context_line":"                # Instance was deleted while listing... ignore it"},{"line_number":414,"context_line":"                pass"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        names.extend([vm for vm in self._conn.listDefinedDomains()"},{"line_number":417,"context_line":"                    if vm not in names])"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAALH%2F%2Ft3M%3D","line":415,"updated":"2012-08-16 16:45:41.000000000","message":"It was impossible to reuse list_instance_ids in case of \u0027defined\u0027 domains because those domains don\u0027t have any ID. Have to integrate it in list_instances.","commit_id":"0c86d8eb17ed4cc6f1d6b34a0c9a54bbafe2d749"}]}
