Forward merge Fix DirectNetworkGuru canHandle for lowercase isolation methods

forward merge of #3010 -- Fix DirectNetworkGuru canHandle checks for lowercase isolation methods
This commit is contained in:
Rafael Weingärtner 2018-11-07 09:56:05 -02:00
commit 077e692dbb
2 changed files with 64 additions and 2 deletions

View File

@ -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<String> isolationMethods = physicalNetwork.getIsolationMethods();
if (CollectionUtils.isNotEmpty(isolationMethods)) {
for (String method : isolationMethods) {
if (method.equalsIgnoreCase(m.toString())) {
return true;
}
}
}
}
return false;

View File

@ -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));
}
}