~johannes.erdfelt/nova/migration-recovery

« back to all changes in this revision

Viewing changes to nova/virt/xenapi/vmops.py

  • Committer: Johannes Erdfelt
  • Date: 2011-07-26 18:10:58 UTC
  • Revision ID: johannes.erdfelt@rackspace.com-20110726181058-dfldjmw1hpzxeaky
Add support for recovering from failed migration

Show diffs side-by-side

added added

removed removed

Lines of Context:
123
123
        self.resize_instance(instance, vdi_uuid)
124
124
        self._spawn(instance, vm_ref)
125
125
 
 
126
    def recover_resize(self, instance):
 
127
        # Destroy partially built VM first
 
128
        vm_ref = VMHelper.lookup(self._session, instance.name)
 
129
        self._destroy_vm(instance, vm_ref)
 
130
 
 
131
        # Destroy partially built VDIs next
 
132
        vdi_refs = self._session.call_xenapi('VDI.get_by_name_label',
 
133
                                             instance.name)
 
134
        for vdi_ref in vdi_refs:
 
135
            VMHelper.destroy_vdi(self._session, vdi_ref)
 
136
 
 
137
            LOG.debug(_("VDI %(vdi_ref)s destroyed") % locals())
 
138
 
126
139
    def _start(self, instance, vm_ref=None):
127
140
        """Power on a VM instance"""
128
141
        if not vm_ref:
565
578
        # Now we rescan the SR so we find the VHDs
566
579
        VMHelper.scan_default_sr(self._session)
567
580
 
 
581
        # Set name-label so we can find if we need to recover
 
582
        VMHelper.set_vdi_name_label(self._session, new_cow_uuid,
 
583
                                    instance.name)
 
584
 
568
585
        return new_cow_uuid
569
586
 
570
587
    def resize_instance(self, instance, vdi_uuid):