From 3f5a989cbd121e45fcd800a8ba133e9925400ca1 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 28 Feb 2020 20:46:03 +0000 Subject: [PATCH 1/4] server: add global configuration for default router service offering --- .../VirtualNetworkApplianceManager.java | 3 +++ .../VirtualNetworkApplianceManagerImpl.java | 1 + .../RouterDeploymentDefinition.java | 19 ++++++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManager.java b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManager.java index eba23f3fe3df..b26ada095e20 100644 --- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManager.java +++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManager.java @@ -44,6 +44,7 @@ public interface VirtualNetworkApplianceManager extends Manager, VirtualNetworkA static final String RouterTemplateOvm3CK = "router.template.ovm3"; static final String SetServiceMonitorCK = "network.router.EnableServiceMonitoring"; static final String RouterAlertsCheckIntervalCK = "router.alerts.check.interval"; + static final String VirtualRouterServiceOfferingCK = "router.service.offering"; static final String RouterHealthChecksConfigRefreshIntervalCK = "router.health.checks.config.refresh.interval"; static final String RouterHealthChecksResultFetchIntervalCK = "router.health.checks.results.fetch.interval"; @@ -71,6 +72,8 @@ public interface VirtualNetworkApplianceManager extends Manager, VirtualNetworkA "If true, router minimum required version is checked before sending command", false); static final ConfigKey UseExternalDnsServers = new ConfigKey(Boolean.class, "use.external.dns", "Advanced", "false", "Bypass internal dns, use external dns1 and dns2", true, ConfigKey.Scope.Zone, null); + static final ConfigKey VirtualRouterServiceOffering = new ConfigKey(String.class, VirtualRouterServiceOfferingCK, "Advanced", "", + "Uuid of the service offering used by virtual routers; if NULL - system offering will be used", true, ConfigKey.Scope.Account, null); // Health checks static final ConfigKey RouterHealthChecksEnabled = new ConfigKey(Boolean.class, "router.health.checks.enabled", "Advanced", "true", diff --git a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 65d6b85d66d4..c3057c471217 100644 --- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -3248,6 +3248,7 @@ public ConfigKey[] getConfigKeys() { UseExternalDnsServers, RouterVersionCheckEnabled, SetServiceMonitor, + VirtualRouterServiceOffering, RouterAlertsCheckInterval, RouterHealthChecksEnabled, RouterHealthChecksBasicInterval, diff --git a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java index 4ff5fa2dc28a..82a0fec1a5e0 100644 --- a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java +++ b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java @@ -54,6 +54,7 @@ import com.cloud.network.dao.UserIpv6AddressDao; import com.cloud.network.dao.VirtualRouterProviderDao; import com.cloud.network.router.NetworkHelper; +import com.cloud.network.router.VirtualNetworkApplianceManager; import com.cloud.network.router.VirtualRouter.Role; import com.cloud.network.vpc.Vpc; import com.cloud.offering.ServiceOffering; @@ -389,8 +390,24 @@ protected void findDefaultServiceOfferingId() { serviceOfferingId = serviceOffering.getId(); } + protected void findAccountServiceOfferingId() { + String accountRouterOffering = VirtualNetworkApplianceManager.VirtualRouterServiceOffering.valueIn(guestNetwork.getAccountId()); + if (accountRouterOffering != null) { + ServiceOfferingVO serviceOffering = serviceOfferingDao.findByUuid(accountRouterOffering); + if (serviceOffering != null && serviceOffering.isSystemUse()) { + boolean isLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()); + if (isLocalStorage == serviceOffering.isUseLocalStorage()) { + serviceOfferingId = serviceOffering.getId(); + } + } + } + } + protected void findServiceOfferingId() { serviceOfferingId = networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()).getServiceOfferingId(); + if (serviceOfferingId == null) { + findAccountServiceOfferingId(); + } if (serviceOfferingId == null) { findDefaultServiceOfferingId(); } @@ -482,4 +499,4 @@ protected boolean routersNeedReset() { return needReset; } -} \ No newline at end of file +} From a39c3e61666c8cdf0f1d4943a180b5e0cbf527ef Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 5 Mar 2020 23:06:33 +0000 Subject: [PATCH 2/4] server: use router offering on vpc vr --- .../router/deployment/RouterDeploymentDefinition.java | 6 +++--- .../router/deployment/VpcRouterDeploymentDefinition.java | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java index 82a0fec1a5e0..7c00974e9f56 100644 --- a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java +++ b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java @@ -390,8 +390,8 @@ protected void findDefaultServiceOfferingId() { serviceOfferingId = serviceOffering.getId(); } - protected void findAccountServiceOfferingId() { - String accountRouterOffering = VirtualNetworkApplianceManager.VirtualRouterServiceOffering.valueIn(guestNetwork.getAccountId()); + protected void findAccountServiceOfferingId(long accountId) { + String accountRouterOffering = VirtualNetworkApplianceManager.VirtualRouterServiceOffering.valueIn(accountId); if (accountRouterOffering != null) { ServiceOfferingVO serviceOffering = serviceOfferingDao.findByUuid(accountRouterOffering); if (serviceOffering != null && serviceOffering.isSystemUse()) { @@ -406,7 +406,7 @@ protected void findAccountServiceOfferingId() { protected void findServiceOfferingId() { serviceOfferingId = networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()).getServiceOfferingId(); if (serviceOfferingId == null) { - findAccountServiceOfferingId(); + findAccountServiceOfferingId(guestNetwork.getAccountId()); } if (serviceOfferingId == null) { findDefaultServiceOfferingId(); diff --git a/server/src/main/java/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java b/server/src/main/java/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java index f58491894239..91efecee9f53 100644 --- a/server/src/main/java/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java +++ b/server/src/main/java/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java @@ -159,6 +159,9 @@ protected void findVirtualProvider() { @Override protected void findServiceOfferingId() { serviceOfferingId = vpcOffDao.findById(vpc.getVpcOfferingId()).getServiceOfferingId(); + if (serviceOfferingId == null) { + findAccountServiceOfferingId(vpc.getAccountId()); + } if (serviceOfferingId == null) { findDefaultServiceOfferingId(); } From 454f5aa260945fd5c0df2d7668fb4f33fb13b523 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 12 Mar 2020 21:36:13 +0000 Subject: [PATCH 3/4] server: verify global setting if account setting is invalid --- .../RouterDeploymentDefinition.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java index 7c00974e9f56..f7b3af190104 100644 --- a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java +++ b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java @@ -392,13 +392,23 @@ protected void findDefaultServiceOfferingId() { protected void findAccountServiceOfferingId(long accountId) { String accountRouterOffering = VirtualNetworkApplianceManager.VirtualRouterServiceOffering.valueIn(accountId); + String globalRouterOffering = VirtualNetworkApplianceManager.VirtualRouterServiceOffering.value(); if (accountRouterOffering != null) { - ServiceOfferingVO serviceOffering = serviceOfferingDao.findByUuid(accountRouterOffering); - if (serviceOffering != null && serviceOffering.isSystemUse()) { - boolean isLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()); - if (isLocalStorage == serviceOffering.isUseLocalStorage()) { - serviceOfferingId = serviceOffering.getId(); - } + verifyServiceOfferingByUuid(accountRouterOffering); + } + if (serviceOfferingId == null && globalRouterOffering != accountRouterOffering) { + verifyServiceOfferingByUuid(globalRouterOffering); + } + } + + private void verifyServiceOfferingByUuid(String offeringUuid) { + logger.debug("Verifying router service offering with uuid : " + offeringUuid); + ServiceOfferingVO serviceOffering = serviceOfferingDao.findByUuid(offeringUuid); + if (serviceOffering != null && serviceOffering.isSystemUse()) { + boolean isLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()); + if (isLocalStorage == serviceOffering.isUseLocalStorage()) { + logger.debug("service offering " + serviceOffering.getId() + " will be used on virtual router"); + serviceOfferingId = serviceOffering.getId(); } } } From 3783a092a9431e64f6cf11fc7a1056b338f4f7ab Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 13 Mar 2020 16:21:25 +0000 Subject: [PATCH 4/4] server: change debug info --- .../network/router/deployment/RouterDeploymentDefinition.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java index f7b3af190104..24bc501ca73a 100644 --- a/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java +++ b/server/src/main/java/org/cloud/network/router/deployment/RouterDeploymentDefinition.java @@ -407,7 +407,7 @@ private void verifyServiceOfferingByUuid(String offeringUuid) { if (serviceOffering != null && serviceOffering.isSystemUse()) { boolean isLocalStorage = ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dest.getDataCenter().getId()); if (isLocalStorage == serviceOffering.isUseLocalStorage()) { - logger.debug("service offering " + serviceOffering.getId() + " will be used on virtual router"); + logger.debug(String.format("Service offering %s (uuid: %s) will be used on virtual router", serviceOffering.getName(), serviceOffering.getUuid())); serviceOfferingId = serviceOffering.getId(); } }