summaryrefslogtreecommitdiffstats
path: root/src/software/openlmi/software/yumdb/jobmanager.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/software/openlmi/software/yumdb/jobmanager.py')
-rw-r--r--src/software/openlmi/software/yumdb/jobmanager.py81
1 files changed, 9 insertions, 72 deletions
diff --git a/src/software/openlmi/software/yumdb/jobmanager.py b/src/software/openlmi/software/yumdb/jobmanager.py
index 7283d05..977b38f 100644
--- a/src/software/openlmi/software/yumdb/jobmanager.py
+++ b/src/software/openlmi/software/yumdb/jobmanager.py
@@ -39,8 +39,8 @@ import threading
import time
import traceback
-from openlmi.common import cmpi_logging
from openlmi.common.IndicationManager import IndicationManager
+from openlmi.common.JobManager import JobManager as JM
from openlmi.software.yumdb import errors, jobs
from openlmi.software.yumdb.util import trace_function
@@ -56,69 +56,6 @@ MINIMUM_TIME_BEFORE_REMOVAL = 10
# replacement for cmpi_logging.logger
LOG = None
-IND_JOB_PERCENT_UPDATED = "PercentUpdated"
-IND_JOB_SUCCEEDED = "Succeeded"
-IND_JOB_FAILED = "Failed"
-IND_JOB_CHANGED = "Changed"
-IND_JOB_CREATED = "Created"
-
-IND_FILTERS = {
- IND_JOB_PERCENT_UPDATED: {
- "Query" : "SELECT * FROM CIM_InstModification WHERE "
- "SourceInstance ISA %(classname)s AND "
- "SourceInstance.CIM_ConcreteJob::PercentComplete <> "
- "PreviousInstance.CIM_ConcreteJob::PercentComplete",
- "Description" : "Modification of Percentage Complete for a "
- "Concrete Job.",
- },
- IND_JOB_SUCCEEDED: {
- "Query" : "SELECT * FROM CIM_InstModification WHERE "
- "SourceInstance ISA %(classname)s AND "
- "SourceInstance ISA LMI_SoftwareInstallationJob AND "
- "SourceInstance.CIM_ConcreteJob::JobState = 17",
- # symbolic constants not supported by sfcb
- #"CIM_ConcreteJob.JobState#'Completed'"
- "Description": "Modification of Operational Status for a "
- "Concrete Job to 'Complete' and 'OK'.",
- },
- IND_JOB_FAILED: {
- "Query" : "SELECT * FROM CIM_InstModification WHERE "
- "SourceInstance ISA %(classname)s AND "
- "SourceInstance.CIM_ConcreteJob::JobState = 10",
- # symbolic constants not supported by sfcb
- #"CIM_ConcreteJob.JobState#'Exception'",
- "Description": "Modification of Operational Status for a "
- "Concrete Job to 'Complete' and 'Error'.",
- },
- IND_JOB_CHANGED: {
- "Query" : "SELECT * FROM CIM_InstModification WHERE "
- "SourceInstance ISA %(classname)s AND "
- "SourceInstance.CIM_ConcreteJob::JobState <> "
- "PreviousInstance.CIM_ConcreteJob::JobState",
- "Description": "Modification of Job State for a ConcreteJob.",
- },
- IND_JOB_CREATED: {
- "Query" : "SELECT * FROM CIM_InstCreation WHERE "
- "SourceInstance ISA %(classname)s",
- "Description": "Creation of a ConcreteJob.",
- },
-}
-
-@cmpi_logging.trace_function
-def register_filters(indication_manager):
- """
- This function registers static indication filters at IndicationManager.
- It should be called upon provider's initialization.
- """
- to_register = {}
- for fltr_id, fltr in IND_FILTERS.items():
- if not indication_manager.is_registered(JOB_CLASSNAME, fltr_id):
- fltr["Query"] = fltr["Query"] % {"classname" : JOB_CLASSNAME }
- to_register[fltr_id] = fltr
- if to_register:
- indication_manager.add_filters(JOB_CLASSNAME,
- to_register, ensure_installed=False)
-
# *****************************************************************************
# Decorators
# *****************************************************************************
@@ -183,7 +120,7 @@ class JobIndicationSender(object):
"""
def __init__(self, indication_manager, job,
- indications=IND_JOB_CHANGED, new=None):
+ indications=JM.IND_JOB_CHANGED, new=None):
"""
:param job (``YumJob``) Is job instance, which will be immediately
snapshoted as old instance and later as a new one.
@@ -258,11 +195,11 @@ class JobIndicationSender(object):
"can not send any indication without id")
if make_snapshot:
self.snapshot()
- if ( IND_JOB_CHANGED in self._indications
+ if ( JM.IND_JOB_CHANGED in self._indications
and self._new_instance is None):
raise errors.IndicationError("no snapshot made for modified job")
for fltr_id in self._indications:
- if fltr_id == IND_JOB_CREATED:
+ if fltr_id == JM.IND_JOB_CREATED:
LOG.debug("sending instance creation indication for job %s",
self._job)
self._indication_manager.send_instcreation(
@@ -368,7 +305,7 @@ class JobManager(threading.Thread):
LOG.debug('job %s enqued for YumWorker to handle', job)
heapq.heappush(self._job_queue, job)
if getattr(job, 'async', False) is True:
- ind = self._prepare_indication_for(job, IND_JOB_CREATED)
+ ind = self._prepare_indication_for(job, JM.IND_JOB_CREATED)
self._async_jobs[job.jobid] = job
ind.send()
self._job_enqueued.notify()
@@ -557,7 +494,7 @@ class JobManager(threading.Thread):
'can not finish not started job "%s"' % job)
if getattr(job, 'async', False):
ind = self._prepare_indication_for(job,
- (IND_JOB_CHANGED, IND_JOB_PERCENT_UPDATED))
+ (JM.IND_JOB_CHANGED, JM.IND_JOB_PERCENT_UPDATED))
job.finish(result, result_data)
if getattr(job, 'async', False):
if job.delete_on_completion:
@@ -566,9 +503,9 @@ class JobManager(threading.Thread):
self._schedule_event(schedule_at, job.jobid,
self.ACTION_REMOVE)
if result == job.RESULT_SUCCESS:
- ind.add_indication_ids(IND_JOB_SUCCEEDED)
+ ind.add_indication_ids(JM.IND_JOB_SUCCEEDED)
elif result == job.RESULT_ERROR:
- ind.add_indication_ids(IND_JOB_FAILED)
+ ind.add_indication_ids(JM.IND_JOB_FAILED)
ind.send(True)
else:
LOG.debug("sending reply for %s: (%s, %s)", job,
@@ -598,7 +535,7 @@ class JobManager(threading.Thread):
if job is not None:
if getattr(job, "async", False):
ind = self._prepare_indication_for(job,
- (IND_JOB_CHANGED, IND_JOB_PERCENT_UPDATED))
+ (JM.IND_JOB_CHANGED, JM.IND_JOB_PERCENT_UPDATED))
job.start()
ind.send(True)
else: