/src/python/WMComponent/WorkQueueManager/WorkQueueManager.py

https://github.com/PerilousApricot/WMCore
Python | 75 lines | 38 code | 17 blank | 20 comment | 2 complexity | 094719e3e9af57c14b36896324555906 MD5 | raw file
  1. #!/usr/bin/env python
  2. """
  3. WorkQueuemanager component
  4. Runs periodic tasks for WorkQueue
  5. """
  6. import threading
  7. from WMCore.Agent.Harness import Harness
  8. from WMComponent.WorkQueueManager.WorkQueueManagerWorkPoller import WorkQueueManagerWorkPoller
  9. from WMComponent.WorkQueueManager.WorkQueueManagerReqMgrPoller import WorkQueueManagerReqMgrPoller
  10. from WMComponent.WorkQueueManager.WorkQueueManagerLocationPoller import WorkQueueManagerLocationPoller
  11. from WMComponent.WorkQueueManager.WorkQueueManagerCleaner import WorkQueueManagerCleaner
  12. from WMComponent.WorkQueueManager.WorkQueueManagerWMBSFileFeeder import WorkQueueManagerWMBSFileFeeder
  13. from WMCore.WorkQueue.WorkQueueUtils import queueFromConfig, queueConfigFromConfigObject
  14. class WorkQueueManager(Harness):
  15. """WorkQueuemanager component
  16. Runs periodic tasks for WorkQueue
  17. """
  18. def __init__(self, config):
  19. # call the base class
  20. Harness.__init__(self, config)
  21. self.config = queueConfigFromConfigObject(config)
  22. def preInitialization(self):
  23. print "WorkQueueManager.preInitialization"
  24. # Add event loop to worker manager
  25. myThread = threading.currentThread()
  26. pollInterval = self.config.WorkQueueManager.pollInterval
  27. ### Global queue special functions
  28. if self.config.WorkQueueManager.level == 'GlobalQueue':
  29. # Get work from ReqMgr, report back & delete finished requests
  30. myThread.workerThreadManager.addWorker(
  31. WorkQueueManagerReqMgrPoller(
  32. queueFromConfig(self.config),
  33. getattr(self.config.WorkQueueManager,
  34. 'reqMgrConfig', {})
  35. ),
  36. pollInterval)
  37. ### local queue special function
  38. elif self.config.WorkQueueManager.level == 'LocalQueue':
  39. # pull work from parent queue
  40. myThread.workerThreadManager.addWorker(
  41. WorkQueueManagerWorkPoller(queueFromConfig(self.config)),
  42. pollInterval)
  43. # inject acquired work into wmbs
  44. myThread.workerThreadManager.addWorker(
  45. WorkQueueManagerWMBSFileFeeder(queueFromConfig(self.config)),
  46. pollInterval)
  47. ### general functions
  48. # Data location updates
  49. myThread.workerThreadManager.addWorker(
  50. WorkQueueManagerLocationPoller(queueFromConfig(self.config)),
  51. pollInterval)
  52. # Clean finished work & apply end policies
  53. myThread.workerThreadManager.addWorker(
  54. WorkQueueManagerCleaner(queueFromConfig(self.config)),
  55. pollInterval)
  56. return