#!/usr/bin/env python """Flow's exec. Run it with --help for usage.""" import logging from feed_ingestion import flows from feed_ingestion.util import dates_util from feed_ingestion.util import exec_utils logger = logging.getLogger(__name__) FLOW_NAME = 'ANY_FLOW' class FlowExec(exec_utils.CheckStatusMixin, exec_utils.ConcurrencyControlMixin, exec_utils.FlowExecBase): """Flow's exec.""" DEFAULT_CONCURRENCY_STRATEGY = ( exec_utils.ConcurrencyControlMixin.Strategy.WAIT) DEFAULT_MAX_CONCURRENT_FLOWS = 15 def add_args(self): """Create arg parser with all arguments.""" self.parser.add_arg( name='flow', env_var='FLOW', required=True, choices=flows.__all__, ) exec_utils.add_arg_date( parser=self.parser, name='start_date', env_var='START_DATE', required=True, ) exec_utils.add_arg_date( parser=self.parser, name='end_date', env_var='END_DATE', required=False, ) super().add_args() def generate_dates(self): """Execute the flow.""" date = self.args.start_date end_date = self.args.end_date if not end_date: end_date = date dates = dates_util.generate_dates_between( initial_date=date, end_date=end_date, ) return dates def parse_args(self, argv): """Parse args.""" super().parse_args(argv) self.flow_name = self.args.flow if __name__ == '__main__': FlowExec().main()