iact3/testing/ros_stack.py (63 lines of code) (raw):

import logging import json from iact3.exceptions import InvalidActionError from iact3.stack import Stacker from iact3.testing.base import Base from typing import Any, Type, TypeVar, List from iact3.termial_print import TerminalPrinter LOG = logging.getLogger(__name__) T = TypeVar("T", bound="Test") class StackTest(Base): async def run(self) -> None: self.stacker = Stacker( self.project_name, self.configs, uid=self.uid ) await self.stacker.create_stacks() await self.printer.report_test_progress(stacker=self.stacker) self.passed = True self.result = self.stacker.stacks async def clean_up(self) -> None: ''' Deletes the Test related resources. ''' if self.stacker is None: LOG.warning('No stacks were created... skipping cleanup.') return if self.no_delete: return if self.keep_failed: kwargs = {'status': ['CREATE_COMPLETE', 'UPDATE_COMPLETE']} await self.stacker.delete_stacks(**kwargs) else: await self.stacker.delete_stacks() if not self.dont_wait_for_delete: await self.printer.report_test_progress(stacker=self.stacker) status = self.stacker.status() if len(status.get('FAILED', {})) > 0: raise InvalidActionError( f"One or more stacks failed to create: {status['FAILED']}" ) async def get_stacks_price(self) -> None: ''' Get price of templates. ''' self.stacker = Stacker( self.project_name, self.configs, uid=self.uid ) await self.stacker.get_stacks_price() TerminalPrinter._display_price(stacker=self.stacker) async def preview_stacks_result(self) -> None: ''' Preview resources of templates. ''' self.stacker = Stacker( self.project_name, self.configs, uid=self.uid ) await self.stacker.preview_stacks_result() TerminalPrinter._display_preview_resources(stacker=self.stacker)