You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ra...@apache.org on 2018/11/07 11:53:11 UTC

[cloudstack] branch 4.11 updated: Fix DirectNetworkGuru canHandle checks for lowercase isolation methods (#3010)

This is an automated email from the ASF dual-hosted git repository.

rafael pushed a commit to branch 4.11
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.11 by this push:
     new af0c1e4  Fix DirectNetworkGuru canHandle checks for lowercase isolation methods (#3010)
af0c1e4 is described below

commit af0c1e48cf26de3fdc73edd6ac8ff4577a113223
Author: Nicolas Vazquez <ni...@gmail.com>
AuthorDate: Wed Nov 7 08:53:01 2018 -0300

    Fix DirectNetworkGuru canHandle checks for lowercase isolation methods (#3010)
---
 .../com/cloud/network/guru/DirectNetworkGuru.java  | 13 +++++-
 .../cloud/network/guru/DirectNetworkGuruTest.java  | 53 ++++++++++++++++++++++
 2 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/server/src/com/cloud/network/guru/DirectNetworkGuru.java b/server/src/com/cloud/network/guru/DirectNetworkGuru.java
index 3edc8d2..c8d3eec 100644
--- a/server/src/com/cloud/network/guru/DirectNetworkGuru.java
+++ b/server/src/com/cloud/network/guru/DirectNetworkGuru.java
@@ -22,6 +22,7 @@ import javax.inject.Inject;
 
 import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
 import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 
 import com.cloud.dc.DataCenter;
@@ -119,10 +120,18 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
         return false;
     }
 
+    /**
+     * Return true if the physical network isolation method contains the expected isolation method for this guru
+     */
     protected boolean isMyIsolationMethod(PhysicalNetwork physicalNetwork) {
         for (IsolationMethod m : _isolationMethods) {
-            if (physicalNetwork.getIsolationMethods().contains(m.toString())) {
-                return true;
+            List<String> isolationMethods = physicalNetwork.getIsolationMethods();
+            if (CollectionUtils.isNotEmpty(isolationMethods)) {
+                for (String method : isolationMethods) {
+                    if (method.equalsIgnoreCase(m.toString())) {
+                        return true;
+                    }
+                }
             }
         }
         return false;
diff --git a/server/test/com/cloud/network/guru/DirectNetworkGuruTest.java b/server/test/com/cloud/network/guru/DirectNetworkGuruTest.java
new file mode 100644
index 0000000..98d43f3
--- /dev/null
+++ b/server/test/com/cloud/network/guru/DirectNetworkGuruTest.java
@@ -0,0 +1,53 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.network.guru;
+
+import com.cloud.network.PhysicalNetwork;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+public class DirectNetworkGuruTest {
+
+    DirectNetworkGuru guru = new DirectNetworkGuru();
+
+    @Mock
+    PhysicalNetwork physicalNetwork;
+
+    @Before
+    public void setup() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        when(physicalNetwork.getIsolationMethods()).thenReturn(Arrays.asList("VXLAN", "VLAN"));
+    }
+
+    @Test
+    public void testIsMyIsolationMethodUppercaseMethods() {
+        assertTrue(guru.isMyIsolationMethod(physicalNetwork));
+    }
+
+    @Test
+    public void testIsMyIsolationMethodLowercaseMethods() {
+        when(physicalNetwork.getIsolationMethods()).thenReturn(Arrays.asList("vxlan", "vlan"));
+        assertTrue(guru.isMyIsolationMethod(physicalNetwork));
+    }
+}