Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,26 @@
import com.cloud.network.addr.PublicIp;
import com.cloud.offering.NetworkOffering;
import com.cloud.user.Account;
import org.apache.cloudstack.framework.config.ConfigKey;

public interface VpcManager {
ConfigKey<Boolean> VpcTierNamePrepend = new ConfigKey<>(Boolean.class,
"vpc.tier.name.prepend",
ConfigKey.CATEGORY_NETWORK,
"false",
"Whether to prepend the VPC name to the VPC tier network name",
true,
ConfigKey.Scope.Global,
null);
ConfigKey<String> VpcTierNamePrependDelimiter = new ConfigKey<>(String.class,
"vpc.tier.name.prepend.delimiter",
ConfigKey.CATEGORY_NETWORK,
" ",
"Delimiter string to use between the VPC and the VPC tier name",
true,
ConfigKey.Scope.Global,
null);

/**
* Returns all the Guest networks that are part of VPC
*
Expand Down
12 changes: 12 additions & 0 deletions server/src/main/java/com/cloud/network/NetworkServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -1476,6 +1476,11 @@ private void isIPv6AddressValid(String routerIPv6) {
}
}

private String getVpcPrependedNetworkName(String networkName, Vpc vpc) {
final String delimiter = VpcManager.VpcTierNamePrependDelimiter.value();
return vpc.getName() + delimiter + networkName;
}

@Override
@DB
@ActionEvent(eventType = EventTypes.EVENT_NETWORK_CREATE, eventDescription = "creating network")
Expand Down Expand Up @@ -1788,6 +1793,13 @@ public Network createGuestNetwork(CreateNetworkCmd cmd) throws InsufficientCapac

checkNetworkDns(ipv6, ntwkOff, vpcId, ip4Dns1, ip4Dns2, ip6Dns1, ip6Dns2);

if (vpcId != null && VpcManager.VpcTierNamePrepend.value()) {
Vpc vpc = _vpcDao.findById(vpcId);
if (vpc != null) {
name = getVpcPrependedNetworkName(name, vpc);
}
}

Network network = commitNetwork(networkOfferingId, gateway, startIP, endIP, netmask, networkDomain, vlanId, bypassVlanOverlapCheck, name, displayText, caller, physicalNetworkId, zone.getId(),
domainId, isDomainSpecific, subdomainAccess, vpcId, startIPv6, endIPv6, ip6Gateway, ip6Cidr, displayNetwork, aclId, secondaryVlanId, privateVlanType, ntwkOff, pNtwk, aclType, owner, cidr, createVlan,
externalId, routerIPv4, routerIPv6, associatedNetwork, ip4Dns1, ip4Dns2, ip6Dns1, ip6Dns2, interfaceMTUs, networkCidrSize);
Expand Down
17 changes: 16 additions & 1 deletion server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@
import org.apache.cloudstack.api.command.user.vpc.UpdateVPCCmd;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
import org.apache.cloudstack.network.Ipv4GuestSubnetNetworkMap;
Expand Down Expand Up @@ -195,7 +197,7 @@

import static com.cloud.offering.NetworkOffering.RoutingMode.Dynamic;

public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvisioningService, VpcService {
public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvisioningService, VpcService, Configurable {

public static final String SERVICE = "service";
public static final String CAPABILITYTYPE = "capabilitytype";
Expand Down Expand Up @@ -3115,6 +3117,19 @@
}
}

@Override
public String getConfigComponentName() {
return VpcManager.class.getSimpleName();
}

Check warning on line 3123 in server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java#L3121-L3123

Added lines #L3121 - L3123 were not covered by tests

@Override
public ConfigKey<?>[] getConfigKeys() {
return new ConfigKey<?>[]{

Check warning on line 3127 in server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java#L3126-L3127

Added lines #L3126 - L3127 were not covered by tests
VpcTierNamePrepend,
VpcTierNamePrependDelimiter
};
}

Check warning on line 3131 in server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java#L3131

Added line #L3131 was not covered by tests

protected class VpcCleanupTask extends ManagedContextRunnable {
@Override
protected void runInContext() {
Expand Down
35 changes: 35 additions & 0 deletions server/src/test/java/com/cloud/network/NetworkServiceImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,41 @@ public void testCreateIpv4RoutedNetwork() throws InsufficientCapacityException,
Mockito.verify(routedIpv4Manager).assignIpv4SubnetToNetwork(nullable(Network.class));
}

@Test
public void testCreateVpcTier() throws InsufficientCapacityException, ResourceAllocationException, NoSuchFieldException, IllegalAccessException {
Integer privateMtu = 1200;
Long networkOfferingId = 1L;
Long vpcId = 2L;

ReflectionTestUtils.setField(createNetworkCmd, "name", "testNetwork");
ReflectionTestUtils.setField(createNetworkCmd, "displayText", "Test Network");
ReflectionTestUtils.setField(createNetworkCmd, "networkOfferingId", networkOfferingId);
ReflectionTestUtils.setField(createNetworkCmd, "zoneId", zoneId);
ReflectionTestUtils.setField(createNetworkCmd, "privateMtu", privateMtu);
ReflectionTestUtils.setField(createNetworkCmd, "vpcId", vpcId);

dc = Mockito.mock(DataCenterVO.class);
Mockito.when(dcDao.findById(zoneId)).thenReturn(dc);
Mockito.when(dc.getId()).thenReturn(zoneId);
vpc = Mockito.mock(VpcVO.class);
Mockito.when(vpc.getName()).thenReturn("Vpc 1");
Mockito.when(vpcDao.findById(vpcId)).thenReturn(vpc);
networkOfferingVO = Mockito.mock(NetworkOfferingVO.class);
Mockito.when(networkOfferingDao.findById(networkOfferingId)).thenReturn(networkOfferingVO);
Mockito.when(configMgr.isOfferingForVpc(networkOfferingVO)).thenReturn(true);

overrideDefaultConfigValue(VpcManager.VpcTierNamePrepend, "_defaultValue", "true");
overrideDefaultConfigValue(VpcManager.VpcTierNamePrependDelimiter, "_defaultValue", " -- ");

service.createGuestNetwork(createNetworkCmd);

overrideDefaultConfigValue(VpcManager.VpcTierNamePrepend, "_defaultValue", "false");

Mockito.verify(vpcMgr, times(1)).createVpcGuestNetwork(networkOfferingId, "Vpc 1 -- testNetwork", "Test Network", null, null,
null, null, accountMock, null, phyNet, zoneId, null, null, vpcId, null, accountMock, true,
null, null, null, null, null, null, null, new Pair<>(0, privateMtu), null);
}

@Test
public void testCheckAndUpdateNetworkResetSuccess() {
NetworkVO networkVO = new NetworkVO();
Expand Down
Loading