def do_activity(self, data=None): """ Do the work """ if self.logger: self.logger.info('data: %s' % json.dumps(data, sort_keys=True, indent=4)) run = data['run'] session = Session(self.settings) article_id = session.get_value(run, 'article_id') version = session.get_value(run, 'version') self.emit_monitor_event(self.settings, article_id, version, run, self.pretty_name, "start", "Starting Glencoe video check for " + article_id) try: expanded_folder = session.get_value(run, 'expanded_folder') if expanded_folder is None: raise RuntimeError("No session value for expanded folder") expanded_bucket = self.settings.publishing_buckets_prefix + self.settings.expanded_bucket self.logger.info("expanded_bucket: " + expanded_bucket) xml_filename = lax_provider.get_xml_file_name(self.settings, expanded_folder, expanded_bucket, version) if xml_filename is None: raise RuntimeError("No xml_filename found.") xml_origin = "".join((self.settings.storage_provider, "://", expanded_bucket, "/", expanded_folder + '/' + xml_filename)) storage_context = StorageContext(self.settings) xml_content = storage_context.get_resource_as_string(xml_origin) if glencoe_check.has_videos(xml_content): glencoe_check.validate_sources(glencoe_check.metadata(glencoe_check.check_msid(article_id), self.settings)) self.emit_monitor_event(self.settings, article_id, version, run, self.pretty_name, "end", "Finished Verification. Glencoe is available. Article: " + article_id) return True self.emit_monitor_event(self.settings, article_id, version, run, self.pretty_name, "end", "Finished Verification. No Glencoe media tags found in xml. " "Article: " + article_id) return True except AssertionError as err: self.logger.info(err) self.emit_monitor_event(self.settings, article_id, version, run, self.pretty_name, "error", "Glencoe video is not available for article " + article_id + '; message: ' + str(err)) time.sleep(60) return activity.activity.ACTIVITY_TEMPORARY_FAILURE except Exception as e: self.logger.exception(str(e)) self.emit_monitor_event(self.settings, article_id, version, run, self.pretty_name, "error", "An error occurred when checking for Glencoe video. Article " + article_id + '; message: ' + str(e)) return activity.activity.ACTIVITY_PERMANENT_FAILURE
def do_activity(self, data=None): self.emit_monitor_event(self.settings, data['article_id'], data['version'], data['run'], self.pretty_name, "start", "Starting Updating repository for article " + data['article_id']) # assert all Github settings have are not None when live # if Github settings are null and we are testing, skip activity if None in (self.settings.git_repo_path, self.settings.git_repo_name, self.settings.github_token): import settings as settingsLib if isinstance(self.settings(), settingsLib.live) or isinstance(self.settings(), settingsLib.prod) or \ isinstance(self.settings(), settingsLib.end2end): self.emit_monitor_event(self.settings, data['article_id'], data['version'], data['run'], self.pretty_name, "error", "Error Updating repository for article. Github settings are unavailable.") return activity.activity.ACTIVITY_PERMANENT_FAILURE self.emit_monitor_event(self.settings, data['article_id'], data['version'], data['run'], self.pretty_name, "end", "UpdateRepository got skipped as there are no Github " "settings (Test enviroment).") return True try: xml_file = lax_provider.get_xml_file_name(self.settings, data['article_id'], self.settings.publishing_buckets_prefix + self.settings.ppp_cdn_bucket, data['version']) s3_file_path = data['article_id'] + "/" + xml_file #download xml with tempfile.TemporaryFile(mode='r+') as tmp: storage_context = StorageContext(self.settings) storage_provider = self.settings.storage_provider + "://" published_path = storage_provider + self.settings.publishing_buckets_prefix + \ self.settings.ppp_cdn_bucket resource = published_path + "/" + s3_file_path storage_context.get_resource_to_file(resource, tmp) file_content = storage_context.get_resource_as_string(resource) message = self.update_github(self.settings.git_repo_path + xml_file, file_content) self.logger.info(message) self.emit_monitor_event(self.settings, data['article_id'], data['version'], data['run'], self.pretty_name, "end", "Finished Updating repository for article. Details: " + message) return True except RetryException as e: self.logger.info(e.message) return activity.activity.ACTIVITY_TEMPORARY_FAILURE except Exception as e: self.logger.exception("Exception in do_activity") self.emit_monitor_event(self.settings, data['article_id'], data['version'], data['run'], self.pretty_name, "error", "Error Updating repository for article. Details: " + str(e)) return activity.activity.ACTIVITY_PERMANENT_FAILURE