def push_sync_task(system_user): all_ready = anchore_engine.clients.services.common.check_services_ready( ['simplequeue']) if not all_ready: logger.info("simplequeue service not yet ready, will retry") raise Exception("Simplequeue service not yet ready") else: q_client = SimpleQueueClient(user=system_user[0], password=system_user[1]) if not q_client.is_inqueue(name=feed_sync_queuename, inobj=feed_sync_msg): try: q_client.enqueue(name=feed_sync_queuename, inobj=feed_sync_msg) except: logger.error('Could not enqueue message for a feed sync') raise
def handle_feed_sync_trigger(*args, **kwargs): """ Checks to see if there is a task for a feed sync in the queue and if not, adds one. Interval for firing this should be longer than the expected feed sync duration. :param args: :param kwargs: :return: """ system_user = _system_creds() logger.info('init args: {}'.format(kwargs)) cycle_time = kwargs['mythread']['cycle_timer'] while True: config = localconfig.get_config() feed_sync_enabled = config.get('feeds', {}).get('sync_enabled', True) if feed_sync_enabled: try: all_ready = anchore_engine.clients.services.common.check_services_ready(['simplequeue']) if not all_ready: logger.info("simplequeue service not yet ready, will retry") else: logger.info('Feed Sync Trigger activated') q_client = SimpleQueueClient(user=system_user[0], password=system_user[1]) if not q_client.is_inqueue(name=feed_sync_queuename, inobj=feed_sync_msg): try: q_client.enqueue(name=feed_sync_queuename, inobj=feed_sync_msg) except: logger.exception('Could not enqueue message for a feed sync') logger.info('Feed Sync Trigger done, waiting for next cycle.') except Exception as e: logger.exception('Error caught in feed sync trigger handler. Will continue. Exception: {}'.format(e)) else: logger.debug("sync_enabled is set to false in config - skipping feed sync trigger") time.sleep(cycle_time) return True
def queue_notification(userId, subscription_key, subscription_type, payload): localconfig = anchore_engine.configuration.localconfig.get_config() system_user_auth = localconfig['system_user_auth'] q_client = SimpleQueueClient(user=system_user_auth[0], password=system_user_auth[1]) rc = False try: nobj = { 'userId': userId, 'subscription_key': subscription_key, 'notificationId': str(uuid.uuid4()), } if payload: nobj.update(payload) if not q_client.is_inqueue(subscription_type, nobj): rc = q_client.enqueue(subscription_type, nobj) except Exception as err: logger.warn("failed to create/enqueue notification") raise err return (rc)
def handle_feed_sync_trigger(*args, **kwargs): """ Checks to see if there is a task for a feed sync in the queue and if not, adds one. Interval for firing this should be longer than the expected feed sync duration. :param args: :param kwargs: :return: """ system_user = _system_creds() logger.info('init args: {}'.format(kwargs)) cycle_time = kwargs['mythread']['cycle_timer'] retries = int(os.getenv('ANCHORE_FEED_SYNC_CHECK_RETRIES', 5)) backoff_time = int(os.getenv('ANCHORE_FEED_SYNC_CHECK_FAILURE_BACKOFF', 5)) while True: config = localconfig.get_config() feed_sync_enabled = config.get('feeds', {}).get('sync_enabled', True) if feed_sync_enabled: sleep_time = backoff_time for i in range(retries): try: all_ready = anchore_engine.clients.services.common.check_services_ready( ['simplequeue']) if not all_ready: logger.info( "simplequeue service not yet ready, will retry") else: logger.info('Feed Sync Trigger activated') q_client = SimpleQueueClient(user=system_user[0], password=system_user[1]) if not q_client.is_inqueue(name=feed_sync_queuename, inobj=feed_sync_msg): try: q_client.enqueue(name=feed_sync_queuename, inobj=feed_sync_msg) except: logger.error( 'Could not enqueue message for a feed sync' ) raise logger.info( 'Feed Sync Trigger done, waiting for next cycle.') break except Exception as e: logger.exception( 'Error caught in feed sync trigger handler. Will backoff {} seconds and retry. Attempt {}. Exception: {}' .format(sleep_time, i, e)) time.sleep(sleep_time) sleep_time += backoff_time else: logger.info( 'Exceeded max retries {} to check feed sync queue. Will wait until next duty cycle' .format(retries)) else: logger.debug( "sync_enabled is set to false in config - skipping feed sync trigger" ) time.sleep(cycle_time) return True