Jelajahi Sumber

gh-1776 EclWatch pauses/clears queues for Roxie/HThor

A drop down menu is added for Roxie/HThor cluster to
pauses/clears queues. I also improved the index.xslt:
better confirmation messages; removed old code lines
which are no longer used; changed some function names
and variable names for better read.

Signed-off-by: Kevin Wang <kevin.wang@lexisnexis.com>
Kevin Wang 13 tahun lalu
induk
melakukan
b55b3c5a5c
3 mengubah file dengan 311 tambahan dan 489 penghapusan
  1. 254 461
      esp/eclwatch/ws_XSLT/index.xslt
  2. 14 11
      esp/scm/ws_smc.ecm
  3. 43 17
      esp/services/ws_smc/ws_smcService.cpp

File diff ditekan karena terlalu besar
+ 254 - 461
esp/eclwatch/ws_XSLT/index.xslt


+ 14 - 11
esp/scm/ws_smc.ecm

@@ -47,7 +47,6 @@ ESPStruct ThorCluster
     string ClusterName;
     [min_ver("1.03")] string QueueName;
     string QueueStatus;
-    int    DoCommand;
     [min_ver("1.05")] int QueueAvailable;
     [min_ver("1.05")] int JobsRunning;
     [min_ver("1.05")] int JobsInQueue;
@@ -56,22 +55,26 @@ ESPStruct ThorCluster
     [min_ver("1.11")] int ClusterSize;
 };
 
-ESPStruct RoxieCluster
+ESPStruct HThorCluster
 {
     string ClusterName;
     string QueueName;
     string QueueStatus;
-    int    DoCommand;
     int JobsRunning;
     int JobsInQueue;
     int QueueStatus2;
-    [min_ver("1.11")] int ClusterSize;
+    int ClusterSize;
 };
 
-ESPStruct HoleCluster
+ESPStruct RoxieCluster
 {
     string ClusterName;
-    string DataModel;
+    string QueueName;
+    string QueueStatus;
+    int JobsRunning;
+    int JobsInQueue;
+    int QueueStatus2;
+    [min_ver("1.11")] int ClusterSize;
 };
 
 ESPStruct DFUJob
@@ -101,10 +104,9 @@ ESPresponse [exceptions_inline] ActivityResponse
     string Build;
     ESParray<ESPstruct ThorCluster> ThorClusters;
     [min_ver("1.07")] ESParray<ESPstruct RoxieCluster> RoxieClusters;
-    ESParray<ESPstruct HoleCluster> HoleClusters;
+    [min_ver("1.12")] ESParray<ESPstruct HThorCluster> HThorClusters;
     ESParray<ESPstruct DFUJob> DFUJobs;
     ESParray<ESPstruct ActiveWorkunit> Running;
-    [min_ver("1.06")] int UserPermission(-1);
     [min_ver("1.06")] string BannerContent;
     [min_ver("1.06")] string BannerColor;
     [min_ver("1.06")] string BannerSize;
@@ -114,6 +116,8 @@ ESPresponse [exceptions_inline] ActivityResponse
     [min_ver("1.06")] int ShowChatURL(0);
     [min_ver("1.11")] string SortBy;
     [min_ver("1.11")] bool Descending(false);
+    [min_ver("1.12")] bool SuperUser(false);
+    [min_ver("1.12")] string AccessRight;
 };
 
 ESPrequest SMCIndexRequest
@@ -255,13 +259,12 @@ BrowseResourcesResponse
     ESParray<ESPstruct HPCCResourceRepository> HPCCResourceRepositories;
 };
 
-//ESPservice [noforms, version("1.04"), default_client_version("1.04"), exceptions_inline("./smc_xslt/exceptions.xslt")] WsSMC
-ESPservice [noforms, version("1.11"), default_client_version("1.11"), exceptions_inline("./smc_xslt/exceptions.xslt"), use_method_name] WsSMC
+ESPservice [noforms, version("1.12"), default_client_version("1.12"), exceptions_inline("./smc_xslt/exceptions.xslt"), use_method_name] WsSMC
 {
     ESPuses ESPStruct Capability;
     ESPuses ESPStruct Permission;
     ESPuses ESPStruct ThorCluster;
-    ESPuses ESPStruct HoleCluster;
+    ESPuses ESPStruct HThorCluster;
     ESPuses ESPStruct ActiveWorkunit;
     ESPuses ESPStruct DFUJob;
 

+ 43 - 17
esp/services/ws_smc/ws_smcService.cpp

@@ -287,12 +287,13 @@ bool CWsSMCEx::onActivity(IEspContext &context, IEspActivityRequest &req, IEspAc
 
         double version = context.getClientVersion();
 
+        bool isSuperUser = true;
 #ifdef _USE_OPENLDAP
         CLdapSecManager* secmgr = dynamic_cast<CLdapSecManager*>(context.querySecManager());
-        if(req.getFromSubmitBtn() && secmgr && secmgr->isSuperUser(context.queryUser()))
-#else
-        if(req.getFromSubmitBtn())
+        if(secmgr && !secmgr->isSuperUser(context.queryUser()))
+            isSuperUser =  false;
 #endif
+        if(isSuperUser && req.getFromSubmitBtn())
         {
             StringBuffer chatURLStr, bannerStr;
             const char* chatURL = req.getChatURL();
@@ -353,15 +354,8 @@ bool CWsSMCEx::onActivity(IEspContext &context, IEspActivityRequest &req, IEspAc
 
         if (version > 1.05)
         {
-#ifdef _USE_OPENLDAP
-            int UserPermission = -1;
-            CLdapSecManager* secmgr = dynamic_cast<CLdapSecManager*>(context.querySecManager());
-            if(secmgr && secmgr->isSuperUser(context.queryUser()))
-                UserPermission = 0;
-#else
-            int UserPermission = 0;
-#endif
-            resp.setUserPermission(UserPermission);
+            if (version > 1.11)
+                resp.setSuperUser(isSuperUser);
             resp.setShowBanner(m_BannerAction);
             resp.setShowChatURL(m_EnableChatURL);
             resp.setBannerContent(m_Banner.str());
@@ -493,9 +487,10 @@ bool CWsSMCEx::onActivity(IEspContext &context, IEspActivityRequest &req, IEspAc
         }
 
         SecAccessFlags access;
-        bool doCommand=(context.authorizeFeature(THORQUEUE_FEATURE, access) && access>=SecAccess_Full);
+        bool fullAccess=(context.authorizeFeature(THORQUEUE_FEATURE, access) && access>=SecAccess_Full);
 
         IArrayOf<IEspThorCluster> ThorClusters;
+        IArrayOf<IEspHThorCluster> HThorClusters;
         IArrayOf<IEspRoxieCluster> RoxieClusters;
 
         CConstWUClusterInfoArray clusters;
@@ -523,13 +518,12 @@ bool CWsSMCEx::onActivity(IEspContext &context, IEspActivityRequest &req, IEspAc
                 returnCluster->setQueueStatus(queueState);
                 if (version > 1.06)
                     returnCluster->setQueueStatus2(color_type);
-                returnCluster->setDoCommand(doCommand);
                 if (version > 1.10)
                     returnCluster->setClusterSize(cluster.getSize());
 
                 addToThorClusterList(ThorClusters, returnCluster, req.getSortBy(), req.getDescending());
             }
-            if (version > 1.06) // JCSMORE->WANGKX , is this necessary?
+            if (version > 1.06)
             {
                 str.clear();
                 if (cluster.getRoxieProcess(str).length())
@@ -543,22 +537,54 @@ bool CWsSMCEx::onActivity(IEspContext &context, IEspActivityRequest &req, IEspAc
                     const char *queueName = cluster.getAgentQueue(str).str();
                     Owned<IJobQueue> queue = createJobQueue(queueName);
                     addQueuedWorkUnits(queueName, queue, aws, context, "RoxieServer", NULL);
-                    const char *queueState = getQueueState(queue, -1, NULL);
+
+                    int color_type;
+                    int serverID = runningQueueNames.find(queueName);
+                    int numRunningJobsInQueue = (NotFound != serverID) ? runningJobsInQueue[serverID] : -1;
+                    const char *queueState = getQueueState(queue, numRunningJobsInQueue, &color_type);
                     returnCluster->setQueueStatus(queueState);
+                    returnCluster->setQueueStatus2(color_type);
                     if (version > 1.10)
                         returnCluster->setClusterSize(cluster.getSize());
 
                     addToRoxieClusterList(RoxieClusters, returnCluster, req.getSortBy(), req.getDescending());
                 }
             }
+            if (version > 1.11 && (cluster.getPlatform() == HThorCluster))
+            {
+                IEspHThorCluster* returnCluster = new CHThorCluster("","");
+                str.clear();
+                returnCluster->setClusterName(cluster.getName(str).str());
+                str.clear();
+                returnCluster->setQueueName(cluster.getAgentQueue(str).str());
+                str.clear();
+                const char *queueName = cluster.getAgentQueue(str).str();
+                Owned<IJobQueue> queue = createJobQueue(queueName);
+                addQueuedWorkUnits(queueName, queue, aws, context, "HThorServer", NULL);
+
+                int color_type;
+                int serverID = runningQueueNames.find(queueName);
+                int numRunningJobsInQueue = (NotFound != serverID) ? runningJobsInQueue[serverID] : -1;
+                const char *queueState = getQueueState(queue, numRunningJobsInQueue, &color_type);
+                returnCluster->setQueueStatus(queueState);
+                returnCluster->setQueueStatus2(color_type);
+                HThorClusters.append(*returnCluster);
+            }
         }
         resp.setThorClusters(ThorClusters);
-        resp.setRoxieClusters(RoxieClusters);
+        if (version > 1.06)
+            resp.setRoxieClusters(RoxieClusters);
         if (version > 1.10)
         {
             resp.setSortBy(req.getSortBy());
             resp.setDescending(req.getDescending());
         }
+        if (version > 1.11)
+        {
+            resp.setHThorClusters(HThorClusters);
+            if (fullAccess)
+                resp.setAccessRight("Access_Full");
+        }
 
         IArrayOf<IConstTpEclServer> eclccservers;
         CTpWrapper dummy;