ebcli/controllers/local.py (112 lines of code) (raw):
# Copyright 2015 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 import io
from ebcli.core.abstractcontroller import AbstractBaseController
from ebcli.containers import factory, log, compat
from ebcli.containers.container_viewmodel import ContainerViewModel
from ebcli.operations import localops
from ebcli.resources.strings import strings, flag_text
class LocalController(AbstractBaseController):
class Meta:
label = 'local'
description = strings['local.info']
usage = 'eb local (sub-commands ...) [options ...]'
arguments = []
def do_command(self):
self.app.args.print_help()
@classmethod
def _add_to_handler(cls, handler):
handler.register(cls)
for child_controller in cls._get_child_controllers():
handler.register(child_controller)
@staticmethod
def _get_child_controllers():
return [LocalLogsController, LocalOpenController,
LocalPrintEnvController, LocalRunController,
LocalSetEnvController, LocalStatusController]
class LocalRunController(AbstractBaseController):
class Meta:
label = 'local_run'
description = strings['local.run.info']
aliases = ['run']
aliases_only = True
stacked_on = 'local'
stacked_type = 'nested'
usage = 'eb local run [options ...]'
arguments = [(['--envvars'], dict(help=flag_text['local.run.envvars'])),
(['--port'],
dict(type=int, help=flag_text['local.run.hostport'])),
(['--allow-insecure-ssl'],
dict(action='store_true', help=flag_text['local.run.insecuressl']))]
def do_command(self):
cnt = factory.make_container(self.app.pargs.envvars,
self.app.pargs.port,
self.app.pargs.allow_insecure_ssl)
cnt.validate()
cnt.start()
class LocalLogsController(AbstractBaseController):
class Meta:
label = 'local_logs'
description = strings['local.logs.info']
aliases = ['logs']
aliases_only = True
stacked_on = 'local'
stacked_type = 'nested'
usage = 'eb local logs [options ...]'
arguments = []
def do_command(self):
log.print_logs()
class LocalOpenController(AbstractBaseController):
class Meta:
label = 'local_open'
description = strings['local.open.info']
aliases = ['open']
aliases_only = True
stacked_on = 'local'
stacked_type = 'nested'
usage = 'eb local open [options ...]'
arguments = []
def do_command(self):
cnt = factory.make_container()
cnt_viewmodel = ContainerViewModel.from_container(cnt)
localops.open_webpage(cnt_viewmodel)
class LocalStatusController(AbstractBaseController):
class Meta:
label = 'local_status'
description = strings['local.status.info']
aliases = ['status']
aliases_only = True
stacked_on = 'local'
stacked_type = 'nested'
usage = 'eb local status [options ...]'
arguments = []
def do_command(self):
cnt = factory.make_container()
cnt_viewmodel = ContainerViewModel.from_container(cnt)
localops.print_container_details(cnt_viewmodel)
class LocalSetEnvController(AbstractBaseController):
class Meta:
label = 'local_setenv'
description = strings['local.setenv.info']
aliases = ['setenv']
aliases_only = True
stacked_on = 'local'
stacked_type = 'nested'
usage = 'eb local setenv [VAR_NAME=KEY ...] [options ...]'
arguments = [
(['varKey'], dict(action='store', nargs='+',
default=[], help=flag_text['local.setenv.vars']))
]
epilog = strings['local.setenv.epilog']
def do_command(self):
localops.setenv(self.app.pargs.varKey)
class LocalPrintEnvController(AbstractBaseController):
class Meta:
label = 'local_printenv'
description = strings['local.printenv.info']
aliases = ['printenv']
aliases_only = True
stacked_on = 'local'
stacked_type = 'nested'
usage = 'eb local printenv [options ...]'
arguments = []
def do_command(self):
localops.get_and_print_environment_vars()