diff --git a/server/src/main/java/com/cloud/network/guru/DirectNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/DirectNetworkGuru.java index 6c473c51b24..ee880e62a84 100644 --- a/server/src/main/java/com/cloud/network/guru/DirectNetworkGuru.java +++ b/server/src/main/java/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; @@ -126,10 +127,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 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 00000000000..98d43f3f5bb --- /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)); + } +}