Jelajahi Sumber

Improves error reporting in OpenStack provider

Alessandro Pilotti 9 tahun lalu
induk
melakukan
f412d897a1
2 mengubah file dengan 11 tambahan dan 1 penghapusan
  1. 4 0
      coriolis/exception.py
  2. 7 1
      coriolis/providers/openstack/__init__.py

+ 4 - 0
coriolis/exception.py

@@ -213,6 +213,10 @@ class InstanceNotFound(NotFound):
     message = _("Instance \"%(instance_name)s\" could not be found.")
 
 
+class NetworkNotFound(NotFound):
+    message = _("Network \"%(network_name)s\" could not be found.")
+
+
 class Duplicate(CoriolisException):
     pass
 

+ 7 - 1
coriolis/providers/openstack/__init__.py

@@ -377,6 +377,8 @@ class ImportProvider(base.BaseImportProvider, base.BaseReplicaImportProvider):
     @utils.retry_on_error()
     def _create_neutron_port(self, neutron, network_name, mac_address=None):
         networks = neutron.list_networks(name=network_name)
+        if not networks['networks']:
+            raise exception.NetworkNotFound(network_name=network_name)
         network_id = networks['networks'][0]['id']
 
         # make sure that the port is not already existing from a previous
@@ -503,7 +505,11 @@ class ImportProvider(base.BaseImportProvider, base.BaseReplicaImportProvider):
             return _MigrationResources(nova, neutron, keypair, instance, port,
                                        floating_ip, guest_port, sec_group,
                                        username, password, k)
-        except:
+        except Exception as ex:
+            self._event_manager.progress_update(
+                "An error occurred, cleaning up worker resources: %s" %
+                str(ex))
+
             if instance:
                 nova.servers.delete(instance)
             if floating_ip: