This is an automated email from the ASF dual-hosted git repository.

sureshanaparti pushed a commit to branch 4.22
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 5caf6cd043f2ba7f23bb0a7128483f285a095584
Merge: 11df71e55cc 32c0cdbed98
Author: Suresh Kumar Anaparti <[email protected]>
AuthorDate: Thu Feb 19 13:19:14 2026 +0530

    Merge branch '4.20' into 4.22

 api/src/main/java/com/cloud/host/Host.java         |  3 ++
 .../api/command/admin/host/AddHostCmd.java         |  3 +-
 .../main/java/com/cloud/agent/AgentManager.java    |  6 ++++
 .../com/cloud/agent/manager/AgentManagerImpl.java  | 23 +++++++++++++--
 .../cloud/agent/manager/AgentManagerImplTest.java  | 33 ++++++++++++++++++++++
 .../java/com/cloud/storage/dao/VolumeDaoImpl.java  | 13 ++++-----
 .../storage/volume/VolumeServiceImpl.java          |  3 ++
 .../cloudstack/backup/NetworkerBackupProvider.java | 17 +++++++++--
 .../cloudstack/mom/rabbitmq/RabbitMQEventBus.java  |  2 +-
 .../api/command/OauthLoginAPIAuthenticatorCmd.java |  6 +---
 .../api/command/SAML2LoginAPIAuthenticatorCmd.java | 10 +++++--
 server/src/main/java/com/cloud/api/ApiServlet.java | 13 +++++----
 .../DefaultForgotPasswordAPIAuthenticatorCmd.java  |  6 ++--
 .../api/auth/DefaultLoginAPIAuthenticatorCmd.java  | 12 +++-----
 .../DefaultResetPasswordAPIAuthenticatorCmd.java   |  1 -
 .../kvm/discoverer/LibvirtServerDiscoverer.java    | 10 ++++++-
 .../com/cloud/resource/ResourceManagerImpl.java    |  4 +--
 .../cloud/resource/ResourceManagerImplTest.java    |  2 ++
 .../java/com/cloud/utils/ssh/SSHCmdHelper.java     |  2 +-
 19 files changed, 128 insertions(+), 41 deletions(-)

diff --cc engine/components-api/src/main/java/com/cloud/agent/AgentManager.java
index 0aa5805b160,f70ab494fdc..4d63fae3356
--- a/engine/components-api/src/main/java/com/cloud/agent/AgentManager.java
+++ b/engine/components-api/src/main/java/com/cloud/agent/AgentManager.java
@@@ -171,5 -175,5 +175,7 @@@ public interface AgentManager 
  
      void propagateChangeToAgents(Map<String, String> params);
  
 +    boolean transferDirectAgentsFromMS(String fromMsUuid, long fromMsId, long 
timeoutDurationInMs, boolean excludeHostsInMaintenance);
++
+     int getHostSshPort(HostVO host);
  }
diff --cc 
engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java
index 3d398ca5dd9,ebe0465e3f0..9e85be87db3
--- 
a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java
+++ 
b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java
@@@ -42,12 -40,9 +42,13 @@@ import java.util.stream.Collectors
  import javax.inject.Inject;
  import javax.naming.ConfigurationException;
  
+ import com.cloud.utils.StringUtils;
  import org.apache.cloudstack.agent.lb.IndirectAgentLB;
  import org.apache.cloudstack.ca.CAManager;
 +import org.apache.cloudstack.command.ReconcileCommandService;
 +import org.apache.cloudstack.command.ReconcileCommandUtils;
 +import org.apache.cloudstack.command.ReconcileCommandVO;
 +import org.apache.cloudstack.command.dao.ReconcileCommandDao;
  import 
org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
  import org.apache.cloudstack.framework.config.ConfigKey;
  import org.apache.cloudstack.framework.config.Configurable;
@@@ -2231,11 -2093,25 +2231,30 @@@ public class AgentManagerImpl extends M
          }
      }
  
 +    @Override
 +    public boolean transferDirectAgentsFromMS(String fromMsUuid, long 
fromMsId, long timeoutDurationInMs, boolean excludeHostsInMaintenance) {
 +        return true;
 +    }
 +
+     @Override
+     public int getHostSshPort(HostVO host) {
+         if (host == null) {
+             return KVMHostDiscoverySshPort.value();
+         }
+ 
+         if (host.getHypervisorType() != HypervisorType.KVM) {
+             return Host.DEFAULT_SSH_PORT;
+         }
+ 
+         _hostDao.loadDetails(host);
+         String hostPort = host.getDetail(Host.HOST_SSH_PORT);
+         if (StringUtils.isBlank(hostPort)) {
+             return KVMHostDiscoverySshPort.valueIn(host.getClusterId());
+         }
+ 
+         return Integer.parseInt(hostPort);
+     }
+ 
      private GlobalLock getHostJoinLock(Long hostId) {
          return GlobalLock.getInternLock(String.format("%s-%s", "Host-Join", 
hostId));
      }
diff --cc 
plugins/backup/networker/src/main/java/org/apache/cloudstack/backup/NetworkerBackupProvider.java
index 66b633e11a9,3f14ab259a0..4cf4bd111ef
--- 
a/plugins/backup/networker/src/main/java/org/apache/cloudstack/backup/NetworkerBackupProvider.java
+++ 
b/plugins/backup/networker/src/main/java/org/apache/cloudstack/backup/NetworkerBackupProvider.java
@@@ -122,18 -118,9 +123,21 @@@ public class NetworkerBackupProvider ex
      @Inject
      private VMInstanceDao vmInstanceDao;
  
 +    @Inject
 +    private VMTemplateDao vmTemplateDao;
 +
 +    @Inject
 +    ServiceOfferingDao serviceOfferingDao;
 +
 +    @Inject
 +    private BackupManager backupManager;
 +
 +    @Inject
 +    private DiskOfferingDao diskOfferingDao;
 +
+     @Inject
+     private AgentManager agentMgr;
+ 
      private static String getUrlDomain(String url) throws URISyntaxException {
          URI uri;
          try {
@@@ -251,13 -233,18 +255,18 @@@
          String nstRegex = "\\bcompleted savetime=([0-9]{10})";
          Pattern saveTimePattern = Pattern.compile(nstRegex);
  
+         if (host == null) {
+             LOG.warn("Unable to take backup, host is null");
+             return null;
+         }
+ 
          try {
-             Pair<Boolean, String> response = 
SshHelper.sshExecute(host.getPrivateIpAddress(), 22,
+             Pair<Boolean, String> response = 
SshHelper.sshExecute(host.getPrivateIpAddress(), agentMgr.getHostSshPort(host),
                      username, null, password, command, 120000, 120000, 
3600000);
              if (!response.first()) {
 -                LOG.error(String.format("Backup Script failed on HYPERVISOR 
%s due to: %s", host, response.second()));
 +                LOG.error("Backup Script failed on HYPERVISOR {} due to: {}", 
host, response.second());
              } else {
 -                LOG.debug(String.format("Networker Backup Results: %s", 
response.second()));
 +                LOG.debug("Networker Backup Results: {}", response.second());
              }
              Matcher saveTimeMatcher = 
saveTimePattern.matcher(response.second());
              if (saveTimeMatcher.find()) {
diff --cc server/src/main/java/com/cloud/api/ApiServlet.java
index db17daaf146,01cb21681b0..93d8e09520a
--- a/server/src/main/java/com/cloud/api/ApiServlet.java
+++ b/server/src/main/java/com/cloud/api/ApiServlet.java
@@@ -37,7 -34,7 +37,8 @@@ import javax.servlet.http.HttpServletRe
  import javax.servlet.http.HttpServletResponse;
  import javax.servlet.http.HttpSession;
  
 +import org.apache.cloudstack.api.APICommand;
+ import com.cloud.api.auth.DefaultForgotPasswordAPIAuthenticatorCmd;
  import org.apache.cloudstack.api.ApiConstants;
  import org.apache.cloudstack.api.ApiErrorCode;
  import org.apache.cloudstack.api.ApiServerService;
diff --cc server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
index 0e1b7cdbc80,cc789bf5650..621b110486b
--- a/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/main/java/com/cloud/resource/ResourceManagerImpl.java
@@@ -851,10 -776,27 +851,9 @@@ public class ResourceManagerImpl extend
                  _clusterDetailsDao.persist(cluster_cpu_detail);
                  _clusterDetailsDao.persist(cluster_memory_detail);
              }
- 
          }
  
 -        try {
 -            uri = new URI(UriUtils.encodeURIComponent(url));
 -            if (uri.getScheme() == null) {
 -                throw new InvalidParameterValueException("uri.scheme is null 
" + url + ", add nfs:// (or cifs://) as a prefix");
 -            } else if (uri.getScheme().equalsIgnoreCase("nfs")) {
 -                if (uri.getHost() == null || 
uri.getHost().equalsIgnoreCase("") || uri.getPath() == null || 
uri.getPath().equalsIgnoreCase("")) {
 -                    throw new InvalidParameterValueException("Your host 
and/or path is wrong.  Make sure it's of the format nfs://hostname/path");
 -                }
 -            } else if (uri.getScheme().equalsIgnoreCase("cifs")) {
 -                // Don't validate against a URI encoded URI.
 -                final URI cifsUri = new URI(url);
 -                final String warnMsg = 
UriUtils.getCifsUriParametersProblems(cifsUri);
 -                if (warnMsg != null) {
 -                    throw new InvalidParameterValueException(warnMsg);
 -                }
 -            }
 -        } catch (final URISyntaxException e) {
 -            throw new InvalidParameterValueException(url + " is not a valid 
uri");
 -        }
 +        uri = validatedHostUrl(url, hypervisorType);
  
          final List<HostVO> hosts = new ArrayList<>();
          logger.info("Trying to add a new host at {} in data center {}", url, 
zone);

Reply via email to