ebcli/controllers/terminate.py (51 lines of code) (raw):

# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You # may not use this file except in compliance with the License. A copy of # the License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. from ebcli.core.abstractcontroller import AbstractBaseController from ebcli.resources.strings import alerts, flag_text, prompts, strings from ebcli.core import io from ebcli.operations import terminateops class TerminateController(AbstractBaseController): class Meta: label = 'terminate' description = strings['terminate.info'] arguments = AbstractBaseController.Meta.arguments + [ (['--force'], dict(action='store_true', help=flag_text['terminate.force'])), (['--ignore-links'], dict(action='store_true', help=flag_text['terminate.ignorelinks'])), (['--all'], dict(action='store_true', help=flag_text['terminate.all'])), (['-nh', '--nohang'], dict(action='store_true', help=flag_text['terminate.nohang'])), (['--timeout'], dict(type=int, help=flag_text['general.timeout'])), ] usage = AbstractBaseController.Meta.usage.replace('{cmd}', label) epilog = strings['terminate.epilog'] def do_command(self): force = self.app.pargs.force delete_application_and_resources = self.app.pargs.all ignore_links = self.app.pargs.ignore_links timeout = self.app.pargs.timeout nohang = self.app.pargs.nohang app_name = self.get_app_name() if delete_application_and_resources: cleanup = not self.app.pargs.region terminateops.delete_app( app_name, force, nohang=nohang, cleanup=cleanup, timeout=timeout ) else: env_name = self.get_env_name() if not force: io.echo(prompts['terminate.confirm'].format(env_name=env_name)) io.validate_action(prompts['terminate.validate'], env_name) if terminateops.is_shared_load_balancer(app_name, env_name): alert_message = alerts['sharedlb.terminate'].format(env_name=env_name) io.log_alert(alert_message + '\n') terminateops.terminate( env_name, force_terminate=ignore_links, nohang=nohang, timeout=timeout )