def mock_application(service_name=None): service_name = service_name or os.getcwd().split("/")[-1].split("-")[-1] config = importlib.import_module(f"{service_name}.config") # service_settings = {c: getattr(config, c) for c in dir(config) if c.isupper()} # service_settings.update({"INIESTA_DRY_RUN": True}) config.INIESTA_DRY_RUN = True new_settings = LazySettings() new_settings.configure(config) Iniesta.load_config(new_settings) class Dummy: config = None dummy = Dummy() dummy.config = new_settings with open(f"{service_name}/app.py", "r") as file: for line in file: if "Insanic(" in line: variable_name = line.split("=")[0].strip() exec(f"{variable_name} = dummy") elif line.startswith("Iniesta."): exec(line) break return dummy
def sqs_client(self, insanic_application, create_service_sqs): Iniesta.load_config(insanic_application.config) SQSClient.queue_urls = { SQSClient.default_queue_name(): create_service_sqs["QueueUrl"] } sqs_client = SQSClient() return sqs_client
def sqs_client(self, insanic_application): from iniesta import Iniesta Iniesta.load_config(insanic_application.config) SQSClient.queue_urls = {SQSClient.default_queue_name(): "hello"} client = SQSClient() yield client SQSClient.handlers = {}
def send(message): # TODO: documentation for read me Iniesta.load_config(settings) message = message or {} loop = asyncio.get_event_loop() sqs_client = loop.run_until_complete(SQSClient.initialize()) message = sqs_client.create_message(message=message) loop.run_until_complete(message.send()) click.echo("Message Sent") click.echo(f"MessageId: {message.message_id}") Iniesta.unload_config(settings)
def publish(event, message, version): # TODO: documentation for read me # app = mock_application() loop = asyncio.get_event_loop() Iniesta.load_config(settings) version = version or 1 message = message or {} sns_client = SNSClient() message = sns_client.create_message(event=event, message=message, version=version, raw_event=True) # message.add_event(event, raw=True) result = loop.run_until_complete(message.publish()) if result["ResponseMetadata"]["HTTPStatusCode"] == 200: click.echo("Publish Success!") else: click.echo("Publish Failed!") click.echo("\n") click.echo("REQUEST INFO") click.echo(f"Message Event : {message.event}") click.echo(f"Message Data : {message.message}") click.echo(f"Full Payload : {message}") click.echo(f"Message Length : {message.size}") click.echo("\n") click.echo("RESPONSE INFO") click.echo(f"Message ID : {result['MessageId']}") click.echo( f"Message Length : {result['ResponseMetadata']['HTTPHeaders']['content-length']}" ) Iniesta.unload_config(settings)
def load_configs(self): Iniesta.load_config(settings)