Source code for acore_server.server_helper_mixin

# -*- coding: utf-8 -*-

"""
todo: doc string
"""

import typing as T
import json
import dataclasses
from boto_session_manager import BotoSesManager
from aws_console_url.api import AWSConsole

try:
    from rich import print as rprint
except ImportError:
    pass

from .logger import logger


if T.TYPE_CHECKING:  # pragma: no cover
    from .server import Server


[docs]class ServerHelperMixin: # pragma: no cover """ Server Helper Mixin class that contains all the server helper methods. """ @logger.emoji_block( msg="🔍🛠Show server config", emoji="🔍", ) def show_server_config( self: "Server", ): logger.info(json.dumps(dataclasses.asdict(self.config), indent=4)) @logger.emoji_block( msg="🔍🖥🛢Show server status", emoji="🔍", ) def show_server_status( self: "Server", ): logger.info(f"🖥is_ec2_exists: {self.metadata.is_ec2_exists()}") logger.info(f"🛢is_rds_exists: {self.metadata.is_rds_exists()}") logger.info(f"🖥is_ec2_running: {self.metadata.is_ec2_running()}") logger.info(f"🛢is_rds_running: {self.metadata.is_rds_running()}") if self.metadata.is_ec2_running(): logger.info(f"🖥public_ip: {self.metadata.ec2_inst.public_ip}") @logger.emoji_block( msg="🔍🛠Show server config", emoji="🔍", ) def show_aws_link( self: "Server", bsm: "BotoSesManager" ): aws_console = AWSConsole.from_bsm(bsm=bsm) if self.metadata.is_ec2_exists(): url = aws_console.ec2.get_instance(self.metadata.ec2_inst.id) logger.info(f"🌐🖥preview EC2: {url}") else: logger.info("🛑EC2 does not exist") if self.metadata.is_rds_exists(): url = aws_console.rds.get_database_instance(self.metadata.rds_inst.id) logger.info(f"🌐🖥preview RDS: {url}") else: logger.info("🛑RDS does not exist!")