[PATCH v2] Add vm names to delete/deactivate network error message

This patch changes the error message returned by backend, adding the name of virtual machines that are prohibiting the network to be removed or deactivated. In other words, the vms linked to that network. MSG example: "Unable to delete network NET1. There are some virtual machines ['VM1', 'VM2', 'VM3'] and/or templates linked to this network Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo@linux.vnet.ibm.com> --- src/kimchi/i18n.py | 4 ++-- src/kimchi/model/networks.py | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index e3a051c..33c26f7 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -229,8 +229,8 @@ messages = { "KCHNET0014E": _("Network interface must be a string"), "KCHNET0015E": _("Network VLAN ID must be an integer between 1 and 4094"), "KCHNET0016E": _("Specify name and type to create a Network"), - "KCHNET0017E": _("Unable to delete network %(name)s. There are some virtual machines and/or templates linked to this network."), - "KCHNET0018E": _("Unable to deactivate network %(name)s. There are some virtual machines and/or templates linked to this network."), + "KCHNET0017E": _("Unable to delete network %(name)s. There are some virtual machines%(vms)s and/or templates linked to this network."), + "KCHNET0018E": _("Unable to deactivate network %(name)s. There are some virtual machines%(vms)s and/or templates linked to this network."), "KCHNET0019E": _("Bridge device %(name)s can not be the trunk device of a VLAN."), "KCHNET0020E": _("Failed to activate interface %(iface)s: %(err)s."), "KCHNET0021E": _("Failed to activate interface %(iface)s. Please check the physical link status."), diff --git a/src/kimchi/model/networks.py b/src/kimchi/model/networks.py index 1e94fd2..072bbd5 100644 --- a/src/kimchi/model/networks.py +++ b/src/kimchi/model/networks.py @@ -17,6 +17,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +import string import sys import time @@ -313,14 +314,26 @@ class NetworkModel(object): def deactivate(self, name): if self._is_network_in_use(name): - raise InvalidOperation("KCHNET0018E", {'name': name}) + vms = self._get_vms_attach_to_a_network(name) + if not vms: + vms = "" + else: + vms.sort() + vms = ' ' + string.join(vms, ', ') + raise InvalidOperation("KCHNET0018E", {'name': name, 'vms': vms}) network = self.get_network(self.conn.get(), name) network.destroy() def delete(self, name): if self._is_network_in_use(name): - raise InvalidOperation("KCHNET0017E", {'name': name}) + vms = self._get_vms_attach_to_a_network(name) + if not vms: + vms = "" + else: + vms.sort() + vms = ' ' + string.join(vms, ', ') + raise InvalidOperation("KCHNET0017E", {'name': name, 'vms': vms}) network = self.get_network(self.conn.get(), name) if network.isActive(): -- 1.9.3

On 13/01/2015 11:45, Rodrigo Trujillo wrote:
This patch changes the error message returned by backend, adding the name of virtual machines that are prohibiting the network to be removed or deactivated. In other words, the vms linked to that network. MSG example: "Unable to delete network NET1. There are some virtual machines ['VM1', 'VM2', 'VM3'] and/or templates linked to this network
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo@linux.vnet.ibm.com> --- src/kimchi/i18n.py | 4 ++-- src/kimchi/model/networks.py | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index e3a051c..33c26f7 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -229,8 +229,8 @@ messages = { "KCHNET0014E": _("Network interface must be a string"), "KCHNET0015E": _("Network VLAN ID must be an integer between 1 and 4094"), "KCHNET0016E": _("Specify name and type to create a Network"), - "KCHNET0017E": _("Unable to delete network %(name)s. There are some virtual machines and/or templates linked to this network."), - "KCHNET0018E": _("Unable to deactivate network %(name)s. There are some virtual machines and/or templates linked to this network."), + "KCHNET0017E": _("Unable to delete network %(name)s. There are some virtual machines%(vms)s and/or templates linked to this network."), + "KCHNET0018E": _("Unable to deactivate network %(name)s. There are some virtual machines%(vms)s and/or templates linked to this network."), "KCHNET0019E": _("Bridge device %(name)s can not be the trunk device of a VLAN."), "KCHNET0020E": _("Failed to activate interface %(iface)s: %(err)s."), "KCHNET0021E": _("Failed to activate interface %(iface)s. Please check the physical link status."), diff --git a/src/kimchi/model/networks.py b/src/kimchi/model/networks.py index 1e94fd2..072bbd5 100644 --- a/src/kimchi/model/networks.py +++ b/src/kimchi/model/networks.py @@ -17,6 +17,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+import string import sys import time
@@ -313,14 +314,26 @@ class NetworkModel(object):
def deactivate(self, name): if self._is_network_in_use(name): - raise InvalidOperation("KCHNET0018E", {'name': name})
+ vms = self._get_vms_attach_to_a_network(name)
The _get_vms_attach_to_a_network always returns a list so the if/else statement below is not needed
+ if not vms: + vms = "" + else: + vms.sort() + vms = ' ' + string.join(vms, ', ')
Just format the value when raising the exception: raise InvalidOperation("KCHNET0018E", {'name': name, 'vms':*", ".join(vms)*})
+ raise InvalidOperation("KCHNET0018E", {'name': name, 'vms': vms})
network = self.get_network(self.conn.get(), name) network.destroy()
def delete(self, name): if self._is_network_in_use(name): - raise InvalidOperation("KCHNET0017E", {'name': name}) + vms = self._get_vms_attach_to_a_network(name) + if not vms: + vms = "" + else: + vms.sort() + vms = ' ' + string.join(vms, ', ') + raise InvalidOperation("KCHNET0017E", {'name': name, 'vms': vms})
network = self.get_network(self.conn.get(), name) if network.isActive():
participants (2)
-
Aline Manera
-
Rodrigo Trujillo