You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by re...@apache.org on 2015/10/25 21:03:45 UTC

[5/6] git commit: updated refs/heads/master to b69dff7

unit test for interface patterns in libvirt compute resource


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5a134a6f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5a134a6f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5a134a6f

Branch: refs/heads/master
Commit: 5a134a6fe676d4461a2b5dbcc92057e18544718e
Parents: f1ea27e
Author: Daan Hoogland <da...@onecht.net>
Authored: Fri Oct 23 17:17:40 2015 +0200
Committer: Daan Hoogland <da...@onecht.net>
Committed: Sat Oct 24 00:57:01 2015 +0200

----------------------------------------------------------------------
 .../kvm/resource/LibvirtComputingResource.java  | 31 ++++++++++++++++++--
 .../resource/LibvirtComputingResourceTest.java  | 13 ++++++++
 2 files changed, 42 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5a134a6f/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
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 ef6b827..11317af 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
@@ -1160,8 +1160,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         for (int i = 0; i < interfaces.length; i++) {
             final String fname = interfaces[i].getName();
             s_logger.debug("matchPifFileInDirectory: file name '" + fname + "'");
-            if (fname.startsWith("eth") || fname.startsWith("bond") || fname.startsWith("team") || fname.startsWith("vlan") || fname.startsWith("vx") || fname.startsWith("em") ||
-                    fname.matches("^p\\d+p\\d+.*") || fname.startsWith("ens") || fname.startsWith("eno") || fname.startsWith("enp") || fname.startsWith("enx")) {
+            if (isInterface(fname)) {
                 return fname;
             }
         }
@@ -1170,6 +1169,34 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         return "";
     }
 
+    String [] _ifNamePrefixes = {
+            "eth",
+            "bond",
+            "vlan",
+            "vx",
+            "em",
+            "ens",
+            "eno",
+            "enp",
+            "team",
+            "enx",
+            "^p\\d+p\\d+"
+    };
+    /**
+     * @param fname
+     * @return
+     */
+    boolean isInterface(final String fname) {
+        StringBuffer commonPattern = new StringBuffer();
+        for (String ifNamePrefix : _ifNamePrefixes) {
+            commonPattern.append("|(").append(ifNamePrefix).append(".*)");
+        }
+        if(fname.matches(commonPattern.toString())) {
+            return true;
+        }
+        return false;
+    }
+
     public boolean checkNetwork(final String networkName) {
         if (networkName == null) {
             return true;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5a134a6f/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
----------------------------------------------------------------------
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 920c86a..98a074a 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
@@ -4999,4 +4999,17 @@ public class LibvirtComputingResourceTest {
 
         assertFalse(answer.getResult());
     }
+
+    @Test
+    public void testIsInterface () {
+        LibvirtComputingResource lvcr = new LibvirtComputingResource();
+        assertFalse(lvcr.isInterface("bla"));
+        assertTrue(lvcr.isInterface("p99p00"));
+        for  (String ifNamePrefix : lvcr._ifNamePrefixes) {
+            // excluding regexps as "\\\\d+" won't replace with String.replaceAll(String,String);
+            if (!ifNamePrefix.contains("\\")) {
+                assertTrue(lvcr.isInterface(ifNamePrefix + "0"));
+            }
+        }
+    }
 }
\ No newline at end of file