15
15
from concurrent .futures import ThreadPoolExecutor
16
16
17
17
import DIRAC
18
- from DIRAC import S_OK , gConfig
18
+ from DIRAC import S_OK , S_ERROR , gConfig
19
19
from DIRAC .ConfigurationSystem .Client .Helpers import CSGlobals , Registry
20
20
from DIRAC .ConfigurationSystem .Client .Helpers .Operations import Operations
21
21
from DIRAC .ConfigurationSystem .Client .Helpers .Resources import getCESiteMapping
22
22
from DIRAC .Core .Base .AgentModule import AgentModule
23
- from DIRAC .Core .Utilities .Time import dateTime , second
23
+ from DIRAC .Core .Utilities .Time import dateTime , second , toEpoch
24
24
from DIRAC .Core .Utilities .ObjectLoader import ObjectLoader
25
25
from DIRAC .FrameworkSystem .Client .ProxyManagerClient import gProxyManager
26
26
from DIRAC .AccountingSystem .Client .Types .Pilot import Pilot as PilotAccounting
27
27
from DIRAC .AccountingSystem .Client .Types .PilotSubmission import PilotSubmission as PilotSubmissionAccounting
28
+ from DIRAC .MonitoringSystem .Client .MonitoringReporter import MonitoringReporter
28
29
from DIRAC .MonitoringSystem .Client .Types .PilotMonitoring import PilotMonitoring as PilotSubmissionMonitoring
29
30
from DIRAC .AccountingSystem .Client .DataStoreClient import gDataStoreClient
30
31
from DIRAC .WorkloadManagementSystem .Client import PilotStatus
@@ -722,7 +723,15 @@ def _submitPilotsToQueue(self, pilotsToSubmit, ce, queue):
722
723
0 ,
723
724
"Failed" ,
724
725
)
725
-
726
+ if self .sendSubmissionMonitoring :
727
+ self .sendPilotSubmissionMonitoring (
728
+ self .queueDict [queue ]["Site" ],
729
+ self .queueDict [queue ]["CEName" ],
730
+ self .queueDict [queue ]["QueueName" ],
731
+ pilotsToSubmit ,
732
+ 0 ,
733
+ "Failed" ,
734
+ )
726
735
self .failedQueues [queue ] += 1
727
736
return submitResult
728
737
@@ -745,6 +754,15 @@ def _submitPilotsToQueue(self, pilotsToSubmit, ce, queue):
745
754
len (pilotList ),
746
755
"Succeeded" ,
747
756
)
757
+ if self .sendSubmissionMonitoring :
758
+ self .sendPilotSubmissionMonitoring (
759
+ self .queueDict [queue ]["Site" ],
760
+ self .queueDict [queue ]["CEName" ],
761
+ self .queueDict [queue ]["QueueName" ],
762
+ len (pilotList ),
763
+ len (pilotList ),
764
+ "Succeeded" ,
765
+ )
748
766
749
767
return S_OK ((pilotList , stampDict ))
750
768
@@ -1365,3 +1383,40 @@ def sendPilotSubmissionAccounting(self, siteName, ceName, queueName, numTotal, n
1365
1383
if not result ["OK" ]:
1366
1384
self .log .error ("Error in Commit:" + result ["Message" ])
1367
1385
return result
1386
+
1387
+ def sendPilotSubmissionMonitoring (self , siteName , ceName , queueName , numTotal , numSucceeded , status ):
1388
+ """Send pilot submission accounting record
1389
+
1390
+ :param str siteName: Site name
1391
+ :param str ceName: CE name
1392
+ :param str queueName: queue Name
1393
+ :param int numTotal: Total number of submission
1394
+ :param int numSucceeded: Total number of submission succeeded
1395
+ :param str status: 'Succeeded' or 'Failed'
1396
+
1397
+ :returns: S_OK / S_ERROR
1398
+ """
1399
+
1400
+ pilotMonitoringReporter = MonitoringReporter (monitoringType = "PilotMonitoring" )
1401
+ pilotMonitoringData = [
1402
+ {
1403
+ "HostName" : "" ,
1404
+ "SiteDirector" : "" ,
1405
+ "Site" : siteName ,
1406
+ "CE" : ceName ,
1407
+ "Queue" : queueName ,
1408
+ "Status" : status ,
1409
+ "NumTotal" : numTotal ,
1410
+ "NumSucceded" : numSucceeded ,
1411
+ "timestamp" : int (toEpoch (dateTime ())),
1412
+ }
1413
+ ]
1414
+ pilotMonitoringReporter .addRecord (pilotMonitoringData )
1415
+ result = pilotMonitoringReporter .commit ()
1416
+
1417
+ self .log .verbose ("Committing pilot submission to monitoring" )
1418
+ if not result ["OK" ]:
1419
+ self .log .error ("Couldn't commit pilot submission to monitoring" , result ["Message" ])
1420
+ return S_ERROR ()
1421
+ self .log .verbose ("Done committing to monitoring" )
1422
+ return S_OK ()
0 commit comments