iact3/cli_modules/delete.py (38 lines of code) (raw):
# -*- coding: utf-8 -*-
import logging
from iact3.cli_modules.list import List
from iact3.stack import Stacks, Stack, Stacker
from iact3.termial_print import TerminalPrinter
LOG = logging.getLogger(__name__)
LIMIT = 10
class Delete:
'''
Manually clean up the stacks which were created by Iact3
'''
def __init__(self, regions: str = None, config_file: str = None, project_path: str = None):
'''
:param regions: comma separated list of regions to delete from, default will scan all regions
:param config_file: path to a config file
:param project_path: root path of the project relative to config file
'''
self.regions = regions
self.config_file = config_file
self.project_path = project_path
@classmethod
async def create(cls, regions: str = None,
config_file: str = None,
project_path: str = None,
tags: dict = None,
stack_id: str = None):
credential = List.get_credential(config_file, project_path)
all_stacks = await List.create(regions, config_file, project_path, tags, stack_id=stack_id)
if not all_stacks:
LOG.info('can not find stack to delete.')
return
LOG.info('Start delete above stacks')
printer = TerminalPrinter()
for i in range(0, len(all_stacks), LIMIT):
stacks = Stacks()
stacks += [Stack.from_stack_response(stack, credential=credential) for stack in all_stacks[i: i+LIMIT]]
stacker = Stacker.from_stacks(stacks)
await stacker.delete_stacks()
await printer.report_test_progress(stacker)