From 08eb96776a7714a40bab447f31862ab68f5729d7 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Mon, 23 Nov 2015 11:45:48 +0100 Subject: [PATCH] CLOUDSTACK-9037 patterns can be more elaborate then prefixes. --- .../resource/LibvirtComputingResource.java | 28 +++++++++---------- .../LibvirtComputingResourceTest.java | 7 +++-- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 6560a382052..45286ee9a50 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -1170,17 +1170,17 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv return ""; } - String [] _ifNamePrefixes = { - "eth", - "bond", - "vlan", - "vx", - "em", - "ens", - "eno", - "enp", - "team", - "enx", + String [] _ifNamePatterns = { + "^eth", + "^bond", + "^vlan", + "^vx", + "^em", + "^ens", + "^eno", + "^enp", + "^team", + "^enx", "^p\\d+p\\d+" }; /** @@ -1188,9 +1188,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv * @return */ boolean isInterface(final String fname) { - final StringBuffer commonPattern = new StringBuffer(); - for (final String ifNamePrefix : _ifNamePrefixes) { - commonPattern.append("|(").append(ifNamePrefix).append(".*)"); + StringBuffer commonPattern = new StringBuffer(); + for (final String ifNamePattern : _ifNamePatterns) { + commonPattern.append("|(").append(ifNamePattern).append(".*)"); } if(fname.matches(commonPattern.toString())) { return true; diff --git a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java index b15e1488b8c..50a669f8425 100644 --- a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java +++ b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java @@ -5005,10 +5005,11 @@ public class LibvirtComputingResourceTest { LibvirtComputingResource lvcr = new LibvirtComputingResource(); assertFalse(lvcr.isInterface("bla")); assertTrue(lvcr.isInterface("p99p00")); - for (String ifNamePrefix : lvcr._ifNamePrefixes) { + for (String ifNamePattern : lvcr._ifNamePatterns) { // excluding regexps as "\\\\d+" won't replace with String.replaceAll(String,String); - if (!ifNamePrefix.contains("\\")) { - assertTrue(lvcr.isInterface(ifNamePrefix + "0")); + if (!ifNamePattern.contains("\\")) { + String ifName = ifNamePattern.replaceFirst("\\^", "") + "0"; + assertTrue("The pattern '" + ifNamePattern + "' is expected to be valid for interface " + ifName,lvcr.isInterface(ifName)); } } }