From e83c5687749a63e10959cd0337df86ce14357110 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Tue, 18 Jul 2023 08:06:41 +0200 Subject: [PATCH 1/7] make control.cidr dynamic --- .../configuration/ConfigurationManager.java | 81 ++++++------------- .../network/lb/LoadBalanceRuleHandler.java | 4 +- .../lb/InternalLoadBalancerVMManagerImpl.java | 7 +- .../java/com/cloud/configuration/Config.java | 8 -- .../ConfigurationManagerImpl.java | 4 +- .../consoleproxy/ConsoleProxyManagerImpl.java | 6 +- .../deploy/DeploymentPlanningManagerImpl.java | 26 +++--- .../network/guru/ControlNetworkGuru.java | 22 ++--- .../cloud/server/ConfigurationServerImpl.java | 59 -------------- .../com/cloud/storage/StorageManagerImpl.java | 3 +- .../RouterDeploymentDefinition.java | 19 ++--- .../ConfigurationManagerTest.java | 1 - .../SecondaryStorageManagerImpl.java | 11 +-- 13 files changed, 70 insertions(+), 181 deletions(-) diff --git a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java index c5caa312b584..149a109f7ddf 100644 --- a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java +++ b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Set; +import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.impl.ConfigurationSubGroupVO; import com.cloud.dc.ClusterVO; @@ -54,10 +55,30 @@ */ public interface ConfigurationManager { - public static final String MESSAGE_CREATE_POD_IP_RANGE_EVENT = "Message.CreatePodIpRange.Event"; - public static final String MESSAGE_DELETE_POD_IP_RANGE_EVENT = "Message.DeletePodIpRange.Event"; - public static final String MESSAGE_CREATE_VLAN_IP_RANGE_EVENT = "Message.CreateVlanIpRange.Event"; - public static final String MESSAGE_DELETE_VLAN_IP_RANGE_EVENT = "Message.DeleteVlanIpRange.Event"; + String MESSAGE_CREATE_POD_IP_RANGE_EVENT = "Message.CreatePodIpRange.Event"; + String MESSAGE_DELETE_POD_IP_RANGE_EVENT = "Message.DeletePodIpRange.Event"; + String MESSAGE_CREATE_VLAN_IP_RANGE_EVENT = "Message.CreateVlanIpRange.Event"; + String MESSAGE_DELETE_VLAN_IP_RANGE_EVENT = "Message.DeleteVlanIpRange.Event"; + + ConfigKey SystemVMUseLocalStorage = new ConfigKey<>( + Boolean.class, + "system.vm.use.local.storage", + "Advanced", + "false", + "Indicates whether to use local storage pools or shared storage pools for system VMs.", + false, + ConfigKey.Scope.Zone, + null); + + ConfigKey ControlCidr = new ConfigKey<>( + String.class, + "control.cidr", + "Advanced", + "169.254.0.0/16", + "Changes the cidr for the control network traffic. Defaults to using link local. Must be unique within pods", + true, + ConfigKey.Scope.Zone, + null); /** * @param offering @@ -78,58 +99,6 @@ public interface ConfigurationManager { */ String updateConfiguration(long userId, String name, String category, String value, String scope, Long id); -// /** -// * Creates a new service offering -// * -// * @param name -// * @param cpu -// * @param ramSize -// * @param speed -// * @param displayText -// * @param localStorageRequired -// * @param offerHA -// * @param domainId -// * @param volatileVm -// * @param hostTag -// * @param networkRate -// * TODO -// * @param id -// * @param useVirtualNetwork -// * @param deploymentPlanner -// * @param details -// * @param bytesReadRate -// * @param bytesWriteRate -// * @param iopsReadRate -// * @param iopsWriteRate -// * @return ID -// */ -// ServiceOfferingVO createServiceOffering(long userId, boolean isSystem, VirtualMachine.Type vm_typeType, String name, int cpu, int ramSize, int speed, String displayText, boolean localStorageRequired, -// boolean offerHA, boolean limitResourceUse, boolean volatileVm, String tags, Long domainId, String hostTag, Integer networkRate, String deploymentPlanner, Map details, -// Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate); - -// /** -// * Creates a new disk offering -// * -// * @param domainId -// * @param name -// * @param description -// * @param numGibibytes -// * @param tags -// * @param isCustomized -// * @param localStorageRequired -// * @param isDisplayOfferingEnabled -// * @param isCustomizedIops (is admin allowing users to set custom iops?) -// * @param minIops -// * @param maxIops -// * @param bytesReadRate -// * @param bytesWriteRate -// * @param iopsReadRate -// * @param iopsWriteRate -// * @return newly created disk offering -// */ -// DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized, -// boolean localStorageRequired, boolean isDisplayOfferingEnabled, Boolean isCustomizedIops, Long minIops, Long maxIops, -// Long bytesReadRate, Long bytesWriteRate, Long iopsReadRate, Long iopsWriteRate); /** * Creates a new pod diff --git a/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/LoadBalanceRuleHandler.java b/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/LoadBalanceRuleHandler.java index ed52174d7e0a..6a1f7f07f6cf 100644 --- a/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/LoadBalanceRuleHandler.java +++ b/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/lb/LoadBalanceRuleHandler.java @@ -32,7 +32,7 @@ import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.log4j.Logger; -import com.cloud.configuration.ConfigurationManagerImpl; +import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.DataCenter; import com.cloud.dc.Pod; import com.cloud.dc.PodVlanMapVO; @@ -286,7 +286,7 @@ private DomainRouterVO deployELBVm(Network guestNetwork, final DeployDestination } } - ServiceOfferingVO elasticLbVmOffering = _serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.elbVmDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId())); + ServiceOfferingVO elasticLbVmOffering = _serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.elbVmDefaultOffUniqueName, ConfigurationManager.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId())); elbVm = new DomainRouterVO(id, elasticLbVmOffering.getId(), vrProvider.getId(), VirtualMachineName.getSystemVmName(id, _instance, ELB_VM_NAME_PREFIX), template.getId(), template.getHypervisorType(), template.getGuestOSId(), owner.getDomainId(), owner.getId(), userId, false, RedundantState.UNKNOWN, elasticLbVmOffering.isOfferHA(), false, null); diff --git a/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java b/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java index a53f27188aab..87ebf777b4f5 100644 --- a/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java +++ b/plugins/network-elements/internal-loadbalancer/src/main/java/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java @@ -26,12 +26,13 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.log4j.Logger; + import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO; import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; -import org.apache.log4j.Logger; import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; @@ -45,7 +46,7 @@ import com.cloud.agent.api.to.LoadBalancerTO; import com.cloud.agent.manager.Commands; import com.cloud.configuration.Config; -import com.cloud.configuration.ConfigurationManagerImpl; +import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenterVO; import com.cloud.dc.dao.DataCenterDao; @@ -629,7 +630,7 @@ protected List findOrDeployInternalLbVm(final Network guestNetwo final LinkedHashMap> networks = createInternalLbVmNetworks(guestNetwork, plan, requestedGuestIp); long internalLbVmOfferingId = _internalLbVmOfferingId; if (internalLbVmOfferingId == 0L) { - ServiceOfferingVO serviceOffering = _serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.internalLbVmDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId())); + ServiceOfferingVO serviceOffering = _serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.internalLbVmDefaultOffUniqueName, ConfigurationManager.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId())); internalLbVmOfferingId = serviceOffering.getId(); } //Pass startVm=false as we are holding the network lock that needs to be released at the end of vm allocation diff --git a/server/src/main/java/com/cloud/configuration/Config.java b/server/src/main/java/com/cloud/configuration/Config.java index aeefdb58f8c3..d0dbcafc6afe 100644 --- a/server/src/main/java/com/cloud/configuration/Config.java +++ b/server/src/main/java/com/cloud/configuration/Config.java @@ -885,14 +885,6 @@ public enum Config { "0", "Default disk I/O writerate in bytes per second allowed in User vm's disk.", null), - ControlCidr( - "Advanced", - ManagementServer.class, - String.class, - "control.cidr", - "169.254.0.0/16", - "Changes the cidr for the control network traffic. Defaults to using link local. Must be unique within pods", - null), ControlGateway("Advanced", ManagementServer.class, String.class, "control.gateway", "169.254.0.1", "gateway for the control network traffic", null), HostCapacityTypeToOrderClusters( "Advanced", diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index 455a964b8d7b..8ce1b745074e 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -460,8 +460,6 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati private Set overprovisioningFactorsForValidation; public static final String VM_USERDATA_MAX_LENGTH_STRING = "vm.userdata.max.length"; - public static final ConfigKey SystemVMUseLocalStorage = new ConfigKey(Boolean.class, "system.vm.use.local.storage", "Advanced", "false", - "Indicates whether to use local storage pools or shared storage pools for system VMs.", false, ConfigKey.Scope.Zone, null); public final static ConfigKey BYTES_MAX_READ_LENGTH= new ConfigKey(Long.class, "vm.disk.bytes.maximum.read.length", "Advanced", "0", "Maximum Bytes read burst duration (seconds). If '0' (zero) then does not check for maximum burst length.", true, ConfigKey.Scope.Global, null); @@ -2307,7 +2305,7 @@ public HostPodVO createPod(final long userId, final String podName, final DataCe _zoneDao.addPrivateIpAddress(zone.getId(), pod.getId(), startIpFinal, endIpFinal, false, null); } - final String[] linkLocalIpRanges = NetUtils.getLinkLocalIPRange(_configDao.getValue(Config.ControlCidr.key())); + final String[] linkLocalIpRanges = NetUtils.getLinkLocalIPRange(ControlCidr.valueIn(zone.getId())); if (linkLocalIpRanges.length > 1) { _zoneDao.addLinkLocalIpAddress(zone.getId(), pod.getId(), linkLocalIpRanges[0], linkLocalIpRanges[1]); } diff --git a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index c1d4a22bf773..a392238f7ad0 100644 --- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -65,7 +65,7 @@ import com.cloud.agent.manager.Commands; import com.cloud.cluster.ClusterManager; import com.cloud.configuration.Config; -import com.cloud.configuration.ConfigurationManagerImpl; +import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.ZoneConfig; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; @@ -696,7 +696,7 @@ protected Map createProxyInstance(long dataCenterId, VMTemplateV ServiceOfferingVO serviceOffering = serviceOfferingVO; if (serviceOffering == null) { - serviceOffering = serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.consoleProxyDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId)); + serviceOffering = serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.consoleProxyDefaultOffUniqueName, ConfigurationManager.SystemVMUseLocalStorage.valueIn(dataCenterId)); } ConsoleProxyVO proxy = new ConsoleProxyVO(id, serviceOffering.getId(), name, template.getId(), template.getHypervisorType(), template.getGuestOSId(), dataCenterId, @@ -888,7 +888,7 @@ public boolean isZoneReady(Map zoneHostInfoMap, long dataCen } if (templateHostRef != null) { - Boolean useLocalStorage = BooleanUtils.toBoolean(ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId)); + Boolean useLocalStorage = BooleanUtils.toBoolean(ConfigurationManager.SystemVMUseLocalStorage.valueIn(dataCenterId)); List> l = consoleProxyDao.getDatacenterStoragePoolHostInfo(dataCenterId, useLocalStorage); if (CollectionUtils.isNotEmpty(l) && l.get(0).second() > 0) { return true; diff --git a/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java b/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java index cf4e7fdb2ccb..2f2b91d5e8a4 100644 --- a/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java +++ b/server/src/main/java/com/cloud/deploy/DeploymentPlanningManagerImpl.java @@ -31,20 +31,11 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.affinity.AffinityGroupDomainMapVO; -import com.cloud.storage.VMTemplateVO; -import com.cloud.storage.dao.VMTemplateDao; -import com.cloud.user.AccountVO; -import com.cloud.user.dao.AccountDao; -import com.cloud.exception.StorageUnavailableException; -import com.cloud.utils.db.Filter; -import com.cloud.utils.fsm.StateMachine2; - -import org.apache.cloudstack.framework.config.ConfigKey; -import org.apache.cloudstack.framework.config.Configurable; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; + +import org.apache.cloudstack.affinity.AffinityGroupDomainMapVO; import org.apache.cloudstack.affinity.AffinityGroupProcessor; import org.apache.cloudstack.affinity.AffinityGroupService; import org.apache.cloudstack.affinity.AffinityGroupVMMapVO; @@ -57,6 +48,8 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator; +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.framework.messagebus.MessageBus; import org.apache.cloudstack.framework.messagebus.MessageSubscriber; @@ -77,7 +70,7 @@ import com.cloud.capacity.CapacityManager; import com.cloud.capacity.dao.CapacityDao; import com.cloud.configuration.Config; -import com.cloud.configuration.ConfigurationManagerImpl; +import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.ClusterDetailsDao; import com.cloud.dc.ClusterDetailsVO; import com.cloud.dc.ClusterVO; @@ -95,6 +88,7 @@ import com.cloud.exception.AffinityConflictException; import com.cloud.exception.ConnectionException; import com.cloud.exception.InsufficientServerCapacityException; +import com.cloud.exception.StorageUnavailableException; import com.cloud.gpu.GPU; import com.cloud.host.DetailVO; import com.cloud.host.Host; @@ -115,26 +109,32 @@ import com.cloud.storage.StorageManager; import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePoolHostVO; +import com.cloud.storage.VMTemplateVO; import com.cloud.storage.Volume; import com.cloud.storage.VolumeVO; import com.cloud.storage.dao.DiskOfferingDao; import com.cloud.storage.dao.GuestOSCategoryDao; import com.cloud.storage.dao.GuestOSDao; import com.cloud.storage.dao.StoragePoolHostDao; +import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.user.AccountManager; +import com.cloud.user.AccountVO; +import com.cloud.user.dao.AccountDao; import com.cloud.utils.DateUtil; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.component.Manager; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; +import com.cloud.utils.db.Filter; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.TransactionCallback; import com.cloud.utils.db.TransactionStatus; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.fsm.StateListener; +import com.cloud.utils.fsm.StateMachine2; import com.cloud.vm.DiskProfile; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; @@ -1728,7 +1728,7 @@ protected Pair>, List> findSuitablePoolsFo if (vmProfile.getType() != VirtualMachine.Type.User) { DataCenterVO zone = _dcDao.findById(plan.getDataCenterId()); assert (zone != null) : "Invalid zone in deployment plan"; - Boolean useLocalStorageForSystemVM = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(zone.getId()); + Boolean useLocalStorageForSystemVM = ConfigurationManager.SystemVMUseLocalStorage.valueIn(zone.getId()); if (useLocalStorageForSystemVM != null) { useLocalStorage = useLocalStorageForSystemVM.booleanValue(); s_logger.debug("System VMs will use " + (useLocalStorage ? "local" : "shared") + " storage for zone id=" + plan.getDataCenterId()); diff --git a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java index ce62c7b4e3fe..ef4a82c1d546 100644 --- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java @@ -21,10 +21,11 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.log4j.Logger; -import com.cloud.configuration.Config; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; + +import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenterVO; @@ -60,7 +61,6 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu ConfigurationDao _configDao; @Inject NetworkModel networkModel; - String _cidr; String _gateway; private static final TrafficType[] TrafficTypes = {TrafficType.Control}; @@ -98,7 +98,7 @@ public Network design(NetworkOffering offering, DeploymentPlan plan, Network spe NetworkVO config = new NetworkVO(offering.getTrafficType(), Mode.Static, BroadcastDomainType.LinkLocal, offering.getId(), Network.State.Setup, plan.getDataCenterId(), plan.getPhysicalNetworkId(), offering.isRedundantRouter()); - config.setCidr(_cidr); + config.setCidr(ConfigurationManager.ControlCidr.valueIn(plan.getDataCenterId())); config.setGateway(_gateway); return config; @@ -150,7 +150,7 @@ public void reserve(NicProfile nic, Network config, VirtualMachineProfile vm, De throw new InsufficientAddressCapacityException("Insufficient link local address capacity", DataCenter.class, dest.getDataCenter().getId()); } - String netmask = NetUtils.cidr2Netmask(_cidr); + String netmask = NetUtils.cidr2Netmask(ConfigurationManager.ControlCidr.valueIn(dest.getDataCenter().getId())); s_logger.debug(String.format("Reserved NIC for %s [ipv4:%s netmask:%s gateway:%s]", vm.getInstanceName(), ip, netmask, _gateway)); @@ -215,18 +215,6 @@ public boolean configure(String name, Map params) throws Configu Map dbParams = _configDao.getConfiguration(params); - _cidr = dbParams.get(Config.ControlCidr.toString()); - if (_cidr == null) { - _cidr = NetUtils.getLinkLocalCIDR(); - } - - _gateway = dbParams.get(Config.ControlGateway.toString()); - if (_gateway == null) { - _gateway = NetUtils.getLinkLocalGateway(); - } - - s_logger.info("Control network setup: cidr=" + _cidr + "; gateway = " + _gateway); - return true; } diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java index 3f9447812a76..85566183199f 100644 --- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java @@ -58,7 +58,6 @@ import com.cloud.configuration.dao.ResourceCountDao; import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenterVO; -import com.cloud.dc.HostPodVO; import com.cloud.dc.VlanVO; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.HostPodDao; @@ -107,7 +106,6 @@ import com.cloud.utils.db.DB; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.TransactionCallbackNoReturn; -import com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn; import com.cloud.utils.db.TransactionLegacy; import com.cloud.utils.db.TransactionStatus; import com.cloud.utils.exception.CloudRuntimeException; @@ -863,63 +861,6 @@ private String getPrivateKey() throws NoSuchAlgorithmException { } - - @DB - protected HostPodVO createPod(long userId, String podName, final long zoneId, String gateway, String cidr, final String startIp, String endIp) - throws InternalErrorException { - String[] cidrPair = cidr.split("\\/"); - String cidrAddress = cidrPair[0]; - int cidrSize = Integer.parseInt(cidrPair[1]); - - if (startIp != null) { - if (endIp == null) { - endIp = NetUtils.getIpRangeEndIpFromCidr(cidrAddress, cidrSize); - } - } - - // Create the new pod in the database - String ipRange; - if (startIp != null) { - ipRange = startIp + "-"; - if (endIp != null) { - ipRange += endIp; - } - } else { - ipRange = ""; - } - - final HostPodVO pod = new HostPodVO(podName, zoneId, gateway, cidrAddress, cidrSize, ipRange); - try { - final String endIpFinal = endIp; - Transaction.execute(new TransactionCallbackWithExceptionNoReturn() { - @Override - public void doInTransactionWithoutResult(TransactionStatus status) throws InternalErrorException { - if (_podDao.persist(pod) == null) { - throw new InternalErrorException("Failed to create new pod. Please contact Cloud Support."); - } - - if (startIp != null) { - _zoneDao.addPrivateIpAddress(zoneId, pod.getId(), startIp, endIpFinal, false, null); - } - - String ipNums = _configDao.getValue("linkLocalIp.nums"); - int nums = Integer.parseInt(ipNums); - if (nums > 16 || nums <= 0) { - throw new InvalidParameterValueException("The linkLocalIp.nums: " + nums + "is wrong, should be 1~16"); - } - /* local link ip address starts from 169.254.0.2 - 169.254.(nums) */ - String[] linkLocalIpRanges = NetUtils.getLinkLocalIPRange(_configDao.getValue(Config.ControlCidr.key())); - _zoneDao.addLinkLocalIpAddress(zoneId, pod.getId(), linkLocalIpRanges[0], linkLocalIpRanges[1]); - } - }); - } catch (Exception e) { - s_logger.error("Unable to create new pod due to " + e.getMessage(), e); - throw new InternalErrorException("Failed to create new pod. Please contact Cloud Support."); - } - - return pod; - } - private DiskOfferingVO createDefaultDiskOffering(String name, String description, ProvisioningType provisioningType, int numGibibytes, String tags, boolean isCustomized, boolean isSystemUse) { long diskSize = numGibibytes; diff --git a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java index 643f29287e26..698cf178cdf9 100644 --- a/server/src/main/java/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/main/java/com/cloud/storage/StorageManagerImpl.java @@ -148,7 +148,6 @@ import com.cloud.cluster.ClusterManagerListener; import com.cloud.configuration.Config; import com.cloud.configuration.ConfigurationManager; -import com.cloud.configuration.ConfigurationManagerImpl; import com.cloud.configuration.Resource.ResourceType; import com.cloud.dc.ClusterVO; import com.cloud.dc.DataCenterVO; @@ -658,7 +657,7 @@ public DataStore createLocalStorage(Host host, StoragePoolInfo pInfo) throws Con return null; } boolean useLocalStorageForSystemVM = false; - Boolean isLocal = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dc.getId()); + Boolean isLocal = ConfigurationManager.SystemVMUseLocalStorage.valueIn(dc.getId()); if (isLocal != null) { useLocalStorageForSystemVM = isLocal.booleanValue(); } diff --git a/server/src/main/java/org/apache/cloudstack/network/router/deployment/RouterDeploymentDefinition.java b/server/src/main/java/org/apache/cloudstack/network/router/deployment/RouterDeploymentDefinition.java index 2b8ea7ffe5fe..3fca426d1149 100644 --- a/server/src/main/java/org/apache/cloudstack/network/router/deployment/RouterDeploymentDefinition.java +++ b/server/src/main/java/org/apache/cloudstack/network/router/deployment/RouterDeploymentDefinition.java @@ -20,15 +20,11 @@ import java.util.List; import java.util.Map; -import com.cloud.network.dao.NetworkDetailVO; -import com.cloud.network.dao.NetworkDetailsDao; -import com.cloud.network.router.VirtualRouter; -import com.cloud.storage.DiskOfferingVO; -import com.cloud.storage.dao.DiskOfferingDao; -import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.log4j.Logger; -import com.cloud.configuration.ConfigurationManagerImpl; +import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; + +import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.HostPodVO; import com.cloud.dc.Pod; @@ -41,6 +37,9 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.IpAddressManager; +import com.cloud.network.dao.NetworkDetailVO; +import com.cloud.network.dao.NetworkDetailsDao; +import com.cloud.network.router.VirtualRouter; import com.cloud.network.Network; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; @@ -63,6 +62,8 @@ import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; +import com.cloud.storage.DiskOfferingVO; +import com.cloud.storage.dao.DiskOfferingDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.utils.db.DB; @@ -389,7 +390,7 @@ protected void findSourceNatIP() throws InsufficientAddressCapacityException, Co } protected void findDefaultServiceOfferingId() { - ServiceOfferingVO serviceOffering = serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.routerDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId())); + ServiceOfferingVO serviceOffering = serviceOfferingDao.findDefaultSystemOffering(ServiceOffering.routerDefaultOffUniqueName, ConfigurationManager.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId())); serviceOfferingId = serviceOffering.getId(); } @@ -409,7 +410,7 @@ private void verifyServiceOfferingByUuid(String offeringUuid) { ServiceOfferingVO serviceOffering = serviceOfferingDao.findByUuid(offeringUuid); if (serviceOffering != null && serviceOffering.isSystemUse() && ServiceOffering.State.Active.equals(serviceOffering.getState())) { DiskOfferingVO diskOffering = diskOfferingDao.findById(serviceOffering.getDiskOfferingId()); - boolean isLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()); + boolean isLocalStorage = ConfigurationManager.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()); if (isLocalStorage == diskOffering.isUseLocalStorage()) { logger.debug(String.format("Service offering %s (uuid: %s) will be used on virtual router", serviceOffering.getName(), serviceOffering.getUuid())); serviceOfferingId = serviceOffering.getId(); diff --git a/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java b/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java index 715924d5c547..75ccaa69cec5 100644 --- a/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java +++ b/server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java @@ -1319,7 +1319,6 @@ public void testEdgeZoneCreatePod() { Mockito.when(zone.getType()).thenReturn(DataCenter.Type.Edge); Mockito.when(zone.getId()).thenReturn(1L); Mockito.when(_zoneDao.findById(Mockito.anyLong())).thenReturn(zone); - Mockito.when(_configDao.getValue(Config.ControlCidr.key())).thenReturn(Config.ControlCidr.getDefaultValue()); Mockito.when(_podDao.persist(Mockito.any(HostPodVO.class))).thenAnswer((Answer) invocation -> { HostPodVO pod = (HostPodVO)invocation.getArguments()[0]; ReflectionTestUtils.setField(pod, "uuid", UUID.randomUUID().toString()); diff --git a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java index 59ac4f449382..738b167eb9e4 100644 --- a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java @@ -31,6 +31,8 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.log4j.Logger; + import org.apache.cloudstack.agent.lb.IndirectAgentLB; import org.apache.cloudstack.ca.CAManager; import org.apache.cloudstack.context.CallContext; @@ -52,7 +54,6 @@ import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; @@ -71,7 +72,7 @@ import com.cloud.capacity.dao.CapacityDao; import com.cloud.cluster.ClusterManager; import com.cloud.configuration.Config; -import com.cloud.configuration.ConfigurationManagerImpl; +import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.ZoneConfig; import com.cloud.consoleproxy.ConsoleProxyManager; import com.cloud.dc.DataCenter; @@ -647,7 +648,7 @@ protected Map createSecStorageVmInstance(long dataCenterId, Seco ServiceOfferingVO serviceOffering = _serviceOffering; if (serviceOffering == null) { - serviceOffering = _offeringDao.findDefaultSystemOffering(ServiceOffering.ssvmDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId)); + serviceOffering = _offeringDao.findDefaultSystemOffering(ServiceOffering.ssvmDefaultOffUniqueName, ConfigurationManager.SystemVMUseLocalStorage.valueIn(dataCenterId)); } SecondaryStorageVmVO secStorageVm = new SecondaryStorageVmVO(id, serviceOffering.getId(), name, template.getId(), template.getHypervisorType(), template.getGuestOSId(), dataCenterId, @@ -826,13 +827,13 @@ public boolean isZoneReady(Map zoneHostInfoMap, long dataCen return false; } - boolean useLocalStorage = BooleanUtils.toBoolean(ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId)); + boolean useLocalStorage = BooleanUtils.toBoolean(ConfigurationManager.SystemVMUseLocalStorage.valueIn(dataCenterId)); List> storagePoolHostInfos = _storagePoolHostDao.getDatacenterStoragePoolHostInfo(dataCenterId, !useLocalStorage); if (CollectionUtils.isNotEmpty(storagePoolHostInfos) && storagePoolHostInfos.get(0).second() > 0) { return true; } else { if (s_logger.isDebugEnabled()) { - String configKey = ConfigurationManagerImpl.SystemVMUseLocalStorage.key(); + String configKey = ConfigurationManager.SystemVMUseLocalStorage.key(); s_logger.debug(String.format("Primary storage is not ready, wait until it is ready to launch secondary storage VM. {\"dataCenterId\": %s, \"%s\": \"%s\"}. " + "If you want to use local storage to start secondary storage VM, you need to set the configuration [%s] to \"true\".", dataCenterId, configKey, useLocalStorage, configKey)); } From 3d390b177273c027d8f4ad7b66021f0f2e2ac2c6 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Wed, 19 Jul 2023 10:53:28 +0200 Subject: [PATCH 2/7] merge mistake fixed --- .../main/java/com/cloud/network/guru/ControlNetworkGuru.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java index ef4a82c1d546..1e718b3afe98 100644 --- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java @@ -21,6 +21,7 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; +import com.cloud.network.NetworkModel; import org.apache.log4j.Logger; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; @@ -62,6 +63,8 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu @Inject NetworkModel networkModel; String _gateway; + @Inject + NetworkModel networkModel; private static final TrafficType[] TrafficTypes = {TrafficType.Control}; From 8cd48ac9bab558ba81ed7bb9c401b7575694e9cf Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Thu, 20 Jul 2023 13:24:31 +0200 Subject: [PATCH 3/7] some open ends --- .../com/cloud/configuration/ConfigurationManagerImpl.java | 2 +- .../main/java/com/cloud/network/guru/ControlNetworkGuru.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index 8ce1b745074e..534bbf91d18d 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -7626,7 +7626,7 @@ public String getConfigComponentName() { @Override public ConfigKey[] getConfigKeys() { - return new ConfigKey[] {SystemVMUseLocalStorage, IOPS_MAX_READ_LENGTH, IOPS_MAX_WRITE_LENGTH, + return new ConfigKey[] {SystemVMUseLocalStorage, ControlCidr, IOPS_MAX_READ_LENGTH, IOPS_MAX_WRITE_LENGTH, BYTES_MAX_READ_LENGTH, BYTES_MAX_WRITE_LENGTH, ADD_HOST_ON_SERVICE_RESTART_KVM, SET_HOST_DOWN_TO_MAINTENANCE, VM_SERVICE_OFFERING_MAX_CPU_CORES, VM_SERVICE_OFFERING_MAX_RAM_SIZE, VM_USERDATA_MAX_LENGTH, MIGRATE_VM_ACROSS_CLUSTERS, ENABLE_ACCOUNT_SETTINGS_FOR_DOMAIN, ENABLE_DOMAIN_SETTINGS_FOR_CHILD_DOMAIN, ALLOW_DOMAIN_ADMINS_TO_CREATE_TAGGED_OFFERINGS diff --git a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java index 1e718b3afe98..9bbe55acf8a3 100644 --- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java @@ -21,9 +21,6 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; -import com.cloud.network.NetworkModel; -import org.apache.log4j.Logger; - import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import com.cloud.configuration.ConfigurationManager; @@ -54,6 +51,8 @@ import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; +import org.apache.log4j.Logger; + public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGuru { private static final Logger s_logger = Logger.getLogger(ControlNetworkGuru.class); @Inject From 34dabe40800b2941eecce44524ff2a430e1588c4 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 4 Aug 2023 14:40:55 +0200 Subject: [PATCH 4/7] double var --- .../main/java/com/cloud/network/guru/ControlNetworkGuru.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java index 9bbe55acf8a3..c7ab3c02646b 100644 --- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java @@ -62,8 +62,6 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu @Inject NetworkModel networkModel; String _gateway; - @Inject - NetworkModel networkModel; private static final TrafficType[] TrafficTypes = {TrafficType.Control}; From a7b9fbecacf7ee50f21270d6a27c10cadc15c212 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Mon, 14 Aug 2023 14:52:41 +0200 Subject: [PATCH 5/7] dynamic gateway value (per zone) --- .../com/cloud/configuration/ConfigurationManager.java | 11 +++++++++++ .../src/main/java/com/cloud/configuration/Config.java | 1 - .../cloud/configuration/ConfigurationManagerImpl.java | 2 +- .../com/cloud/network/guru/ControlNetworkGuru.java | 8 ++++---- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java index 149a109f7ddf..98dd5f4d377f 100644 --- a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java +++ b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Set; +import net.sf.ehcache.management.ManagementServer; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.impl.ConfigurationSubGroupVO; @@ -80,6 +81,16 @@ public interface ConfigurationManager { ConfigKey.Scope.Zone, null); + ConfigKey ControlGateway = new ConfigKey<>( + String.class, + "control.gateway", + "Advanced", + "169.254.0.1", + "gateway for the control network traffic", + true, + ConfigKey.Scope.Zone, + null); + /** * @param offering * @return diff --git a/server/src/main/java/com/cloud/configuration/Config.java b/server/src/main/java/com/cloud/configuration/Config.java index d0dbcafc6afe..f976cf787a66 100644 --- a/server/src/main/java/com/cloud/configuration/Config.java +++ b/server/src/main/java/com/cloud/configuration/Config.java @@ -885,7 +885,6 @@ public enum Config { "0", "Default disk I/O writerate in bytes per second allowed in User vm's disk.", null), - ControlGateway("Advanced", ManagementServer.class, String.class, "control.gateway", "169.254.0.1", "gateway for the control network traffic", null), HostCapacityTypeToOrderClusters( "Advanced", ManagementServer.class, diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index 534bbf91d18d..c2f9e10ecce0 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -7626,7 +7626,7 @@ public String getConfigComponentName() { @Override public ConfigKey[] getConfigKeys() { - return new ConfigKey[] {SystemVMUseLocalStorage, ControlCidr, IOPS_MAX_READ_LENGTH, IOPS_MAX_WRITE_LENGTH, + return new ConfigKey[] {SystemVMUseLocalStorage, ControlCidr, ControlGateway, IOPS_MAX_READ_LENGTH, IOPS_MAX_WRITE_LENGTH, BYTES_MAX_READ_LENGTH, BYTES_MAX_WRITE_LENGTH, ADD_HOST_ON_SERVICE_RESTART_KVM, SET_HOST_DOWN_TO_MAINTENANCE, VM_SERVICE_OFFERING_MAX_CPU_CORES, VM_SERVICE_OFFERING_MAX_RAM_SIZE, VM_USERDATA_MAX_LENGTH, MIGRATE_VM_ACROSS_CLUSTERS, ENABLE_ACCOUNT_SETTINGS_FOR_DOMAIN, ENABLE_DOMAIN_SETTINGS_FOR_CHILD_DOMAIN, ALLOW_DOMAIN_ADMINS_TO_CREATE_TAGGED_OFFERINGS diff --git a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java index c7ab3c02646b..12ca980a12e4 100644 --- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java @@ -61,7 +61,6 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu ConfigurationDao _configDao; @Inject NetworkModel networkModel; - String _gateway; private static final TrafficType[] TrafficTypes = {TrafficType.Control}; @@ -99,7 +98,7 @@ public Network design(NetworkOffering offering, DeploymentPlan plan, Network spe new NetworkVO(offering.getTrafficType(), Mode.Static, BroadcastDomainType.LinkLocal, offering.getId(), Network.State.Setup, plan.getDataCenterId(), plan.getPhysicalNetworkId(), offering.isRedundantRouter()); config.setCidr(ConfigurationManager.ControlCidr.valueIn(plan.getDataCenterId())); - config.setGateway(_gateway); + config.setGateway(ConfigurationManager.ControlGateway.valueIn(plan.getDataCenterId())); return config; } @@ -151,14 +150,15 @@ public void reserve(NicProfile nic, Network config, VirtualMachineProfile vm, De } String netmask = NetUtils.cidr2Netmask(ConfigurationManager.ControlCidr.valueIn(dest.getDataCenter().getId())); + String gateway = ConfigurationManager.ControlGateway.valueIn(dest.getDataCenter().getId()); - s_logger.debug(String.format("Reserved NIC for %s [ipv4:%s netmask:%s gateway:%s]", vm.getInstanceName(), ip, netmask, _gateway)); + s_logger.debug(String.format("Reserved NIC for %s [ipv4:%s netmask:%s gateway:%s]", vm.getInstanceName(), ip, netmask, gateway)); nic.setIPv4Address(ip); nic.setMacAddress(NetUtils.long2Mac(NetUtils.ip2Long(ip) | (14l << 40))); nic.setIPv4Netmask(netmask); nic.setFormat(AddressFormat.Ip4); - nic.setIPv4Gateway(_gateway); + nic.setIPv4Gateway(gateway); } @Override From efd2cd907bbf010a495f5082f11d967cf4d2f0c9 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Mon, 14 Aug 2023 16:13:02 +0200 Subject: [PATCH 6/7] import --- .../main/java/com/cloud/configuration/ConfigurationManager.java | 1 - 1 file changed, 1 deletion(-) diff --git a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java index 98dd5f4d377f..409015504f06 100644 --- a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java +++ b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java @@ -20,7 +20,6 @@ import java.util.Map; import java.util.Set; -import net.sf.ehcache.management.ManagementServer; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.impl.ConfigurationSubGroupVO; From 3dd5858f4a72354583d5f99a2d3838b7afdcce0c Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Thu, 17 Aug 2023 11:36:41 +0200 Subject: [PATCH 7/7] control cidr/gateway not dynamoic --- .../java/com/cloud/configuration/ConfigurationManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java index 409015504f06..24453cdbe10d 100644 --- a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java +++ b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java @@ -76,7 +76,7 @@ public interface ConfigurationManager { "Advanced", "169.254.0.0/16", "Changes the cidr for the control network traffic. Defaults to using link local. Must be unique within pods", - true, + false, ConfigKey.Scope.Zone, null); @@ -86,7 +86,7 @@ public interface ConfigurationManager { "Advanced", "169.254.0.1", "gateway for the control network traffic", - true, + false, ConfigKey.Scope.Zone, null);