/// <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);
     }
 }