def parse_post_data(self, data): """ Method shared between Frontend and Backend to parse the POST data of manual rebuild JSON and generate the BaseEvent representation of the rebuild request. :param dict data: Dict generated from JSON from HTTP POST or parsed from the UMB message sent from Frontend to Backend. """ msg_id = data.get('msg_id', "manual_rebuild_%s" % (str(time.time()))) dry_run = data.get('dry_run', False) if data.get('errata_id', None): errata_id = data.get('errata_id') errata = Errata() advisory = ErrataAdvisory.from_advisory_id(errata, errata_id) event = ManualRebuildWithAdvisoryEvent( msg_id, advisory, data.get("container_images", []), data.get("metadata", None), freshmaker_event_id=data.get('freshmaker_event_id'), manual=True, dry_run=dry_run, requester=data.get('requester', None)) else: event = ManualBundleRebuild(msg_id, data.get('container_images', []), data.get('bundle_images'), data.get('metadata', None), dry_run=dry_run, requester=data.get('requester', None)) return event
def parse(self, topic, msg): msg_id = msg.get('msg_id') inner_msg = msg.get('msg') errata_id = int(inner_msg.get('errata_id')) errata = Errata() return ErrataAdvisoryStateChangedEvent( msg_id, ErrataAdvisory.from_advisory_id(errata, errata_id))
def parse(self, topic, msg): msg_id = msg.get('msg_id') inner_msg = msg.get('msg') errata_id = int(inner_msg.get('errata_id')) errata = Errata() advisory = ErrataAdvisory.from_advisory_id(errata, errata_id) # If advisory created by BOTAS and it's shipped, # then return BotasErrataShippedEvent event if advisory.state == "SHIPPED_LIVE" and \ advisory.reporter.startswith('botas'): event = BotasErrataShippedEvent(msg_id, advisory) else: event = ErrataAdvisoryStateChangedEvent(msg_id, advisory) return event
def parse(self, topic, msg): msg_id = msg.get('msg_id') inner_msg = msg.get('msg') errata_id = int(inner_msg.get('errata_id')) new_state = inner_msg.get('to') errata = Errata() advisory = ErrataAdvisory.from_advisory_id(errata, errata_id) # When there is message delay, state change messages can arrive after # advisory has been changed to a different state other than the one # in message, so we override advisory state with the state in message advisory.state = new_state # If advisory created by BOTAS and it's shipped, # then return BotasErrataShippedEvent event if advisory.state == "SHIPPED_LIVE" and advisory.reporter.startswith( 'botas'): event = BotasErrataShippedEvent(msg_id, advisory) else: event = ErrataAdvisoryStateChangedEvent(msg_id, advisory) return event
dictConfig(fedmsg_config.get('logging', {'version': 1})) if len(sys.argv) < 2: print("Queries Lightblue to find out all the images Freshmaker rebuilds.") print("Usage: ./lightblue.py ERRATA_ID [[CONTAINER_IMAGE], ...]") sys.exit(1) container_images = sys.argv[2:] app_context = app.app_context() app_context.__enter__() db.drop_all() db.create_all() db.session.commit() errata = Errata() kwargs = {} if container_images: EventClass = ManualRebuildWithAdvisoryEvent kwargs['container_images'] = container_images else: EventClass = ErrataAdvisoryStateChangedEvent event = EventClass( "fake_message", ErrataAdvisory.from_advisory_id(errata, sys.argv[1]), dry_run=True, **kwargs) handler = RebuildImagesOnRPMAdvisoryChange() with patch("freshmaker.consumer.get_global_consumer"): handler.handle(event)
kwargs['container_images'] = args.container_img else: EventClass = ErrataAdvisoryStateChangedEvent event_id = None if args.cassette: cassette_name = os.path.splitext(os.path.basename(args.cassette))[0] extension = os.path.splitext(os.path.basename(args.cassette))[1] try: event_id = int(cassette_name) if extension != ".yml": raise ValueError except ValueError: print( "The input cassette must be named in the format of <event ID>.yml") sys.exit(1) conf.vcrpy_path = os.path.dirname(args.cassette) conf.vcrpy_mode = 'none' event = EventClass("fake_message", ErrataAdvisory.from_advisory_id(errata, sys.argv[1]), dry_run=True, freshmaker_event_id=event_id, **kwargs) handler = RebuildImagesOnRPMAdvisoryChange() with patch("freshmaker.consumer.get_global_consumer"): handler.handle(event)