From e4414d1c4491620cf35a8948b6a835c9f82b65b7 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Wed, 3 Dec 2025 11:19:47 +0530 Subject: [PATCH 01/96] Fix agent wait before reconnect (#12153) --- agent/src/main/java/com/cloud/agent/Agent.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/agent/src/main/java/com/cloud/agent/Agent.java b/agent/src/main/java/com/cloud/agent/Agent.java index 23b5e790eb9..c01f025c6a8 100644 --- a/agent/src/main/java/com/cloud/agent/Agent.java +++ b/agent/src/main/java/com/cloud/agent/Agent.java @@ -1228,7 +1228,14 @@ public class Agent implements HandlerFactory, IAgentControl, AgentStatusUpdater logger.error("Error parsing task", e); } } else if (task.getType() == Task.Type.DISCONNECT) { - logger.debug("Executing disconnect task - {}", () -> getLinkLog(task.getLink())); + try { + // an issue has been found if reconnect immediately after disconnecting. + // wait 5 seconds before reconnecting + logger.debug("Wait for 5 secs before reconnecting, disconnect task - {}", () -> getLinkLog(task.getLink())); + Thread.sleep(5000); + } catch (InterruptedException e) { + } + logger.debug("Executing disconnect task - {} and reconnecting", () -> getLinkLog(task.getLink())); reconnect(task.getLink()); } else if (task.getType() == Task.Type.OTHER) { processOtherTask(task); From 4379666fb62ded6aa4e102ebba7eada1243421c9 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Wed, 3 Dec 2025 17:05:22 +0530 Subject: [PATCH 02/96] Proxmox Extension : Make settings such as storage, disk_size,... (#12174) Make storage, disk-size and os-type configurable in the Proxmox extension Doc PR: apache/cloudstack-documentation#601 --------- Co-authored-by: dahn --- extensions/Proxmox/proxmox.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/extensions/Proxmox/proxmox.sh b/extensions/Proxmox/proxmox.sh index 23f30311e2b..fc27f2f3075 100755 --- a/extensions/Proxmox/proxmox.sh +++ b/extensions/Proxmox/proxmox.sh @@ -39,6 +39,10 @@ parse_json() { "template_id": (.externaldetails.virtualmachine.template_id // ""), "template_type": (.externaldetails.virtualmachine.template_type // ""), "iso_path": (.externaldetails.virtualmachine.iso_path // ""), + "iso_os_type": (.externaldetails.virtualmachine.iso_os_type // "l26"), + "disk_size_gb": (.externaldetails.virtualmachine.disk_size_gb // "64"), + "storage": (.externaldetails.virtualmachine.storage // "local-lvm"), + "is_full_clone": (.externaldetails.virtualmachine.is_full_clone // "false"), "snap_name": (.parameters.snap_name // ""), "snap_description": (.parameters.snap_description // ""), "snap_save_memory": (.parameters.snap_save_memory // ""), @@ -212,9 +216,9 @@ create() { local data="vmid=$vmid" data+="&name=$vm_name" data+="&ide2=$(urlencode "$iso_path,media=cdrom")" - data+="&ostype=l26" + data+="&ostype=$iso_os_type" data+="&scsihw=virtio-scsi-single" - data+="&scsi0=$(urlencode "local-lvm:64,iothread=on")" + data+="&scsi0=$(urlencode "$storage:$disk_size_gb,iothread=on")" data+="&sockets=1" data+="&cores=$vmcpus" data+="&numa=0" @@ -228,6 +232,8 @@ create() { check_required_fields template_id local data="newid=$vmid" data+="&name=$vm_name" + clone_flag=$(( is_full_clone == "true" )) + data+="&storage=$storage&full=$clone_flag" execute_and_wait POST "/nodes/${node}/qemu/${template_id}/clone" "$data" cleanup_vm=1 From 12f432195284dbd420f20dbb7590d2b27f58621b Mon Sep 17 00:00:00 2001 From: Lucas Martins <56271185+lucas-a-martins@users.noreply.github.com> Date: Mon, 8 Dec 2025 05:41:56 -0300 Subject: [PATCH 03/96] Changes error message when using invalid `endpoint.url` (#8603) Co-authored-by: lucas.martins.scclouds Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com> Co-authored-by: erikbocks --- .../config/ApiServiceConfiguration.java | 19 ++++ .../config/ApiServiceConfigurationTest.java | 95 +++++++++++++++++++ .../cluster/KubernetesClusterManagerImpl.java | 15 +-- .../KubernetesClusterActionWorker.java | 2 +- .../network/as/AutoScaleManagerImpl.java | 5 +- .../lb/LoadBalancingRulesManagerImpl.java | 8 +- 6 files changed, 122 insertions(+), 22 deletions(-) create mode 100644 api/src/test/java/org/apache/cloudstack/config/ApiServiceConfigurationTest.java diff --git a/api/src/main/java/org/apache/cloudstack/config/ApiServiceConfiguration.java b/api/src/main/java/org/apache/cloudstack/config/ApiServiceConfiguration.java index a4aa860487f..113b97f43c8 100644 --- a/api/src/main/java/org/apache/cloudstack/config/ApiServiceConfiguration.java +++ b/api/src/main/java/org/apache/cloudstack/config/ApiServiceConfiguration.java @@ -16,10 +16,15 @@ // under the License. package org.apache.cloudstack.config; +import com.cloud.exception.InvalidParameterValueException; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class ApiServiceConfiguration implements Configurable { + protected static Logger LOGGER = LogManager.getLogger(ApiServiceConfiguration.class); public static final ConfigKey ManagementServerAddresses = new ConfigKey<>(String.class, "host", "Advanced", "localhost", "The ip address of management server. This can also accept comma separated addresses.", true, ConfigKey.Scope.Global, null, null, null, null, null, ConfigKey.Kind.CSV, null); public static final ConfigKey ApiServletPath = new ConfigKey("Advanced", String.class, "endpoint.url", "http://localhost:8080/client/api", "API end point. Can be used by CS components/services deployed remotely, for sending CS API requests", true); @@ -29,6 +34,20 @@ public class ApiServiceConfiguration implements Configurable { "true", "Are the source checks on API calls enabled (true) or not (false)? See api.allowed.source.cidr.list", true, ConfigKey.Scope.Global); public static final ConfigKey ApiAllowedSourceCidrList = new ConfigKey<>(String.class, "api.allowed.source.cidr.list", "Advanced", "0.0.0.0/0,::/0", "Comma separated list of IPv4/IPv6 CIDRs from which API calls can be performed. Can be set on Global and Account levels.", true, ConfigKey.Scope.Account, null, null, null, null, null, ConfigKey.Kind.CSV, null); + + + public static void validateEndpointUrl() { + String csUrl = getApiServletPathValue(); + if (StringUtils.isBlank(csUrl) || StringUtils.containsAny(csUrl, "localhost", "127.0.0.1", "[::1]")) { + LOGGER.error("Global setting [{}] cannot contain localhost or be blank. Current value: {}", ApiServletPath.key(), csUrl); + throw new InvalidParameterValueException("Unable to complete this operation. Contact your cloud admin."); + } + } + + public static String getApiServletPathValue() { + return ApiServletPath.value(); + } + @Override public String getConfigComponentName() { return ApiServiceConfiguration.class.getSimpleName(); diff --git a/api/src/test/java/org/apache/cloudstack/config/ApiServiceConfigurationTest.java b/api/src/test/java/org/apache/cloudstack/config/ApiServiceConfigurationTest.java new file mode 100644 index 00000000000..4e96af3ead4 --- /dev/null +++ b/api/src/test/java/org/apache/cloudstack/config/ApiServiceConfigurationTest.java @@ -0,0 +1,95 @@ +// 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 org.apache.cloudstack.config; + +import com.cloud.exception.InvalidParameterValueException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class ApiServiceConfigurationTest { + + private static final String LOCALHOST = "http://localhost"; + + private static final String ENDPOINT_URL = "https://acs.clouds.com/client/api"; + + private static final String WHITE_SPACE = " "; + + private static final String BLANK_STRING = ""; + + private static final String NULL_STRING = null; + + private static final String LOCALHOST_IP = "127.0.0.1"; + + @Test(expected = InvalidParameterValueException.class) + public void validateEndpointUrlTestIfEndpointUrlContainLocalhostShouldThrowInvalidParameterValueException() { + try (MockedStatic apiServiceConfigurationMockedStatic = Mockito.mockStatic(ApiServiceConfiguration.class)) { + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::getApiServletPathValue).thenReturn(LOCALHOST); + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::validateEndpointUrl).thenCallRealMethod(); + ApiServiceConfiguration.validateEndpointUrl(); + } + } + + @Test + public void validateEndpointUrlTestIfEndpointUrlContainLocalhostShouldNotThrowInvalidParameterValueException() { + try (MockedStatic apiServiceConfigurationMockedStatic = Mockito.mockStatic(ApiServiceConfiguration.class)) { + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::getApiServletPathValue).thenReturn(ENDPOINT_URL); + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::validateEndpointUrl).thenCallRealMethod(); + ApiServiceConfiguration.validateEndpointUrl(); + } + } + + @Test(expected = InvalidParameterValueException.class) + public void validateEndpointUrlTestIfEndpointUrlIsNullShouldThrowInvalidParameterValueException() { + try (MockedStatic apiServiceConfigurationMockedStatic = Mockito.mockStatic(ApiServiceConfiguration.class)) { + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::getApiServletPathValue).thenReturn(NULL_STRING); + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::validateEndpointUrl).thenCallRealMethod(); + ApiServiceConfiguration.validateEndpointUrl(); + } + } + + @Test(expected = InvalidParameterValueException.class) + public void validateEndpointUrlTestIfEndpointUrlIsBlankShouldThrowInvalidParameterValueException() { + try (MockedStatic apiServiceConfigurationMockedStatic = Mockito.mockStatic(ApiServiceConfiguration.class)) { + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::getApiServletPathValue).thenReturn(BLANK_STRING); + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::validateEndpointUrl).thenCallRealMethod(); + ApiServiceConfiguration.validateEndpointUrl(); + } + } + + @Test(expected = InvalidParameterValueException.class) + public void validateEndpointUrlTestIfEndpointUrlIsWhiteSpaceShouldThrowInvalidParameterValueException() { + try (MockedStatic apiServiceConfigurationMockedStatic = Mockito.mockStatic(ApiServiceConfiguration.class)) { + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::getApiServletPathValue).thenReturn(WHITE_SPACE); + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::validateEndpointUrl).thenCallRealMethod(); + ApiServiceConfiguration.validateEndpointUrl(); + } + } + + @Test(expected = InvalidParameterValueException.class) + public void validateEndpointUrlTestIfEndpointUrlContainLocalhostIpShouldThrowInvalidParameterValueException() { + try (MockedStatic apiServiceConfigurationMockedStatic = Mockito.mockStatic(ApiServiceConfiguration.class)) { + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::getApiServletPathValue).thenReturn(LOCALHOST_IP); + apiServiceConfigurationMockedStatic.when(ApiServiceConfiguration::validateEndpointUrl).thenCallRealMethod(); + ApiServiceConfiguration.validateEndpointUrl(); + } + } +} diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java index 213657db073..422c9072fbf 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java +++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java @@ -905,15 +905,6 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne return response; } - private void validateEndpointUrl() { - String csUrl = ApiServiceConfiguration.ApiServletPath.value(); - if (csUrl == null || csUrl.contains("localhost")) { - String error = String.format("Global setting %s has to be set to the Management Server's API end point", - ApiServiceConfiguration.ApiServletPath.key()); - throw new InvalidParameterValueException(error); - } - } - private DataCenter validateAndGetZoneForKubernetesCreateParameters(Long zoneId, Long networkId) { DataCenter zone = dataCenterDao.findById(zoneId); if (zone == null) { @@ -1008,7 +999,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne } private void validateManagedKubernetesClusterCreateParameters(final CreateKubernetesClusterCmd cmd) throws CloudRuntimeException { - validateEndpointUrl(); + ApiServiceConfiguration.validateEndpointUrl(); final String name = cmd.getName(); final Long zoneId = cmd.getZoneId(); final Long kubernetesVersionId = cmd.getKubernetesVersionId(); @@ -1308,7 +1299,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne KubernetesVersionManagerImpl.MINIMUN_AUTOSCALER_SUPPORTED_VERSION )); } - validateEndpointUrl(); + ApiServiceConfiguration.validateEndpointUrl(); if (minSize == null || maxSize == null) { throw new InvalidParameterValueException("Autoscaling requires minsize and maxsize to be passed"); @@ -1413,7 +1404,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne private void validateKubernetesClusterUpgradeParameters(UpgradeKubernetesClusterCmd cmd) { // Validate parameters - validateEndpointUrl(); + ApiServiceConfiguration.validateEndpointUrl(); final Long kubernetesClusterId = cmd.getId(); final Long upgradeVersionId = cmd.getKubernetesVersionId(); diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java index baf717612f8..cd334954946 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java +++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterActionWorker.java @@ -685,7 +685,7 @@ public class KubernetesClusterActionWorker { try { String command = String.format("sudo %s/%s -u '%s' -k '%s' -s '%s'", - scriptPath, deploySecretsScriptFilename, ApiServiceConfiguration.ApiServletPath.value(), keys[0], keys[1]); + scriptPath, deploySecretsScriptFilename, ApiServiceConfiguration.getApiServletPathValue(), keys[0], keys[1]); Account account = accountDao.findById(kubernetesCluster.getAccountId()); if (account != null && account.getType() == Account.Type.PROJECT) { String projectId = projectService.findByProjectAccountId(account.getId()).getUuid(); diff --git a/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java index 90380b77e44..232c4a6bd68 100644 --- a/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java +++ b/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java @@ -512,7 +512,6 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScaleManage String apiKey = user.getApiKey(); String secretKey = user.getSecretKey(); - String csUrl = ApiServiceConfiguration.ApiServletPath.value(); if (apiKey == null) { throw new InvalidParameterValueException("apiKey for user: " + user.getUsername() + " is empty. Please generate it"); @@ -522,9 +521,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScaleManage throw new InvalidParameterValueException("secretKey for user: " + user.getUsername() + " is empty. Please generate it"); } - if (csUrl == null || csUrl.contains("localhost")) { - throw new InvalidParameterValueException(String.format("Global setting %s has to be set to the Management Server's API end point", ApiServiceConfiguration.ApiServletPath.key())); - } + ApiServiceConfiguration.validateEndpointUrl(); } @Override @ActionEvent(eventType = EventTypes.EVENT_AUTOSCALEVMPROFILE_CREATE, eventDescription = "creating autoscale vm profile", create = true) diff --git a/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 5ceebf06dd8..df60553bb8e 100644 --- a/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -337,7 +337,6 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements String apiKey = null; String secretKey = null; - String csUrl = ApiServiceConfiguration.ApiServletPath.value(); Network.Provider provider = getLoadBalancerServiceProvider(lb); if (Network.Provider.Netscaler.equals(provider)) { Long autoscaleUserId = autoScaleVmProfile.getAutoScaleUserId(); @@ -358,13 +357,12 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements throw new InvalidParameterValueException("secretKey for user: " + user.getUsername() + " is empty. Please generate it"); } - if (csUrl == null || csUrl.contains("localhost")) { - throw new InvalidParameterValueException(String.format("Global setting %s has to be set to the Management Server's API end point", ApiServiceConfiguration.ApiServletPath.key())); - } + ApiServiceConfiguration.validateEndpointUrl(); } LbAutoScaleVmProfile lbAutoScaleVmProfile = - new LbAutoScaleVmProfile(autoScaleVmProfile, apiKey, secretKey, csUrl, zoneId, domainId, serviceOfferingId, templateId, vmName, lbNetworkUuid); + new LbAutoScaleVmProfile(autoScaleVmProfile, apiKey, secretKey, ApiServiceConfiguration.getApiServletPathValue(), zoneId, domainId, serviceOfferingId, templateId, + vmName, lbNetworkUuid); return new LbAutoScaleVmGroup(vmGroup, autoScalePolicies, lbAutoScaleVmProfile, currentState); } From c81295439f82ddac2116643dfb52907f763bbd7c Mon Sep 17 00:00:00 2001 From: dahn Date: Mon, 8 Dec 2025 16:31:48 +0100 Subject: [PATCH 04/96] removed code in comments (#11145) --- .../src/main/java/com/cloud/agent/Agent.java | 1 - .../main/java/com/cloud/host/HostStats.java | 1 - .../network/rules/LbStickinessMethod.java | 4 +- .../iso/ListIsoPermissionsCmdByAdmin.java | 2 +- .../ListTemplatePermissionsCmdByAdmin.java | 2 +- .../user/iso/ListIsoPermissionsCmd.java | 2 +- .../template/ListTemplatePermissionsCmd.java | 2 +- .../api/response/SslCertResponse.java | 2 - .../api/command/test/ScaleVMCmdTest.java | 4 - .../cloud/network/HAProxyConfigurator.java | 3 - .../VirtualRoutingResourceTest.java | 4 - .../java/com/cloud/vm/VmWorkSerializer.java | 2 - .../cloud/agent/manager/AgentManagerImpl.java | 2 - .../manager/ClusteredAgentManagerImpl.java | 1 - .../entity/api/db/dao/EngineHostDaoImpl.java | 1 - .../orchestration/VolumeOrchestrator.java | 4 - .../service/api/ProvisioningServiceImpl.java | 8 -- .../cloud/dc/dao/ClusterVSMMapDaoImpl.java | 3 - .../security/dao/VmRulesetLogDaoImpl.java | 1 - .../cloud/storage/dao/VMTemplateDaoImpl.java | 7 -- .../cloud/upgrade/dao/Upgrade2214to30.java | 2 - .../com/cloud/upgrade/dao/Upgrade302to40.java | 1 - .../cloud/upgrade/dao/Upgrade304to305.java | 49 ------------ .../java/com/cloud/user/UserAccountVO.java | 4 - .../datastore/db/VolumeDataStoreVO.java | 2 - .../StorageCacheReplacementAlgorithmLRU.java | 1 - .../storage/test/VolumeServiceTest.java | 43 ----------- .../vmsnapshot/VMSnapshotStrategyKVMTest.java | 1 - .../storage/volume/VolumeServiceImpl.java | 1 - .../java/com/cloud/utils/db/GlobalLock.java | 33 ++++---- .../db/TransactionContextBuilderTest.java | 3 - .../AsyncSampleEventDrivenStyleCaller.java | 15 ++-- .../jobs/dao/AsyncJobJoinMapDaoImpl.java | 64 ---------------- .../jobs/impl/JobSerializerHelper.java | 1 - .../ratelimit/integration/APITest.java | 1 - .../BaremetalDhcpManagerImpl.java | 1 - .../main/java/com/cloud/ovm/object/Test.java | 58 -------------- .../hypervisor/vmware/VmwareCleanupMaid.java | 9 --- .../CiscoNexusVSMDeviceManagerImpl.java | 26 +------ .../xenbase/CitrixRequestWrapperTest.java | 31 -------- .../xenbase/XenServer610WrapperTest.java | 11 --- .../cisco/CiscoVnmcConnectionImpl.java | 1 - .../element/CiscoVnmcElementService.java | 2 - .../com/cloud/network/ElasticLbVmMapVO.java | 4 - .../management/ManagementServerMock.java | 37 +++++---- .../tungsten/service/TungstenElementTest.java | 54 ------------- .../ElastistorPrimaryDataStoreDriver.java | 3 - .../datastore/util/ElastistorUtil.java | 9 --- .../datastore/util/LinstorUtilTest.java | 1 - .../driver/NexentaPrimaryDataStoreDriver.java | 3 - .../util/NexentaStorApplianceTest.java | 1 - .../cloudstack/storage/test/VolumeTest.java | 12 --- .../StorPoolDownloadVolumeCommandWrapper.java | 1 - .../StorPoolAbandonObjectsCollector.java | 1 - .../StorPoolPrimaryDataStoreDriver.java | 1 - .../datastore/util/StorPoolHelper.java | 26 ------- scripts/installer/createtmplt.sh | 5 -- scripts/installer/createvolume.sh | 5 -- scripts/storage/secondary/listvmtmplt.sh | 5 -- scripts/storage/secondary/listvolume.sh | 5 -- scripts/vm/hypervisor/ovm3/cloudstack.py | 4 - scripts/vm/hypervisor/xenserver/perfmon.py | 6 -- .../vm/hypervisor/xenserver/xcposs/NFSSR.py | 14 ---- .../hypervisor/xenserver/xcpserver/NFSSR.py | 15 ---- .../hypervisor/xenserver/xenserver56/NFSSR.py | 14 ---- .../xenserver/xenserver56fp1/NFSSR.py | 15 ---- .../hypervisor/xenserver/xenserver60/NFSSR.py | 14 ---- scripts/vm/network/security_group.py | 9 --- scripts/vm/network/vnet/ovstunnel.py | 9 --- .../impl/UserConcentratedAllocator.java | 2 - .../com/cloud/api/doc/ApiXmlDocWriter.java | 2 - .../ExternalNetworkDeviceManagerImpl.java | 14 ---- .../network/rules/PrivateGatewayRules.java | 1 - .../cloud/network/rules/RulesManagerImpl.java | 2 - .../security/SecurityGroupManagerImpl.java | 1 - .../cloud/server/ConfigurationServerImpl.java | 2 - .../java/com/cloud/test/IPRangeConfig.java | 36 +-------- .../java/com/cloud/test/PodZoneConfig.java | 6 -- .../storage/NfsMountManagerImpl.java | 1 - .../src/test/java/com/cloud/api/APITest.java | 1 - .../java/com/cloud/vpc/Site2SiteVpnTest.java | 75 ------------------- .../com/cloud/vpc/VpcTestConfiguration.java | 5 -- .../CreateNetworkOfferingTest.java | 2 - .../java/common/adapter/AwtCanvasAdapter.java | 6 -- .../src/main/java/rdpclient/RdpClient.java | 9 --- .../rdpclient/clip/ClipboardDataFormat.java | 14 ---- .../rdpclient/ntlmssp/asn1/TSRequest.java | 6 -- .../rdpclient/rdp/ClientConfirmActivePDU.java | 2 +- .../rdp/ClientMCSAttachUserRequest.java | 2 - ...oinRequestServerMCSChannelConfirmPDUs.java | 5 -- .../rdpclient/rdp/ClientSynchronizePDU.java | 2 - .../rdpclient/rdp/ServerBitmapUpdate.java | 1 - .../rdpclient/rdp/ServerDemandActivePDU.java | 11 +-- .../rdpclient/rdp/ServerIOChannelRouter.java | 6 -- .../main/java/rdpclient/rdp/ServerMCSPDU.java | 4 - .../src/main/java/streamer/BaseElement.java | 1 - .../src/main/java/streamer/PipelineImpl.java | 3 - .../src/main/java/streamer/Queue.java | 1 - .../main/java/streamer/debug/MockSource.java | 1 - .../vncclient/vnc/Vnc33Authentication.java | 2 - .../main/java/vncclient/vnc/Vnc33Hello.java | 2 - .../java/vncclient/vnc/VncInitializer.java | 2 - .../java/vncclient/vnc/VncMessageHandler.java | 2 - .../com/cloud/consoleproxy/ConsoleProxy.java | 1 - .../resource/NfsSecondaryStorageResource.java | 4 - .../storage/template/DownloadManagerImpl.java | 2 - .../storage/template/UploadManagerImpl.java | 1 - .../LocalNfsSecondaryStorageResourceTest.java | 1 - systemvm/agent/scripts/run-proxy.sh | 12 --- .../com/cloud/utils/xmlobject/XmlObject.java | 3 - .../utils/xmlobject/XmlObjectParser.java | 4 - .../vmware/mo/VirtualMachineMO.java | 4 - 112 files changed, 52 insertions(+), 901 deletions(-) delete mode 100644 server/src/test/java/com/cloud/vpc/Site2SiteVpnTest.java diff --git a/agent/src/main/java/com/cloud/agent/Agent.java b/agent/src/main/java/com/cloud/agent/Agent.java index 52b1fe392e8..275fd41edc3 100644 --- a/agent/src/main/java/com/cloud/agent/Agent.java +++ b/agent/src/main/java/com/cloud/agent/Agent.java @@ -1322,7 +1322,6 @@ public class Agent implements HandlerFactory, IAgentControl, AgentStatusUpdater processResponse((Response)request, task.getLink()); } else { //put the requests from mgt server into another thread pool, as the request may take a longer time to finish. Don't block the NIO main thread pool - //processRequest(request, task.getLink()); requestHandler.submit(new AgentRequestHandler(getType(), getLink(), request)); } } catch (final ClassNotFoundException e) { diff --git a/api/src/main/java/com/cloud/host/HostStats.java b/api/src/main/java/com/cloud/host/HostStats.java index d14794401fa..0e72b5f2d9d 100644 --- a/api/src/main/java/com/cloud/host/HostStats.java +++ b/api/src/main/java/com/cloud/host/HostStats.java @@ -36,5 +36,4 @@ public interface HostStats { public HostStats getHostStats(); public double getLoadAverage(); - // public double getXapiMemoryUsageKBs(); } diff --git a/api/src/main/java/com/cloud/network/rules/LbStickinessMethod.java b/api/src/main/java/com/cloud/network/rules/LbStickinessMethod.java index 56a0622a52b..5143611ee82 100644 --- a/api/src/main/java/com/cloud/network/rules/LbStickinessMethod.java +++ b/api/src/main/java/com/cloud/network/rules/LbStickinessMethod.java @@ -108,8 +108,7 @@ public class LbStickinessMethod { } public void addParam(String name, Boolean required, String description, Boolean isFlag) { - /* FIXME : UI is breaking if the capability string length is larger , temporarily description is commented out */ - // LbStickinessMethodParam param = new LbStickinessMethodParam(name, required, description); + /* is this still a valid comment: FIXME : UI is breaking if the capability string length is larger , temporarily description is commented out */ LbStickinessMethodParam param = new LbStickinessMethodParam(name, required, " ", isFlag); _paramList.add(param); return; @@ -133,7 +132,6 @@ public class LbStickinessMethod { public void setDescription(String description) { /* FIXME : UI is breaking if the capability string length is larger , temporarily description is commented out */ - //this.description = description; this._description = " "; } } diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/iso/ListIsoPermissionsCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/iso/ListIsoPermissionsCmdByAdmin.java index 46bd4f3766e..57cb461a07a 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/iso/ListIsoPermissionsCmdByAdmin.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/iso/ListIsoPermissionsCmdByAdmin.java @@ -1,4 +1,4 @@ -// Licensedname = "listIsoPermissions", to the Apache Software Foundation (ASF) under one +// 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 diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/template/ListTemplatePermissionsCmdByAdmin.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/template/ListTemplatePermissionsCmdByAdmin.java index ae0e220b495..5792de737a5 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/template/ListTemplatePermissionsCmdByAdmin.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/template/ListTemplatePermissionsCmdByAdmin.java @@ -1,4 +1,4 @@ -// Licensedname = "listTemplatePermissions", to the Apache Software Foundation (ASF) under one +// 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 diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/iso/ListIsoPermissionsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/iso/ListIsoPermissionsCmd.java index 6f220c774b8..95c7f5fe309 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/iso/ListIsoPermissionsCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/iso/ListIsoPermissionsCmd.java @@ -1,4 +1,4 @@ -// Licensedname = "listIsoPermissions", to the Apache Software Foundation (ASF) under one +// 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 diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/template/ListTemplatePermissionsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/template/ListTemplatePermissionsCmd.java index 6d544df4187..408f916abda 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/template/ListTemplatePermissionsCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/template/ListTemplatePermissionsCmd.java @@ -1,4 +1,4 @@ -// Licensedname = "listTemplatePermissions", to the Apache Software Foundation (ASF) under one +// 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 diff --git a/api/src/main/java/org/apache/cloudstack/api/response/SslCertResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/SslCertResponse.java index aa729f123b4..f7022cecb70 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/SslCertResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/SslCertResponse.java @@ -27,8 +27,6 @@ import org.apache.cloudstack.api.EntityReference; import org.apache.cloudstack.network.tls.SslCert; import com.cloud.serializer.Param; -//import org.apache.cloudstack.api.EntityReference; - @EntityReference(value = SslCert.class) public class SslCertResponse extends BaseResponse { diff --git a/api/src/test/java/org/apache/cloudstack/api/command/test/ScaleVMCmdTest.java b/api/src/test/java/org/apache/cloudstack/api/command/test/ScaleVMCmdTest.java index 3ed1d9389d4..b76041755f5 100644 --- a/api/src/test/java/org/apache/cloudstack/api/command/test/ScaleVMCmdTest.java +++ b/api/src/test/java/org/apache/cloudstack/api/command/test/ScaleVMCmdTest.java @@ -78,10 +78,6 @@ public class ScaleVMCmdTest extends TestCase { scaleVMCmd._responseGenerator = responseGenerator; UserVmResponse userVmResponse = Mockito.mock(UserVmResponse.class); - //List list = Mockito.mock(UserVmResponse.class); - //list.add(userVmResponse); - //LinkedList mockedList = Mockito.mock(LinkedList.class); - //Mockito.when(mockedList.get(0)).thenReturn(userVmResponse); List list = new LinkedList(); list.add(userVmResponse); diff --git a/core/src/main/java/com/cloud/network/HAProxyConfigurator.java b/core/src/main/java/com/cloud/network/HAProxyConfigurator.java index 7736bea3cda..128652fc64f 100644 --- a/core/src/main/java/com/cloud/network/HAProxyConfigurator.java +++ b/core/src/main/java/com/cloud/network/HAProxyConfigurator.java @@ -629,9 +629,6 @@ public class HAProxyConfigurator implements LoadBalancerConfigurator { } } result.addAll(gSection); - // TODO decide under what circumstances these options are needed - // result.add("\tnokqueue"); - // result.add("\tnopoll"); result.add(blankLine); final List dSection = Arrays.asList(defaultsSection); diff --git a/core/src/test/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResourceTest.java b/core/src/test/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResourceTest.java index 201242564ba..4196587cc3f 100644 --- a/core/src/test/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResourceTest.java +++ b/core/src/test/java/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResourceTest.java @@ -417,8 +417,6 @@ public class VirtualRoutingResourceTest implements VirtualRouterDeployer { // FIXME Check the json content assertEquals(VRScripts.UPDATE_CONFIG, script); assertEquals(VRScripts.NETWORK_ACL_CONFIG, args); - // assertEquals(args, " -d eth3 -M 01:23:45:67:89:AB -i 192.168.1.1 -m 24 -a Egress:ALL:0:0:192.168.0.1/24-192.168.0.2/24:ACCEPT:," + - // "Ingress:ICMP:0:0:192.168.0.1/24-192.168.0.2/24:DROP:,Ingress:TCP:20:80:192.168.0.1/24-192.168.0.2/24:ACCEPT:,"); break; case 2: assertEquals(VRScripts.UPDATE_CONFIG, script); @@ -464,8 +462,6 @@ public class VirtualRoutingResourceTest implements VirtualRouterDeployer { private void verifyArgs(final SetupGuestNetworkCommand cmd, final String script, final String args) { // TODO Check the contents of the json file - //assertEquals(script, VRScripts.VPC_GUEST_NETWORK); - //assertEquals(args, " -C -M 01:23:45:67:89:AB -d eth4 -i 10.1.1.2 -g 10.1.1.1 -m 24 -n 10.1.1.0 -s 8.8.8.8,8.8.4.4 -e cloud.test"); } @Test diff --git a/engine/components-api/src/main/java/com/cloud/vm/VmWorkSerializer.java b/engine/components-api/src/main/java/com/cloud/vm/VmWorkSerializer.java index bd6b52d261f..e4fdc0c4f37 100644 --- a/engine/components-api/src/main/java/com/cloud/vm/VmWorkSerializer.java +++ b/engine/components-api/src/main/java/com/cloud/vm/VmWorkSerializer.java @@ -61,7 +61,6 @@ public class VmWorkSerializer { // use java binary serialization instead // return JobSerializerHelper.toObjectSerializedString(work); - // return s_gson.toJson(work); } public static T deserialize(Class clazz, String workInJsonText) { @@ -69,6 +68,5 @@ public class VmWorkSerializer { // use java binary serialization instead // return (T)JobSerializerHelper.fromObjectSerializedString(workInJsonText); - // return (T)s_gson.fromJson(workInJsonText, clazz); } } diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java index 3d398ca5dd9..439bdf92ddd 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java @@ -1652,7 +1652,6 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl final String reason = shutdown.getReason(); logger.info("Host {} has informed us that it is shutting down with reason {} and detail {}", attache, reason, shutdown.getDetail()); if (reason.equals(ShutdownCommand.Update)) { - // disconnectWithoutInvestigation(attache, Event.UpdateNeeded); throw new CloudRuntimeException("Agent update not implemented"); } else if (reason.equals(ShutdownCommand.Requested)) { disconnectWithoutInvestigation(attache, Event.ShutdownRequested); @@ -1753,7 +1752,6 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl } } catch (final UnsupportedVersionException e) { logger.warn(e.getMessage()); - // upgradeAgent(task.getLink(), data, e.getReason()); } catch (final ClassNotFoundException e) { final String message = String.format("Exception occurred when executing tasks! Error '%s'", e.getMessage()); logger.error(message); diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java index c6448982803..e80b0219f55 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java @@ -965,7 +965,6 @@ public class ClusteredAgentManagerImpl extends AgentManagerImpl implements Clust synchronized (_agentToTransferIds) { if (!_agentToTransferIds.isEmpty()) { logger.debug("Found {} agents to transfer", _agentToTransferIds.size()); - // for (Long hostId : _agentToTransferIds) { for (final Iterator iterator = _agentToTransferIds.iterator(); iterator.hasNext(); ) { final Long hostId = iterator.next(); final AgentAttache attache = findAttache(hostId); diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java index 2ad8d15d0b7..7f6571becc8 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java @@ -213,7 +213,6 @@ public class EngineHostDaoImpl extends GenericDaoBase implem SequenceSearch = createSearchBuilder(); SequenceSearch.and("id", SequenceSearch.entity().getId(), SearchCriteria.Op.EQ); - // SequenceSearch.addRetrieve("sequence", SequenceSearch.entity().getSequence()); SequenceSearch.done(); DirectlyConnectedSearch = createSearchBuilder(); diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java index 430b7cbc5aa..281dd2a3cfe 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java @@ -1583,12 +1583,8 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati vm.addDisk(disk); } - //if (vm.getType() == VirtualMachine.Type.User && vm.getTemplate().getFormat() == ImageFormat.ISO) { if (vm.getType() == VirtualMachine.Type.User) { _tmpltMgr.prepareIsoForVmProfile(vm, dest); - //DataTO dataTO = tmplFactory.getTemplate(vm.getTemplate().getId(), DataStoreRole.Image, vm.getVirtualMachine().getDataCenterId()).getTO(); - //DiskTO iso = new DiskTO(dataTO, 3L, null, Volume.Type.ISO); - //vm.addDisk(iso); } } diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java index 51e87663919..ff75aa0cbb6 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/service/api/ProvisioningServiceImpl.java @@ -140,20 +140,12 @@ public class ProvisioningServiceImpl implements ProvisioningService { @Override public List listPods() { - /* - * Not in use now, just commented out. - */ - //List pods = new ArrayList(); - //pods.add(new PodEntityImpl("pod-uuid-1", "pod1")); - //pods.add(new PodEntityImpl("pod-uuid-2", "pod2")); return null; } @Override public List listZones() { List zones = new ArrayList(); - //zones.add(new ZoneEntityImpl("zone-uuid-1")); - //zones.add(new ZoneEntityImpl("zone-uuid-2")); return zones; } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/ClusterVSMMapDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/ClusterVSMMapDaoImpl.java index 02a7ac6977c..76058d21333 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/ClusterVSMMapDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/ClusterVSMMapDaoImpl.java @@ -36,7 +36,6 @@ public class ClusterVSMMapDaoImpl extends GenericDaoBase final SearchBuilder VsmSearch; public ClusterVSMMapDaoImpl() { - //super(); ClusterSearch = createSearchBuilder(); ClusterSearch.and("clusterId", ClusterSearch.entity().getClusterId(), SearchCriteria.Op.EQ); @@ -82,8 +81,6 @@ public class ClusterVSMMapDaoImpl extends GenericDaoBase TransactionLegacy txn = TransactionLegacy.currentTxn(); txn.start(); ClusterVSMMapVO cluster = createForUpdate(); - //cluster.setClusterId(null); - //cluster.setVsmId(null); update(id, cluster); diff --git a/engine/schema/src/main/java/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java b/engine/schema/src/main/java/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java index 9a9ca80bce5..7ed0ad0bcc5 100644 --- a/engine/schema/src/main/java/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/network/security/dao/VmRulesetLogDaoImpl.java @@ -76,7 +76,6 @@ public class VmRulesetLogDaoImpl extends GenericDaoBase im @Override public int createOrUpdate(Set workItems) { - //return createOrUpdateUsingBatch(workItems); return createOrUpdateUsingMultiInsert(workItems); } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java index 08b82cbb45b..727035855f9 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java @@ -100,7 +100,6 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem private SearchBuilder PublicIsoSearch; private SearchBuilder UserIsoSearch; private GenericSearchBuilder CountTemplatesByAccount; - // private SearchBuilder updateStateSearch; private SearchBuilder AllFieldsSearch; protected SearchBuilder ParentTemplateIdSearch; private SearchBuilder InactiveUnremovedTmpltSearch; @@ -404,12 +403,6 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem CountTemplatesByAccount.and("state", CountTemplatesByAccount.entity().getState(), SearchCriteria.Op.EQ); CountTemplatesByAccount.done(); - // updateStateSearch = this.createSearchBuilder(); - // updateStateSearch.and("id", updateStateSearch.entity().getId(), Op.EQ); - // updateStateSearch.and("state", updateStateSearch.entity().getState(), Op.EQ); - // updateStateSearch.and("updatedCount", updateStateSearch.entity().getUpdatedCount(), Op.EQ); - // updateStateSearch.done(); - AllFieldsSearch = createSearchBuilder(); AllFieldsSearch.and("state", AllFieldsSearch.entity().getState(), SearchCriteria.Op.EQ); AllFieldsSearch.and("accountId", AllFieldsSearch.entity().getAccountId(), SearchCriteria.Op.EQ); diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade2214to30.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade2214to30.java index 524b6a34893..d4cdbcb9707 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade2214to30.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade2214to30.java @@ -77,8 +77,6 @@ public class Upgrade2214to30 extends Upgrade30xBase { encryptData(conn); // drop keys dropKeysIfExist(conn); - //update template ID for system Vms - //updateSystemVms(conn); This is not required as system template update is handled during 4.2 upgrade // update domain network ref updateDomainNetworkRef(conn); // update networks that use redundant routers to the new network offering diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade302to40.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade302to40.java index aa427252585..bd8ddaa7c49 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade302to40.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade302to40.java @@ -62,7 +62,6 @@ public class Upgrade302to40 extends Upgrade30xBase { @Override public void performDataMigration(Connection conn) { - //updateVmWareSystemVms(conn); This is not required as system template update is handled during 4.2 upgrade correctVRProviders(conn); correctMultiplePhysicaNetworkSetups(conn); addHostDetailsUniqueKey(conn); diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade304to305.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade304to305.java index bb4c73f67b6..21c016c7cc1 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade304to305.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade304to305.java @@ -65,7 +65,6 @@ public class Upgrade304to305 extends Upgrade30xBase { addVpcProvider(conn); updateRouterNetworkRef(conn); fixZoneUsingExternalDevices(conn); -// updateSystemVms(conn); fixForeignKeys(conn); encryptClusterDetails(conn); } @@ -81,54 +80,6 @@ public class Upgrade304to305 extends Upgrade30xBase { return new InputStream[] {script}; } - private void updateSystemVms(Connection conn) { - PreparedStatement pstmt = null; - ResultSet rs = null; - boolean VMware = false; - try { - pstmt = conn.prepareStatement("select distinct(hypervisor_type) from `cloud`.`cluster` where removed is null"); - rs = pstmt.executeQuery(); - while (rs.next()) { - if ("VMware".equals(rs.getString(1))) { - VMware = true; - } - } - } catch (SQLException e) { - throw new CloudRuntimeException("Error while iterating through list of hypervisors in use", e); - } - // Just update the VMware system template. Other hypervisor templates are unchanged from previous 3.0.x versions. - logger.debug("Updating VMware System Vms"); - try { - //Get 3.0.5 VMware system Vm template Id - pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = 'systemvm-vmware-3.0.5' and removed is null"); - rs = pstmt.executeQuery(); - if (rs.next()) { - long templateId = rs.getLong(1); - rs.close(); - pstmt.close(); - // change template type to SYSTEM - pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?"); - pstmt.setLong(1, templateId); - pstmt.executeUpdate(); - pstmt.close(); - // update template ID of system Vms - pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = 'VMware'"); - pstmt.setLong(1, templateId); - pstmt.executeUpdate(); - pstmt.close(); - } else { - if (VMware) { - throw new CloudRuntimeException("3.0.5 VMware SystemVm template not found. Cannot upgrade system Vms"); - } else { - logger.warn("3.0.5 VMware SystemVm template not found. VMware hypervisor is not used, so not failing upgrade"); - } - } - } catch (SQLException e) { - throw new CloudRuntimeException("Error while updating VMware systemVm template", e); - } - logger.debug("Updating System Vm Template IDs Complete"); - } - private void addVpcProvider(Connection conn) { //Encrypt config params and change category to Hidden logger.debug("Adding vpc provider to all physical networks in the system"); diff --git a/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java b/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java index e4fcbad6b02..c5ca410fc53 100644 --- a/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java +++ b/engine/schema/src/main/java/com/cloud/user/UserAccountVO.java @@ -226,10 +226,6 @@ public class UserAccountVO implements UserAccount, InternalIdentity { return created; } -// public void setCreated(Date created) { -// this.created = created; -// } - @Override public Date getRemoved() { return removed; diff --git a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/VolumeDataStoreVO.java b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/VolumeDataStoreVO.java index d57dec8fbfd..c475a4203a7 100644 --- a/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/VolumeDataStoreVO.java +++ b/engine/schema/src/main/java/org/apache/cloudstack/storage/datastore/db/VolumeDataStoreVO.java @@ -209,10 +209,8 @@ public class VolumeDataStoreVO implements StateObject future = - // imageService.createTemplateAsync(template, store); - // future.get(); template = imageDataFactory.getTemplate(image.getId(), store); - /* - * imageProviderMgr.configure("image Provider", new HashMap()); VMTemplateVO image = createImageData(); - * ImageDataStoreProvider defaultProvider = - * imageProviderMgr.getProvider("DefaultProvider"); - * ImageDataStoreLifeCycle lifeCycle = - * defaultProvider.getLifeCycle(); ImageDataStore store = - * lifeCycle.registerDataStore("defaultHttpStore", new - * HashMap()); - * imageService.registerTemplate(image.getId(), - * store.getImageDataStoreId()); TemplateEntity te = - * imageService.getTemplateEntity(image.getId()); return te; - */ return template; } catch (Exception e) { Assert.fail("failed", e); @@ -333,30 +315,6 @@ public class VolumeServiceTest extends CloudStackTestNGBase { ClusterScope scope = new ClusterScope(clusterId, podId, dcId); lifeCycle.attachCluster(store, scope); - /* - * PrimaryDataStoreProvider provider = - * primaryDataStoreProviderMgr.getDataStoreProvider - * ("sample primary data store provider"); - * primaryDataStoreProviderMgr.configure("primary data store mgr", - * new HashMap()); - * - * List ds = - * primaryStoreDao.findPoolByName(this.primaryName); if (ds.size() - * >= 1) { PrimaryDataStoreVO store = ds.get(0); if - * (store.getRemoved() == null) { return - * provider.getDataStore(store.getId()); } } - * - * - * Map params = new HashMap(); - * params.put("url", this.getPrimaryStorageUrl()); - * params.put("dcId", dcId.toString()); params.put("clusterId", - * clusterId.toString()); params.put("name", this.primaryName); - * PrimaryDataStoreInfo primaryDataStoreInfo = - * provider.registerDataStore(params); PrimaryDataStoreLifeCycle lc - * = primaryDataStoreInfo.getLifeCycle(); ClusterScope scope = new - * ClusterScope(clusterId, podId, dcId); lc.attachCluster(scope); - * return primaryDataStoreInfo; - */ return store; } catch (Exception e) { return null; @@ -376,7 +334,6 @@ public class VolumeServiceTest extends CloudStackTestNGBase { TemplateInfo te = createTemplate(); VolumeVO volume = createVolume(te.getId(), primaryStore.getId()); VolumeInfo vol = volumeFactory.getVolume(volume.getId(), primaryStore); - // ve.createVolumeFromTemplate(primaryStore.getId(), new VHD(), te); AsyncCallFuture future = volumeService.createVolumeFromTemplateAsync(vol, primaryStore.getId(), te); try { future.get(); diff --git a/engine/storage/snapshot/src/test/java/org/apache/cloudstack/storage/vmsnapshot/VMSnapshotStrategyKVMTest.java b/engine/storage/snapshot/src/test/java/org/apache/cloudstack/storage/vmsnapshot/VMSnapshotStrategyKVMTest.java index 02c17f8f3bd..050c0246aba 100644 --- a/engine/storage/snapshot/src/test/java/org/apache/cloudstack/storage/vmsnapshot/VMSnapshotStrategyKVMTest.java +++ b/engine/storage/snapshot/src/test/java/org/apache/cloudstack/storage/vmsnapshot/VMSnapshotStrategyKVMTest.java @@ -237,7 +237,6 @@ public class VMSnapshotStrategyKVMTest extends TestCase{ when(vol.getDataStore()).thenReturn(dataStore); when(snapshotVO.getId()).thenReturn(1L); when(_snapshotService.revertSnapshot(snapshotVO.getId())).thenReturn(snap); - // testFindSnapshotByName(name); vmStrategy.revertDiskSnapshot(vmSnapshot); } diff --git a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java index e2264629952..57d9a0aec1f 100644 --- a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java +++ b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java @@ -722,7 +722,6 @@ public class VolumeServiceImpl implements VolumeService { VolumeApiResult res = new VolumeApiResult(volumeInfo); if (result.isSuccess()) { - // volumeInfo.processEvent(Event.OperationSuccessed, result.getAnswer()); VolumeVO volume = volDao.findById(volumeInfo.getId()); CopyCmdAnswer answer = (CopyCmdAnswer)result.getAnswer(); diff --git a/framework/db/src/main/java/com/cloud/utils/db/GlobalLock.java b/framework/db/src/main/java/com/cloud/utils/db/GlobalLock.java index 523f90b2866..b01ddaf6853 100644 --- a/framework/db/src/main/java/com/cloud/utils/db/GlobalLock.java +++ b/framework/db/src/main/java/com/cloud/utils/db/GlobalLock.java @@ -27,22 +27,23 @@ import org.apache.logging.log4j.LogManager; import com.cloud.utils.Profiler; -// -// Wrapper class for global database lock to reduce contention for database connections from within process -// -// Example of using dynamic named locks -// -// GlobalLock lock = GlobalLock.getInternLock("some table name" + rowId); -// -// if(lock.lock()) { -// try { -// do something -// } finally { -// lock.unlock(); -// } -// } -// lock.releaseRef(); -// +/** + * Wrapper class for global database lock to reduce contention for database connections from within process + * This class is used to acquire a global lock for a specific operation, identified by a unique name. + * Example of using dynamic named locks + *

+ * GlobalLock lock = GlobalLock.getInternLock("some table name" + rowId); + * + * if(lock.lock()) { + * try { + * do something + * } finally { + * lock.unlock(); + * } + * } + * lock.releaseRef(); + *

+ */ public class GlobalLock { protected Logger logger = LogManager.getLogger(getClass()); diff --git a/framework/db/src/test/java/com/cloud/utils/db/TransactionContextBuilderTest.java b/framework/db/src/test/java/com/cloud/utils/db/TransactionContextBuilderTest.java index a0f7c803e4b..3ec635c15d9 100644 --- a/framework/db/src/test/java/com/cloud/utils/db/TransactionContextBuilderTest.java +++ b/framework/db/src/test/java/com/cloud/utils/db/TransactionContextBuilderTest.java @@ -41,9 +41,6 @@ public class TransactionContextBuilderTest { @Test public void test() { - // _derived.DbAnnotatedMethod(); - // _base.MethodWithClassDbAnnotated(); - // test @DB injection on dynamically constructed objects DbAnnotatedBase base = ComponentContext.inject(new DbAnnotatedBase()); base.MethodWithClassDbAnnotated(); diff --git a/framework/ipc/src/test/java/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java b/framework/ipc/src/test/java/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java index 164852af4e7..0d8ddcfa5a4 100644 --- a/framework/ipc/src/test/java/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java +++ b/framework/ipc/src/test/java/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java @@ -20,6 +20,8 @@ package org.apache.cloudstack.framework.codestyle; import java.util.concurrent.ExecutionException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -36,6 +38,7 @@ import org.apache.cloudstack.framework.async.AsyncRpcContext; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:/SampleManagementServerAppContext.xml") public class AsyncSampleEventDrivenStyleCaller { + protected Logger logger = LogManager.getLogger(getClass()); private AsyncSampleCallee _ds; AsyncCallbackDriver _callbackDriver; @@ -53,12 +56,8 @@ public class AsyncSampleEventDrivenStyleCaller { try { String result = future.get(); Assert.assertEquals(result, vol); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ExecutionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + } catch (InterruptedException | ExecutionException e) { + logger.info(e); } } @@ -87,10 +86,8 @@ public class AsyncSampleEventDrivenStyleCaller { if (!this.finished) { try { this.wait(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.info(e); } } return this.result; diff --git a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java index da7ba36c919..09a88939492 100644 --- a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java +++ b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/dao/AsyncJobJoinMapDaoImpl.java @@ -44,8 +44,6 @@ public class AsyncJobJoinMapDaoImpl extends GenericDaoBase CompleteJoinSearch; private final SearchBuilder WakeupSearch; -// private final GenericSearchBuilder JoinJobSearch; - protected AsyncJobJoinMapDaoImpl() { RecordSearch = createSearchBuilder(); RecordSearch.and("jobId", RecordSearch.entity().getJobId(), Op.EQ); @@ -65,10 +63,6 @@ public class AsyncJobJoinMapDaoImpl extends GenericDaoBase wakeupScan() { -// List standaloneList = new ArrayList(); -// -// Date cutDate = DateUtil.currentGMTTime(); -// -// TransactionLegacy txn = TransactionLegacy.currentTxn(); -// PreparedStatement pstmt = null; -// try { -// txn.start(); -// -// // -// // performance sensitive processing, do it in plain SQL -// // -// String sql = "UPDATE async_job SET job_pending_signals=? WHERE id IN " + -// "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)"; -// pstmt = txn.prepareStatement(sql); -// pstmt.setInt(1, AsyncJob.Constants.SIGNAL_MASK_WAKEUP); -// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// pstmt.setString(3, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// pstmt.executeUpdate(); -// pstmt.close(); -// -// sql = "UPDATE sync_queue_item SET queue_proc_msid=NULL, queue_proc_number=NULL WHERE content_id IN " + -// "(SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ?)"; -// pstmt = txn.prepareStatement(sql); -// pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// pstmt.executeUpdate(); -// pstmt.close(); -// -// sql = "SELECT job_id FROM async_job_join_map WHERE next_wakeup < ? AND expiration > ? AND job_id NOT IN (SELECT content_id FROM sync_queue_item)"; -// pstmt = txn.prepareStatement(sql); -// pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// ResultSet rs = pstmt.executeQuery(); -// while(rs.next()) { -// standaloneList.add(rs.getLong(1)); -// } -// rs.close(); -// pstmt.close(); -// -// // update for next wake-up -// sql = "UPDATE async_job_join_map SET next_wakeup=DATE_ADD(next_wakeup, INTERVAL wakeup_interval SECOND) WHERE next_wakeup < ? AND expiration > ?"; -// pstmt = txn.prepareStatement(sql); -// pstmt.setString(1, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// pstmt.setString(2, DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), cutDate)); -// pstmt.executeUpdate(); -// pstmt.close(); -// -// txn.commit(); -// } catch (SQLException e) { -// logger.error("Unexpected exception", e); -// } -// -// return standaloneList; -// } - @Override public List findJobsToWake(long joinedJobId) { // TODO: We should fix this. We shouldn't be crossing daos in a dao code. diff --git a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java index fa1d175c45f..66df95426d5 100644 --- a/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java +++ b/framework/jobs/src/main/java/org/apache/cloudstack/framework/jobs/impl/JobSerializerHelper.java @@ -193,7 +193,6 @@ public class JobSerializerHelper { json.add("class", new JsonPrimitive(th.getClass().getName())); json.add("cause", s_gson.toJsonTree(th.getCause())); json.add("msg", new JsonPrimitive(th.getMessage())); -// json.add("stack", s_gson.toJsonTree(th.getStackTrace())); return json; } diff --git a/plugins/api/rate-limit/src/test/java/org/apache/cloudstack/ratelimit/integration/APITest.java b/plugins/api/rate-limit/src/test/java/org/apache/cloudstack/ratelimit/integration/APITest.java index efe8c53a51b..eb020c2c499 100644 --- a/plugins/api/rate-limit/src/test/java/org/apache/cloudstack/ratelimit/integration/APITest.java +++ b/plugins/api/rate-limit/src/test/java/org/apache/cloudstack/ratelimit/integration/APITest.java @@ -189,7 +189,6 @@ public abstract class APITest { * @return login response string */ protected void login(String username, String password) { - //String md5Psw = createMD5String(password); // send login request HashMap params = new HashMap(); params.put("response", "json"); diff --git a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java index 99bedbff05e..9bdc2fb9ed8 100644 --- a/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/main/java/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java @@ -149,7 +149,6 @@ public class BaremetalDhcpManagerImpl extends ManagerBase implements BaremetalDh String errMsg = String.format("Set dhcp entry on external DHCP %1$s failed(ip=%2$s, mac=%3$s, vmname=%4$s)", h.getPrivateIpAddress(), nic.getIPv4Address(), nic.getMacAddress(), profile.getVirtualMachine().getHostName()); - // prepareBareMetalDhcpEntry(nic, dhcpCommand); try { Answer ans = _agentMgr.send(h.getId(), dhcpCommand); if (ans.getResult()) { diff --git a/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/object/Test.java b/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/object/Test.java index cd1b14eeaa1..32960a9616c 100644 --- a/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/object/Test.java +++ b/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/object/Test.java @@ -23,37 +23,6 @@ import java.util.Map; public class Test { public static void main(final String[] args) { try { - /*Connection c = new Connection("192.168.105.155", "oracle", "password"); - Utils util = new UtilsImpl(c); - Storage storage = new StorageImpl(c); - String[] res = util.listDir("/etc", 1); - for (String s : res) { - System.out.println(s); - } - - - Pool pool = new PoolImpl(c); - - //pool.registerServer("192.168.105.155", Pool.ServerType.SITE); - //pool.registerServer("192.168.105.155", Pool.ServerType.UTILITY); - //pool.registerServer("192.168.105.155", Pool.ServerType.XEN); - System.out.println("Is:" + pool.isServerRegistered()); - System.out.println(pool.getServerConfig()); - System.out.println(pool.getServerXmInfo()); - System.out.println(pool.getHostInfo()); - System.out.println(pool.getAgentVersion()); - String[] srs = storage.listSr(); - for (int i=0; i spaceInfo = storage.getSrSpaceInfo("192.168.110.232:/export/frank/nfs"); - System.out.println("Total:" + spaceInfo.first()); - System.out.println("Free:" + spaceInfo.second());*/ final OvmVm.Details vm = new OvmVm.Details(); vm.cpuNum = 1; vm.memory = 512; @@ -80,23 +49,7 @@ public class Test { vm.vifs.add(vif); vm.vifs.add(vif); vm.vifs.add(vif); - //System.out.println(vm.toJson()); final Connection c = new Connection("192.168.189.12", "oracle", "password"); - //System.out.println(Coder.toJson(OvmHost.getDetails(c))); - - /* This is not being used at the moment. - * Coverity issue: 1012179 - */ - - //OvmHost.Details d = new GsonBuilder().create().fromJson(txt, OvmHost.Details.class); - //OvmHost.Details d = Coder.fromJson(txt, OvmHost.Details.class); - //OvmHost.Details d = OvmHost.getDetails(c); - //System.out.println(Coder.toJson(d)); - // OvmStoragePool.Details pool = new OvmStoragePool.Details(); - // pool.path = "192.168.110.232:/export/frank/ovs"; - // pool.type = OvmStoragePool.NFS; - // pool.uuid = "123"; - // System.out.println(pool.toJson()); String cmd = null; System.out.println(args.length); @@ -119,15 +72,10 @@ public class Test { System.out.println(d.toJson()); if (cmd.equalsIgnoreCase("create")) { - // String s = - // "{\"cpuNum\":1,\"memory\":512,\"rootDisk\":{\"type\":\"w\",\"path\":\"/var/ovs/mount/60D0985974CA425AAF5D01A1F161CC8B/running_pool/36_systemvm/System.img\"},\"disks\":[],\"vifs\":[{\"mac\":\"00:16:3E:5C:B1:D1\",\"bridge\":\"xenbr0\",\"type\":\"netfront\"}],\"name\":\"MyTest\",\"uuid\":\"1-2-3-4-5\"}"; OvmVm.create(c, d); - // c.call("OvmVm.echo", new Object[]{s}); } else if (cmd.equalsIgnoreCase("reboot")) { final Map res = OvmVm.reboot(c, "MyTest"); System.out.println(res.get("vncPort")); - //OvmVm.stop(c, "MyTest"); - //OvmVm.create(c, d); } else if (cmd.equalsIgnoreCase("stop")) { OvmVm.stop(c, "MyTest"); } else if (cmd.equalsIgnoreCase("details")) { @@ -166,12 +114,6 @@ public class Test { l.add("4b4d8951-f0b6-36c5-b4f3-a82ff2611c65"); System.out.println(Coder.toJson(l)); - // Map res = OvmHost.getPerformanceStats(c, "xenbr0"); - // System.out.println(res.toString()); - // String stxt = "{\"vifs\": [{\"bridge\": \"xenbr0\", \"mac\": \"00:16:3E:5C:B1:D1\", \"type\": \"netfront\"}], \"powerState\": \"RUNNING\", \"disks\": [], \"cpuNum\": 1, \"memory\": 536870912, \"rootDisk\": {\"path\": \"/var/ovs/mount/60D0985974CA425AAF5D01A1F161CC8B/running_pool/MyTest/System.img\", \"type\": \"w\"}}"; - // OvmVm.Details ddd = Coder.fromJson(stxt, OvmVm.Details.class); - // System.out.println(ddd.vifs.size()); - // System.out.println(ddd.rootDisk.path); } catch (final Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareCleanupMaid.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareCleanupMaid.java index d2c71c4ee01..49f10970e7c 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareCleanupMaid.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareCleanupMaid.java @@ -65,15 +65,6 @@ public class VmwareCleanupMaid { _vmName = vmName; } -// @Override -// public int cleanup(CheckPointManager checkPointMgr) { -// -// // save a check-point in case we crash at current run so that we won't lose it -// _checkPoint = checkPointMgr.pushCheckPoint(new VmwareCleanupMaid(_vCenterAddress, _dcMorValue, _vmName)); -// addLeftOverVM(this); -// return 0; -// } - public String getCleanupProcedure() { return null; } diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java index beac489acdb..73d63f04c5f 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java @@ -66,9 +66,7 @@ public abstract class CiscoNexusVSMDeviceManagerImpl extends AdapterBase { @DB - //public CiscoNexusVSMDeviceVO addCiscoNexusVSM(long clusterId, String ipaddress, String username, String password, ServerResource resource, String vsmName) { - public - CiscoNexusVSMDeviceVO addCiscoNexusVSM(long clusterId, String ipaddress, String username, String password, String vCenterIpaddr, String vCenterDcName) { + public CiscoNexusVSMDeviceVO addCiscoNexusVSM(long clusterId, String ipaddress, String username, String password, String vCenterIpaddr, String vCenterDcName) { // In this function, we associate this VSM with each host // in the clusterId specified. @@ -154,28 +152,6 @@ public abstract class CiscoNexusVSMDeviceManagerImpl extends AdapterBase { // into each host's resource. Also, we first configure each resource's // entries in the database to contain this VSM information before the injection. - //for (HostVO host : hosts) { - // Create a host details VO object and write it out for this hostid. - //Long hostid = new Long(vsmId); - //DetailVO vsmDetail = new DetailVO(host.getId(), "vsmId", hostid.toString()); - //Transaction tx = Transaction.currentTxn(); - //try { - //tx.start(); - //_hostDetailDao.persist(vsmDetail); - //tx.commit(); - //} catch (Exception e) { - //tx.rollback(); - //throw new CloudRuntimeException(e.getMessage()); - //} - //} - // Reconfigure the resource. - //Map hostDetails = new HashMap(); - //hostDetails.put(ApiConstants.ID, vsmId); - //hostDetails.put(ApiConstants.IP_ADDRESS, ipaddress); - //hostDetails.put(ApiConstants.USERNAME, username); - //hostDetails.put(ApiConstants.PASSWORD, password); - //_agentMrg.send(host.getId(), ) - return VSMObj; } diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixRequestWrapperTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixRequestWrapperTest.java index d464a266493..b9504b6648a 100755 --- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixRequestWrapperTest.java +++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixRequestWrapperTest.java @@ -576,37 +576,6 @@ public class CitrixRequestWrapperTest { fail(e.getMessage()); } - // try { - // PowerMockito.mockStatic(Host.class); - // //BDDMockito.given(Host.getByUuid(conn, - // xsHost.getUuid())).willReturn(host); - // PowerMockito.when(Host.getByUuid(conn, - // xsHost.getUuid())).thenReturn(host); - // PowerMockito.verifyStatic(times(1)); - // } catch (final BadServerResponse e) { - // fail(e.getMessage()); - // } catch (final XenAPIException e) { - // fail(e.getMessage()); - // } catch (final XmlRpcException e) { - // fail(e.getMessage()); - // } - // - // PowerMockito.mockStatic(Types.class); - // PowerMockito.when(Types.toHostRecord(spiedMap)).thenReturn(hr); - // PowerMockito.verifyStatic(times(1)); - // - // try { - // PowerMockito.mockStatic(Host.Record.class); - // when(host.getRecord(conn)).thenReturn(hr); - // verify(host, times(1)).getRecord(conn); - // } catch (final BadServerResponse e) { - // fail(e.getMessage()); - // } catch (final XenAPIException e) { - // fail(e.getMessage()); - // } catch (final XmlRpcException e) { - // fail(e.getMessage()); - // } - final Answer answer = wrapper.execute(maintainCommand, citrixResourceBase); assertFalse(answer.getResult()); diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServer610WrapperTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServer610WrapperTest.java index 4b2dd1ac3ec..d5e794d2899 100644 --- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServer610WrapperTest.java +++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/XenServer610WrapperTest.java @@ -462,17 +462,6 @@ public class XenServer610WrapperTest { verify(xenServer610Resource, times(1)).getConnection(); - // try { - // verify(xenServer610Resource, times(1)).waitForTask(conn, task, 1000, timeout); - // verify(xenServer610Resource, times(1)).checkForSuccess(conn, task); - // } catch (final XenAPIException e) { - // fail(e.getMessage()); - // } catch (final XmlRpcException e) { - // fail(e.getMessage()); - // } catch (final TimeoutException e) { - // fail(e.getMessage()); - // } - assertFalse(answer.getResult()); } diff --git a/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java b/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java index 90597d7b1e1..e0ab727930e 100644 --- a/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java +++ b/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java @@ -136,7 +136,6 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { String xml = ""; String line; while ((line = br.readLine()) != null) { - //xml += line.replaceAll("\n"," "); xml += line; } diff --git a/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/element/CiscoVnmcElementService.java b/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/element/CiscoVnmcElementService.java index 8388bb89bb5..8a52893274f 100644 --- a/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/element/CiscoVnmcElementService.java +++ b/plugins/network-elements/cisco-vnmc/src/main/java/com/cloud/network/element/CiscoVnmcElementService.java @@ -28,8 +28,6 @@ import com.cloud.utils.component.PluggableService; public interface CiscoVnmcElementService extends PluggableService { - //public static final Provider CiscoVnmc = new Provider("CiscoVnmc", true); - public CiscoVnmcController addCiscoVnmcResource(AddCiscoVnmcResourceCmd cmd); public CiscoVnmcResourceResponse createCiscoVnmcResourceResponse(CiscoVnmcController ciscoVnmcResourceVO); diff --git a/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/ElasticLbVmMapVO.java b/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/ElasticLbVmMapVO.java index b9bad7f6575..96a43dfb19e 100644 --- a/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/ElasticLbVmMapVO.java +++ b/plugins/network-elements/elastic-loadbalancer/src/main/java/com/cloud/network/ElasticLbVmMapVO.java @@ -79,10 +79,6 @@ public class ElasticLbVmMapVO implements InternalIdentity { return elbVmId; } -// public String getLbName() { -// return lbName; -// } - public long getIpAddressId() { return ipAddressId; } diff --git a/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java b/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java index 15f546db0f0..2107850c36b 100644 --- a/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java +++ b/plugins/network-elements/juniper-contrail/src/test/java/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java @@ -32,6 +32,9 @@ import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd; @@ -86,6 +89,7 @@ import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.UserVmDao; public class ManagementServerMock { + protected Logger logger = LogManager.getLogger(getClass()); @Inject private AccountManager _accountMgr; @@ -217,15 +221,7 @@ public class ManagementServerMock { return null; } }; - try { - Mockito.when(_agentMgr.send(ArgumentMatchers.anyLong(), ArgumentMatchers.any(Commands.class))).thenAnswer(callback); - } catch (AgentUnavailableException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OperationTimedoutException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + sendCommands(callback); long id = _userVmDao.getNextInSequence(Long.class, "id"); UserVmVO vm = new UserVmVO(id, name, name, tmpl.getId(), HypervisorType.XenServer, tmpl.getGuestOSId(), false, false, _zone.getDomainId(), Account.ACCOUNT_ID_SYSTEM, @@ -239,12 +235,21 @@ public class ManagementServerMock { try { _vmMgr.addVmToNetwork(vm, network, profile); } catch (Exception ex) { - // TODO Auto-generated catch block - //ex.printStackTrace(); + // ignored } return vm; } + private void sendCommands(Answer callback) { + try { + Mockito.when(_agentMgr.send(ArgumentMatchers.anyLong(), ArgumentMatchers.any(Commands.class))).thenAnswer(callback); + } catch (AgentUnavailableException e) { + logger.warn("no agent running", e); + } catch (OperationTimedoutException e) { + logger.warn("agent not responding (in time)", e); + } + } + private void deleteHost() { _hostDao.remove(_hostId); @@ -265,15 +270,7 @@ public class ManagementServerMock { return null; } }; - - try { - Mockito.when(_agentMgr.send(ArgumentMatchers.anyLong(), ArgumentMatchers.any(Commands.class))).thenAnswer(callback); - } catch (AgentUnavailableException e) { - e.printStackTrace(); - } catch (OperationTimedoutException e) { - e.printStackTrace(); - } - + sendCommands(callback); _userVmDao.remove(vm.getId()); } diff --git a/plugins/network-elements/tungsten/src/test/java/org/apache/cloudstack/network/tungsten/service/TungstenElementTest.java b/plugins/network-elements/tungsten/src/test/java/org/apache/cloudstack/network/tungsten/service/TungstenElementTest.java index 58084d3072d..b22d1e70be3 100644 --- a/plugins/network-elements/tungsten/src/test/java/org/apache/cloudstack/network/tungsten/service/TungstenElementTest.java +++ b/plugins/network-elements/tungsten/src/test/java/org/apache/cloudstack/network/tungsten/service/TungstenElementTest.java @@ -778,60 +778,6 @@ public class TungstenElementTest { verify(tungstenService, times(1)).deleteManagementNetwork(anyLong()); } - //@Test - //public void processConnectWithoutSecurityGroupTest() throws ConnectionException { - // Host host = mock(Host.class); - // StartupCommand startupCommand = mock(StartupCommand.class); - // TungstenProviderVO tungstenProvider = mock(TungstenProviderVO.class); - // DataCenterVO dataCenterVO = mock(DataCenterVO.class); - // VlanVO vlanVO1 = mock(VlanVO.class); - // VlanVO vlanVO2 = mock(VlanVO.class); - // List vlanList = Arrays.asList(vlanVO1, vlanVO2); - // Network publicNetwork = mock(Network.class); - // NetworkDetailVO networkDetail = mock(NetworkDetailVO.class); -// - // when(host.getHypervisorType()).thenReturn(Hypervisor.HypervisorType.KVM); - // when(tungstenProviderDao.findByZoneId(anyLong())).thenReturn(tungstenProvider); - // when(host.getPublicIpAddress()).thenReturn("192.168.100.100"); - // when(tungstenProvider.getGateway()).thenReturn("192.168.100.100"); - // when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); - // when(vlanDao.listByZone(anyLong())).thenReturn(vlanList); - // when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(publicNetwork); - // when(networkDetailsDao.findDetail(anyLong(), anyString())).thenReturn(networkDetail); - // when(vlanVO1.getVlanGateway()).thenReturn("192.168.100.1"); - // when(vlanVO1.getVlanNetmask()).thenReturn("255.255.255.0"); - // when(vlanVO2.getVlanGateway()).thenReturn("192.168.101.1"); - // when(vlanVO2.getVlanNetmask()).thenReturn("255.255.255.0"); - // when(dataCenterVO.isSecurityGroupEnabled()).thenReturn(false); -// - // tungstenElement.processConnect(host, startupCommand, true); - // verify(agentManager, times(1)).easySend(anyLong(), any(SetupTungstenVRouterCommand.class)); - //} - - //@Test - //public void processConnectWithSecurityGroupTest() throws ConnectionException { - // Host host = mock(Host.class); - // StartupCommand startupCommand = mock(StartupCommand.class); - // TungstenProviderVO tungstenProvider = mock(TungstenProviderVO.class); - // DataCenterVO dataCenterVO = mock(DataCenterVO.class); - // NetworkVO network = mock(NetworkVO.class); - // NetworkDetailVO networkDetail = mock(NetworkDetailVO.class); - // Network publicNetwork = mock(Network.class); -// - // when(host.getHypervisorType()).thenReturn(Hypervisor.HypervisorType.KVM); - // when(tungstenProviderDao.findByZoneId(anyLong())).thenReturn(tungstenProvider); - // when(host.getPublicIpAddress()).thenReturn("192.168.100.100"); - // when(tungstenProvider.getGateway()).thenReturn("192.168.100.100"); - // when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); - // when(networkDao.listByZoneSecurityGroup(anyLong())).thenReturn(Arrays.asList(network)); - // when(networkDetailsDao.findDetail(anyLong(), anyString())).thenReturn(networkDetail); - // when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(publicNetwork); - // when(dataCenterVO.isSecurityGroupEnabled()).thenReturn(true); -// - // tungstenElement.processConnect(host, startupCommand, true); - // verify(agentManager, times(1)).easySend(anyLong(), any(SetupTungstenVRouterCommand.class)); - //} - @Test public void processHostAboutToBeRemovedWithSecurityGroupTest() { HostVO hostVO = mock(HostVO.class); diff --git a/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java b/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java index 3d4afcaf95c..9e26aa8625a 100644 --- a/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java @@ -175,9 +175,6 @@ public class ElastistorPrimaryDataStoreDriver extends CloudStackPrimaryDataStore _volumeDao.update(volume.getId(), volume); - // create new volume details for the volume - //updateVolumeDetails(volume, esvolume); - long capacityBytes = storagePool.getCapacityBytes(); long usedBytes = storagePool.getUsedBytes(); diff --git a/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java b/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java index 6650dad7677..603908e024c 100644 --- a/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java +++ b/plugins/storage/volume/cloudbyte/src/main/java/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java @@ -341,7 +341,6 @@ public class ElastistorUtil { String qosgroupid; String VolumeName = volumeName; String totaliops = String.valueOf(capacityIops); - //String totalthroughput = String.valueOf(capacityIops * 4); String totalthroughput = "0"; String quotasize = convertCapacityBytes(capacityBytes); @@ -679,14 +678,6 @@ public class ElastistorUtil { } LOGGER.info("tsm id is null"); return false; - - /* - * else { LOGGER.error("no volume is present in the tsm"); } } else { - * LOGGER.error( - * "List tsm failed, no tsm present in the eastistor for the given IP " - * ); return false; } return false; - */ - } public static boolean deleteElastistorVolume(String esvolumeid) throws Throwable { diff --git a/plugins/storage/volume/linstor/src/test/java/org/apache/cloudstack/storage/datastore/util/LinstorUtilTest.java b/plugins/storage/volume/linstor/src/test/java/org/apache/cloudstack/storage/datastore/util/LinstorUtilTest.java index 55f0c6ebe6d..39d9a253c57 100644 --- a/plugins/storage/volume/linstor/src/test/java/org/apache/cloudstack/storage/datastore/util/LinstorUtilTest.java +++ b/plugins/storage/volume/linstor/src/test/java/org/apache/cloudstack/storage/datastore/util/LinstorUtilTest.java @@ -82,7 +82,6 @@ public class LinstorUtilTest { mockStoragePool("thinpool", "nodeC", ProviderKind.LVM_THIN) )); -// when(LinstorUtil.getLinstorAPI(LINSTOR_URL_TEST)).thenReturn(api); } @Test diff --git a/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/driver/NexentaPrimaryDataStoreDriver.java b/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/driver/NexentaPrimaryDataStoreDriver.java index 60f3bd2ac8d..dad4819c83e 100644 --- a/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/driver/NexentaPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/nexenta/src/main/java/org/apache/cloudstack/storage/datastore/driver/NexentaPrimaryDataStoreDriver.java @@ -187,9 +187,6 @@ public class NexentaPrimaryDataStoreDriver implements PrimaryDataStoreDriver { NexentaStorAppliance appliance = getNexentaStorAppliance(storagePoolId); StoragePoolVO storagePool = _storagePoolDao.findById(storagePoolId); - - -// _storagePoolDao.update(stoagePoolId); } else { errorMessage = String.format( "Invalid DataObjectType(%s) passed to deleteAsync", diff --git a/plugins/storage/volume/nexenta/src/test/java/org/apache/cloudstack/storage/datastore/util/NexentaStorApplianceTest.java b/plugins/storage/volume/nexenta/src/test/java/org/apache/cloudstack/storage/datastore/util/NexentaStorApplianceTest.java index 89b5ece576f..d283e4c35d7 100644 --- a/plugins/storage/volume/nexenta/src/test/java/org/apache/cloudstack/storage/datastore/util/NexentaStorApplianceTest.java +++ b/plugins/storage/volume/nexenta/src/test/java/org/apache/cloudstack/storage/datastore/util/NexentaStorApplianceTest.java @@ -60,7 +60,6 @@ public class NexentaStorApplianceTest { public void init() { final String url = "nmsUrl=https://admin:nexenta@10.1.3.182:8457;volume=cloudstack;storageType=iscsi"; NexentaUtil.NexentaPluginParameters parameters = NexentaUtil.parseNexentaPluginUrl(url); - //client = new NexentaNmsClient(parameters.getNmsUrl()); client = mock(NexentaNmsClient.class); appliance = new NexentaStorAppliance(client, parameters); } diff --git a/plugins/storage/volume/solidfire/src/test/java/org/apache/cloudstack/storage/test/VolumeTest.java b/plugins/storage/volume/solidfire/src/test/java/org/apache/cloudstack/storage/test/VolumeTest.java index 08f95b15d13..d721412b3ec 100644 --- a/plugins/storage/volume/solidfire/src/test/java/org/apache/cloudstack/storage/test/VolumeTest.java +++ b/plugins/storage/volume/solidfire/src/test/java/org/apache/cloudstack/storage/test/VolumeTest.java @@ -64,8 +64,6 @@ public class VolumeTest { DataCenterDao dcDao; @Inject PrimaryDataStoreDao primaryStoreDao; - // @Inject - // PrimaryDataStoreProviderManager primaryDataStoreProviderMgr; @Inject AgentManager agentMgr; Long dcId; @@ -109,25 +107,15 @@ public class VolumeTest { results.add(host); Mockito.when(hostDao.listAll()).thenReturn(results); Mockito.when(hostDao.findHypervisorHostInCluster(ArgumentMatchers.anyLong())).thenReturn(results); - // CreateObjectAnswer createVolumeFromImageAnswer = new - // CreateObjectAnswer(null,UUID.randomUUID().toString(), null); - - // Mockito.when(primaryStoreDao.findById(Mockito.anyLong())).thenReturn(primaryStore); } private PrimaryDataStoreInfo createPrimaryDataStore() { try { - // primaryDataStoreProviderMgr.configure("primary data store mgr", - // new HashMap()); - // PrimaryDataStoreProvider provider = - // primaryDataStoreProviderMgr.getDataStoreProvider("Solidfre Primary Data Store Provider"); Map params = new HashMap(); params.put("url", "nfs://test/test"); params.put("dcId", dcId.toString()); params.put("clusterId", clusterId.toString()); params.put("name", "my primary data store"); - // PrimaryDataStoreInfo primaryDataStoreInfo = - // provider.registerDataStore(params); return null; } catch (Exception e) { return null; diff --git a/plugins/storage/volume/storpool/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/StorPoolDownloadVolumeCommandWrapper.java b/plugins/storage/volume/storpool/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/StorPoolDownloadVolumeCommandWrapper.java index 1679e646e18..de8b9484d11 100644 --- a/plugins/storage/volume/storpool/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/StorPoolDownloadVolumeCommandWrapper.java +++ b/plugins/storage/volume/storpool/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/StorPoolDownloadVolumeCommandWrapper.java @@ -29,7 +29,6 @@ import org.apache.cloudstack.storage.to.VolumeObjectTO; import org.apache.cloudstack.utils.qemu.QemuImg; import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat; import org.apache.cloudstack.utils.qemu.QemuImgFile; -//import java.io.File; import com.cloud.agent.api.storage.StorPoolDownloadVolumeCommand; import com.cloud.agent.api.to.DataStoreTO; diff --git a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/collector/StorPoolAbandonObjectsCollector.java b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/collector/StorPoolAbandonObjectsCollector.java index 84abb1e35d5..7bfa6332bd1 100644 --- a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/collector/StorPoolAbandonObjectsCollector.java +++ b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/collector/StorPoolAbandonObjectsCollector.java @@ -23,7 +23,6 @@ import com.cloud.dc.dao.ClusterDao; import com.cloud.storage.dao.SnapshotDetailsDao; import com.cloud.storage.dao.SnapshotDetailsVO; - import com.cloud.utils.component.ManagerBase; import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.db.DB; diff --git a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java index c305c393c9b..9dc94c20f11 100644 --- a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java +++ b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/driver/StorPoolPrimaryDataStoreDriver.java @@ -934,7 +934,6 @@ public class StorPoolPrimaryDataStoreDriver implements PrimaryDataStoreDriver { if (resp.getError() != null) { err = String.format("Could not create Storpool volume for CS template %s. Error: %s", name, resp.getError()); } else { - //updateVolume(dstData.getId()); VolumeObjectTO dstTO = (VolumeObjectTO)dstData.getTO(); dstTO.setPath(StorPoolUtil.devPath(StorPoolUtil.getNameFromResponse(resp, false))); dstTO.setSize(size); diff --git a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/util/StorPoolHelper.java b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/util/StorPoolHelper.java index 685b99e12d5..ea3ba0e9613 100644 --- a/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/util/StorPoolHelper.java +++ b/plugins/storage/volume/storpool/src/main/java/org/apache/cloudstack/storage/datastore/util/StorPoolHelper.java @@ -178,32 +178,6 @@ public class StorPoolHelper { return tags; } - // Initialize custom logger for updated volume and snapshots -// public static void appendLogger(Logger log, String filePath, String kindOfLog) { -// Appender appender = null; -// PatternLayout patternLayout = new PatternLayout(); -// patternLayout.setConversionPattern("%d{YYYY-MM-dd HH:mm:ss.SSS} %m%n"); -// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); -// Timestamp timestamp = new Timestamp(System.currentTimeMillis()); -// String path = filePath + "-" + sdf.format(timestamp) + ".log"; -// try { -// appender = new RollingFileAppender(patternLayout, path); -// log.setAdditivity(false); -// log.addAppender(appender); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// if (kindOfLog.equals("update")) { -// StorPoolUtil.spLog( -// "You can find information about volumes and snapshots, which will be updated in Database with their globalIs in %s log file", -// path); -// } else if (kindOfLog.equals("abandon")) { -// StorPoolUtil.spLog( -// "You can find information about volumes and snapshots, for which CloudStack doesn't have information in %s log file", -// path); -// } -// } - public static void setSpClusterIdIfNeeded(long hostId, String clusterId, ClusterDao clusterDao, HostDao hostDao, ClusterDetailsDao clusterDetails) { HostVO host = hostDao.findById(hostId); diff --git a/scripts/installer/createtmplt.sh b/scripts/installer/createtmplt.sh index b9b403a94bb..8d9b9876700 100755 --- a/scripts/installer/createtmplt.sh +++ b/scripts/installer/createtmplt.sh @@ -272,9 +272,4 @@ echo "volume.size=$volsize" >> /$tmpltfs/template.properties zfs snapshot -r $tmpltfs@vmops_ss rollback_if_needed $tmpltfs $? "Failed to snapshot filesystem" -#if [ "$cleanup" == "true" ] -#then - #rm -f $tmpltimg -#fi - exit 0 diff --git a/scripts/installer/createvolume.sh b/scripts/installer/createvolume.sh index 4726404b76a..716bb8556ce 100755 --- a/scripts/installer/createvolume.sh +++ b/scripts/installer/createvolume.sh @@ -273,9 +273,4 @@ echo "volume.size=$volsize" >> /$volfs/volume.properties zfs snapshot -r $volfs@vmops_ss rollback_if_needed $volfs $? "Failed to snapshot filesystem" -#if [ "$cleanup" == "true" ] -#then - #rm -f $volimg -#fi - exit 0 diff --git a/scripts/storage/secondary/listvmtmplt.sh b/scripts/storage/secondary/listvmtmplt.sh index 8463b51e4f6..c0f2132879b 100755 --- a/scripts/storage/secondary/listvmtmplt.sh +++ b/scripts/storage/secondary/listvmtmplt.sh @@ -53,11 +53,6 @@ for i in $(find /$rootdir -name template.properties ); do d=$(dirname $i) filename=$(grep "^filename" $i | awk -F"=" '{print $NF}') -# size=$(grep "virtualsize" $i | awk -F"=" '{print $NF}') -# if [ -n "$filename" ] && [ -n "$size" ] -# then -# d=$d/$filename/$size -# fi echo ${d#/}/$filename #remove leading slash done diff --git a/scripts/storage/secondary/listvolume.sh b/scripts/storage/secondary/listvolume.sh index d039c659094..605b8b9a190 100755 --- a/scripts/storage/secondary/listvolume.sh +++ b/scripts/storage/secondary/listvolume.sh @@ -53,11 +53,6 @@ for i in $(find /$rootdir -name volume.properties ); do d=$(dirname $i) filename=$(grep "^filename" $i | awk -F"=" '{print $NF}') -# size=$(grep "virtualsize" $i | awk -F"=" '{print $NF}') -# if [ -n "$filename" ] && [ -n "$size" ] -# then -# d=$d/$filename/$size -# fi echo ${d#/}/$filename #remove leading slash done diff --git a/scripts/vm/hypervisor/ovm3/cloudstack.py b/scripts/vm/hypervisor/ovm3/cloudstack.py index e82863e7af7..39b5926509d 100644 --- a/scripts/vm/hypervisor/ovm3/cloudstack.py +++ b/scripts/vm/hypervisor/ovm3/cloudstack.py @@ -67,10 +67,6 @@ class CloudStack(Agent): 'get_module_version': getModuleVersion, 'get_ovs_version': ovmVersion, 'ping': ping, -# 'patch': ovmCsPatch, -# 'ovs_agent_set_ssl': ovsAgentSetSsl, -# 'ovs_agent_set_port': ovsAgentSetPort, -# 'ovs_restart_agent': ovsRestartAgent, } def getName(self): diff --git a/scripts/vm/hypervisor/xenserver/perfmon.py b/scripts/vm/hypervisor/xenserver/perfmon.py index 59c1ac3b367..fcdc8a62fa4 100755 --- a/scripts/vm/hypervisor/xenserver/perfmon.py +++ b/scripts/vm/hypervisor/xenserver/perfmon.py @@ -210,11 +210,6 @@ def get_vm_group_perfmon(args={}): total_counter = int(args['total_counter']) now = int(time.time()) / 60 - # Get pool's info of this host - #pool = login.xenapi.pool.get_all()[0] - # Get master node's address of pool - #master = login.xenapi.pool.get_master(pool) - #master_address = login.xenapi.host.get_address(master) session = login._session max_duration = 0 @@ -226,7 +221,6 @@ def get_vm_group_perfmon(args={}): rrd_updates = RRDUpdates() rrd_updates.refresh(login.xenapi, now * 60 - max_duration, session, {}) - #for uuid in rrd_updates.get_vm_list(): for vm_count in xrange(1, total_vm + 1): vm_name = args['vmname' + str(vm_count)] vm_uuid = getuuid(vm_name) diff --git a/scripts/vm/hypervisor/xenserver/xcposs/NFSSR.py b/scripts/vm/hypervisor/xenserver/xcposs/NFSSR.py index 306f9416616..84eb7307b85 100644 --- a/scripts/vm/hypervisor/xenserver/xcposs/NFSSR.py +++ b/scripts/vm/hypervisor/xenserver/xcposs/NFSSR.py @@ -175,20 +175,6 @@ class NFSSR(FileSR.FileSR): pass raise exn - #newpath = os.path.join(self.path, sr_uuid) - #if util.ioretry(lambda: util.pathexists(newpath)): - # if len(util.ioretry(lambda: util.listdir(newpath))) != 0: - # self.detach(sr_uuid) - # raise xs_errors.XenError('SRExists') - #else: - # try: - # util.ioretry(lambda: util.makedirs(newpath)) - # except util.CommandException, inst: - # if inst.code != errno.EEXIST: - # self.detach(sr_uuid) - # raise xs_errors.XenError('NFSCreate', - # opterr='remote directory creation error is %d' - # % inst.code) self.detach(sr_uuid) def delete(self, sr_uuid): diff --git a/scripts/vm/hypervisor/xenserver/xcpserver/NFSSR.py b/scripts/vm/hypervisor/xenserver/xcpserver/NFSSR.py index 62031e3708a..faaf6d96486 100755 --- a/scripts/vm/hypervisor/xenserver/xcpserver/NFSSR.py +++ b/scripts/vm/hypervisor/xenserver/xcpserver/NFSSR.py @@ -106,7 +106,6 @@ class NFSSR(FileSR.FileSR): def attach(self, sr_uuid): self.validate_remotepath(False) - #self.remotepath = os.path.join(self.dconf['serverpath'], sr_uuid) self.remotepath = self.dconf['serverpath'] util._testHost(self.dconf['server'], NFSPORT, 'NFSTarget') self.mount_remotepath(sr_uuid) @@ -175,20 +174,6 @@ class NFSSR(FileSR.FileSR): pass raise exn - #newpath = os.path.join(self.path, sr_uuid) - #if util.ioretry(lambda: util.pathexists(newpath)): - # if len(util.ioretry(lambda: util.listdir(newpath))) != 0: - # self.detach(sr_uuid) - # raise xs_errors.XenError('SRExists') - #else: - # try: - # util.ioretry(lambda: util.makedirs(newpath)) - # except util.CommandException, inst: - # if inst.code != errno.EEXIST: - # self.detach(sr_uuid) - # raise xs_errors.XenError('NFSCreate', - # opterr='remote directory creation error is %d' - # % inst.code) self.detach(sr_uuid) def delete(self, sr_uuid): diff --git a/scripts/vm/hypervisor/xenserver/xenserver56/NFSSR.py b/scripts/vm/hypervisor/xenserver/xenserver56/NFSSR.py index b8489e7b766..50e9e6077ce 100755 --- a/scripts/vm/hypervisor/xenserver/xenserver56/NFSSR.py +++ b/scripts/vm/hypervisor/xenserver/xenserver56/NFSSR.py @@ -178,20 +178,6 @@ class NFSSR(FileSR.FileSR): pass raise exn - #newpath = os.path.join(self.path, sr_uuid) - #if util.ioretry(lambda: util.pathexists(newpath)): - # if len(util.ioretry(lambda: util.listdir(newpath))) != 0: - # self.detach(sr_uuid) - # raise xs_errors.XenError('SRExists') - #else: - # try: - # util.ioretry(lambda: util.makedirs(newpath)) - # except util.CommandException, inst: - # if inst.code != errno.EEXIST: - # self.detach(sr_uuid) - # raise xs_errors.XenError('NFSCreate', - # opterr='remote directory creation error is %d' - # % inst.code) self.detach(sr_uuid) @FileSR.locking("SRUnavailable") diff --git a/scripts/vm/hypervisor/xenserver/xenserver56fp1/NFSSR.py b/scripts/vm/hypervisor/xenserver/xenserver56fp1/NFSSR.py index b8c115745af..9d2f81f8e8f 100755 --- a/scripts/vm/hypervisor/xenserver/xenserver56fp1/NFSSR.py +++ b/scripts/vm/hypervisor/xenserver/xenserver56fp1/NFSSR.py @@ -107,7 +107,6 @@ class NFSSR(FileSR.FileSR): def attach(self, sr_uuid): self.validate_remotepath(False) - #self.remotepath = os.path.join(self.dconf['serverpath'], sr_uuid) self.remotepath = self.dconf['serverpath'] util._testHost(self.dconf['server'], NFSPORT, 'NFSTarget') self.mount_remotepath(sr_uuid) @@ -176,20 +175,6 @@ class NFSSR(FileSR.FileSR): pass raise exn - #newpath = os.path.join(self.path, sr_uuid) - #if util.ioretry(lambda: util.pathexists(newpath)): - # if len(util.ioretry(lambda: util.listdir(newpath))) != 0: - # self.detach(sr_uuid) - # raise xs_errors.XenError('SRExists') - #else: - # try: - # util.ioretry(lambda: util.makedirs(newpath)) - # except util.CommandException, inst: - # if inst.code != errno.EEXIST: - # self.detach(sr_uuid) - # raise xs_errors.XenError('NFSCreate', - # opterr='remote directory creation error is %d' - # % inst.code) self.detach(sr_uuid) def delete(self, sr_uuid): diff --git a/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py b/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py index 9a3fa8bc9a1..68aaeae2472 100755 --- a/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py +++ b/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py @@ -181,20 +181,6 @@ class NFSSR(FileSR.FileSR): pass raise exn - #newpath = os.path.join(self.path, sr_uuid) - #if util.ioretry(lambda: util.pathexists(newpath)): - # if len(util.ioretry(lambda: util.listdir(newpath))) != 0: - # self.detach(sr_uuid) - # raise xs_errors.XenError('SRExists') - #else: - # try: - # util.ioretry(lambda: util.makedirs(newpath)) - # except util.CommandException, inst: - # if inst.code != errno.EEXIST: - # self.detach(sr_uuid) - # raise xs_errors.XenError('NFSCreate', - # opterr='remote directory creation error is %d' - # % inst.code) self.detach(sr_uuid) def delete(self, sr_uuid): diff --git a/scripts/vm/network/security_group.py b/scripts/vm/network/security_group.py index d71e27eb264..e7441202032 100755 --- a/scripts/vm/network/security_group.py +++ b/scripts/vm/network/security_group.py @@ -1382,15 +1382,6 @@ def verify_network_rules(vm_name, vm_id, vm_ip, vm_ip6, vm_mac, vif, brname, sec print("Cannot find vif") sys.exit(1) - #vm_name = "i-2-55-VM" - #vm_id = 55 - #vm_ip = "10.11.118.128" - #vm_ip6 = "fe80::1c00:b4ff:fe00:5" - #vm_mac = "1e:00:b4:00:00:05" - #vif = "vnet11" - #brname = "cloudbr0" - #sec_ips = "10.11.118.133;10.11.118.135;10.11.118.138;" # end with ";" and separated by ";" - vm_ips = [] if sec_ips is not None: vm_ips = sec_ips.split(';') diff --git a/scripts/vm/network/vnet/ovstunnel.py b/scripts/vm/network/vnet/ovstunnel.py index a39b6b18ecc..b47455b361d 100755 --- a/scripts/vm/network/vnet/ovstunnel.py +++ b/scripts/vm/network/vnet/ovstunnel.py @@ -49,17 +49,14 @@ def setup_ovs_bridge(bridge, key, cs_host_id): logging.debug("Bridge has been manually created:%s" % res) if res: -# result = "FAILURE:%s" % res result = 'false' else: # Verify the bridge actually exists, with the gre_key properly set res = lib.do_cmd([lib.VSCTL_PATH, "get", "bridge", bridge, "other_config:gre_key"]) if key in str(res): -# result = "SUCCESS:%s" % bridge result = 'true' else: -# result = "FAILURE:%s" % res result = 'false' lib.do_cmd([lib.VSCTL_PATH, "set", "bridge", bridge, "other_config:is-ovs-tun-network=True"]) @@ -134,10 +131,8 @@ def destroy_ovs_bridge(bridge): res = lib.do_cmd([lib.VSCTL_PATH, "del-br", bridge]) logging.debug("Bridge has been manually removed:%s" % res) if res: -# result = "FAILURE:%s" % res result = 'false' else: -# result = "SUCCESS:%s" % bridge result = 'true' logging.debug("Destroy_ovs_bridge completed with result:%s" % result) @@ -150,7 +145,6 @@ def create_tunnel(bridge, remote_ip, key, src_host, dst_host): res = lib.check_switch() if res != "SUCCESS": logging.debug("Openvswitch running: NO") -# return "FAILURE:%s" % res return 'false' # We need to keep the name below 14 characters @@ -189,7 +183,6 @@ def create_tunnel(bridge, remote_ip, key, src_host, dst_host): if len(iface_list) != 1: logging.debug("WARNING: Unexpected output while verifying " + "port %s on bridge %s" % (name, bridge)) -# return "FAILURE:VERIFY_PORT_FAILED" return 'false' # verify interface @@ -205,7 +198,6 @@ def create_tunnel(bridge, remote_ip, key, src_host, dst_host): if key not in str(key_validation) or remote_ip not in str(ip_validation): logging.debug("WARNING: Unexpected output while verifying " + "interface %s on bridge %s" % (name, bridge)) -# return "FAILURE:VERIFY_INTERFACE_FAILED" return 'false' logging.debug("Tunnel interface validated:%s" % verify_interface_ip) @@ -268,7 +260,6 @@ def destroy_tunnel(bridge, iface_name): ofport = get_field_of_interface(iface_name, "ofport") lib.del_flows(bridge, in_port=ofport) lib.del_port(bridge, iface_name) -# return "SUCCESS" return 'true' def get_field_of_interface(iface_name, field): diff --git a/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java b/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java index b5fb77c8179..737d696abb6 100644 --- a/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java +++ b/server/src/main/java/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java @@ -297,8 +297,6 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat public boolean configure(String name, Map params) throws ConfigurationException { Map configs = _configDao.getConfiguration("management-server", params); String stoppedValue = configs.get("vm.resource.release.interval"); - // String destroyedValue = - // configs.get("capacity.skipcounting.destroyed.hours"); String destroyedValue = null; _secondsToSkipStoppedVMs = NumbersUtil.parseInt(stoppedValue, 86400); _secondsToSkipDestroyedVMs = NumbersUtil.parseInt(destroyedValue, 0); diff --git a/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java b/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java index 5de5cd03fe1..87d88df79e3 100644 --- a/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java +++ b/server/src/main/java/com/cloud/api/doc/ApiXmlDocWriter.java @@ -77,13 +77,11 @@ public class ApiXmlDocWriter { List asyncResponses = new ArrayList(); asyncResponses.add(TemplateResponse.class.getName()); asyncResponses.add(VolumeResponse.class.getName()); - //asyncResponses.add(LoadBalancerResponse.class.getName()); asyncResponses.add(HostResponse.class.getName()); asyncResponses.add(IPAddressResponse.class.getName()); asyncResponses.add(StoragePoolResponse.class.getName()); asyncResponses.add(UserVmResponse.class.getName()); asyncResponses.add(SecurityGroupResponse.class.getName()); - //asyncResponses.add(ExternalLoadBalancerResponse.class.getName()); asyncResponses.add(SnapshotResponse.class.getName()); return asyncResponses; diff --git a/server/src/main/java/com/cloud/network/ExternalNetworkDeviceManagerImpl.java b/server/src/main/java/com/cloud/network/ExternalNetworkDeviceManagerImpl.java index a983af839ca..f756a4975cb 100644 --- a/server/src/main/java/com/cloud/network/ExternalNetworkDeviceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/ExternalNetworkDeviceManagerImpl.java @@ -139,20 +139,6 @@ public class ExternalNetworkDeviceManagerImpl extends ManagerBase implements Ext } private List listNetworkDevice(Long zoneId, Long physicalNetworkId, Long podId, Host.Type type) { -// List res = new ArrayList(); -// if (podId != null) { -// List devs = _hostDao.listBy(type, null, podId, zoneId); -// if (devs.size() == 1) { -// res.add(devs.get(0)); -// } else { -// logger.debug("List " + type + ": " + devs.size() + " found"); -// } -// } else { -// List devs = _hostDao.listBy(type, zoneId); -// res.addAll(devs); - // } - - // return res; return null; } diff --git a/server/src/main/java/com/cloud/network/rules/PrivateGatewayRules.java b/server/src/main/java/com/cloud/network/rules/PrivateGatewayRules.java index 1b827b384d0..8e70e4ec3a8 100644 --- a/server/src/main/java/com/cloud/network/rules/PrivateGatewayRules.java +++ b/server/src/main/java/com/cloud/network/rules/PrivateGatewayRules.java @@ -69,7 +69,6 @@ public class PrivateGatewayRules extends RuleApplier { // setup source nat if (_nicProfile != null) { _isAddOperation = true; - // result = setupVpcPrivateNetwork(router, true, guestNic); result = visitor.visit(this); } } catch (final Exception ex) { diff --git a/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java b/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java index db53f2dfc0c..1f1e294bc53 100644 --- a/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java @@ -564,9 +564,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules _accountMgr.checkAccess(vmOwner, SecurityChecker.AccessType.UseEntry, false, network); //is static nat is for vm secondary ip - //dstIp = guestNic.getIp4Address(); if (vmGuestIp != null) { - //dstIp = guestNic.getIp4Address(); if (!dstIp.equals(vmGuestIp)) { //check whether the secondary ip set to the vm or not diff --git a/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java index 637ccabad05..49622e603c8 100644 --- a/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java +++ b/server/src/main/java/com/cloud/network/security/SecurityGroupManagerImpl.java @@ -212,7 +212,6 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro try { cleanupFinishedWork(); cleanupUnfinishedWork(); - //processScheduledWork(); } catch (Throwable th) { logger.error("Problem with SG Cleanup", th); } diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java index e476c74d17d..51793f22e90 100644 --- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java @@ -328,8 +328,6 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio // setup XenServer default PV driver version initiateXenServerPVDriverVersion(); - // We should not update seed data UUID column here since this will be invoked in upgrade case as well. - //updateUuids(); // Set init to true _configDao.update("init", "Hidden", "true"); diff --git a/server/src/main/java/com/cloud/test/IPRangeConfig.java b/server/src/main/java/com/cloud/test/IPRangeConfig.java index 22ebb56963a..e041f739053 100644 --- a/server/src/main/java/com/cloud/test/IPRangeConfig.java +++ b/server/src/main/java/com/cloud/test/IPRangeConfig.java @@ -77,7 +77,6 @@ public class IPRangeConfig { } String pod = args[2]; String zone = args[3]; - ; String startIP = args[4]; String endIP = null; if (args.length == 6) { @@ -99,31 +98,6 @@ public class IPRangeConfig { } } - public List changePublicIPRangeGUI(String op, String zone, String startIP, String endIP, long physicalNetworkId) { - String result = checkErrors("public", op, null, zone, startIP, endIP); - if (!result.equals("success")) { - return DatabaseConfig.genReturnList("false", result); - } - - long zoneId = PodZoneConfig.getZoneId(zone); - result = changeRange(op, "public", -1, zoneId, startIP, endIP, null, physicalNetworkId); - - return DatabaseConfig.genReturnList("true", result); - } - - public List changePrivateIPRangeGUI(String op, String pod, String zone, String startIP, String endIP) { - String result = checkErrors("private", op, pod, zone, startIP, endIP); - if (!result.equals("success")) { - return DatabaseConfig.genReturnList("false", result); - } - - long podId = PodZoneConfig.getPodId(pod, zone); - long zoneId = PodZoneConfig.getZoneId(zone); - result = changeRange(op, "private", podId, zoneId, startIP, endIP, null, -1); - - return DatabaseConfig.genReturnList("true", result); - } - private String checkErrors(String type, String op, String pod, String zone, String startIP, String endIP) { if (!op.equals("add") && !op.equals("delete")) { return usage(); @@ -153,15 +127,7 @@ public class IPRangeConfig { } // Check that the IPs that are being added are compatible with either the zone's public netmask, or the pod's CIDR - if (type.equals("public")) { - // String publicNetmask = getPublicNetmask(zone); - // String publicGateway = getPublicGateway(zone); - - // if (publicNetmask == null) return "Please ensure that your zone's public net mask is specified"; - // if (!sameSubnet(startIP, endIP, publicNetmask)) return "Please ensure that your start IP and end IP are in the same subnet, as per the zone's netmask."; - // if (!sameSubnet(startIP, publicGateway, publicNetmask)) return "Please ensure that your start IP is in the same subnet as your zone's gateway, as per the zone's netmask."; - // if (!sameSubnet(endIP, publicGateway, publicNetmask)) return "Please ensure that your end IP is in the same subnet as your zone's gateway, as per the zone's netmask."; - } else if (type.equals("private")) { + if (type.equals("private")) { String cidrAddress = getCidrAddress(pod, zone); long cidrSize = getCidrSize(pod, zone); diff --git a/server/src/main/java/com/cloud/test/PodZoneConfig.java b/server/src/main/java/com/cloud/test/PodZoneConfig.java index 7cd6cb11871..2d32621a252 100644 --- a/server/src/main/java/com/cloud/test/PodZoneConfig.java +++ b/server/src/main/java/com/cloud/test/PodZoneConfig.java @@ -75,11 +75,6 @@ public class PodZoneConfig { } private String checkPodCidrSubnets(long dcId, HashMap> currentPodCidrSubnets) { - -// DataCenterDao _dcDao = null; -// final ComponentLocator locator = ComponentLocator.getLocator("management-server"); - -// _dcDao = locator.getDao(DataCenterDao.class); // For each pod, return an error if any of the following is true: // 1. The pod's CIDR subnet conflicts with the guest network subnet // 2. The pod's CIDR subnet conflicts with the CIDR subnet of any other pod @@ -87,7 +82,6 @@ public class PodZoneConfig { String zoneName = PodZoneConfig.getZoneName(dcId); //get the guest network cidr and guest netmask from the zone -// DataCenterVO dcVo = _dcDao.findById(dcId); String guestNetworkCidr = IPRangeConfig.getGuestNetworkCidr(dcId); diff --git a/server/src/main/java/org/apache/cloudstack/storage/NfsMountManagerImpl.java b/server/src/main/java/org/apache/cloudstack/storage/NfsMountManagerImpl.java index 0d59a6e3a85..f06adac54ef 100644 --- a/server/src/main/java/org/apache/cloudstack/storage/NfsMountManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/storage/NfsMountManagerImpl.java @@ -97,7 +97,6 @@ public class NfsMountManagerImpl implements NfsMountManager { if (nfsVersion != null){ command.add("-o", "vers=" + nfsVersion); } - // command.add("-o", "soft,timeo=133,retrans=2147483647,tcp,acdirmax=0,acdirmin=0"); if ("Mac OS X".equalsIgnoreCase(System.getProperty("os.name"))) { command.add("-o", "resvport"); } diff --git a/server/src/test/java/com/cloud/api/APITest.java b/server/src/test/java/com/cloud/api/APITest.java index e76b7a74905..dbe91200027 100644 --- a/server/src/test/java/com/cloud/api/APITest.java +++ b/server/src/test/java/com/cloud/api/APITest.java @@ -187,7 +187,6 @@ public abstract class APITest { * @return login response string */ protected void login(String username, String password) { - //String md5Psw = createMD5String(password); // send login request HashMap params = new HashMap(); params.put("response", "json"); diff --git a/server/src/test/java/com/cloud/vpc/Site2SiteVpnTest.java b/server/src/test/java/com/cloud/vpc/Site2SiteVpnTest.java deleted file mode 100644 index f8a42df6c60..00000000000 --- a/server/src/test/java/com/cloud/vpc/Site2SiteVpnTest.java +++ /dev/null @@ -1,75 +0,0 @@ -// 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.vpc; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = "classpath:/VpcTestContext.xml") -public class Site2SiteVpnTest { - -// private static void addDaos(MockComponentLocator locator) { -// locator.addDao("AccountDao", AccountDaoImpl.class); -// locator.addDao("Site2SiteCustomerGatewayDao", Site2SiteCustomerGatewayDaoImpl.class); -// locator.addDao("Site2SiteVpnGatewayDao", Site2SiteVpnGatewayDaoImpl.class); -// locator.addDao("Site2SiteVpnConnectionDao", Site2SiteVpnConnectionDaoImpl.class); -// -// locator.addDao("IPAddressDao", IPAddressDaoImpl.class); -// locator.addDao("VpcDao", VpcDaoImpl.class); -// locator.addDao("ConfiguratioDao", MockConfigurationDaoImpl.class); -// -// } -// -// private static void addManagers(MockComponentLocator locator) { -// locator.addManager("AccountManager", MockAccountManagerImpl.class); -// locator.addManager("VpcManager", MockVpcManagerImpl.class); -// } - - @Before - public void setUp() { -// locator = new MockComponentLocator("management-server"); -// addDaos(locator); -// addManagers(locator); -// logger.info("Finished setUp"); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testInjected() throws Exception { -// List>> list = -// new ArrayList>>(); -// list.add(new Pair>("Site2SiteVpnServiceProvider", MockSite2SiteVpnServiceProvider.class)); -// locator.addAdapterChain(Site2SiteVpnServiceProvider.class, list); -// logger.info("Finished add adapter"); -// locator.makeActive(new DefaultInterceptorLibrary()); -// logger.info("Finished make active"); -// Site2SiteVpnManagerImpl vpnMgr = ComponentLocator.inject(Site2SiteVpnManagerImpl.class); -// logger.info("Finished inject"); -// Assert.assertTrue(vpnMgr.configure("Site2SiteVpnMgr",new HashMap()) ); -// Assert.assertTrue(vpnMgr.start()); - - } - -} diff --git a/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java b/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java index 22c0b47e154..0d45d50d8ae 100644 --- a/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java +++ b/server/src/test/java/com/cloud/vpc/VpcTestConfiguration.java @@ -176,11 +176,6 @@ public class VpcTestConfiguration { return Mockito.mock(RemoteAccessVpnService.class); } -// @Bean -// public VpcDao vpcDao() { -// return Mockito.mock(VpcDao.class); -// } - @Bean public NetworkDao networkDao() { return Mockito.mock(NetworkDao.class); diff --git a/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java b/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java index eab5d3eeffd..2fa9a2d7a44 100644 --- a/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java +++ b/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java @@ -225,7 +225,6 @@ public class CreateNetworkOfferingTest extends TestCase { NetworkOfferingVO off = configMgr.createNetworkOffering("isolated", "isolated", TrafficType.Guest, null, true, Availability.Optional, 200, serviceProviderMap, false, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, false, false, false,null, null, null, false, null, null, false); - // System.out.println("Creating Vpc Network Offering"); assertNotNull("Vpc Isolated network offering with Vpc provider ", off); } @@ -245,7 +244,6 @@ public class CreateNetworkOfferingTest extends TestCase { NetworkOfferingVO off = configMgr.createNetworkOffering("isolated", "isolated", TrafficType.Guest, null, true, Availability.Optional, 200, serviceProviderMap, false, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, false, false, false,null, null, null, false, null, null, false); - // System.out.println("Creating Vpc Network Offering"); assertNotNull("Vpc Isolated network offering with Vpc and Netscaler provider ", off); } } diff --git a/services/console-proxy/rdpconsole/src/main/java/common/adapter/AwtCanvasAdapter.java b/services/console-proxy/rdpconsole/src/main/java/common/adapter/AwtCanvasAdapter.java index f3a73d70dbd..b60dccfc03e 100644 --- a/services/console-proxy/rdpconsole/src/main/java/common/adapter/AwtCanvasAdapter.java +++ b/services/console-proxy/rdpconsole/src/main/java/common/adapter/AwtCanvasAdapter.java @@ -70,7 +70,6 @@ public class AwtCanvasAdapter extends BaseElement { default: throw new RuntimeException("Order is not implemented: " + buf + "."); - // break; } buf.unref(); @@ -93,8 +92,6 @@ public class AwtCanvasAdapter extends BaseElement { Graphics2D g = (Graphics2D)image.getGraphics(); for (BitmapRectangle rectangle : order.rectangles) { - // *DEBUG*/System.out.println("["+this+"] DEBUG: Rectangle: " + - // rectangle.toString()); int x = rectangle.x; int y = rectangle.y; @@ -148,9 +145,6 @@ public class AwtCanvasAdapter extends BaseElement { * Example. */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); - // System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); ByteBuffer packet = new ByteBuffer(new byte[] {0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x04, 0x0a, 0x00, 0x0c, (byte)0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/RdpClient.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/RdpClient.java index 3dd7cf92127..767ca36cb18 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/RdpClient.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/RdpClient.java @@ -96,15 +96,6 @@ public class RdpClient extends PipelineImpl { assembleRDPPipeline(serverHostName, domain, userName, password, pcb, screen, canvas, sslState); } - // /* DEBUG */ -// @Override -// protected HashMap initElementMap(String id) { -// HashMap map = new HashMap(); -// map.put("IN", new ServerPacketSniffer("server <")); -// map.put("OUT", new ClientPacketSniffer("> client")); -// return map; -// } - /** * Assemble connection sequence and main pipeline. * diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/clip/ClipboardDataFormat.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/clip/ClipboardDataFormat.java index 3a165360933..29afc523ad7 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/clip/ClipboardDataFormat.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/clip/ClipboardDataFormat.java @@ -40,11 +40,6 @@ public class ClipboardDataFormat { // Names HTML_FORMAT, - - // RTF_AS_TEXT, - // RICH_TEXT_FORMAT_WITHOUT_OBJECTS, - // RICH_TEXT_FORMAT, - }; public final int id; @@ -115,15 +110,6 @@ public class ClipboardDataFormat { if (HTML_FORMAT.equals(name)) return buf.readVariableString(RdpConstants.CHARSET_8); // TODO: verify - // if (RTF_AS_TEXT.equals(name)) - // return buf.readVariableString(RdpConstants.CHARSET_8); // TODO: verify - // - // if (RICH_TEXT_FORMAT_WITHOUT_OBJECTS.equals(name)) - // return buf.readVariableString(RdpConstants.CHARSET_8); // TODO: verify - // - // if (RICH_TEXT_FORMAT.equals(name)) - // return buf.readVariableString(RdpConstants.CHARSET_8); // TODO: verify - return null; } diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/asn1/TSRequest.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/asn1/TSRequest.java index c5ba5d62ba9..11aee538fb0 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/asn1/TSRequest.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/ntlmssp/asn1/TSRequest.java @@ -180,14 +180,8 @@ public class TSRequest extends Sequence { TSRequest request = new TSRequest("TSRequest"); // Read request from buffer - // System.out.println("Request BER tree before parsing: " + request); ByteBuffer toReadBuf = new ByteBuffer(packet); request.readTag(toReadBuf); - // System.out.println("Request BER tree after parsing: " + request); - - // System.out.println("version value: " + request.version.value); - // System.out.println("negoToken value: " + ((NegoItem) - // request.negoTokens.tags[0]).negoToken.value); // Write request to buffer and compare with original ByteBuffer toWriteBuf = new ByteBuffer(packet.length + 100, true); diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientConfirmActivePDU.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientConfirmActivePDU.java index b77f201dd77..bee26a635ad 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientConfirmActivePDU.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientConfirmActivePDU.java @@ -27,7 +27,7 @@ import streamer.debug.MockSource; import common.ScreenDescription; /** - * @see http://msdn.microsoft.com/en-us/library/cc240488.aspx + * @see microsoft msdn explanation */ public class ClientConfirmActivePDU extends BaseElement { diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSAttachUserRequest.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSAttachUserRequest.java index 47a07da73e0..df575473847 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSAttachUserRequest.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSAttachUserRequest.java @@ -60,9 +60,7 @@ public class ClientMCSAttachUserRequest extends OneTimeSwitch { * Example. */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); /* @formatter:off */ byte[] packet = new byte[] { diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSChannelJoinRequestServerMCSChannelConfirmPDUs.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSChannelJoinRequestServerMCSChannelConfirmPDUs.java index 8213b74a14f..92c7291c21a 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSChannelJoinRequestServerMCSChannelConfirmPDUs.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientMCSChannelJoinRequestServerMCSChannelConfirmPDUs.java @@ -57,7 +57,6 @@ public class ClientMCSChannelJoinRequestServerMCSChannelConfirmPDUs extends OneT // Parse channel confirm response int typeAndFlags = buf.readUnsignedByte(); int type = typeAndFlags >> 2; - // int flags = typeAndFlags & 0x3; if (type != MCS_CHANNEL_CONFIRM_PDU) throw new RuntimeException("[" + this + "] ERROR: Incorrect type of MCS AttachUserConfirm PDU. Expected value: 15, actual value: " + type + ", data: " + buf + "."); @@ -74,11 +73,9 @@ public class ClientMCSChannelJoinRequestServerMCSChannelConfirmPDUs extends OneT // Channel Join Request PDU the connection SHOULD be dropped. // Initiator: 1007 (6+1001) - // int initiator=buf.readUnsignedShort(); buf.skipBytes(2); // Requested channel - // int requestedChannel=buf.readUnsignedShort(); buf.skipBytes(2); // Actual channel @@ -123,9 +120,7 @@ public class ClientMCSChannelJoinRequestServerMCSChannelConfirmPDUs extends OneT * @see http://msdn.microsoft.com/en-us/library/cc240834.aspx */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); /* @formatter:off */ byte[] clientRequestPacket = new byte[] { diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientSynchronizePDU.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientSynchronizePDU.java index b7b52f0ab5f..5390fbf4a76 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientSynchronizePDU.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ClientSynchronizePDU.java @@ -105,9 +105,7 @@ public class ClientSynchronizePDU extends OneTimeSwitch { * @see http://msdn.microsoft.com/en-us/library/cc240841.aspx */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); /* @formatter:off */ byte[] packet = new byte[] { diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerBitmapUpdate.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerBitmapUpdate.java index 6accc162f0b..39553c97e3c 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerBitmapUpdate.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerBitmapUpdate.java @@ -142,7 +142,6 @@ public class ServerBitmapUpdate extends BaseElement { // flag is not. // Note: Even when compression header is enabled, server sends nothing. - // rectangle.compressedBitmapHeader = buf.readBytes(8); } // (variable): A variable-length array of bytes describing a bitmap image. diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerDemandActivePDU.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerDemandActivePDU.java index d11a26b7296..9b95b0ccf33 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerDemandActivePDU.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerDemandActivePDU.java @@ -28,8 +28,8 @@ import streamer.debug.MockSource; import common.ScreenDescription; /** - * @see http://msdn.microsoft.com/en-us/library/cc240669.aspx - * @see http://msdn.microsoft.com/en-us/library/cc240484.aspx + * @see msdn cc240669 + * @see msdn cc240484 */ public class ServerDemandActivePDU extends BaseElement { @@ -83,7 +83,6 @@ public class ServerDemandActivePDU extends BaseElement { // (variable): A variable-length array of bytes containing a source // descriptor, - // ByteBuffer sourceDescriptor = buf.readBytes(lengthSourceDescriptor); buf.skipBytes(lengthSourceDescriptor); // (variable): An array of Capability Set (section 2.2.1.13.1.1.1) @@ -216,7 +215,7 @@ public class ServerDemandActivePDU extends BaseElement { public static final int CAPSSETTYPE_FRAME_ACKNOWLEDGE = 0x001E; /** - * @see http://msdn.microsoft.com/en-us/library/cc240486.aspx + * @see msdn cc240486 */ protected void handleCapabiltySets(ByteBuffer buf) { // (2 bytes): A 16-bit, unsigned integer. The number of capability sets @@ -312,7 +311,7 @@ public class ServerDemandActivePDU extends BaseElement { } /** - * @see http://msdn.microsoft.com/en-us/library/cc240554.aspx + * @see msdn cc240554 */ protected void handleBitmapCapabilities(ByteBuffer buf) { @@ -388,9 +387,7 @@ public class ServerDemandActivePDU extends BaseElement { * */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); /* @formatter:off */ byte[] packet = new byte[] { diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerIOChannelRouter.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerIOChannelRouter.java index 59613bb2b19..20d5f00a048 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerIOChannelRouter.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerIOChannelRouter.java @@ -73,7 +73,6 @@ public class ServerIOChannelRouter extends BaseElement { { // It is ServerErrorAlert-ValidClient // Ignore it - //throw new RuntimeException("[" + this + "] ERROR: Incorrect PDU length: " + length + ", data: " + buf + "."); } int type = buf.readUnsignedShortLE() & 0xf; @@ -88,14 +87,12 @@ public class ServerIOChannelRouter extends BaseElement { case PDUTYPE_CONFIRMACTIVEPDU: throw new RuntimeException("Unexpected client CONFIRM ACTIVE PDU. Data: " + buf + "."); case PDUTYPE_DEACTIVATEALLPDU: - // pushDataToPad("deactivate_all", buf); /* ignore */buf.unref(); break; case PDUTYPE_DATAPDU: handleDataPdu(buf); break; case PDUTYPE_SERVER_REDIR_PKT: - // pushDataToPad("server_redir", buf); /* ignore */buf.unref(); break; default: @@ -253,7 +250,6 @@ public class ServerIOChannelRouter extends BaseElement { long shareId = buf.readUnsignedIntLE(); if (shareId != state.serverShareId) throw new RuntimeException("Unexpected share ID: " + shareId + "."); -// buf.skipBytes(4); // Padding. buf.skipBytes(1); @@ -461,9 +457,7 @@ public class ServerIOChannelRouter extends BaseElement { * */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); byte[] packet = new byte[] { // TPKT diff --git a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerMCSPDU.java b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerMCSPDU.java index d28d0a09f70..71afe4506b3 100644 --- a/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerMCSPDU.java +++ b/services/console-proxy/rdpconsole/src/main/java/rdpclient/rdp/ServerMCSPDU.java @@ -42,7 +42,6 @@ public class ServerMCSPDU extends BaseElement { switch (type) { // Expected type: send data indication: 26 (0x1a, top 6 bits, or 0x68) case 0x1a: { - // int userId = buf.readUnsignedShort() + 1001; // User ID: 1002 (1001+1) buf.skipBytes(2); // Ignore user ID int channelId = buf.readUnsignedShort(); // Channel ID: 1003 @@ -78,9 +77,6 @@ public class ServerMCSPDU extends BaseElement { * */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); - // System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); byte[] packet = new byte[] { // TPKT diff --git a/services/console-proxy/rdpconsole/src/main/java/streamer/BaseElement.java b/services/console-proxy/rdpconsole/src/main/java/streamer/BaseElement.java index 15e1a871033..5f97da21d1f 100644 --- a/services/console-proxy/rdpconsole/src/main/java/streamer/BaseElement.java +++ b/services/console-proxy/rdpconsole/src/main/java/streamer/BaseElement.java @@ -187,7 +187,6 @@ public class BaseElement implements Element { if (buf == null) throw new NullPointerException(); - //return; if (outputPads.size() == 0) throw new RuntimeException("Number of outgoing connection is zero. Cannot send data to output. Data: " + buf + "."); diff --git a/services/console-proxy/rdpconsole/src/main/java/streamer/PipelineImpl.java b/services/console-proxy/rdpconsole/src/main/java/streamer/PipelineImpl.java index 84ed51440d0..df2652e5c9a 100644 --- a/services/console-proxy/rdpconsole/src/main/java/streamer/PipelineImpl.java +++ b/services/console-proxy/rdpconsole/src/main/java/streamer/PipelineImpl.java @@ -307,9 +307,6 @@ public class PipelineImpl implements Pipeline { * Example. */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); - // System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); Pipeline pipeline = new PipelineImpl("main"); diff --git a/services/console-proxy/rdpconsole/src/main/java/streamer/Queue.java b/services/console-proxy/rdpconsole/src/main/java/streamer/Queue.java index ea64b323d2c..be4ed29e71c 100644 --- a/services/console-proxy/rdpconsole/src/main/java/streamer/Queue.java +++ b/services/console-proxy/rdpconsole/src/main/java/streamer/Queue.java @@ -101,7 +101,6 @@ public class Queue extends BaseElement { * Example. */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); Element source1 = new FakeSource("source1") { diff --git a/services/console-proxy/rdpconsole/src/main/java/streamer/debug/MockSource.java b/services/console-proxy/rdpconsole/src/main/java/streamer/debug/MockSource.java index a77f1d4a84b..31ef8160066 100644 --- a/services/console-proxy/rdpconsole/src/main/java/streamer/debug/MockSource.java +++ b/services/console-proxy/rdpconsole/src/main/java/streamer/debug/MockSource.java @@ -75,7 +75,6 @@ public class MockSource extends FakeSource { new ByteBuffer(new byte[] {3, 1, 2, 3}), new ByteBuffer(new byte[] {4, 1, 2}), new ByteBuffer(new byte[] {5, 1})}; verbose = true; delay = 100; - // this.numBuffers = this.bufs.length; } }; diff --git a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Authentication.java b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Authentication.java index 4aa834dfcca..8d0f9173a5b 100644 --- a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Authentication.java +++ b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Authentication.java @@ -256,9 +256,7 @@ public class Vnc33Authentication extends OneTimeSwitch { * Example. */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); final String password = "test"; diff --git a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Hello.java b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Hello.java index 812c6a83644..d677abaffd5 100644 --- a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Hello.java +++ b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/Vnc33Hello.java @@ -82,9 +82,7 @@ public class Vnc33Hello extends OneTimeSwitch { * Example. */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); InputStream is = new ByteArrayInputStream("RFB 003.007\ntest".getBytes(RfbConstants.US_ASCII_CHARSET)); ByteArrayOutputStream initOS = new ByteArrayOutputStream(); diff --git a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncInitializer.java b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncInitializer.java index 0b96c7303e4..4f4d96d07d0 100644 --- a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncInitializer.java +++ b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncInitializer.java @@ -158,9 +158,7 @@ public class VncInitializer extends OneTimeSwitch { * Example. */ public static void main(String args[]) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); final String desktopName = "test"; diff --git a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncMessageHandler.java b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncMessageHandler.java index 5914cb30f7a..e9b8933830f 100644 --- a/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncMessageHandler.java +++ b/services/console-proxy/rdpconsole/src/main/java/vncclient/vnc/VncMessageHandler.java @@ -330,9 +330,7 @@ public class VncMessageHandler extends BaseElement { */ public static void main(String[] args) { - // System.setProperty("streamer.Link.debug", "true"); System.setProperty("streamer.Element.debug", "true"); - // System.setProperty("streamer.Pipeline.debug", "true"); Element source = new MockSource("source") { { diff --git a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java index a25abac981b..e75ccea9044 100644 --- a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java +++ b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java @@ -113,7 +113,6 @@ public class ConsoleProxy { } catch (URISyntaxException e) { System.out.println("Unable to convert log4j configuration Url to URI"); } - // DOMConfigurator.configure(configUrl); } else { System.out.println("Configure log4j with default properties"); } diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java index 916773cc5a4..093840157d0 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java @@ -2225,8 +2225,6 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S Map tmpltInfos = new HashMap(); for (S3ObjectSummary objectSummary : objectSummaries) { String key = objectSummary.getKey(); - // String installPath = StringUtils.substringBeforeLast(key, - // S3Utils.SEPARATOR); String uniqueName = determineS3TemplateNameFromKey(key); // TODO: isPublic value, where to get? TemplateProp tInfo = new TemplateProp(uniqueName, key, objectSummary.getSize(), objectSummary.getSize(), true, false); @@ -2246,8 +2244,6 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S Map tmpltInfos = new HashMap(); for (S3ObjectSummary objectSummary : objectSummaries) { String key = objectSummary.getKey(); - // String installPath = StringUtils.substringBeforeLast(key, - // S3Utils.SEPARATOR); Long id = determineS3VolumeIdFromKey(key); // TODO: how to get volume template name TemplateProp tInfo = new TemplateProp(id.toString(), key, objectSummary.getSize(), objectSummary.getSize(), true, false); diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java index 599dcfa0c48..dd3ecbdb8f3 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/DownloadManagerImpl.java @@ -1058,7 +1058,6 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager try { if (!loc.load()) { logger.warn("Post download installation was not completed for " + path); - // loc.purge(); _storage.cleanup(path, templateDir); continue; } @@ -1104,7 +1103,6 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager try { if (!loc.load()) { logger.warn("Post download installation was not completed for " + path); - // loc.purge(); _storage.cleanup(path, volumeDir); continue; } diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/UploadManagerImpl.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/UploadManagerImpl.java index ae02d7e8aa7..abddc3aa1bf 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/UploadManagerImpl.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/template/UploadManagerImpl.java @@ -415,7 +415,6 @@ public class UploadManagerImpl extends ManagerBase implements UploadManager { if (inSystemVM != null && "true".equalsIgnoreCase(inSystemVM)) { logger.info("UploadManager: starting additional services since we are inside system vm"); startAdditionalServices(); - //blockOutgoingOnPrivate(); } value = (String)params.get("install.numthreads"); diff --git a/services/secondary-storage/server/src/test/java/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResourceTest.java b/services/secondary-storage/server/src/test/java/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResourceTest.java index 3d62bc127af..e79d013afd8 100644 --- a/services/secondary-storage/server/src/test/java/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResourceTest.java +++ b/services/secondary-storage/server/src/test/java/org/apache/cloudstack/storage/resource/LocalNfsSecondaryStorageResourceTest.java @@ -71,7 +71,6 @@ public class LocalNfsSecondaryStorageResourceTest extends TestCase { } System.setProperty("paths.script", "/Users/edison/develop/asf-master/script"); - //resource.configure("test", new HashMap()); } @Test diff --git a/systemvm/agent/scripts/run-proxy.sh b/systemvm/agent/scripts/run-proxy.sh index f26f54b12b5..40e7c8f6447 100755 --- a/systemvm/agent/scripts/run-proxy.sh +++ b/systemvm/agent/scripts/run-proxy.sh @@ -33,16 +33,4 @@ do CP=${CP}:$file done -#CMDLINE=$(cat /proc/cmdline) -#for i in $CMDLINE -# do -# KEY=$(echo $i | cut -d= -f1) -# VALUE=$(echo $i | cut -d= -f2) -# case $KEY in -# mgmt_host) -# MGMT_HOST=$VALUE -# ;; -# esac -# done - java -mx700m -cp $CP:./conf com.cloud.consoleproxy.ConsoleProxy $@ diff --git a/utils/src/main/java/com/cloud/utils/xmlobject/XmlObject.java b/utils/src/main/java/com/cloud/utils/xmlobject/XmlObject.java index 67634e46c40..42f687ca74c 100644 --- a/utils/src/main/java/com/cloud/utils/xmlobject/XmlObject.java +++ b/utils/src/main/java/com/cloud/utils/xmlobject/XmlObject.java @@ -55,14 +55,11 @@ public class XmlObject { } Object old = elements.get(key); if (old == null) { - //System.out.println(String.format("no %s, add new", key)); elements.put(key, e); } else { if (old instanceof List) { - //System.out.println(String.format("already list %s, add", key)); ((List)old).add(e); } else { - //System.out.println(String.format("not list list %s, add list", key)); List lst = new ArrayList(); lst.add(old); lst.add(e); diff --git a/utils/src/main/java/com/cloud/utils/xmlobject/XmlObjectParser.java b/utils/src/main/java/com/cloud/utils/xmlobject/XmlObjectParser.java index ea631704820..25146f72b9a 100644 --- a/utils/src/main/java/com/cloud/utils/xmlobject/XmlObjectParser.java +++ b/utils/src/main/java/com/cloud/utils/xmlobject/XmlObjectParser.java @@ -49,7 +49,6 @@ public class XmlObjectParser { @Override public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { - //System.out.println(String.format("startElement: namespaceURI:%s, localName:%s, qName:%s", namespaceURI, localName, qName)); currentValue = null; XmlObject obj = new XmlObject(); for (int i = 0; i < atts.getLength(); i++) { @@ -73,8 +72,6 @@ public class XmlObjectParser { if (stack.isEmpty()) { root = currObj; } - - //System.out.println(String.format("endElement: namespaceURI:%s, localName:%s, qName:%s", namespaceURI, localName, qName)); } @Override @@ -82,7 +79,6 @@ public class XmlObjectParser { StringBuilder str = new StringBuilder(); str.append(ch, start, length); currentValue = str.toString(); - //System.out.println(String.format("characters: %s", str.toString())); } XmlObject getRoot() { diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java index 5b9e3520da1..d896d01eb43 100644 --- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java +++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java @@ -1716,7 +1716,6 @@ public class VirtualMachineMO extends BaseMO { cdRom.setBacking(backingInfo); VirtualMachineConfigSpec reConfigSpec = new VirtualMachineConfigSpec(); - //VirtualDeviceConfigSpec[] deviceConfigSpecArray = new VirtualDeviceConfigSpec[1]; VirtualDeviceConfigSpec deviceConfigSpec = new VirtualDeviceConfigSpec(); deviceConfigSpec.setDevice(cdRom); @@ -1726,7 +1725,6 @@ public class VirtualMachineMO extends BaseMO { deviceConfigSpec.setOperation(VirtualDeviceConfigSpecOperation.EDIT); } - //deviceConfigSpecArray[0] = deviceConfigSpec; reConfigSpec.getDeviceChange().add(deviceConfigSpec); ManagedObjectReference morTask = _context.getService().reconfigVMTask(_mor, reConfigSpec); @@ -1768,13 +1766,11 @@ public class VirtualMachineMO extends BaseMO { device.setBacking(backingInfo); VirtualMachineConfigSpec reConfigSpec = new VirtualMachineConfigSpec(); - //VirtualDeviceConfigSpec[] deviceConfigSpecArray = new VirtualDeviceConfigSpec[1]; VirtualDeviceConfigSpec deviceConfigSpec = new VirtualDeviceConfigSpec(); deviceConfigSpec.setDevice(device); deviceConfigSpec.setOperation(VirtualDeviceConfigSpecOperation.EDIT); - //deviceConfigSpecArray[0] = deviceConfigSpec; reConfigSpec.getDeviceChange().add(deviceConfigSpec); ManagedObjectReference morTask = _context.getService().reconfigVMTask(_mor, reConfigSpec); From 5151f8dc6a9ce644513c3a78db0ad8a1601aae9d Mon Sep 17 00:00:00 2001 From: dahn Date: Mon, 8 Dec 2025 16:33:10 +0100 Subject: [PATCH 05/96] java dependabot file (#11409) Co-authored-by: Daan Hoogland --- .github/workflows/dependabot.yaml | 11 +++++++++++ pom.xml | 1 + 2 files changed, 12 insertions(+) create mode 100644 .github/workflows/dependabot.yaml diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml new file mode 100644 index 00000000000..5b063201e48 --- /dev/null +++ b/.github/workflows/dependabot.yaml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "maven" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" diff --git a/pom.xml b/pom.xml index fcf11e357d2..7d29ce609c6 100644 --- a/pom.xml +++ b/pom.xml @@ -1078,6 +1078,7 @@ ui/legacy/** utils/testsmallfileinactive **/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker + .github/workflows/dependabot.yaml From 51910cd26066d9064729fbe85b363020994b26c9 Mon Sep 17 00:00:00 2001 From: dahn Date: Mon, 8 Dec 2025 16:48:18 +0100 Subject: [PATCH 06/96] Add license information to dependabot.yaml Added Apache License information to dependabot.yaml --- .github/workflows/dependabot.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml index 5b063201e48..88985cbdef1 100644 --- a/.github/workflows/dependabot.yaml +++ b/.github/workflows/dependabot.yaml @@ -1,3 +1,20 @@ +# 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. + # To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: From 223fc2512ce64a5f1165bfa68b0dfec61f043169 Mon Sep 17 00:00:00 2001 From: dahn Date: Tue, 9 Dec 2025 10:51:42 +0100 Subject: [PATCH 07/96] Enhance NFS mount option check for empty response (#11839) --- .../component/maint/test_primary_storage_nfsmountopts_kvm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/component/maint/test_primary_storage_nfsmountopts_kvm.py b/test/integration/component/maint/test_primary_storage_nfsmountopts_kvm.py index f2ad18188ca..21aee0cc717 100644 --- a/test/integration/component/maint/test_primary_storage_nfsmountopts_kvm.py +++ b/test/integration/component/maint/test_primary_storage_nfsmountopts_kvm.py @@ -110,7 +110,7 @@ class TestNFSMountOptsKVM(cloudstackTestCase): def getNFSMountOptionForPool(self, option, poolId): nfsstat_cmd = "nfsstat -m | sed -n '/%s/{ n; p }'" % poolId nfsstat = self.sshClient.execute(nfsstat_cmd) - if (nfsstat == None): + if nfsstat == None or len(nfsstat) == 0: return None stat = nfsstat[0] vers = stat[stat.find(option):].split("=")[1].split(",")[0] From 3c6484792d8df5de7991c1263c0bf338dcd7dc19 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Tue, 9 Dec 2025 04:56:04 -0500 Subject: [PATCH 08/96] UI: Create Account form to set proper domain and role based on route (#12200) --- ui/src/views/iam/AddAccount.vue | 85 ++++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 17 deletions(-) diff --git a/ui/src/views/iam/AddAccount.vue b/ui/src/views/iam/AddAccount.vue index 9118a61e7fe..25b45cded4e 100644 --- a/ui/src/views/iam/AddAccount.vue +++ b/ui/src/views/iam/AddAccount.vue @@ -114,6 +114,7 @@ :placeholder="apiParams.domainid.description" showSearch optionFilterProp="label" + @change="onDomainChange" :filterOption="(input, option) => { return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 }" > @@ -207,8 +208,9 @@ export default { this.fetchTimeZone = debounce(this.fetchTimeZone, 800) return { loading: false, - domain: { loading: false }, + domain: { id: null, loading: false }, domainsList: [], + dom: null, roleLoading: false, roles: [], timeZoneLoading: false, @@ -227,14 +229,35 @@ export default { computed: { samlAllowed () { return 'authorizeSamlSso' in this.$store.getters.apis + }, + selectedDomain () { + return this.domainsList.find(domain => domain.id === this.form.domainid) + }, + isNonRootDomain () { + if (!this.selectedDomain) return false + return this.selectedDomain.level > 0 && this.selectedDomain.path !== 'ROOT' + } + }, + watch: { + 'form.domainid': { + handler (newDomainId, oldDomainId) { + if (newDomainId && this.roles.length > 0) { + this.$nextTick(() => { + this.setDefaultRole() + }) + } + }, + immediate: false } }, methods: { initForm () { + var domId = this.$route.query.domainid || this.$store.getters.userInfo.domainid this.formRef = ref() this.form = reactive({ - domainid: this.$store.getters.userInfo.domainid + domainid: domId }) + this.domain.id = domId this.rules = reactive({ roleid: [{ required: true, message: this.$t('message.error.select') }], username: [{ required: true, message: this.$t('message.error.required.input') }], @@ -263,9 +286,36 @@ export default { isDomainAdmin () { return this.$store.getters.userInfo.roletype === 'DomainAdmin' }, + isAdmin () { + return this.$store.getters.userInfo.roletype === 'Admin' + }, isValidValueForKey (obj, key) { return key in obj && obj[key] != null }, + onDomainChange (newDomainId) { + if (newDomainId && this.roles.length > 0) { + this.$nextTick(() => { + this.setDefaultRole() + }) + } + }, + setDefaultRole () { + if (this.roles.length === 0) return + + let targetRoleType = null + + if (this.isAdmin()) { + targetRoleType = this.isNonRootDomain ? 'DomainAdmin' : 'Admin' + } else if (this.isDomainAdmin()) { + targetRoleType = 'User' + } + + const targetRole = targetRoleType + ? this.roles.find(role => role.type === targetRoleType) + : this.roles[0] + + this.form.roleid = (targetRole || this.roles[0]).id + }, async validateConfirmPassword (rule, value) { if (!value || value.length === 0) { return Promise.resolve() @@ -286,17 +336,22 @@ export default { this.loadMore('listDomains', 1, this.domain) }, loadMore (apiToCall, page, sema) { - console.log('sema.loading ' + sema.loading) - const params = {} - params.listAll = true - params.details = 'min' - params.pagesize = 100 - params.page = page + const params = { + listAll: true, + details: 'min', + pagesize: 100, + page: page + } var count getAPI(apiToCall, params).then(json => { const listDomains = json.listdomainsresponse.domain count = json.listdomainsresponse.count this.domainsList = this.domainsList.concat(listDomains) + this.dom = this.domainsList.find(domain => domain.id === this.domain.id) + + if (this.roles.length > 0) { + this.setDefaultRole() + } }).finally(() => { if (count <= this.domainsList.length) { sema.loading = false @@ -307,17 +362,13 @@ export default { }, fetchRoles () { this.roleLoading = true - const params = {} - params.state = 'enabled' + const params = { + state: 'enabled' + } + getAPI('listRoles', params).then(response => { this.roles = response.listrolesresponse.role || [] - this.form.roleid = this.roles[0].id - if (this.isDomainAdmin()) { - const userRole = this.roles.filter(role => role.type === 'User') - if (userRole.length > 0) { - this.form.roleid = userRole[0].id - } - } + this.setDefaultRole() }).finally(() => { this.roleLoading = false }) From 951649c420a96256826533d262f9df8017c9b9b2 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Date: Tue, 9 Dec 2025 16:26:16 +0530 Subject: [PATCH 09/96] Support iprange while creating remote access vpn (#12063) --- ui/public/locales/en.json | 3 + ui/src/views/network/VpnDetails.vue | 148 +++++++++++++++++----------- 2 files changed, 94 insertions(+), 57 deletions(-) diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 8f2e1bb5c05..00c81104e75 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -1879,6 +1879,7 @@ "label.release.dedicated.pod": "Release dedicated Pod", "label.release.dedicated.zone": "Release dedicated Zone", "label.releasing.ip": "Releasing IP", +"label.remote.access.vpn.specify.iprange": "Specify IP Range of remote VPN", "label.remote.instances": "Remote Instances", "label.remove": "Remove", "label.remove.annotation": "Remove comment", @@ -3055,6 +3056,7 @@ "message.enable.vpn.processing": "Enabling VPN...", "message.enabled.vpn": "Your remote access VPN is currently enabled and can be accessed via the IP.", "message.enabled.vpn.ip.sec": "Your IPSec pre-shared key is", +"message.enabled.vpn.ip.range": "Your VPN IP Range is", "message.enabling.security.group.provider": "Enabling security group provider", "message.enter.valid.nic.ip": "Please enter a valid IP address for NIC", "message.error.access.key": "Please enter access key.", @@ -3380,6 +3382,7 @@ "message.releasing.dedicated.host": "Releasing dedicated host...", "message.releasing.dedicated.pod": "Releasing dedicated Pod...", "message.releasing.dedicated.zone": "Releasing dedicated Zone...", +"message.remote.access.vpn.iprange.description": "The range of IP addresses to allocate to VPN clients. The first IP in the range will be taken by the VPN server. (Optional)", "message.remove.annotation": "Are you sure you want to delete the comment?", "message.remove.egress.rule.failed": "Removing egress rule failed", "message.remove.egress.rule.processing": "Deleting egress rule...", diff --git a/ui/src/views/network/VpnDetails.vue b/ui/src/views/network/VpnDetails.vue index 206f776aa8c..d4c7a87ec79 100644 --- a/ui/src/views/network/VpnDetails.vue +++ b/ui/src/views/network/VpnDetails.vue @@ -16,71 +16,93 @@ // under the License. + + diff --git a/ui/src/config/section/tools.js b/ui/src/config/section/tools.js index a07228ca87b..5b7f4b9af32 100644 --- a/ui/src/config/section/tools.js +++ b/ui/src/config/section/tools.js @@ -116,6 +116,10 @@ export default { name: 'details', component: shallowRef(defineAsyncComponent(() => import('@/components/view/DetailsTab.vue'))) }, + { + name: 'filters', + component: shallowRef(defineAsyncComponent(() => import('@/components/view/WebhookFiltersTab.vue'))) + }, { name: 'recent.deliveries', component: shallowRef(defineAsyncComponent(() => import('@/components/view/WebhookDeliveriesTab.vue'))) From fca928d609baffa87750d9de8b3d48e8746d64ce Mon Sep 17 00:00:00 2001 From: YoulongChen <30854794+YLChen-007@users.noreply.github.com> Date: Mon, 5 Jan 2026 20:28:48 +0800 Subject: [PATCH 61/96] fix HMAC Signatures and API Keys Logged in Plaintext (#12021) Co-authored-by: chenyoulong20g@ict.ac.cn Co-authored-by: dahn --- .../java/com/cloud/storage/template/HttpTemplateDownloader.java | 2 +- .../schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java index cf49217ef5b..6fe001de72c 100755 --- a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java +++ b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java @@ -151,7 +151,7 @@ public class HttpTemplateDownloader extends ManagedContextRunnable implements Te client.getParams().setAuthenticationPreemptive(true); Credentials defaultcreds = new UsernamePasswordCredentials(user, password); client.getState().setCredentials(new AuthScope(hostAndPort.first(), hostAndPort.second(), AuthScope.ANY_REALM), defaultcreds); - logger.info("Added username=" + user + ", password=" + password + "for host " + hostAndPort.first() + ":" + hostAndPort.second()); + logger.info("Added username={}, password=****** for host {}:{}", user, hostAndPort.first(), hostAndPort.second()); } else { logger.info("No credentials configured for host=" + hostAndPort.first() + ":" + hostAndPort.second()); } diff --git a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java index 384826227af..cccfbe8a006 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java @@ -99,7 +99,7 @@ public class DatabaseCreator { String username = dbProperties.getProperty(String.format("db.%s.username", database)); String password = dbProperties.getProperty(String.format("db.%s.password", database)); String dbName = dbProperties.getProperty(String.format("db.%s.name", database)); - System.out.println(String.format("========> Initializing database=%s with host=%s port=%s username=%s password=%s", dbName, host, port, username, password)); + System.out.println(String.format("========> Initializing database=%s with host=%s port=%s username=%s password=******", dbName, host, port, username)); List queries = new ArrayList(); queries.add(String.format("drop database if exists `%s`", dbName)); From a29de0ed0665ea97a8bcdf35a2651b4f5df26494 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Mon, 5 Jan 2026 21:00:39 +0530 Subject: [PATCH 62/96] Retry cloneVM task when any file access issue while cloning from volume or template (#12335) --- .../vmware/mo/VirtualMachineMO.java | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java index 9802328827a..950ec9010cb 100644 --- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java +++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java @@ -788,11 +788,8 @@ public class VirtualMachineMO extends BaseMO { cloneSpec.setMemory(false); cloneSpec.setConfig(vmConfigSpec); - ManagedObjectReference morTask = _context.getService().cloneVMTask(_mor, morFolder, cloneName, cloneSpec); - - boolean result = _context.getVimClient().waitForTask(morTask); + boolean result = cloneVM(cloneName, morFolder, cloneSpec); if (result) { - _context.waitForTaskProgressDone(morTask); VirtualMachineMO clonedVm = dcMo.findVm(cloneName); if (clonedVm == null) { logger.error(String.format("Failed to clone Instance %s", cloneName)); @@ -802,10 +799,9 @@ public class VirtualMachineMO extends BaseMO { clonedVm.tagAsWorkerVM(); makeSureVMHasOnlyRequiredDisk(clonedVm, requiredDisk, dsMo, dcMo); return clonedVm; - } else { - logger.error("VMware cloneVM_Task failed due to " + TaskMO.getTaskFailureInfo(_context, morTask)); - return null; } + + return null; } private void makeSureVMHasOnlyRequiredDisk(VirtualMachineMO clonedVm, VirtualDisk requiredDisk, DatastoreMO dsMo, DatacenterMO dcMo) throws Exception { @@ -852,16 +848,42 @@ public class VirtualMachineMO extends BaseMO { setDiskProvisioningType(relocSpec, morDs, diskProvisioningType); - ManagedObjectReference morTask = _context.getService().cloneVMTask(_mor, morFolder, cloneName, cloneSpec); + return cloneVM(cloneName, morFolder, cloneSpec); + } + private boolean cloneVMTask(String cloneName, ManagedObjectReference morFolder, VirtualMachineCloneSpec cloneSpec) throws Exception { + ManagedObjectReference morTask = _context.getService().cloneVMTask(_mor, morFolder, cloneName, cloneSpec); boolean result = _context.getVimClient().waitForTask(morTask); if (result) { _context.waitForTaskProgressDone(morTask); return true; - } else { - logger.error("VMware cloneVM_Task failed due to " + TaskMO.getTaskFailureInfo(_context, morTask)); } + logger.error("VMware cloneVM_Task failed due to {}", TaskMO.getTaskFailureInfo(_context, morTask)); + return false; + } + + private boolean cloneVM(final String cloneName, final ManagedObjectReference morFolder, final VirtualMachineCloneSpec cloneSpec) throws Exception { + final int retry = 20; + int retryAttempt = 0; + while (++retryAttempt <= retry) { + try { + logger.debug("Cloning VM {}, attempt #{}", cloneName, retryAttempt); + return cloneVMTask(cloneName, morFolder, cloneSpec); + } catch (Exception e) { + logger.info("Got exception while cloning VM {}", cloneName, e); + if (e.getMessage() != null && e.getMessage().contains("Unable to access file")) { + logger.debug("Failed to clone VM {}. Retrying", cloneName); + try { + Thread.sleep(1000); + } catch (InterruptedException ie) { + logger.debug("Waiting to clone VM {} been interrupted: ", cloneName); + } + } else { + throw e; + } + } + } return false; } @@ -925,17 +947,7 @@ public class VirtualMachineMO extends BaseMO { cloneSpec.setLocation(rSpec); cloneSpec.setSnapshot(morBaseSnapshot); - ManagedObjectReference morTask = _context.getService().cloneVMTask(_mor, morFolder, cloneName, cloneSpec); - - boolean result = _context.getVimClient().waitForTask(morTask); - if (result) { - _context.waitForTaskProgressDone(morTask); - return true; - } else { - logger.error("VMware cloneVM_Task failed due to " + TaskMO.getTaskFailureInfo(_context, morTask)); - } - - return false; + return cloneVM(cloneName, morFolder, cloneSpec); } public VirtualMachineRuntimeInfo getRuntimeInfo() throws Exception { From 2d4b7ba3578a705b3a1bbc08d2a38d334b03816f Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Tue, 6 Jan 2026 12:08:18 +0530 Subject: [PATCH 63/96] Add mountopts to backup repository response (#12360) --- .../backup/repository/AddBackupRepositoryCmd.java | 3 ++- .../api/response/BackupRepositoryResponse.java | 12 ++++++++++++ .../cloudstack/backup/BackupRepositoryService.java | 1 - .../main/java/com/cloud/api/ApiResponseHelper.java | 3 +++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/repository/AddBackupRepositoryCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/repository/AddBackupRepositoryCmd.java index 64998a74954..7caa4ce710f 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/backup/repository/AddBackupRepositoryCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/backup/repository/AddBackupRepositoryCmd.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.api.command.user.backup.repository; +import com.cloud.utils.StringUtils; import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; @@ -100,7 +101,7 @@ public class AddBackupRepositoryCmd extends BaseCmd { } public String getMountOptions() { - return mountOptions == null ? "" : mountOptions; + return StringUtils.isBlank(mountOptions) ? "" : mountOptions; } public Long getZoneId() { diff --git a/api/src/main/java/org/apache/cloudstack/api/response/BackupRepositoryResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/BackupRepositoryResponse.java index 327bbae0051..0d3c830950b 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/BackupRepositoryResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/BackupRepositoryResponse.java @@ -57,6 +57,10 @@ public class BackupRepositoryResponse extends BaseResponse { @Param(description = "backup type") private String type; + @SerializedName(ApiConstants.MOUNT_OPTIONS) + @Param(description = "mount options", since = "4.22.1") + private String mountOptions; + @SerializedName(ApiConstants.CAPACITY_BYTES) @Param(description = "capacity of the backup repository") private Long capacityBytes; @@ -128,6 +132,14 @@ public class BackupRepositoryResponse extends BaseResponse { this.type = type; } + public String getMountOptions() { + return mountOptions; + } + + public void setMountOptions(String mountOptions) { + this.mountOptions = mountOptions; + } + public Long getCapacityBytes() { return capacityBytes; } diff --git a/api/src/main/java/org/apache/cloudstack/backup/BackupRepositoryService.java b/api/src/main/java/org/apache/cloudstack/backup/BackupRepositoryService.java index 875fc3b3d90..cc8144ebe40 100644 --- a/api/src/main/java/org/apache/cloudstack/backup/BackupRepositoryService.java +++ b/api/src/main/java/org/apache/cloudstack/backup/BackupRepositoryService.java @@ -32,5 +32,4 @@ public interface BackupRepositoryService { BackupRepository updateBackupRepository(UpdateBackupRepositoryCmd cmd); boolean deleteBackupRepository(DeleteBackupRepositoryCmd cmd); Pair, Integer> listBackupRepositories(ListBackupRepositoriesCmd cmd); - } diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index 83b6e4d2bf1..f8e6753fb78 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -5526,6 +5526,9 @@ public class ApiResponseHelper implements ResponseGenerator { response.setAddress(backupRepository.getAddress()); response.setProviderName(backupRepository.getProvider()); response.setType(backupRepository.getType()); + if (StringUtils.isNotBlank(backupRepository.getMountOptions())) { + response.setMountOptions(backupRepository.getMountOptions()); + } response.setCapacityBytes(backupRepository.getCapacityBytes()); response.setCrossZoneInstanceCreation(backupRepository.crossZoneInstanceCreationEnabled()); response.setObjectName("backuprepository"); From c465caf81e743b1a0d6f919e472e2d82d1c71a66 Mon Sep 17 00:00:00 2001 From: dahn Date: Tue, 6 Jan 2026 08:17:37 +0100 Subject: [PATCH 64/96] Adjust close periods (#12376) --- .github/workflows/stale.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f12fbe93de6..e90c75979b6 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -33,9 +33,11 @@ jobs: stale-issue-message: 'This issue is stale because it has been open for 120 days with no activity. It may be removed by administrators of this project at any time. Remove the stale label or comment to request for removal of it to prevent this.' stale-pr-message: 'This PR is stale because it has been open for 120 days with no activity. It may be removed by administrators of this project at any time. Remove the stale label or comment to request for removal of it to prevent this.' close-issue-message: 'This issue was closed because it has been stale for 120 days with no activity.' - close-pr-message: 'This PR was closed because it has been stale for 120 days with no activity.' + close-pr-message: 'This PR was closed because it has been stale for 240 days with no activity.' stale-issue-label: 'no-issue-activity' stale-pr-label: 'no-pr-activity' days-before-stale: 120 + days-before-close: -1 + days-before-pr-close: 240 exempt-issue-labels: 'gsoc,good-first-issue,long-term-plan' exempt-pr-labels: 'status:ready-for-merge,status:needs-testing,status:on-hold' From 57331aca2fc4b0c7051a94a52b18969ac6920fd4 Mon Sep 17 00:00:00 2001 From: Manoj Kumar Date: Wed, 7 Jan 2026 09:25:11 +0530 Subject: [PATCH 65/96] Skip removal of offerings if in use during domain removal (#11780) This PR fixes #11502 - Prevent service offering update to specific domains if any instance for the offering are outside of those - Removal of offerings is skipped if it is in use by any Instance. --- .../java/com/cloud/storage/dao/VolumeDao.java | 2 + .../com/cloud/storage/dao/VolumeDaoImpl.java | 14 +++++++ .../java/com/cloud/vm/dao/VMInstanceDao.java | 3 ++ .../com/cloud/vm/dao/VMInstanceDaoImpl.java | 37 +++++++++++++++++++ .../ConfigurationManagerImpl.java | 8 +++- .../com/cloud/user/DomainManagerImpl.java | 25 +++++++++++-- 6 files changed, 84 insertions(+), 5 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDao.java b/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDao.java index e6ffca06f9e..4936af3caab 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDao.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDao.java @@ -162,4 +162,6 @@ public interface VolumeDao extends GenericDao, StateDao searchRemovedByVms(List vmIds, Long batchSize); VolumeVO findOneByIScsiName(String iScsiName); + + int getVolumeCountByOfferingId(long diskOfferingId); } diff --git a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDaoImpl.java b/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDaoImpl.java index 750dbf2bee0..5ef64b04664 100644 --- a/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/storage/dao/VolumeDaoImpl.java @@ -77,6 +77,7 @@ public class VolumeDaoImpl extends GenericDaoBase implements Vol protected GenericSearchBuilder primaryStorageSearch2; protected GenericSearchBuilder secondaryStorageSearch; private final SearchBuilder poolAndPathSearch; + final GenericSearchBuilder CountByOfferingId; @Inject ReservationDao reservationDao; @@ -504,6 +505,11 @@ public class VolumeDaoImpl extends GenericDaoBase implements Vol poolAndPathSearch.and("poolId", poolAndPathSearch.entity().getPoolId(), Op.EQ); poolAndPathSearch.and("path", poolAndPathSearch.entity().getPath(), Op.EQ); poolAndPathSearch.done(); + + CountByOfferingId = createSearchBuilder(Integer.class); + CountByOfferingId.select(null, Func.COUNT, CountByOfferingId.entity().getId()); + CountByOfferingId.and("diskOfferingId", CountByOfferingId.entity().getDiskOfferingId(), Op.EQ); + CountByOfferingId.done(); } @Override @@ -909,4 +915,12 @@ public class VolumeDaoImpl extends GenericDaoBase implements Vol sc.setParameters("iScsiName", iScsiName); return findOneIncludingRemovedBy(sc); } + + @Override + public int getVolumeCountByOfferingId(long diskOfferingId) { + SearchCriteria sc = CountByOfferingId.create(); + sc.setParameters("diskOfferingId", diskOfferingId); + List results = customSearch(sc, null); + return results.get(0); + } } diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDao.java b/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDao.java index 823642d8c3d..56e16ddd871 100755 --- a/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDao.java +++ b/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDao.java @@ -187,4 +187,7 @@ public interface VMInstanceDao extends GenericDao, StateDao< Map getNameIdMapForVmIds(Collection ids); + int getVmCountByOfferingId(Long serviceOfferingId); + + int getVmCountByOfferingNotInDomain(Long serviceOfferingId, List domainIds); } diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDaoImpl.java b/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDaoImpl.java index 29ab74dfbfd..518bc3cf497 100755 --- a/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/vm/dao/VMInstanceDaoImpl.java @@ -104,6 +104,8 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem protected SearchBuilder LastHostAndStatesSearch; protected SearchBuilder VmsNotInClusterUsingPool; protected SearchBuilder IdsPowerStateSelectSearch; + GenericSearchBuilder CountByOfferingId; + GenericSearchBuilder CountUserVmNotInDomain; @Inject ResourceTagDao tagsDao; @@ -344,6 +346,18 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem IdsPowerStateSelectSearch.entity().getPowerStateUpdateCount(), IdsPowerStateSelectSearch.entity().getPowerStateUpdateTime()); IdsPowerStateSelectSearch.done(); + + CountByOfferingId = createSearchBuilder(Integer.class); + CountByOfferingId.select(null, Func.COUNT, CountByOfferingId.entity().getId()); + CountByOfferingId.and("serviceOfferingId", CountByOfferingId.entity().getServiceOfferingId(), Op.EQ); + CountByOfferingId.done(); + + CountUserVmNotInDomain = createSearchBuilder(Integer.class); + CountUserVmNotInDomain.select(null, Func.COUNT, CountUserVmNotInDomain.entity().getId()); + CountUserVmNotInDomain.and("serviceOfferingId", CountUserVmNotInDomain.entity().getServiceOfferingId(), Op.EQ); + CountUserVmNotInDomain.and("domainIdsNotIn", CountUserVmNotInDomain.entity().getDomainId(), Op.NIN); + CountUserVmNotInDomain.done(); + } @Override @@ -1224,4 +1238,27 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem return vms.stream() .collect(Collectors.toMap(VMInstanceVO::getInstanceName, VMInstanceVO::getId)); } + + @Override + public int getVmCountByOfferingId(Long serviceOfferingId) { + if (serviceOfferingId == null) { + return 0; + } + SearchCriteria sc = CountByOfferingId.create(); + sc.setParameters("serviceOfferingId", serviceOfferingId); + List count = customSearch(sc, null); + return count.get(0); + } + + @Override + public int getVmCountByOfferingNotInDomain(Long serviceOfferingId, List domainIds) { + if (serviceOfferingId == null || CollectionUtils.isEmpty(domainIds)) { + return 0; + } + SearchCriteria sc = CountUserVmNotInDomain.create(); + sc.setParameters("serviceOfferingId", serviceOfferingId); + sc.setParameters("domainIdsNotIn", domainIds.toArray()); + List count = customSearch(sc, null); + return count.get(0); + } } diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index 246681f7585..62b3c23d27e 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -50,7 +50,7 @@ import java.util.stream.Collectors; import javax.inject.Inject; import javax.naming.ConfigurationException; - +import com.cloud.exception.UnsupportedServiceException; import com.cloud.network.as.AutoScaleManager; import com.cloud.user.AccountManagerImpl; import org.apache.cloudstack.acl.RoleType; @@ -3722,6 +3722,12 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati List filteredDomainIds = filterChildSubDomains(domainIds); Collections.sort(filteredDomainIds); + // avoid domain update of service offering if any instance is associated to it + int instanceCount = _vmInstanceDao.getVmCountByOfferingNotInDomain(offeringHandle.getId(), filteredDomainIds); + if (instanceCount > 0) { + throw new UnsupportedServiceException("There are Instances associated to this service offering outside of the specified domains."); + } + List filteredZoneIds = new ArrayList<>(); if (CollectionUtils.isNotEmpty(zoneIds)) { filteredZoneIds.addAll(zoneIds); diff --git a/server/src/main/java/com/cloud/user/DomainManagerImpl.java b/server/src/main/java/com/cloud/user/DomainManagerImpl.java index 6fc9c6f5ef5..28f9bd3ab39 100644 --- a/server/src/main/java/com/cloud/user/DomainManagerImpl.java +++ b/server/src/main/java/com/cloud/user/DomainManagerImpl.java @@ -34,6 +34,8 @@ import com.cloud.api.query.vo.NetworkOfferingJoinVO; import com.cloud.api.query.vo.VpcOfferingJoinVO; import com.cloud.configuration.Resource; import com.cloud.domain.dao.DomainDetailsDao; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.vpc.dao.VpcDao; import com.cloud.network.vpc.dao.VpcOfferingDao; import com.cloud.network.vpc.dao.VpcOfferingDetailsDao; import com.cloud.offerings.dao.NetworkOfferingDao; @@ -85,6 +87,7 @@ import com.cloud.projects.dao.ProjectDao; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.service.dao.ServiceOfferingDetailsDao; import com.cloud.storage.dao.DiskOfferingDao; +import com.cloud.storage.dao.VolumeDao; import com.cloud.user.dao.AccountDao; import com.cloud.utils.Pair; import com.cloud.utils.component.ManagerBase; @@ -101,6 +104,8 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContextImpl; +import com.cloud.vm.dao.VMInstanceDao; + import org.apache.commons.lang3.StringUtils; @Component @@ -141,6 +146,14 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom @Inject private ProjectDao _projectDao; @Inject + private VMInstanceDao vmInstanceDao; + @Inject + private NetworkDao networkDao; + @Inject + private VolumeDao volumeDao; + @Inject + private VpcDao vpcDao; + @Inject private ProjectManager _projectMgr; @Inject private RegionManager _regionMgr; @@ -543,7 +556,8 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom List vpcOfferingsDetailsToRemove = new ArrayList<>(); List vpcOfferingsForThisDomain = vpcOfferingJoinDao.findByDomainId(domainId); for (VpcOfferingJoinVO vpcOffering : vpcOfferingsForThisDomain) { - if (domainIdString.equals(vpcOffering.getDomainId())) { + int vpcCount = vpcDao.getVpcCountByOfferingId(vpcOffering.getId()); + if (vpcCount == 0) { vpcOfferingDao.remove(vpcOffering.getId()); } else { vpcOfferingsDetailsToRemove.add(vpcOffering.getId()); @@ -558,7 +572,8 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom List networkOfferingsDetailsToRemove = new ArrayList<>(); List networkOfferingsForThisDomain = networkOfferingJoinDao.findByDomainId(domainId, false); for (NetworkOfferingJoinVO networkOffering : networkOfferingsForThisDomain) { - if (domainIdString.equals(networkOffering.getDomainId())) { + int networkCount = networkDao.getNetworkCountByNetworkOffId(networkOffering.getId()); + if (networkCount == 0) { networkOfferingDao.remove(networkOffering.getId()); } else { networkOfferingsDetailsToRemove.add(networkOffering.getId()); @@ -573,7 +588,8 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom List serviceOfferingsDetailsToRemove = new ArrayList<>(); List serviceOfferingsForThisDomain = serviceOfferingJoinDao.findByDomainId(domainId); for (ServiceOfferingJoinVO serviceOffering : serviceOfferingsForThisDomain) { - if (domainIdString.equals(serviceOffering.getDomainId())) { + int vmCount = vmInstanceDao.getVmCountByOfferingId(serviceOffering.getId()); + if (vmCount == 0) { serviceOfferingDao.remove(serviceOffering.getId()); } else { serviceOfferingsDetailsToRemove.add(serviceOffering.getId()); @@ -588,7 +604,8 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom List diskOfferingsDetailsToRemove = new ArrayList<>(); List diskOfferingsForThisDomain = diskOfferingJoinDao.findByDomainId(domainId); for (DiskOfferingJoinVO diskOffering : diskOfferingsForThisDomain) { - if (domainIdString.equals(diskOffering.getDomainId())) { + int volumeCount = volumeDao.getVolumeCountByOfferingId(diskOffering.getId()); + if (volumeCount == 0) { diskOfferingDao.remove(diskOffering.getId()); } else { diskOfferingsDetailsToRemove.add(diskOffering.getId()); From 750290b8aede34c1da4012307ca8bc9ebfdb1343 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Wed, 7 Jan 2026 01:09:15 -0500 Subject: [PATCH 66/96] Prevent NPE when removing NIC from a stopped VM using service offering with CPU cap set (#12232) This PR fixes: #12225 --------- Co-authored-by: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> --- server/src/main/java/com/cloud/hypervisor/KVMGuru.java | 3 ++- server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/com/cloud/hypervisor/KVMGuru.java b/server/src/main/java/com/cloud/hypervisor/KVMGuru.java index 9edaa5e6d64..62063714b89 100644 --- a/server/src/main/java/com/cloud/hypervisor/KVMGuru.java +++ b/server/src/main/java/com/cloud/hypervisor/KVMGuru.java @@ -132,7 +132,8 @@ public class KVMGuru extends HypervisorGuruBase implements HypervisorGuru { VirtualMachine vm = vmProfile.getVirtualMachine(); HostVO host = hostDao.findById(vm.getHostId()); if (host == null) { - throw new CloudRuntimeException("Host with id: " + vm.getHostId() + " not found"); + logger.warn("Host is not available. Skipping setting CPU quota percentage for VM: {}", vm); + return; } logger.debug("Limiting CPU usage for VM: {} on host: {}", vm, host); double hostMaxSpeed = getHostCPUSpeed(host); diff --git a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java index eea8bb9de68..07e19d99f39 100644 --- a/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java +++ b/server/src/test/java/com/cloud/hypervisor/KVMGuruTest.java @@ -32,7 +32,6 @@ import com.cloud.storage.GuestOSVO; import com.cloud.storage.dao.GuestOSDao; import com.cloud.storage.dao.GuestOSHypervisorDao; import com.cloud.utils.Pair; -import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; import org.apache.cloudstack.api.ApiConstants; @@ -141,10 +140,11 @@ public class KVMGuruTest { Mockito.verify(vmTO).setCpuQuotaPercentage(Mockito.anyDouble()); } - @Test(expected = CloudRuntimeException.class) + @Test public void testSetVmQuotaPercentageNullHost() { Mockito.when(hostDao.findById(hostId)).thenReturn(null); guru.setVmQuotaPercentage(vmTO, vmProfile); + Mockito.verify(vmTO, Mockito.never()).setCpuQuotaPercentage(Mockito.anyDouble()); } @Test From e47d7bc6ff12167f97932c922475ce8cb6593abe Mon Sep 17 00:00:00 2001 From: John Bampton Date: Thu, 8 Jan 2026 02:22:52 +1000 Subject: [PATCH 67/96] [CI] Dependabot: add a cooldown period for new releases (#12384) --- .github/dependabot.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 88985cbdef1..41b307863fc 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -26,3 +26,5 @@ updates: directory: "/" # Location of package manifests schedule: interval: "daily" + cooldown: + default-days: 7 From fd1c67f47390d2d4ff8e121d83de7284e0211c1b Mon Sep 17 00:00:00 2001 From: John Bampton Date: Thu, 8 Jan 2026 20:26:40 +1000 Subject: [PATCH 68/96] Standardize and auto add license headers to properties files (#12231) --- .pre-commit-config.yaml | 10 +++++++ .../hypervisors/ovm3/sonar-project.properties | 28 +++++++++---------- .../ovm3/src/test/resources/log4j.properties | 28 +++++++++---------- .../src/test/resources/log4j.properties | 26 +++++++++-------- systemvm/agent/conf/environment.properties | 17 +++++++++++ 5 files changed, 69 insertions(+), 40 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ef0b0c204eb..26adafcbf26 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -62,6 +62,16 @@ repos: - .github/workflows/license-templates/LICENSE.txt - --fuzzy-match-generates-todo exclude: ^(CHANGES|ISSUE_TEMPLATE|PULL_REQUEST_TEMPLATE)\.md$|^ui/docs/(full|smoke)-test-plan\.template\.md$ + - id: insert-license + name: add license for all properties files + description: automatically adds a licence header to all properties files that don't have a license header + files: \.properties$ + args: + - --comment-style + - '|#|' + - --license-filepath + - .github/workflows/license-templates/LICENSE.txt + - --fuzzy-match-generates-todo - id: insert-license name: add license for all Shell files description: automatically adds a licence header to all Shell files that don't have a license header diff --git a/plugins/hypervisors/ovm3/sonar-project.properties b/plugins/hypervisors/ovm3/sonar-project.properties index d632dfb9f91..7355f1df4f7 100644 --- a/plugins/hypervisors/ovm3/sonar-project.properties +++ b/plugins/hypervisors/ovm3/sonar-project.properties @@ -1,19 +1,19 @@ -#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 +# 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 +# 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. +# 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. # Required metadata sonar.projectKey=cloud-plugin-hypervisor-ovm3 diff --git a/plugins/hypervisors/ovm3/src/test/resources/log4j.properties b/plugins/hypervisors/ovm3/src/test/resources/log4j.properties index 82ee5c55c4c..0f72e39d855 100644 --- a/plugins/hypervisors/ovm3/src/test/resources/log4j.properties +++ b/plugins/hypervisors/ovm3/src/test/resources/log4j.properties @@ -1,19 +1,19 @@ -#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 +# 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 +# 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. +# 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. # Root logger option log4j.rootLogger=DEBUG, stdout diff --git a/plugins/network-elements/globodns/src/test/resources/log4j.properties b/plugins/network-elements/globodns/src/test/resources/log4j.properties index 1bac606ff63..8b1d961f7b6 100644 --- a/plugins/network-elements/globodns/src/test/resources/log4j.properties +++ b/plugins/network-elements/globodns/src/test/resources/log4j.properties @@ -1,17 +1,19 @@ -# 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 +# 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 +# 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. +# 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. # Define the root logger with appender file #log = /var/log/log4j diff --git a/systemvm/agent/conf/environment.properties b/systemvm/agent/conf/environment.properties index 269acad9152..20ca1a2b432 100644 --- a/systemvm/agent/conf/environment.properties +++ b/systemvm/agent/conf/environment.properties @@ -1,2 +1,19 @@ +# 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. + paths.script=../../scripts/storage/secondary/ paths.pid=. From bc76f2042d74ecee12a4cbea95e70b4bd75aae85 Mon Sep 17 00:00:00 2001 From: Tonitzpp <134986282+Tonitzpp@users.noreply.github.com> Date: Thu, 8 Jan 2026 09:55:34 -0300 Subject: [PATCH 69/96] Change migration volume exception messages (#12367) Co-authored-by: toni.zamparetti Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../main/java/com/cloud/storage/VolumeApiServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 4f03e788173..bdf9bc1bc1d 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -2179,14 +2179,16 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic } Collections.shuffle(suitableStoragePoolsWithEnoughSpace); MigrateVolumeCmd migrateVolumeCmd = new MigrateVolumeCmd(volume.getId(), suitableStoragePoolsWithEnoughSpace.get(0).getId(), newDiskOffering.getId(), true); + String volumeUuid = volume.getUuid(); try { Volume result = migrateVolume(migrateVolumeCmd); volume = (result != null) ? _volsDao.findById(result.getId()) : null; if (volume == null) { - throw new CloudRuntimeException(String.format("Volume change offering operation failed for volume: %s migration failed to storage pool %s", volume, suitableStoragePools.get(0))); + throw new CloudRuntimeException("Change offering for the volume failed."); } } catch (Exception e) { - throw new CloudRuntimeException(String.format("Volume change offering operation failed for volume: %s migration failed to storage pool %s due to %s", volume, suitableStoragePools.get(0), e.getMessage())); + logger.error("Volume change offering operation failed for volume ID: {} migration failed to storage pool {} due to {}", volumeUuid, suitableStoragePoolsWithEnoughSpace.get(0).getId(), e.getMessage()); + throw new CloudRuntimeException("Change offering for the volume failed.", e); } } @@ -2199,7 +2201,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic if (volumeMigrateRequired) { logger.warn(String.format("Volume change offering operation succeeded for volume ID: %s but volume resize operation failed, so please try resize volume operation separately", volume.getUuid())); } else { - throw new CloudRuntimeException(String.format("Volume change offering operation failed for volume ID: %s due to resize volume operation failed", volume.getUuid())); + throw new CloudRuntimeException(String.format("Volume disk offering change operation failed for volume ID [%s] because the volume resize operation failed.", volume.getUuid())); } } } From bc3d7c314bb61af7dfb822a644c3032ff8d5c0aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20De=20Marco=20Gon=C3=A7alves?= Date: Fri, 9 Jan 2026 05:17:44 -0300 Subject: [PATCH 70/96] Change the `value` parameter of the `updateConfiguration` API to be required (#10790) --- .../com/cloud/configuration/ConfigurationManagerImpl.java | 8 ++++---- 1 file changed, 4 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 705e7dea158..e6abc21e7da 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -1031,6 +1031,10 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati category = config.getCategory(); } + if (value == null) { + throw new InvalidParameterValueException(String.format("The new value for the [%s] configuration must be given.", name)); + } + validateIpAddressRelatedConfigValues(name, value); validateConflictingConfigValue(name, value); @@ -1039,10 +1043,6 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati throw new CloudRuntimeException("Only Root Admin is allowed to edit this configuration."); } - if (value == null) { - return _configDao.findByName(name); - } - ConfigKey.Scope scope = null; Long id = null; int paramCountCheck = 0; From 1ef636577167cc7cc7a6ce63c54b54c1ab32aabf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20B=C3=B6ck?= <89930804+erikbocks@users.noreply.github.com> Date: Fri, 9 Jan 2026 05:23:46 -0300 Subject: [PATCH 71/96] Change internal ID to UUID in user disable event (#11824) --- .../cloudstack/api/command/admin/user/DisableUserCmd.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java index 974c1c7bebe..6ce669d8523 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java @@ -78,12 +78,12 @@ public class DisableUserCmd extends BaseAsyncCmd { @Override public String getEventDescription() { - return "disabling user: " + getId(); + return "disabling user: " + this._uuidMgr.getUuid(User.class, getId()); } @Override public void execute() { - CallContext.current().setEventDetails("UserId: " + getId()); + CallContext.current().setEventDetails("User ID: " + this._uuidMgr.getUuid(User.class, getId())); UserAccount user = _regionService.disableUser(this); if (user != null) { From 1b861dad48fe4987b691eab7ed102638d5c1f550 Mon Sep 17 00:00:00 2001 From: "Suyang(Dawson) Chen" Date: Fri, 9 Jan 2026 03:30:17 -0500 Subject: [PATCH 72/96] Cleanup: Standardize logger message formatting in ApiServer.java (#11188) --- .../src/main/java/com/cloud/api/ApiServer.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/com/cloud/api/ApiServer.java b/server/src/main/java/com/cloud/api/ApiServer.java index 5a3c8c2c717..95aca28b53f 100644 --- a/server/src/main/java/com/cloud/api/ApiServer.java +++ b/server/src/main/java/com/cloud/api/ApiServer.java @@ -461,14 +461,14 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer final Long snapshotLimit = ConcurrentSnapshotsThresholdPerHost.value(); if (snapshotLimit == null || snapshotLimit <= 0) { - logger.debug("Global concurrent snapshot config parameter " + ConcurrentSnapshotsThresholdPerHost.value() + " is less or equal 0; defaulting to unlimited"); + logger.debug("Global concurrent snapshot config parameter {} is less or equal 0; defaulting to unlimited", ConcurrentSnapshotsThresholdPerHost.value()); } else { dispatcher.setCreateSnapshotQueueSizeLimit(snapshotLimit); } final Long migrationLimit = VolumeApiService.ConcurrentMigrationsThresholdPerDatastore.value(); if (migrationLimit == null || migrationLimit <= 0) { - logger.debug("Global concurrent migration config parameter " + VolumeApiService.ConcurrentMigrationsThresholdPerDatastore.value() + " is less or equal 0; defaulting to unlimited"); + logger.debug("Global concurrent migration config parameter {} is less or equal 0; defaulting to unlimited", VolumeApiService.ConcurrentMigrationsThresholdPerDatastore.value()); } else { dispatcher.setMigrateQueueSizeLimit(migrationLimit); } @@ -647,7 +647,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer logValue = (value == null) ? "'null'" : value[0]; } - logger.trace(" key: " + keyStr + ", value: " + logValue); + logger.trace(" key: {}, value: {}", keyStr, logValue); } } throw new ServerApiException(ApiErrorCode.UNSUPPORTED_ACTION_ERROR, "Invalid request, no command sent"); @@ -707,7 +707,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer buf.append(obj.getUuid()); buf.append(" "); } - logger.info("PermissionDenied: " + ex.getMessage() + " on objs: [" + buf + "]"); + logger.info("PermissionDenied: {} on objs: [{}]", ex.getMessage(), buf); } else { logger.info("PermissionDenied: {}", ex.getMessage()); } @@ -1035,7 +1035,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer // if api/secret key are passed to the parameters if ((signature == null) || (apiKey == null)) { - logger.debug("Expired session, missing signature, or missing apiKey -- ignoring request. Signature: " + signature + ", apiKey: " + apiKey); + logger.warn("Expired session, missing signature, or missing apiKey -- ignoring request. Signature: {}, apiKey: {}", signature, apiKey); return false; // no signature, bad request } @@ -1258,7 +1258,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer float offsetInHrs = 0f; if (timezone != null) { final TimeZone t = TimeZone.getTimeZone(timezone); - logger.info("Current user logged in under " + timezone + " timezone"); + logger.info("Current user logged in under {} timezone", timezone); final java.util.Date date = new java.util.Date(); final long longDate = date.getTime(); @@ -1410,9 +1410,9 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer final Boolean apiSourceCidrChecksEnabled = ApiServiceConfiguration.ApiSourceCidrChecksEnabled.value(); if (apiSourceCidrChecksEnabled) { - logger.debug("CIDRs from which account '" + account.toString() + "' is allowed to perform API calls: " + accessAllowedCidrs); + logger.debug("CIDRs from which account '{}' is allowed to perform API calls: {}", account.toString(), accessAllowedCidrs); if (!NetUtils.isIpInCidrList(remoteAddress, accessAllowedCidrs.split(","))) { - logger.warn("Request by account '" + account.toString() + "' was denied since " + remoteAddress + " does not match " + accessAllowedCidrs); + logger.warn("Request by account '{}' was denied since {} does not match {}", account.toString(), remoteAddress, accessAllowedCidrs); throw new OriginDeniedException("Calls from disallowed origin", account, remoteAddress); } } From 9a38e75abdffdc22568c57f4abcb7519b7933ea9 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Fri, 9 Jan 2026 05:48:04 -0300 Subject: [PATCH 73/96] Fix Linstor shrink qcow2 volumes (#12387) --- .../src/main/java/com/cloud/storage/VolumeApiServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index 0faf9f1e2c0..4f8b55d16fb 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -2420,7 +2420,8 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic } } - if (volume != null && ImageFormat.QCOW2.equals(volume.getFormat()) && !Volume.State.Allocated.equals(volume.getState()) && !StoragePoolType.StorPool.equals(volume.getPoolType())) { + if (volume != null && ImageFormat.QCOW2.equals(volume.getFormat()) && !Volume.State.Allocated.equals(volume.getState()) && + !Arrays.asList(StoragePoolType.StorPool, StoragePoolType.Linstor).contains(volume.getPoolType())) { String message = "Unable to shrink volumes of type QCOW2"; logger.warn(message); throw new InvalidParameterValueException(message); From c91e84c6d8b1b440d8c6af49f7b8f728c406e701 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Fri, 9 Jan 2026 18:00:24 +0530 Subject: [PATCH 74/96] Avoid double counting primary storage allocated capacity for storage pools having a parent (#12181) --- .../java/com/cloud/capacity/dao/CapacityDaoImpl.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/engine/schema/src/main/java/com/cloud/capacity/dao/CapacityDaoImpl.java b/engine/schema/src/main/java/com/cloud/capacity/dao/CapacityDaoImpl.java index 5e7eee4566c..7bd3df103b1 100644 --- a/engine/schema/src/main/java/com/cloud/capacity/dao/CapacityDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/capacity/dao/CapacityDaoImpl.java @@ -213,6 +213,8 @@ public class CapacityDaoImpl extends GenericDaoBase implements private static final String LEFT_JOIN_VM_TEMPLATE = "LEFT JOIN vm_template ON vm_template.id = vi.vm_template_id "; + private static final String STORAGE_POOLS_WITH_CHILDREN = "SELECT DISTINCT parent FROM storage_pool WHERE parent != 0 AND removed IS NULL"; + public CapacityDaoImpl() { _hostIdTypeSearch = createSearchBuilder(); _hostIdTypeSearch.and("hostId", _hostIdTypeSearch.entity().getHostOrPoolId(), SearchCriteria.Op.EQ); @@ -379,6 +381,11 @@ public class CapacityDaoImpl extends GenericDaoBase implements finalQuery.append(" AND capacity_type = ?"); resourceIdList.add(capacityType.longValue()); } + + // Exclude storage pools with children from capacity calculations to avoid double counting + finalQuery.append(" AND NOT (capacity.capacity_type = ").append(Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED) + .append(" AND capacity.host_id IN (").append(STORAGE_POOLS_WITH_CHILDREN).append("))"); + if (CollectionUtils.isNotEmpty(hostIds)) { finalQuery.append(String.format(" AND capacity.host_id IN (%s)", StringUtils.join(hostIds, ","))); if (capacityType == null) { @@ -541,6 +548,10 @@ public class CapacityDaoImpl extends GenericDaoBase implements StringBuilder sql = new StringBuilder(LIST_CAPACITY_GROUP_BY_CAPACITY_PART1); List resourceIdList = new ArrayList(); + // Exclude storage pools with children from capacity calculations to avoid double counting + sql.append(" AND NOT (capacity.capacity_type = ").append(Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED) + .append(" AND capacity.host_id IN (").append(STORAGE_POOLS_WITH_CHILDREN).append("))"); + if (zoneId != null) { sql.append(" AND capacity.data_center_id = ?"); resourceIdList.add(zoneId); From ef1aaa0551d3d372e3ac7295b7f87dc203212a80 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 9 Jan 2026 18:26:39 +0530 Subject: [PATCH 75/96] kvm: allow skip forcing disk controller (#11750) --- .../java/com/cloud/vm/VmDetailConstants.java | 3 + .../resource/LibvirtComputingResource.java | 52 +++++++++++---- .../LibvirtComputingResourceTest.java | 65 +++++++++++++++++-- .../com/cloud/api/query/QueryManagerImpl.java | 1 + 4 files changed, 106 insertions(+), 15 deletions(-) diff --git a/api/src/main/java/com/cloud/vm/VmDetailConstants.java b/api/src/main/java/com/cloud/vm/VmDetailConstants.java index a6c9b6eba16..3d0152b0e43 100644 --- a/api/src/main/java/com/cloud/vm/VmDetailConstants.java +++ b/api/src/main/java/com/cloud/vm/VmDetailConstants.java @@ -54,6 +54,9 @@ public interface VmDetailConstants { String NIC_MULTIQUEUE_NUMBER = "nic.multiqueue.number"; String NIC_PACKED_VIRTQUEUES_ENABLED = "nic.packed.virtqueues.enabled"; + // KVM specific, disk controllers + String KVM_SKIP_FORCE_DISK_CONTROLLER = "skip.force.disk.controller"; + // Mac OSX guest specific (internal) String SMC_PRESENT = "smc.present"; String FIRMWARE = "firmware"; diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 87ea55ca766..b66a838a3a5 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -107,7 +107,6 @@ import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; - import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; import com.cloud.agent.api.HostVmStateReportEntry; @@ -188,8 +187,8 @@ import com.cloud.network.Networks.IsolationType; import com.cloud.network.Networks.RouterPrivateIpStrategy; import com.cloud.network.Networks.TrafficType; import com.cloud.resource.AgentStatusUpdater; -import com.cloud.resource.ResourceStatusUpdater; import com.cloud.resource.RequestWrapper; +import com.cloud.resource.ResourceStatusUpdater; import com.cloud.resource.ServerResource; import com.cloud.resource.ServerResourceBase; import com.cloud.storage.JavaStorageLayer; @@ -3083,6 +3082,44 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv return useBLOCKDiskType(physicalDisk) ? DiskDef.DiskType.BLOCK : DiskDef.DiskType.FILE; } + /** + * Defines the disk configuration for the default pool type based on the provided parameters. + * It determines the appropriate disk settings depending on whether the disk is a data disk, whether + * it's a Windows template, whether UEFI is enabled, and whether secure boot is active. + * + * @param disk The disk definition object that will be configured with the disk settings. + * @param volume The volume (disk) object, containing information about the type of disk. + * @param isWindowsTemplate Flag indicating whether the template is a Windows template. + * @param isUefiEnabled Flag indicating whether UEFI is enabled. + * @param isSecureBoot Flag indicating whether secure boot is enabled. + * @param physicalDisk The physical disk object that contains the path to the disk. + * @param devId The device ID for the disk. + * @param diskBusType The disk bus type to use if not skipping force disk controller. + * @param diskBusTypeData The disk bus type to use for data disks, if applicable. + * @param details A map of VM details containing additional configuration values, such as whether to skip force + * disk controller. + */ + protected void defineDiskForDefaultPoolType(DiskDef disk, DiskTO volume, boolean isWindowsTemplate, + boolean isUefiEnabled, boolean isSecureBoot, KVMPhysicalDisk physicalDisk, int devId, + DiskDef.DiskBus diskBusType, DiskDef.DiskBus diskBusTypeData, Map details) { + boolean skipForceDiskController = MapUtils.getBoolean(details, VmDetailConstants.KVM_SKIP_FORCE_DISK_CONTROLLER, + false); + if (skipForceDiskController) { + disk.defFileBasedDisk(physicalDisk.getPath(), devId, Volume.Type.DATADISK.equals(volume.getType()) ? + diskBusTypeData : diskBusType, DiskDef.DiskFmtType.QCOW2); + return; + } + if (volume.getType() == Volume.Type.DATADISK && !(isWindowsTemplate && isUefiEnabled)) { + disk.defFileBasedDisk(physicalDisk.getPath(), devId, diskBusTypeData, DiskDef.DiskFmtType.QCOW2); + } else { + if (isSecureBoot) { + disk.defFileBasedDisk(physicalDisk.getPath(), devId, DiskDef.DiskFmtType.QCOW2, isWindowsTemplate); + } else { + disk.defFileBasedDisk(physicalDisk.getPath(), devId, diskBusType, DiskDef.DiskFmtType.QCOW2); + } + } + } + public void createVbd(final Connect conn, final VirtualMachineTO vmSpec, final String vmName, final LibvirtVMDef vm) throws InternalErrorException, LibvirtException, URISyntaxException { final Map details = vmSpec.getDetails(); final List disks = Arrays.asList(vmSpec.getDisks()); @@ -3244,15 +3281,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv disk.setDiscard(DiscardType.UNMAP); } } else { - if (volume.getType() == Volume.Type.DATADISK && !(isWindowsTemplate && isUefiEnabled)) { - disk.defFileBasedDisk(physicalDisk.getPath(), devId, diskBusTypeData, DiskDef.DiskFmtType.QCOW2); - } else { - if (isSecureBoot) { - disk.defFileBasedDisk(physicalDisk.getPath(), devId, DiskDef.DiskFmtType.QCOW2, isWindowsTemplate); - } else { - disk.defFileBasedDisk(physicalDisk.getPath(), devId, diskBusType, DiskDef.DiskFmtType.QCOW2); - } - } + defineDiskForDefaultPoolType(disk, volume, isWindowsTemplate, isUefiEnabled, isSecureBoot, + physicalDisk, devId, diskBusType, diskBusTypeData, details); } pool.customizeLibvirtDiskDef(disk); } diff --git a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java index 88e0983b63e..ed163787b11 100644 --- a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java +++ b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java @@ -56,9 +56,6 @@ import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; -import com.cloud.utils.net.NetUtils; - -import com.cloud.vm.VmDetailConstants; import org.apache.cloudstack.api.ApiConstants.IoDriverPolicy; import org.apache.cloudstack.storage.command.AttachAnswer; import org.apache.cloudstack.storage.command.AttachCommand; @@ -217,13 +214,15 @@ import com.cloud.storage.template.TemplateLocation; import com.cloud.template.VirtualMachineTemplate.BootloaderType; import com.cloud.utils.Pair; import com.cloud.utils.exception.CloudRuntimeException; -import com.cloud.utils.script.Script; +import com.cloud.utils.net.NetUtils; import com.cloud.utils.script.OutputInterpreter.OneLineParser; +import com.cloud.utils.script.Script; import com.cloud.utils.ssh.SshHelper; import com.cloud.vm.DiskProfile; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.PowerState; import com.cloud.vm.VirtualMachine.Type; +import com.cloud.vm.VmDetailConstants; @RunWith(MockitoJUnitRunner.class) public class LibvirtComputingResourceTest { @@ -240,6 +239,19 @@ public class LibvirtComputingResourceTest { Connect connMock; @Mock LibvirtDomainXMLParser parserMock; + @Mock + private DiskDef diskDef; + @Mock + private DiskTO volume; + @Mock + private KVMPhysicalDisk physicalDisk; + @Mock + private Map details; + + private static final String PHYSICAL_DISK_PATH = "/path/to/disk"; + private static final int DEV_ID = 1; + private static final DiskDef.DiskBus DISK_BUS_TYPE = DiskDef.DiskBus.VIRTIO; + private static final DiskDef.DiskBus DISK_BUS_TYPE_DATA = DiskDef.DiskBus.SCSI; @Spy private LibvirtComputingResource libvirtComputingResourceSpy = Mockito.spy(new LibvirtComputingResource()); @@ -6565,4 +6577,49 @@ public class LibvirtComputingResourceTest { assertEquals(LibvirtVMDef.TpmDef.TpmModel.CRB, tpmDef.getModel()); assertEquals(LibvirtVMDef.TpmDef.TpmVersion.V2_0, tpmDef.getVersion()); } + + @Test + public void defineDiskForDefaultPoolTypeSkipsForceDiskController() { + Map details = new HashMap<>(); + details.put(VmDetailConstants.KVM_SKIP_FORCE_DISK_CONTROLLER, "true"); + Mockito.when(volume.getType()).thenReturn(Volume.Type.DATADISK); + Mockito.when(physicalDisk.getPath()).thenReturn(PHYSICAL_DISK_PATH); + libvirtComputingResourceSpy.defineDiskForDefaultPoolType(diskDef, volume, false, false, false, physicalDisk, DEV_ID, DISK_BUS_TYPE, DISK_BUS_TYPE_DATA, details); + Mockito.verify(diskDef).defFileBasedDisk(PHYSICAL_DISK_PATH, DEV_ID, DISK_BUS_TYPE_DATA, DiskDef.DiskFmtType.QCOW2); + } + + @Test + public void defineDiskForDefaultPoolTypeUsesDiskBusTypeDataForDataDiskWithoutWindowsAndUefi() { + Map details = new HashMap<>(); + Mockito.when(volume.getType()).thenReturn(Volume.Type.DATADISK); + Mockito.when(physicalDisk.getPath()).thenReturn(PHYSICAL_DISK_PATH); + libvirtComputingResourceSpy.defineDiskForDefaultPoolType(diskDef, volume, false, false, false, physicalDisk, DEV_ID, DISK_BUS_TYPE, DISK_BUS_TYPE_DATA, details); + Mockito.verify(diskDef).defFileBasedDisk(PHYSICAL_DISK_PATH, DEV_ID, DISK_BUS_TYPE_DATA, DiskDef.DiskFmtType.QCOW2); + } + + @Test + public void defineDiskForDefaultPoolTypeUsesDiskBusTypeForRootDisk() { + Map details = new HashMap<>(); + Mockito.when(volume.getType()).thenReturn(Volume.Type.ROOT); + Mockito.when(physicalDisk.getPath()).thenReturn(PHYSICAL_DISK_PATH); + libvirtComputingResourceSpy.defineDiskForDefaultPoolType(diskDef, volume, false, false, false, physicalDisk, DEV_ID, DISK_BUS_TYPE, DISK_BUS_TYPE_DATA, details); + Mockito.verify(diskDef).defFileBasedDisk(PHYSICAL_DISK_PATH, DEV_ID, DISK_BUS_TYPE, DiskDef.DiskFmtType.QCOW2); + } + + @Test + public void defineDiskForDefaultPoolTypeUsesSecureBootConfiguration() { + Map details = new HashMap<>(); + Mockito.when(volume.getType()).thenReturn(Volume.Type.ROOT); + Mockito.when(physicalDisk.getPath()).thenReturn(PHYSICAL_DISK_PATH); + libvirtComputingResourceSpy.defineDiskForDefaultPoolType(diskDef, volume, true, true, true, physicalDisk, DEV_ID, DISK_BUS_TYPE, DISK_BUS_TYPE_DATA, details); + Mockito.verify(diskDef).defFileBasedDisk(PHYSICAL_DISK_PATH, DEV_ID, DiskDef.DiskFmtType.QCOW2, true); + } + + @Test + public void defineDiskForDefaultPoolTypeHandlesNullDetails() { + Mockito.when(volume.getType()).thenReturn(Volume.Type.DATADISK); + Mockito.when(physicalDisk.getPath()).thenReturn(PHYSICAL_DISK_PATH); + libvirtComputingResourceSpy.defineDiskForDefaultPoolType(diskDef, volume, false, false, false, physicalDisk, DEV_ID, DISK_BUS_TYPE, DISK_BUS_TYPE_DATA, null); + Mockito.verify(diskDef).defFileBasedDisk(PHYSICAL_DISK_PATH, DEV_ID, DISK_BUS_TYPE_DATA, DiskDef.DiskFmtType.QCOW2); + } } diff --git a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java index 8641eb7ffc3..5833ede550e 100644 --- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java @@ -5072,6 +5072,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q options.put(VmDetailConstants.VIRTUAL_TPM_VERSION, Arrays.asList("1.2", "2.0")); options.put(VmDetailConstants.GUEST_CPU_MODE, Arrays.asList("custom", "host-model", "host-passthrough")); options.put(VmDetailConstants.GUEST_CPU_MODEL, Collections.emptyList()); + options.put(VmDetailConstants.KVM_SKIP_FORCE_DISK_CONTROLLER, Arrays.asList("true", "false")); } if (HypervisorType.VMware.equals(hypervisorType)) { From 04875f151771b6b6fdf97d4a4f2690fbeda025d2 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Fri, 9 Jan 2026 13:50:27 -0300 Subject: [PATCH 76/96] Improve logs for VM migrations (#12332) --- .../cloud/vm/VirtualMachineManagerImpl.java | 29 ++++++++++++++----- .../wrapper/LibvirtMigrateCommandWrapper.java | 9 +++++- ...virtPrepareForMigrationCommandWrapper.java | 4 +++ .../java/com/cloud/vm/UserVmManagerImpl.java | 2 ++ 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java index f9238fa0e71..86f45630611 100755 --- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java @@ -3053,7 +3053,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } protected void migrate(final VMInstanceVO vm, final long srcHostId, final DeployDestination dest) throws ResourceUnavailableException, ConcurrentOperationException { - logger.info("Migrating {} to {}", vm, dest); + logger.info("Start preparing migration of the VM: {} to {}", vm, dest); final long dstHostId = dest.getHost().getId(); final Host fromHost = _hostDao.findById(srcHostId); if (fromHost == null) { @@ -3118,9 +3118,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac if (pfma == null || !pfma.getResult()) { final String details = pfma != null ? pfma.getDetails() : "null answer returned"; final String msg = "Unable to prepare for migration due to " + details; + logger.error("Failed to prepare destination host {} for migration of VM {} : {}", dstHostId, vm.getInstanceName(), details); pfma = null; throw new AgentUnavailableException(msg, dstHostId); } + logger.debug("Successfully prepared destination host {} for migration of VM {} ", dstHostId, vm.getInstanceName()); } catch (final OperationTimedoutException e1) { throw new AgentUnavailableException("Operation timed out", dstHostId); } finally { @@ -3141,18 +3143,23 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac volumeMgr.release(vm.getId(), dstHostId); } - logger.info("Migration cancelled because state has changed: {}", vm); - throw new ConcurrentOperationException("Migration cancelled because state has changed: " + vm); + String msg = "Migration cancelled because state has changed: " + vm; + logger.warn(msg); + throw new ConcurrentOperationException(msg); } } catch (final NoTransitionException e1) { _networkMgr.rollbackNicForMigration(vmSrc, profile); volumeMgr.release(vm.getId(), dstHostId); - logger.info("Migration cancelled because {}", e1.getMessage()); + String msg = String.format("Migration cancelled for VM %s due to state transition failure: %s", + vm.getInstanceName(), e1.getMessage()); + logger.warn(msg, e1); throw new ConcurrentOperationException("Migration cancelled because " + e1.getMessage()); } catch (final CloudRuntimeException e2) { _networkMgr.rollbackNicForMigration(vmSrc, profile); volumeMgr.release(vm.getId(), dstHostId); - logger.info("Migration cancelled because {}", e2.getMessage()); + String msg = String.format("Migration cancelled for VM %s due to runtime exception: %s", + vm.getInstanceName(), e2.getMessage()); + logger.error(msg, e2); work.setStep(Step.Done); _workDao.update(work.getId(), work); try { @@ -3172,8 +3179,12 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac final Answer ma = _agentMgr.send(vm.getLastHostId(), mc); if (ma == null || !ma.getResult()) { final String details = ma != null ? ma.getDetails() : "null answer returned"; + String msg = String.format("Migration command failed for VM %s on source host id=%s to destination host %s: %s", + vm.getInstanceName(), vm.getLastHostId(), dstHostId, details); + logger.error(msg); throw new CloudRuntimeException(details); } + logger.info("Migration command successful for VM {}", vm.getInstanceName()); } catch (final OperationTimedoutException e) { boolean success = false; if (HypervisorType.KVM.equals(vm.getHypervisorType())) { @@ -3210,7 +3221,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac try { if (!checkVmOnHost(vm, dstHostId)) { - logger.error("Unable to complete migration for {}", vm); + logger.error("Migration verification failed for VM {} : VM not found on destination host {} ", vm.getInstanceName(), dstHostId); try { _agentMgr.send(srcHostId, new Commands(cleanup(vm, dpdkInterfaceMapping)), null); } catch (final AgentUnavailableException e) { @@ -3225,7 +3236,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac migrated = true; } finally { if (!migrated) { - logger.info("Migration was unsuccessful. Cleaning up: {}", vm); + logger.info("Migration was unsuccessful. Cleaning up: {}", vm); _networkMgr.rollbackNicForMigration(vmSrc, profile); volumeMgr.release(vm.getId(), dstHostId); // deallocate GPU devices for the VM on the destination host @@ -3237,7 +3248,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac try { _agentMgr.send(dstHostId, new Commands(cleanup(vm, dpdkInterfaceMapping)), null); } catch (final AgentUnavailableException ae) { - logger.warn("Looks like the destination Host is unavailable for cleanup", ae); + logger.warn("Destination host {} unavailable for cleanup after failed migration of VM {}", dstHostId, vm.getInstanceName(), ae); } _networkMgr.setHypervisorHostname(profile, dest, false); try { @@ -3246,6 +3257,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac logger.warn(e.getMessage()); } } else { + logger.info("Migration completed successfully for VM %s" + vm); _networkMgr.commitNicForMigration(vmSrc, profile); volumeMgr.release(vm.getId(), srcHostId); // deallocate GPU devices for the VM on the src host after migration is complete @@ -3276,6 +3288,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac migrateCommand.setVlanToPersistenceMap(vlanToPersistenceMap); } + logger.debug("Setting auto convergence to: {}", StorageManager.KvmAutoConvergence.value()); migrateCommand.setAutoConvergence(StorageManager.KvmAutoConvergence.value()); migrateCommand.setHostGuid(destination.getHost().getGuid()); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java index 859de5143f9..81328d6ffb9 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java @@ -278,17 +278,20 @@ public final class LibvirtMigrateCommandWrapper extends CommandWrapper 0 && sleeptime > migrateWait * 1000) { DomainState state = null; try { state = dm.getInfo().state; + logger.info("VM domain state when trying to abort migration : {}", state); } catch (final LibvirtException e) { logger.info("Couldn't get VM domain state after " + sleeptime + "ms: " + e.getMessage()); } if (state != null && state == DomainState.VIR_DOMAIN_RUNNING) { try { DomainJobInfo job = dm.getJobInfo(); - logger.info(String.format("Aborting migration of VM [%s] with domain job [%s] due to time out after %d seconds.", vmName, job, migrateWait)); + logger.warn("Aborting migration of VM {} with domain job [{}] due to timeout after {} seconds. " + + "Job stats: data processed={} bytes, data remaining={} bytes", vmName, job, migrateWait, job.getDataProcessed(), job.getDataRemaining()); dm.abortJob(); result = String.format("Migration of VM [%s] was cancelled by CloudStack due to time out after %d seconds.", vmName, migrateWait); commandState = Command.State.FAILED; @@ -303,10 +306,12 @@ public final class LibvirtMigrateCommandWrapper extends CommandWrapper 0 && sleeptime > migratePauseAfter) { DomainState state = null; try { state = dm.getInfo().state; + logger.info("VM domain state when trying to pause VM for migration: {}", state); } catch (final LibvirtException e) { logger.info("Couldn't get VM domain state after " + sleeptime + "ms: " + e.getMessage()); } @@ -381,6 +386,7 @@ public final class LibvirtMigrateCommandWrapper extends CommandWrapper Date: Mon, 12 Jan 2026 12:11:45 +0530 Subject: [PATCH 77/96] [UI] Fix for the login url with nested redirect parameters (#12356) --- ui/src/utils/request.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/utils/request.js b/ui/src/utils/request.js index 42b26c9785b..2317aac0446 100644 --- a/ui/src/utils/request.js +++ b/ui/src/utils/request.js @@ -54,7 +54,7 @@ const err = (error) => { if (response.config && response.config.params && ['forgotPassword', 'listIdps', 'cloudianIsEnabled'].includes(response.config.params.command)) { return } - const originalPath = router.currentRoute.value.fullPath + const originalPath = router.currentRoute.value.path for (const key in response.data) { if (key.includes('response')) { if (response.data[key].errortext.includes('not available for user')) { From 2358632253a0a0da74b81028e6c63aeb49df7e84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20B=C3=B6ck?= <89930804+erikbocks@users.noreply.github.com> Date: Mon, 12 Jan 2026 04:20:31 -0300 Subject: [PATCH 78/96] Fixed User type accounts being able to change resource limits of their own domain and account (#12046) Co-authored-by: Lucas Martins <56271185+lucas-a-martins@users.noreply.github.com> --- .../com/cloud/resourcelimit/ResourceLimitManagerImpl.java | 5 +++++ .../cloud/resourcelimit/ResourceLimitManagerImplTest.java | 1 + 2 files changed, 6 insertions(+) diff --git a/server/src/main/java/com/cloud/resourcelimit/ResourceLimitManagerImpl.java b/server/src/main/java/com/cloud/resourcelimit/ResourceLimitManagerImpl.java index 9a6c8a85f18..648abf0d938 100644 --- a/server/src/main/java/com/cloud/resourcelimit/ResourceLimitManagerImpl.java +++ b/server/src/main/java/com/cloud/resourcelimit/ResourceLimitManagerImpl.java @@ -903,6 +903,11 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim public ResourceLimitVO updateResourceLimit(Long accountId, Long domainId, Integer typeId, Long max, String tag) { Account caller = CallContext.current().getCallingAccount(); + if (caller.getType().equals(Account.Type.NORMAL)) { + logger.info("Throwing exception because only root admins and domain admins are allowed to update resource limits."); + throw new PermissionDeniedException("Your account does not have the permission to update resource limits."); + } + if (max == null) { max = (long)Resource.RESOURCE_UNLIMITED; } else if (max < Resource.RESOURCE_UNLIMITED) { diff --git a/server/src/test/java/com/cloud/resourcelimit/ResourceLimitManagerImplTest.java b/server/src/test/java/com/cloud/resourcelimit/ResourceLimitManagerImplTest.java index a968a2da0b7..0b0b8c5e43f 100644 --- a/server/src/test/java/com/cloud/resourcelimit/ResourceLimitManagerImplTest.java +++ b/server/src/test/java/com/cloud/resourcelimit/ResourceLimitManagerImplTest.java @@ -147,6 +147,7 @@ public class ResourceLimitManagerImplTest { overrideDefaultConfigValue(ResourceLimitService.ResourceLimitStorageTags, "_defaultValue", StringUtils.join(storageTags, ",")); Account account = mock(Account.class); + when(account.getType()).thenReturn(Account.Type.ADMIN); User user = mock(User.class); CallContext.register(user, account); } From db1c7d678cc5505a926193e119991eb87d86cf33 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Mon, 12 Jan 2026 12:51:19 +0530 Subject: [PATCH 79/96] Updated protobuf version to 3.25.5, and protobuf & jackson maven dependencies (#12389) --- plugins/hypervisors/kvm/pom.xml | 25 +++++++++++++++++++++++++ pom.xml | 12 ++++++++++++ utils/pom.xml | 5 +++++ 3 files changed, 42 insertions(+) diff --git a/plugins/hypervisors/kvm/pom.xml b/plugins/hypervisors/kvm/pom.xml index 096c0362ee4..e2e1721b3a7 100644 --- a/plugins/hypervisors/kvm/pom.xml +++ b/plugins/hypervisors/kvm/pom.xml @@ -67,6 +67,31 @@ java-linstor ${cs.java-linstor.version} + + com.fasterxml.jackson.core + jackson-core + ${cs.jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${cs.jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${cs.jackson.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${cs.jackson.version} + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + ${cs.jackson.version} + net.java.dev.jna jna diff --git a/pom.xml b/pom.xml index b51ed12fded..6985108302d 100644 --- a/pom.xml +++ b/pom.xml @@ -190,6 +190,7 @@ 5.3.26 0.5.4 3.1.7 + 3.25.5 @@ -727,6 +728,17 @@ xml-apis 2.0.2 + + + com.google.protobuf + protobuf-java + ${cs.protobuf.version} + + + com.google.protobuf + protobuf-java-util + ${cs.protobuf.version} + com.linbit.linstor.api java-linstor diff --git a/utils/pom.xml b/utils/pom.xml index 6c367364600..6b8b1249423 100755 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -196,6 +196,11 @@ jackson-databind ${cs.jackson.version} + + com.fasterxml.jackson.dataformat + jackson-dataformat-cbor + ${cs.jackson.version} + org.apache.commons commons-compress From 0e6d2d986b7022648bdb5550060aeb7b7fe76bf4 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Mon, 12 Jan 2026 13:23:37 +0530 Subject: [PATCH 80/96] ui: prevent calling listConfigurations when not allowed (#11704) By default, normal users won't have access to listConfigurations API, therefore, UI should not call it when access is not there. Signed-off-by: Abhishek Kumar --- ui/src/store/modules/user.js | 18 ++++++++++-------- .../views/image/RegisterOrUploadTemplate.vue | 3 +++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ui/src/store/modules/user.js b/ui/src/store/modules/user.js index fc1b0dc25a9..21cd603e378 100644 --- a/ui/src/store/modules/user.js +++ b/ui/src/store/modules/user.js @@ -539,14 +539,16 @@ const user = { reject(error) }) - api('listConfigurations', { name: 'hypervisor.custom.display.name' }).then(json => { - if (json.listconfigurationsresponse.configuration !== null) { - const config = json.listconfigurationsresponse.configuration[0] - commit('SET_CUSTOM_HYPERVISOR_NAME', config.value) - } - }).catch(error => { - reject(error) - }) + if ('listConfigurations' in store.getters.apis) { + api('listConfigurations', { name: 'hypervisor.custom.display.name' }).then(json => { + if (json.listconfigurationsresponse.configuration !== null) { + const config = json.listconfigurationsresponse.configuration[0] + commit('SET_CUSTOM_HYPERVISOR_NAME', config.value) + } + }).catch(error => { + reject(error) + }) + } }) }, UpdateConfiguration ({ commit }) { diff --git a/ui/src/views/image/RegisterOrUploadTemplate.vue b/ui/src/views/image/RegisterOrUploadTemplate.vue index c3f812773be..76df7b246aa 100644 --- a/ui/src/views/image/RegisterOrUploadTemplate.vue +++ b/ui/src/views/image/RegisterOrUploadTemplate.vue @@ -646,6 +646,9 @@ export default { }) }, fetchCustomHypervisorName () { + if (!('listConfigurations' in this.$store.getters.apis)) { + return + } const params = { name: 'hypervisor.custom.display.name' } From c7cfeb5caa1a5d40864ae7f7530bf6563cea6f31 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Mon, 12 Jan 2026 13:43:12 +0530 Subject: [PATCH 81/96] fix location constraint ceph error (#12285) --- .../storage/datastore/driver/CephObjectStoreDriverImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/storage/object/ceph/src/main/java/org/apache/cloudstack/storage/datastore/driver/CephObjectStoreDriverImpl.java b/plugins/storage/object/ceph/src/main/java/org/apache/cloudstack/storage/datastore/driver/CephObjectStoreDriverImpl.java index 12920e37907..9af558cf6e3 100644 --- a/plugins/storage/object/ceph/src/main/java/org/apache/cloudstack/storage/datastore/driver/CephObjectStoreDriverImpl.java +++ b/plugins/storage/object/ceph/src/main/java/org/apache/cloudstack/storage/datastore/driver/CephObjectStoreDriverImpl.java @@ -350,7 +350,7 @@ public class CephObjectStoreDriverImpl extends BaseObjectStoreDriverImpl { new AWSStaticCredentialsProvider( new BasicAWSCredentials(accessKey, secretKey))) .withEndpointConfiguration( - new AwsClientBuilder.EndpointConfiguration(url, null)) + new AwsClientBuilder.EndpointConfiguration(url, "us-east-1")) .build(); if (client == null) { From 2b373a4659526a43db0ed30ca39927b0183c95de Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Mon, 12 Jan 2026 14:18:35 +0530 Subject: [PATCH 82/96] [UI] Fix primary storage details display when the uuid has divergent pattern (#12307) * [UI] Fix primary storage details display when the uuid has different pattern (eg. for pools with SolidFireShared provider) * Fix on refresh --------- Co-authored-by: vishesh92 --- ui/src/components/view/InfoCard.vue | 2 +- ui/src/components/view/ListView.vue | 4 ++-- ui/src/components/view/VolumesTab.vue | 2 +- ui/src/components/widgets/Breadcrumb.vue | 2 +- ui/src/config/router.js | 4 ++-- ui/src/views/image/IsoZones.vue | 2 +- ui/src/views/image/TemplateZones.vue | 2 +- ui/src/views/storage/SnapshotZones.vue | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index f1efcaef281..0272df028a3 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -622,7 +622,7 @@
{{ $t('label.storagepool') }}
- {{ resource.storage || resource.storageid }} + {{ resource.storage || resource.storageid }} {{ resource.storage || resource.storageid }} {{ resource.storagetype }} diff --git a/ui/src/components/view/ListView.vue b/ui/src/components/view/ListView.vue index 0109784047a..a02fb5569ed 100644 --- a/ui/src/components/view/ListView.vue +++ b/ui/src/components/view/ListView.vue @@ -94,7 +94,7 @@ {{ $t(text.toLowerCase()) }} - {{ text }} + {{ text }} {{ text }}   @@ -306,7 +306,7 @@ {{ text }} diff --git a/ui/src/components/widgets/Breadcrumb.vue b/ui/src/components/widgets/Breadcrumb.vue index 147e779502b..4723417f539 100644 --- a/ui/src/components/widgets/Breadcrumb.vue +++ b/ui/src/components/widgets/Breadcrumb.vue @@ -100,7 +100,7 @@ export default { this.breadList = [] this.$route.matched.forEach((item, idx) => { const parent = this.$route.matched[idx - 1] - if (item && parent && parent.name !== 'index' && !item.path.endsWith(':id')) { + if (item && parent && parent.name !== 'index' && !item.path.endsWith(':id') && !item.path.endsWith(':id(.*)')) { this.breadList.pop() } this.breadList.push(item) diff --git a/ui/src/config/router.js b/ui/src/config/router.js index aa85f452b73..f8ff3e00138 100644 --- a/ui/src/config/router.js +++ b/ui/src/config/router.js @@ -90,7 +90,7 @@ function generateRouterMap (section) { hideChildrenInMenu: true, children: [ { - path: '/' + child.name + '/:id', + path: '/' + child.name + '/:id(.*)', hidden: child.hidden, meta: { title: child.title, @@ -145,7 +145,7 @@ function generateRouterMap (section) { map.meta.tabs = section.tabs map.children = [{ - path: '/' + section.name + '/:id', + path: '/' + section.name + '/:id(.*)', actions: section.actions ? section.actions : [], meta: { title: section.title, diff --git a/ui/src/views/image/IsoZones.vue b/ui/src/views/image/IsoZones.vue index 75eac8fd97f..f14ec92b3f6 100644 --- a/ui/src/views/image/IsoZones.vue +++ b/ui/src/views/image/IsoZones.vue @@ -90,7 +90,7 @@ :rowKey="record => record.zoneid">