def load_activated_feature_sets(logging_context: LoggingContext, activation_yaml) -> List[str]: services_whitelist = [] for service in activation_yaml.get("services", []): feature_sets = service.get("featureSets", []) for feature_set in feature_sets: services_whitelist.append( f"{service.get('service')}/{feature_set}") if not feature_sets: logging_context.error( f"No feature set in given {service} service.") return services_whitelist
def run_ack_logs(worker_name: str, sfm_queue: Queue): logging_context = LoggingContext(worker_name) subscriber_client = pubsub.SubscriberClient() subscription_path = subscriber_client.subscription_path( LOGS_SUBSCRIPTION_PROJECT, LOGS_SUBSCRIPTION_ID) logging_context.log(f"Starting processing") worker_state = WorkerState(worker_name) while True: try: perform_pull(worker_state, sfm_queue, subscriber_client, subscription_path) except Exception as e: if isinstance(e, Forbidden): logging_context.error( f"{e} Please check whether assigned service account has permission to fetch Pub/Sub messages." ) else: logging_context.exception("Failed to pull messages") # Backoff for 1 minute to avoid spamming requests and logs time.sleep(60)