/// <summary> /// Get actual scheduler queue status /// </summary> /// <param name="nodeType">Cluster node type</param> public ClusterNodeUsage GetCurrentClusterNodeUsage(ClusterNodeType nodeType) { Cluster cluster = nodeType.Cluster; ClusterAuthenticationCredentials creds = cluster.ServiceAccountCredentials; ConnectionInfo schedulerConnection = _connectionPool.GetConnectionForUser(creds); try { ClusterNodeUsage usage = _adapter.GetCurrentClusterNodeUsage(schedulerConnection.Connection, nodeType); return(usage); } finally { _connectionPool.ReturnConnection(schedulerConnection); } }
/// <summary> /// Get cluster node usage /// </summary> /// <param name="connectorClient">Connector</param> /// <param name="nodeType">ClusterNode type</param> /// <returns></returns> public virtual ClusterNodeUsage GetCurrentClusterNodeUsage(object connectorClient, ClusterNodeType nodeType) { var usage = new ClusterNodeUsage { NodeType = nodeType }; var command = SshCommandUtils.RunSshCommand(new SshClientAdapter((SshClient)connectorClient), _linuxLocalCommandScripts.CountJobsCmdPath); _log.Info($"Get usage of queue \"{nodeType.Queue}\", command \"{command}\""); if (int.TryParse(command.Result, out int totalJobs)) { usage.TotalJobs = totalJobs; } return(usage); }
public static ClusterNodeUsageExt ConvertIntToExt(this ClusterNodeUsage nodeUsage) { ClusterNodeUsageExt convert = new ClusterNodeUsageExt { Id = nodeUsage.NodeType.Id, Name = nodeUsage.NodeType.Name, Description = nodeUsage.NodeType.Description, Priority = nodeUsage.Priority, CoresPerNode = nodeUsage.NodeType.CoresPerNode, MaxWalltime = nodeUsage.NodeType.MaxWalltime, NumberOfNodes = nodeUsage.NodeType.NumberOfNodes, NumberOfUsedNodes = nodeUsage.NodesUsed, TotalJobs = nodeUsage.TotalJobs }; return(convert); }
public ClusterNodeUsageExt GetCurrentClusterNodeUsage(long clusterNodeId, string sessionCode) { try { using (IUnitOfWork unitOfWork = UnitOfWorkFactory.GetUnitOfWorkFactory().CreateUnitOfWork()) { AdaptorUser loggedUser = UserAndLimitationManagementService.GetValidatedUserForSessionCode(sessionCode, unitOfWork, UserRoleType.Reporter); IClusterInformationLogic clusterLogic = LogicFactory.GetLogicFactory().CreateClusterInformationLogic(unitOfWork); ClusterNodeUsage nodeUsage = clusterLogic.GetCurrentClusterNodeUsage(clusterNodeId, loggedUser); return(nodeUsage.ConvertIntToExt()); } } catch (Exception exc) { ExceptionHandler.ThrowProperExternalException(exc); return(null); } }