I am always torn on this. I know it's in PEP008 and I want to be a good little Python
developer, but the fact is that displays have advanced quite a bit since the original run
of Seinfeld and if we use descriptive method and variable names, we'll be splitting
every damn line and still be going over 80 char in many instances.
I'd like somebody others to chime in here and give an opinion.
-steve
On Aug 3, 2011, at 8:27 AM, Chris Lalancette wrote:
This just makes some of the code easier to read.
Signed-off-by: Chris Lalancette <clalance(a)redhat.com>
---
imagefactory | 10 +++-
imgfac/BuildDispatcher.py | 65 ++++++++++++++++-------
imgfac/BuildJob.py | 9 ++-
imgfac/ImageWarehouse.py | 103 ++++++++++++++++++++++++-----------
imgfac/Template.py | 3 +-
imgfac/qmfagent/BuildAdaptor.py | 112 +++++++++++++++++++++++++++-----------
setup.py | 5 ++-
7 files changed, 214 insertions(+), 93 deletions(-)
diff --git a/imagefactory b/imagefactory
index eb6c797..783c9a6 100755
--- a/imagefactory
+++ b/imagefactory
@@ -41,7 +41,8 @@ class Application(Singleton):
def _singleton_init(self):
super(Application, self)._singleton_init()
- self.log = logging.getLogger('%s.%s' % (__name__,
self.__class__.__name__))
+ self.log = logging.getLogger('%s.%s' % (__name__,
+ self.__class__.__name__))
self.daemon = False
self.pid_file_path = "/var/run/imagefactory.pid"
signal.signal(signal.SIGTERM, self.signal_handler)
@@ -57,9 +58,12 @@ class Application(Singleton):
def setup_logging(self):
if (self.app_config['foreground']):
- logging.basicConfig(level=logging.WARNING, format='%(asctime)s
%(levelname)s %(name)s pid(%(process)d) Message: %(message)s')
+ logging.basicConfig(level=logging.WARNING,
+ format='%(asctime)s %(levelname)s %(name)s
pid(%(process)d) Message: %(message)s')
else:
- logging.basicConfig(level=logging.WARNING, format='%(asctime)s
%(levelname)s %(name)s pid(%(process)d) Message: %(message)s',
filename='/var/log/imagefactory.log')
+ logging.basicConfig(level=logging.WARNING,
+ format='%(asctime)s %(levelname)s %(name)s
pid(%(process)d) Message: %(message)s',
+ filename='/var/log/imagefactory.log')
if (self.app_config['debug']):
logging.getLogger('').setLevel(logging.DEBUG)
elif (self.app_config['verbose']):
diff --git a/imgfac/BuildDispatcher.py b/imgfac/BuildDispatcher.py
index 6653c5b..9a6f2fe 100644
--- a/imgfac/BuildDispatcher.py
+++ b/imgfac/BuildDispatcher.py
@@ -30,18 +30,22 @@ class BuildDispatcher(Singleton):
self.log = logging.getLogger('%s.%s' % (__name__,
self.__class__.__name__))
self.warehouse =
ImageWarehouse(ApplicationConfiguration().configuration['warehouse'])
- def import_image(self, image_id, build_id, target_identifier, image_desc, target,
provider):
+ def import_image(self, image_id, build_id, target_identifier, image_desc,
+ target, provider):
image_id = self._ensure_image(image_id, image_desc)
build_id = self._ensure_build(image_id, build_id)
target_image_id = self._ensure_target_image(build_id, target)
- provider_image_id = self._ensure_provider_image(target_image_id, provider,
target_identifier)
+ provider_image_id = self._ensure_provider_image(target_image_id,
+ provider,
+ target_identifier)
self._commit_build(image_id, build_id)
return (image_id, build_id, target_image_id, provider_image_id)
- def build_image_for_targets(self, image_id, build_id, template, targets, job_cls =
BuildJob, *args, **kwargs):
+ def build_image_for_targets(self, image_id, build_id, template, targets,
+ job_cls = BuildJob, *args, **kwargs):
if image_id and not targets:
targets = self._targets_for_image_id(image_id)
@@ -60,17 +64,21 @@ class BuildDispatcher(Singleton):
return jobs
- def push_image_to_providers(self, image_id, build_id, providers, credentials,
job_cls = BuildJob, *args, **kwargs):
+ def push_image_to_providers(self, image_id, build_id, providers,
+ credentials, job_cls = BuildJob, *args,
+ **kwargs):
if not build_id:
build_id = self._latest_unpushed(image_id)
- watcher = PushWatcher(image_id, build_id, len(providers), self.warehouse)
+ watcher = PushWatcher(image_id, build_id, len(providers),
+ self.warehouse)
jobs = []
for provider in providers:
target = self._map_provider_to_target(provider)
- target_image_id = self._target_image_for_build_and_target(build_id, target)
+ target_image_id = self._target_image_for_build_and_target(build_id,
+ target)
template = self._template_for_target_image_id(target_image_id)
@@ -106,17 +114,24 @@ class BuildDispatcher(Singleton):
return self.warehouse.store_build(None, dict(image = image_id))
def _ensure_target_image(self, build_id, target):
- target_image_id = self._target_image_for_build_and_target(build_id, target)
+ target_image_id = self._target_image_for_build_and_target(build_id,
+ target)
if target_image_id:
return target_image_id
- return self.warehouse.store_target_image(None, None, dict(build=build_id,
target=target))
+ return self.warehouse.store_target_image(None, None,
+ dict(build=build_id,
+ target=target))
- def _ensure_provider_image(self, target_image_id, provider, target_identifier):
+ def _ensure_provider_image(self, target_image_id, provider,
+ target_identifier):
provider_image_id =
self._provider_image_for_target_image_and_provider(target_image_id, provider)
if provider_image_id:
- self._set_provider_image_attr(provider_image_id,
'target_identifier', target_identifier)
+ self._set_provider_image_attr(provider_image_id,
+ 'target_identifier',
+ target_identifier)
else:
- metadata = dict(target_image=target_image_id, provider=provider,
target_identifier=target_identifier)
+ metadata = dict(target_image=target_image_id, provider=provider,
+ target_identifier=target_identifier)
return self.warehouse.create_provider_image(None, None, metadata)
def _load_template(self, image_id, build_id, template):
@@ -134,21 +149,29 @@ class BuildDispatcher(Singleton):
self._set_latest_build(image_id, build_id)
def _latest_build(self, image_id):
- return self.warehouse.metadata_for_id_of_type(['latest_build'],
image_id, 'image')['latest_build']
+ return self.warehouse.metadata_for_id_of_type(['latest_build'],
+ image_id,
+
'image')['latest_build']
def _latest_unpushed(self, image_id):
- return self.warehouse.metadata_for_id_of_type(['latest_unpushed'],
image_id, 'image')['latest_unpushed']
+ return self.warehouse.metadata_for_id_of_type(['latest_unpushed'],
+ image_id,
+
'image')['latest_unpushed']
def _set_latest_build(self, image_id, build_id):
- self.warehouse.set_metadata_for_id_of_type({'latest_build' : build_id},
image_id, 'image')
+ self.warehouse.set_metadata_for_id_of_type({'latest_build' : build_id},
+ image_id, 'image')
def _set_build_parent(self, build_id, parent_id):
- self.warehouse.set_metadata_for_id_of_type({'parent' : parent_id},
build_id, 'build')
+ self.warehouse.set_metadata_for_id_of_type({'parent' : parent_id},
+ build_id, 'build')
def _targets_for_build_id(self, build_id):
targets = []
for target_image_id in self._target_images_for_build(build_id):
- targets.append(self.warehouse.metadata_for_id_of_type(['target'],
target_image_id, 'target_image')['target'])
+ targets.append(self.warehouse.metadata_for_id_of_type(['target'],
+ target_image_id,
+
'target_image')['target'])
return targets
def _targets_for_image_id(self, image_id):
@@ -161,10 +184,12 @@ class BuildDispatcher(Singleton):
return self.warehouse.query("target_image", "$build ==
\"%s\"" % (build_id,))
def _target_image_for_build_and_target(self, build_id, target):
- results = self.warehouse.query("target_image", "$build ==
\"%s\" && $target == \"%s\"" % (build_id, target))
+ results = self.warehouse.query("target_image",
+ "$build == \"%s\" &&
$target == \"%s\"" % (build_id, target))
return results[0] if results else None
- def _provider_image_for_target_image_and_provider(self, target_image_id, provider):
+ def _provider_image_for_target_image_and_provider(self, target_image_id,
+ provider):
results = self.warehouse.query("provider_image", "$target_image ==
\"%s\" && $provider == \"%s\"" % (target_image_id,
provider))
return results[0] if results else None
@@ -172,7 +197,9 @@ class BuildDispatcher(Singleton):
self.warehouse.set_metadata_for_id_of_type({attr : value}, provider_image_id,
"provider_image")
def _template_for_target_image_id(self, target_image_id):
- return self.warehouse.metadata_for_id_of_type(['template'],
target_image_id, 'target_image')['template']
+ return self.warehouse.metadata_for_id_of_type(['template'],
+ target_image_id,
+
'target_image')['template']
def _template_for_build_id(self, build_id):
target_image_ids = self._target_images_for_build(build_id)
diff --git a/imgfac/BuildJob.py b/imgfac/BuildJob.py
index 0cd3773..aae87da 100644
--- a/imgfac/BuildJob.py
+++ b/imgfac/BuildJob.py
@@ -34,7 +34,8 @@ class BuildJob(object):
def __init__(self, template, target, image_id = '', build_id = ''):
super(BuildJob, self).__init__()
- self.log = logging.getLogger('%s.%s' % (__name__,
self.__class__.__name__))
+ self.log = logging.getLogger('%s.%s' % (__name__,
+ self.__class__.__name__))
self.template = template if isinstance(template, Template) else
Template(template)
self.target = target
@@ -58,7 +59,8 @@ class BuildJob(object):
def push_image(self, target_image_id, provider, credentials, watcher=None):
self._watcher = watcher
self.provider = provider
- kwargs = dict(target_image_id=target_image_id, provider=provider,
credentials=credentials)
+ kwargs = dict(target_image_id=target_image_id, provider=provider,
+ credentials=credentials)
self._start_builder_thread("push_image", arg_dict=kwargs)
def abort(self):
@@ -70,7 +72,8 @@ class BuildJob(object):
self._watcher.completed()
self._watcher = None
- def builder_did_update_percentage(self, builder, original_percentage,
new_percentage):
+ def builder_did_update_percentage(self, builder, original_percentage,
+ new_percentage):
self.percent_complete = new_percentage
def builder_did_fail(self, builder, failure_type, failure_info):
diff --git a/imgfac/ImageWarehouse.py b/imgfac/ImageWarehouse.py
index 220adb5..8a498fc 100644
--- a/imgfac/ImageWarehouse.py
+++ b/imgfac/ImageWarehouse.py
@@ -30,19 +30,28 @@ class ImageWarehouse(object):
url = props.prop("_url", "The url property.")
image_bucket = props.prop("_image_bucket", "The image_bucket
property.")
build_bucket = props.prop("_build_bucket", "The build_bucket
property.")
- target_image_bucket = props.prop("_target_image_bucket", "The
target_image_bucket property.")
- template_bucket = props.prop("_template_bucket", "The template_bucket
property.")
+ target_image_bucket = props.prop("_target_image_bucket",
+ "The target_image_bucket property.")
+ template_bucket = props.prop("_template_bucket",
+ "The template_bucket property.")
icicle_bucket = props.prop("_icicle_bucket", "The icicle_bucket
property.")
- provider_image_bucket = props.prop("_provider_image_bucket", "The
provider_image_bucket property.")
+ provider_image_bucket = props.prop("_provider_image_bucket",
+ "The provider_image_bucket property.")
def __repr__(self):
- return "%s - %r" % (super(ImageWarehouse, self).__repr__(),
self.__dict__)
+ return "%s - %r" % (super(ImageWarehouse, self).__repr__(),
+ self.__dict__)
def __str__(self):
- return "%s - buckets(%s, %s, %s, %s)" % (self.url,
self.target_image_bucket, self.template_bucket, self.icicle_bucket,
self.provider_image_bucket)
+ return "%s - buckets(%s, %s, %s, %s)" % (self.url,
+ self.target_image_bucket,
+ self.template_bucket,
+ self.icicle_bucket,
+ self.provider_image_bucket)
def __init__(self, url=None):
- self.log = logging.getLogger('%s.%s' % (__name__,
self.__class__.__name__))
+ self.log = logging.getLogger('%s.%s' % (__name__,
+ self.__class__.__name__))
self.http = httplib2.Http()
@@ -64,9 +73,11 @@ class ImageWarehouse(object):
self.log.debug("Created Image Warehouse instance %s" % (self, ))
- def _http_request(self, url, method, body = None, content_type =
'text/plain'):
+ def _http_request(self, url, method, body = None,
+ content_type = 'text/plain'):
try:
- return self.http.request(url, method, body, headers={'content-type':
content_type})
+ return self.http.request(url, method, body,
+ headers={'content-type': content_type})
except Exception, e:
raise WarehouseError("Problem encountered trying to reach image
warehouse. Please check that iwhd is running and reachable.\nException text: %s" %
(e, ))
@@ -101,31 +112,43 @@ class ImageWarehouse(object):
return object_url
def query(self, object_type, expression):
- object_url = self.__url_for_id_of_type("_query", object_type,
create=False)
- self.log.debug("Querying (%s) with expression (%s)" % (object_url,
expression))
- xml = self._http_post(object_url, expression,
'application/x-www-form-urlencoded')
+ object_url = self.__url_for_id_of_type("_query", object_type,
+ create=False)
+ self.log.debug("Querying (%s) with expression (%s)" % (object_url,
+ expression))
+ xml = self._http_post(object_url, expression,
+ 'application/x-www-form-urlencoded')
if not xml:
return []
- return map(lambda n: n.content,
libxml2.parseDoc(xml).xpathEval("/objects/object/key"))
+ return map(lambda n: n.content,
+ libxml2.parseDoc(xml).xpathEval("/objects/object/key"))
def post_on_object_with_id_of_type(self, object_id, object_type, post_data):
- object_url = self.__url_for_id_of_type(object_id, object_type, create=False)
- return self._http_post(object_url, urllib.urlencode(post_data),
'application/x-www-form-urlencoded')
+ object_url = self.__url_for_id_of_type(object_id, object_type,
+ create=False)
+ return self._http_post(object_url, urllib.urlencode(post_data),
+ 'application/x-www-form-urlencoded')
def object_with_id_of_type(self, object_id, object_type, metadata_keys=()):
- object_url = self.__url_for_id_of_type(object_id, object_type, create=False)
+ object_url = self.__url_for_id_of_type(object_id, object_type,
+ create=False)
obj = self._http_get(object_url)
if(len(metadata_keys) > 0):
- metadata = self.metadata_for_id_of_type(metadata_keys, object_id,
object_type)
+ metadata = self.metadata_for_id_of_type(metadata_keys, object_id,
+ object_type)
else:
metadata = {}
return obj, metadata
- def object_for_target_image_id(self, target_image_id, object_type,
metadata_keys=()):
- object_url = self.__url_for_id_of_type(target_image_id,
"target_image", create=False)
+ def object_for_target_image_id(self, target_image_id, object_type,
+ metadata_keys=()):
+ object_url = self.__url_for_id_of_type(target_image_id,
"target_image",
+ create=False)
object_id = self._http_get("%s/%s" % (object_url, object_type))
- the_object, metadata = self.object_with_id_of_type(object_id, object_type,
metadata_keys)
+ the_object, metadata = self.object_with_id_of_type(object_id,
+ object_type,
+ metadata_keys)
return object_id, the_object, metadata
def delete_object_at_url(self, object_url):
@@ -138,11 +161,13 @@ class ImageWarehouse(object):
return False
def delete_object_with_id_of_type(self, object_id, object_type):
- object_url = self.__url_for_id_of_type(object_id, object_type, create=False)
+ object_url = self.__url_for_id_of_type(object_id, object_type,
+ create=False)
return self.delete_object_at_url(object_url)
def set_metadata_for_id_of_type(self, metadata, object_id, object_type):
- object_url = self.__url_for_id_of_type(object_id, object_type, create=False)
+ object_url = self.__url_for_id_of_type(object_id, object_type,
+ create=False)
self.set_metadata_for_object_at_url(metadata, object_url)
def set_metadata_for_object_at_url(self, metadata, object_url):
@@ -151,14 +176,17 @@ class ImageWarehouse(object):
self._http_put("%s/%s" % (object_url, item), str(metadata[item]))
def metadata_for_id_of_type(self, metadata_keys, object_id, object_type):
- object_url = self.__url_for_id_of_type(object_id, object_type, create=False)
+ object_url = self.__url_for_id_of_type(object_id, object_type,
+ create=False)
return self.metadata_for_object_at_url(metadata_keys, object_url)
def metadata_for_object_at_url(self, metadata_keys, object_url):
- self.log.debug("Getting metadata (%s) from %s" % (metadata_keys,
object_url))
+ self.log.debug("Getting metadata (%s) from %s" % (metadata_keys,
+ object_url))
metadata = dict()
for item in metadata_keys:
- metadata.update( { item : self._http_get("%s/%s" % (object_url,
item)) } )
+ metadata.update( { item : self._http_get("%s/%s" % (object_url,
+ item)) } )
return metadata
def store_image(self, image_id, image_xml, metadata=None):
@@ -197,7 +225,8 @@ class ImageWarehouse(object):
image_size = os.path.getsize(image_file_path)
curl = pycurl.Curl()
curl.setopt(pycurl.URL, object_url)
- curl.setopt(pycurl.HTTPHEADER, ["User-Agent: Load Tool (PyCURL Load
Tool)"])
+ curl.setopt(pycurl.HTTPHEADER,
+ ["User-Agent: Load Tool (PyCURL Load Tool)"])
curl.setopt(pycurl.PUT, 1)
curl.setopt(pycurl.INFILE, image_file)
curl.setopt(pycurl.INFILESIZE, image_size)
@@ -207,7 +236,8 @@ class ImageWarehouse(object):
except Exception, e:
raise WarehouseError("Problem encountered trying to reach image
warehouse. Please check that iwhd is running and reachable.\nException text: %s" %
(e, ))
- def store_target_image(self, target_image_id, image_file_path, metadata=None):
+ def store_target_image(self, target_image_id, image_file_path,
+ metadata=None):
if(not target_image_id):
target_image_id = str(uuid.uuid4())
object_url = self.__url_for_id_of_type(target_image_id,
"target_image")
@@ -227,7 +257,8 @@ class ImageWarehouse(object):
def create_provider_image(self, image_id, txt=None, metadata=None):
if(not image_id):
image_id = str(uuid.uuid4())
- object_url = self.__url_for_id_of_type(image_id,
object_type="provider_image")
+ object_url = self.__url_for_id_of_type(image_id,
+ object_type="provider_image")
if(not txt):
if(metadata):
txt = "This object has the following metadata keys: %s" %
(metadata.keys(), )
@@ -246,7 +277,8 @@ class ImageWarehouse(object):
def store_template(self, template, template_id=None, metadata=None):
if(not template_id):
template_id = str(uuid.uuid4())
- object_url = self.__url_for_id_of_type(template_id,
object_type="template")
+ object_url = self.__url_for_id_of_type(template_id,
+ object_type="template")
self._http_put(object_url, template)
@@ -275,16 +307,20 @@ class ImageWarehouse(object):
return self.object_with_id_of_type(icicle_id, "icicle", metadata_keys)
def icicle_for_target_image_id(self, target_image_id, metadata_keys=()):
- return self.object_for_target_image_id(target_image_id, "icicle",
metadata_keys)
+ return self.object_for_target_image_id(target_image_id, "icicle",
+ metadata_keys)
def template_with_id(self, template_id, metadata_keys=()):
- return self.object_with_id_of_type(template_id, "template",
metadata_keys)
+ return self.object_with_id_of_type(template_id, "template",
+ metadata_keys)
def template_for_target_image_id(self, target_image_id, metadata_keys=()):
- return self.object_for_target_image_id(target_image_id, "template",
metadata_keys)
+ return self.object_for_target_image_id(target_image_id, "template",
+ metadata_keys)
def target_image_with_id(self, target_image_id, metadata_keys=()):
- return self.object_with_id_of_type(target_image_id, "target_image",
metadata_keys)
+ return self.object_with_id_of_type(target_image_id, "target_image",
+ metadata_keys)
def remove_template_with_id(self, template_id):
return self.delete_object_with_id_of_type(template_id, "template")
@@ -293,7 +329,8 @@ class ImageWarehouse(object):
return self.delete_object_with_id_of_type(icicle_id, "icicle")
def remove_target_image_with_id(self, target_image_id):
- return self.delete_object_with_id_of_type(target_image_id,
"target_image")
+ return self.delete_object_with_id_of_type(target_image_id,
+ "target_image")
class WarehouseError(Exception):
"""Error related to image warehouse interactions."""
diff --git a/imgfac/Template.py b/imgfac/Template.py
index 82b4260..4eba266 100644
--- a/imgfac/Template.py
+++ b/imgfac/Template.py
@@ -37,7 +37,8 @@ class Template(object):
return super(Template, self).__repr__
def __init__(self, template=None, uuid=None, url=None, xml=None):
- self.log = logging.getLogger('%s.%s' % (__name__,
self.__class__.__name__))
+ self.log = logging.getLogger('%s.%s' % (__name__,
+ self.__class__.__name__))
self.warehouse =
ImageWarehouse(ApplicationConfiguration().configuration["warehouse"])
self.identifier = None
diff --git a/imgfac/qmfagent/BuildAdaptor.py b/imgfac/qmfagent/BuildAdaptor.py
index 0f68a12..291984d 100644
--- a/imgfac/qmfagent/BuildAdaptor.py
+++ b/imgfac/qmfagent/BuildAdaptor.py
@@ -24,48 +24,88 @@ from imgfac.BuildJob import BuildJob
class BuildAdaptor(BuildJob):
# QMF schema for BuildAdaptor
- qmf_schema = Schema(SCHEMA_TYPE_DATA, "com.redhat.imagefactory",
"BuildAdaptor")
- qmf_schema.addProperty(SchemaProperty("image", SCHEMA_DATA_STRING,
desc="UUID of the image"))
- qmf_schema.addProperty(SchemaProperty("build", SCHEMA_DATA_STRING,
desc="UUD of the build"))
- qmf_schema.addProperty(SchemaProperty("status", SCHEMA_DATA_STRING,
desc="string representing the status (see instance_states() on ImageFactory)"))
- qmf_schema.addProperty(SchemaProperty("percent_complete", SCHEMA_DATA_INT,
desc="the estimated percentage through an operation"))
- qmf_schema.addProperty(SchemaProperty("image_id", SCHEMA_DATA_STRING,
desc="UUID of the newly created target or provider image"))
- qmf_schema.addMethod(SchemaMethod("abort", desc = "If possible, abort
running build."))
+ qmf_schema = Schema(SCHEMA_TYPE_DATA, "com.redhat.imagefactory",
+ "BuildAdaptor")
+ qmf_schema.addProperty(SchemaProperty("image", SCHEMA_DATA_STRING,
+ desc="UUID of the image"))
+ qmf_schema.addProperty(SchemaProperty("build", SCHEMA_DATA_STRING,
+ desc="UUD of the build"))
+ qmf_schema.addProperty(SchemaProperty("status", SCHEMA_DATA_STRING,
+ desc="string representing the status (see
instance_states() on ImageFactory)"))
+ qmf_schema.addProperty(SchemaProperty("percent_complete",
SCHEMA_DATA_INT,
+ desc="the estimated percentage through an
operation"))
+ qmf_schema.addProperty(SchemaProperty("image_id", SCHEMA_DATA_STRING,
+ desc="UUID of the newly created target or
provider image"))
+ qmf_schema.addMethod(SchemaMethod("abort",
+ desc="If possible, abort running
build."))
#QMF schema for status change event
- qmf_event_schema_status = Schema(SCHEMA_TYPE_EVENT,
"com.redhat.imagefactory", "BuildAdaptorStatusEvent")
- qmf_event_schema_status.addProperty(SchemaProperty("addr",
SCHEMA_DATA_MAP, desc="the address of the object raising this event"))
- qmf_event_schema_status.addProperty(SchemaProperty("event",
SCHEMA_DATA_STRING, desc="string describing the type of event, in this case
'STATUS'"))
- qmf_event_schema_status.addProperty(SchemaProperty("new_status",
SCHEMA_DATA_STRING, desc="string value of the new status"))
- qmf_event_schema_status.addProperty(SchemaProperty("old_status",
SCHEMA_DATA_STRING, desc="string value of the old status"))
+ qmf_event_schema_status = Schema(SCHEMA_TYPE_EVENT,
+ "com.redhat.imagefactory",
+ "BuildAdaptorStatusEvent")
+ qmf_event_schema_status.addProperty(SchemaProperty("addr",
+ SCHEMA_DATA_MAP,
+ desc="the address of the
object raising this event"))
+ qmf_event_schema_status.addProperty(SchemaProperty("event",
+ SCHEMA_DATA_STRING,
+ desc="string describing the
type of event, in this case 'STATUS'"))
+ qmf_event_schema_status.addProperty(SchemaProperty("new_status",
+ SCHEMA_DATA_STRING,
+ desc="string value of the
new status"))
+ qmf_event_schema_status.addProperty(SchemaProperty("old_status",
+ SCHEMA_DATA_STRING,
+ desc="string value of the
old status"))
#QMF schema for change to percent_complete event
- qmf_event_schema_percentage = Schema(SCHEMA_TYPE_EVENT,
"com.redhat.imagefactory", "BuildAdaptorPercentCompleteEvent")
- qmf_event_schema_percentage.addProperty(SchemaProperty("addr",
SCHEMA_DATA_MAP, desc="the address of the object raising this event"))
- qmf_event_schema_percentage.addProperty(SchemaProperty("event",
SCHEMA_DATA_STRING, desc="string describing the type of event, in this case
'PERCENTAGE'"))
- qmf_event_schema_percentage.addProperty(SchemaProperty("percent_complete",
SCHEMA_DATA_INT, desc="the estimated percentage through an operation"))
+ qmf_event_schema_percentage = Schema(SCHEMA_TYPE_EVENT,
+ "com.redhat.imagefactory",
+ "BuildAdaptorPercentCompleteEvent")
+ qmf_event_schema_percentage.addProperty(SchemaProperty("addr",
+ SCHEMA_DATA_MAP,
+ desc="the address of the
object raising this event"))
+ qmf_event_schema_percentage.addProperty(SchemaProperty("event",
+ SCHEMA_DATA_STRING,
+ desc="string describing
the type of event, in this case 'PERCENTAGE'"))
+
qmf_event_schema_percentage.addProperty(SchemaProperty("percent_complete",
+ SCHEMA_DATA_INT,
+ desc="the estimated
percentage through an operation"))
#QMF schema for build failure events
- qmf_event_schema_build_failed = Schema(SCHEMA_TYPE_EVENT,
"com.redhat.imagefactory", "BuildFailedEvent")
- qmf_event_schema_build_failed.addProperty(SchemaProperty("addr",
SCHEMA_DATA_MAP, desc="the address of the object raising this event"))
- qmf_event_schema_build_failed.addProperty(SchemaProperty("event",
SCHEMA_DATA_STRING, desc="string describing the type of event, in this case
'FAILURE'"))
- qmf_event_schema_build_failed.addProperty(SchemaProperty("type",
SCHEMA_DATA_STRING, desc="short string description of the failure"))
- qmf_event_schema_build_failed.addProperty(SchemaProperty("info",
SCHEMA_DATA_STRING, desc="longer string description of the failure"))
+ qmf_event_schema_build_failed = Schema(SCHEMA_TYPE_EVENT,
+ "com.redhat.imagefactory",
+ "BuildFailedEvent")
+ qmf_event_schema_build_failed.addProperty(SchemaProperty("addr",
+ SCHEMA_DATA_MAP,
+ desc="the address of
the object raising this event"))
+ qmf_event_schema_build_failed.addProperty(SchemaProperty("event",
+ SCHEMA_DATA_STRING,
+ desc="string
describing the type of event, in this case 'FAILURE'"))
+ qmf_event_schema_build_failed.addProperty(SchemaProperty("type",
+ SCHEMA_DATA_STRING,
+ desc="short string
description of the failure"))
+ qmf_event_schema_build_failed.addProperty(SchemaProperty("info",
+ SCHEMA_DATA_STRING,
+ desc="longer string
description of the failure"))
@classmethod
def object_states(cls):
"""Returns a dictionary representing the finite state machine for
instances of this class."""
return {
- "NEW":({"INITIALIZING":("build_image",
"push_image")}, {"PENDING":("build_image",
"push_image")}, {"FAILED":("build_image",
"push_image")}),
- "INITIALIZING":({"PENDING":("_auto_")},
{"FAILED":("_auto_")}),
- "PENDING":({"FINISHING":("_auto_")},
{"COMPLETED":("_auto_")}, {"FAILED":("_auto_")}),
- "FINISHING":({"COMPLETED":("_auto_")},
{"FAILED":("_auto_")}),
- "COMPLETED":()
- }
+ "NEW":({"INITIALIZING":("build_image",
"push_image")},
+ {"PENDING":("build_image",
"push_image")},
+ {"FAILED":("build_image",
"push_image")}),
+ "INITIALIZING":({"PENDING":("_auto_")},
{"FAILED":("_auto_")}),
+ "PENDING":({"FINISHING":("_auto_")},
{"COMPLETED":("_auto_")},
+ {"FAILED":("_auto_")}),
+ "FINISHING":({"COMPLETED":("_auto_")},
{"FAILED":("_auto_")}),
+ "COMPLETED":()
+ }
image_id = props.subprop("qmf_object", "image", "The UUID of
the image.")
build_id = props.subprop("qmf_object", "build", "The UUID of
the build.")
status = props.subprop("qmf_object", "status", "The status
property.")
- percent_complete = props.subprop("qmf_object",
"percent_complete", "The percent_complete property.")
- new_image_id = props.subprop("qmf_object", "image_id", "The
image property.")
+ percent_complete = props.subprop("qmf_object",
"percent_complete",
+ "The percent_complete property.")
+ new_image_id = props.subprop("qmf_object", "image_id",
+ "The image property.")
qmf_object = props.prop("_qmf_object", "The qmf_object
property.")
def __init__(self, template, target, image_id='', build_id='',
agent=None):
@@ -75,7 +115,9 @@ class BuildAdaptor(BuildJob):
# Builder delegate methods
def builder_did_update_status(self, builder, old_status, new_status):
- super(BuildAdaptor, self).builder_did_update_status(builder, old_status,
new_status)
+ super(BuildAdaptor, self).builder_did_update_status(builder,
+ old_status,
+ new_status)
self.log.debug("Raising event with agent handler (%s), changed status from
%s to %s" % (self.agent, old_status, new_status))
event = Data(BuildAdaptor.qmf_event_schema_status)
event.addr = self.qmf_object.getAddr().asMap()
@@ -88,8 +130,11 @@ class BuildAdaptor(BuildJob):
self.agent.deregister(self.qmf_object)
- def builder_did_update_percentage(self, builder, original_percentage,
new_percentage):
- super(BuildAdaptor, self).builder_did_update_percentage(builder,
original_percentage, new_percentage)
+ def builder_did_update_percentage(self, builder, original_percentage,
+ new_percentage):
+ super(BuildAdaptor, self).builder_did_update_percentage(builder,
+ original_percentage,
+ new_percentage)
self.log.debug("Raising event with agent handler (%s), changed percent
complete from %s to %s" % (self.agent, original_percentage, new_percentage))
event = Data(BuildAdaptor.qmf_event_schema_percentage)
event.addr = self.qmf_object.getAddr().asMap()
@@ -98,7 +143,8 @@ class BuildAdaptor(BuildJob):
self.agent.session.raiseEvent(data=event, severity=SEV_NOTICE)
def builder_did_fail(self, builder, failure_type, failure_info):
- super(BuildAdaptor, self).builder_did_fail(builder, failure_type, failure_info)
+ super(BuildAdaptor, self).builder_did_fail(builder, failure_type,
+ failure_info)
self.log.debug("Raising event with agent handler (%s), BUILD FAILED: %s -
%s" % (self.agent, failure_type, failure_info))
event = Data(BuildAdaptor.qmf_event_schema_build_failed)
event.addr = self.qmf_object.getAddr().asMap()
diff --git a/setup.py b/setup.py
index 6cc6278..c743745 100644
--- a/setup.py
+++ b/setup.py
@@ -28,7 +28,10 @@ try:
except Exception, e:
raise RuntimeError("ERROR: version.txt could not be found. Run 'git
describe > version.txt' to get the correct version info.")
-datafiles=[('share/man/man1', ['Documentation/man/imagefactory.1']),
('/etc', ['imagefactory.conf']), ('/etc/pki/imagefactory',
['cert-ec2.pem']), ('/etc/rc.d/init.d',
['scripts/imagefactory'])]
+datafiles=[('share/man/man1', ['Documentation/man/imagefactory.1']),
+ ('/etc', ['imagefactory.conf']),
+ ('/etc/pki/imagefactory', ['cert-ec2.pem']),
+ ('/etc/rc.d/init.d', ['scripts/imagefactory'])]
class sdist(_sdist):
""" custom sdist command to prepare imagefactory.spec file
"""
--
1.7.4.4