def get_latest_solution_stack(self, solution_stack): full_platform = solution_stack_ops.find_solution_stack_from_string( solution_stack) latest_platform = solution_stack_ops.find_solution_stack_from_string( full_platform.platform_shorthand, find_newer=True) return full_platform.name, latest_platform.name
def _get_solution_stack(): solution_string = solution_stack_ops.get_default_solution_stack() soln_stk = None # Test out sstack and tier before we ask any questions (Fast Fail) if solution_string: if PlatformVersion.is_custom_platform_arn(solution_string): try: platformops.describe_custom_platform_version(solution_string) except NotFoundError: raise NotFoundError( 'Platform arn {} does not appear to be valid'.format( solution_string)) soln_stk = PlatformVersion(solution_string) else: try: soln_stk = solution_stack_ops.find_solution_stack_from_string( solution_string) if PlatformVersion.is_eb_managed_platform_arn(soln_stk): soln_stk = PlatformVersion.get_platform_name(soln_stk) except NotFoundError: raise NotFoundError( 'Solution stack {} does not appear to be valid'.format( solution_string)) if not soln_stk: raise NotInitializedError return soln_stk
def _get_solution_stack(): solution_string = solution_stack_ops.get_default_solution_stack() soln_stk = None if solution_string: if PlatformVersion.is_custom_platform_arn(solution_string): try: platform_version_ops.describe_custom_platform_version( solution_string) except NotFoundError: raise NotFoundError( alerts['platform.invalidstring'].format(solution_string)) soln_stk = PlatformVersion(solution_string) else: try: soln_stk = solution_stack_ops.find_solution_stack_from_string( solution_string) if PlatformVersion.is_eb_managed_platform_arn(soln_stk): soln_stk = PlatformVersion.get_platform_name(soln_stk) except NotFoundError: raise NotFoundError( 'Solution stack {} does not appear to be valid'.format( solution_string)) if not soln_stk: raise NotInitializedError return soln_stk
def get_solution_stack(self): # Get solution stack from command line arguments solution_string = self.app.pargs.platform # Get solution stack from config file, if exists if not solution_string: try: solution_string = solution_stack_ops.get_default_solution_stack() except NotInitializedError: solution_string = None # Validate that the platform exists if solution_string: solution_stack_ops.find_solution_stack_from_string(solution_string) return solution_string
def get_platform_for_platform_string(platform_string): if PlatformVersion.is_valid_arn(platform_string): return PlatformVersion(platform_string).hydrate( elasticbeanstalk.describe_platform_version) if platform_branch_ops.is_platform_branch_name(platform_string): return platform_version_ops.get_preferred_platform_version_for_branch(platform_string) return solution_stack_ops.find_solution_stack_from_string(platform_string)
def test_find_solution_stack_from_string__return_latest_custom_platform( self, latest_custom_platform_retriever_mock, available_solution_stacks_mock): available_solution_stacks_mock.return_value = [] latest_custom_platform_arn = 'arn:aws:elasticbeanstalk:us-west-2:123123123:platform/custom-platform-2/1.0.3' latest_custom_platform_retriever_mock.return_value = PlatformVersion( latest_custom_platform_arn) self.assertEqual( PlatformVersion(latest_custom_platform_arn), solution_stack_ops.find_solution_stack_from_string( latest_custom_platform_arn, find_newer=True))
def test_find_solution_stack_from_string__retrieves_latest( self, solution_stacks_retriever_mock): solution_stacks = [ SolutionStack('64bit Amazon Linux 2017.03 v4.2.1 running Node.js'), SolutionStack('64bit Amazon Linux 2017.03 v4.2.0 running Node.js') ] solution_stacks_retriever_mock.return_value = solution_stacks self.assertEqual( SolutionStack('64bit Amazon Linux 2017.03 v4.2.1 running Node.js'), solution_stack_ops.find_solution_stack_from_string( '64bit Amazon Linux 2017.03 v4.2.0 running Node.js', find_newer=True))
def get_solution_stack(platform, sstack, interactive): customer_provided_platform = not not platform if not platform: try: platform = solution_stack_ops.get_default_solution_stack() except NotInitializedError: platform = None # Validate that the platform exists if platform: solution_stack_ops.find_solution_stack_from_string(platform) platform = platform or sstack if fileoperations.env_yaml_exists(): platform = platform or extract_solution_stack_from_env_yaml() if not platform or (interactive and not customer_provided_platform): platform = solution_stack_ops.get_solution_stack_from_customer( ).platform_shorthand return platform
def put(self): app_name = self.get_app_name() name = self._get_cfg_name('put') platform = solution_stack_ops.get_default_solution_stack() if not PlatformVersion.is_valid_arn(platform): platform = solution_stack_ops.find_solution_stack_from_string( platform) platform = platform.name saved_configs.update_config(app_name, name) filename = fileoperations.get_filename_without_extension(name) saved_configs.validate_config_file(app_name, filename, platform)
def test_find_solution_stack_from_string__retrieves_latest_python_solution_Stack( self, solution_stacks_retriever_mock): solution_stacks = [ SolutionStack( '64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7'), SolutionStack( '64bit Amazon Linux 2014.09 v1.1.0 running Python 3.6') ] solution_stacks_retriever_mock.return_value = solution_stacks self.assertEqual( SolutionStack( '64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7'), solution_stack_ops.find_solution_stack_from_string( 'Python 2.7', find_newer=True))
def test_find_solution_stack_from_string__eb_managed_platform( self, platform_arn_to_solution_stack_mock, solution_stack_lister_mock): solution_stack_lister_mock.return_value = [ '64bit Amazon Linux 2017.09 v2.7.1 running Tomcat 8 Java 8' ] platform_arn_to_solution_stack_mock.return_value = SolutionStack( '64bit Amazon Linux 2017.09 v2.7.1 running Tomcat 8 Java 8') self.assertEqual( SolutionStack( '64bit Amazon Linux 2017.09 v2.7.1 running Tomcat 8 Java 8'), solution_stack_ops.find_solution_stack_from_string( 'arn:aws:elasticbeanstalk:us-west-2::platform/Tomcat 8 with Java 8 running on 64bit Amazon Linux/2.7.1' ))
def get_platform(solution_string, iprofile=None): """ Set a PlatformVersion or a SolutionStack based on the `solution_string`. :param solution_string: The value of the `--platform` argument input by the customer :param iprofile: The instance profile, if any, the customer passed as argument :return: a PlatformVersion or a SolutionStack object depending on whether the match was against an ARN of a Solution Stack name. """ solution = solution_stack_ops.find_solution_stack_from_string(solution_string) solution = solution or solution_stack_ops.get_solution_stack_from_customer() if isinstance(solution, SolutionStack): if solution.language_name == 'Multi-container Docker' and not iprofile: io.log_warning(prompts['ecs.permissions']) return solution
def test_find_solution_stack_from_string__custom_platform( self, custom_platforms_lister_mock, solution_stack_lister_mock): solution_stack_lister_mock.return_value = [] custom_platforms_lister_mock.return_value = [ 'arn:aws:elasticbeanstalk:us-west-2:12345678:platform/custom-platform-1/1.0.0', ] custom_platform_inputs = [ 'arn:aws:elasticbeanstalk:us-west-2:12345678:platform/custom-platform-1/1.0.0', 'custom-platform-1' ] for custom_platform_input in custom_platform_inputs: self.assertEqual( PlatformVersion( 'arn:aws:elasticbeanstalk:us-west-2:12345678:platform/custom-platform-1/1.0.0' ), solution_stack_ops.find_solution_stack_from_string( custom_platform_input))
def upgrade_env(app_name, env_name, timeout, confirm, noroll): env = elasticbeanstalk.get_environment_settings(app_name, env_name) latest = solution_stack_ops.find_solution_stack_from_string( env.platform.name, find_newer=True) if latest.name == env.platform.name: io.echo(prompts['upgrade.alreadylatest']) return else: single = elasticbeanstalk.get_option_setting( env.option_settings, namespaces.ENVIRONMENT, 'EnvironmentType') == 'SingleInstance' rolling_enabled = elasticbeanstalk.get_option_setting( env.option_settings, namespaces.ROLLING_UPDATES, option_names.ROLLING_UPDATE_ENABLED) == 'true' webserver = env.tier.name.lower() == 'webserver' io.echo() io.echo(prompts['upgrade.infodialog'].format(env_name)) io.echo('Current platform:', env.platform) io.echo('Latest platform: ', latest.name) io.echo() warning = _get_warning_message(confirm, single, rolling_enabled, webserver, noroll) if warning: io.log_warning(warning) io.echo(prompts['upgrade.altmessage']) io.echo() if not confirm: io.validate_action(prompts['upgrade.validate'], env.name) add_rolling = _should_add_rolling(single, rolling_enabled, noroll) do_upgrade(env_name, add_rolling, timeout, latest.name, health_based=webserver, platform_arn=latest.name)
def _alert_if_platform_is_older_than_the_latest(env): latest = solution_stack_ops.find_solution_stack_from_string(env.platform.name, find_newer=True) if env.platform != latest: io.log_alert(alerts['platform.old'])
def do_command(self): app_name = self.get_app_name() env_name = self.get_env_name() clone_name = self.app.pargs.clone_name cname = self.app.pargs.cname scale = self.app.pargs.scale nohang = self.app.pargs.nohang tags = self.app.pargs.tags envvars = self.app.pargs.envvars exact = self.app.pargs.exact timeout = self.app.pargs.timeout provided_clone_name = clone_name is not None platform = None env = elasticbeanstalk.get_environment(app_name=app_name, env_name=env_name) tier = env.tier if 'worker' in tier.name.lower() and cname: raise InvalidOptionsError(strings['worker.cname']) if cname: if not elasticbeanstalk.is_cname_available(cname): raise AlreadyExistsError(strings['cname.unavailable'].replace( '{cname}', cname)) tags = tagops.get_and_validate_tags(tags) envvars = get_and_validate_envars(envvars) if not clone_name: if len(env_name) < 16: unique_name = env_name + '-clone' else: unique_name = 'my-cloned-env' env_list = elasticbeanstalk.get_environment_names(app_name) unique_name = utils.get_unique_name(unique_name, env_list) clone_name = io.prompt_for_environment_name( default_name=unique_name, prompt_text='Enter name for Environment Clone') if tier.name.lower() == 'webserver': if not cname and not provided_clone_name: cname = get_cname_from_customer(clone_name) elif not cname: cname = None if not exact: if not provided_clone_name: latest = solution_stack_ops.find_solution_stack_from_string( env.platform.name, find_newer=True) if latest != env.platform: io.echo() io.echo(prompts['clone.latest']) lst = [ 'Latest (' + str(latest) + ')', 'Same (' + str(env.platform) + ')' ] result = utils.prompt_for_item_in_list(lst) if result == lst[0]: platform = latest else: platform = latest else: platform = solution_stack_ops.find_solution_stack_from_string( env.platform.name, find_newer=True) if platform != env.platform: io.log_warning(prompts['clone.latestwarn']) clone_request = CloneEnvironmentRequest( app_name=app_name, env_name=clone_name, original_name=env_name, cname=cname, platform=platform, scale=scale, tags=tags, ) clone_request.option_settings += envvars cloneops.make_cloned_env(clone_request, nohang=nohang, timeout=timeout)
def get_latest_solution_stack(self, solution_stack): full_platform = solution_stack_ops.find_solution_stack_from_string(solution_stack) latest_platform = solution_stack_ops.find_solution_stack_from_string(full_platform.platform_shorthand, find_newer=True) return full_platform.name, latest_platform.name
def test_find_solution_stack_from_string(self, custom_platforms_lister_mock, solution_stack_lister_mock): solution_strings = [ 'docker-1.11.2', 'docker-1.12.6', 'docker-1.6.2', 'docker-1.7.1', 'docker-1.9.1', 'docker-17.03.1-ce', 'glassfish-4.0-java-7-(preconfigured-docker)', 'glassfish-4.1-java-8-(preconfigured-docker)', 'go-1.3-(preconfigured-docker)', 'go-1.4', 'go-1.4-(preconfigured-docker)', 'go-1.5', 'go-1.6', 'go-1.8', 'iis-10.0', 'iis-7.5', 'iis-8', 'iis-8.5', 'java-7', 'java-8', 'multi-container-docker-1.11.2-(generic)', 'multi-container-docker-1.6.2-(generic)', 'multi-container-docker-1.9.1-(generic)', 'multi-container-docker-17.03.1-ce-(generic)', 'node.js', 'packer-1.0.0', 'packer-1.0.3', 'php-5.3', 'php-5.4', 'php-5.5', 'php-5.6', 'php-7.0', 'python', 'python-2.7', 'python-3.4', 'python-3.4-(preconfigured-docker)', 'ruby-1.9.3', 'ruby-2.0-(passenger-standalone)', 'ruby-2.0-(puma)', 'ruby-2.1-(passenger-standalone)', 'ruby-2.1-(puma)', 'ruby-2.2-(passenger-standalone)', 'ruby-2.2-(puma)', 'ruby-2.3-(passenger-standalone)', 'ruby-2.3-(puma)', 'tomcat-6', 'tomcat-7', 'tomcat-7-java-6', 'tomcat-7-java-7', 'tomcat-8-java-8', 'Node.js', 'PHP', 'Python', 'Ruby', 'Tomcat', 'IIS', 'Docker', 'Multi-container Docker', 'Glassfish', 'Go', 'Java', 'Packer', '64bit Windows Server Core 2016 v1.2.0 running IIS 10.0', '64bit Windows Server 2016 v1.2.0 running IIS 10.0', '64bit Windows Server Core 2012 R2 v1.2.0 running IIS 8.5', '64bit Windows Server 2012 R2 v1.2.0 running IIS 8.5', '64bit Windows Server 2012 v1.2.0 running IIS 8', '64bit Windows Server 2008 R2 v1.2.0 running IIS 7.5', '64bit Amazon Linux 2017.03 v2.5.3 running Java 8', '64bit Amazon Linux 2017.03 v2.5.3 running Java 7', '64bit Amazon Linux 2017.03 v4.2.1 running Node.js', '64bit Amazon Linux 2017.03 v4.2.0 running Node.js', '64bit Amazon Linux 2017.03 v4.1.1 running Node.js', '64bit Amazon Linux 2015.09 v2.0.8 running Node.js', '64bit Amazon Linux 2015.03 v1.4.6 running Node.js', '64bit Amazon Linux 2014.03 v1.1.0 running Node.js', '32bit Amazon Linux 2014.03 v1.1.0 running Node.js', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 5.4', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 5.5', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 5.6', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 7.0', '64bit Amazon Linux 2017.03 v2.4.2 running PHP 5.4', '64bit Amazon Linux 2017.03 v2.4.2 running PHP 5.6', '64bit Amazon Linux 2017.03 v2.4.2 running PHP 7.0', '64bit Amazon Linux 2017.03 v2.4.1 running PHP 5.6', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 5.4', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 5.5', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 5.6', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 7.0', '64bit Amazon Linux 2015.03 v1.4.6 running PHP 5.6', '64bit Amazon Linux 2015.03 v1.4.6 running PHP 5.5', '64bit Amazon Linux 2015.03 v1.4.6 running PHP 5.4', '64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5', '64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4', '32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5', '32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4', '64bit Amazon Linux running PHP 5.3', '32bit Amazon Linux running PHP 5.3', '64bit Amazon Linux 2017.03 v2.5.0 running Python 3.4', '64bit Amazon Linux 2017.03 v2.5.0 running Python', '64bit Amazon Linux 2017.03 v2.5.0 running Python 2.7', '64bit Amazon Linux 2015.03 v1.4.6 running Python 3.4', '64bit Amazon Linux 2015.03 v1.4.6 running Python 2.7', '64bit Amazon Linux 2015.03 v1.4.6 running Python', '64bit Amazon Linux 2014.03 v1.1.0 running Python 2.7', '64bit Amazon Linux 2014.03 v1.1.0 running Python', '32bit Amazon Linux 2014.03 v1.1.0 running Python 2.7', '32bit Amazon Linux 2014.03 v1.1.0 running Python', '64bit Amazon Linux running Python', '32bit Amazon Linux running Python', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.3 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.2 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.1 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.0 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.3 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.2 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.1 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.0 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 1.9.3', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.2 (Puma)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.2 (Passenger Standalone)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.1 (Puma)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.1 (Passenger Standalone)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.0 (Puma)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.0 (Passenger Standalone)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 1.9.3', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Puma)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Passenger Standalone)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Puma)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Passenger Standalone)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3', '32bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3', '64bit Amazon Linux 2017.03 v2.6.3 running Tomcat 8 Java 8', '64bit Amazon Linux 2017.03 v2.6.3 running Tomcat 7 Java 7', '64bit Amazon Linux 2017.03 v2.6.3 running Tomcat 7 Java 6', '64bit Amazon Linux 2017.03 v2.6.1 running Tomcat 8 Java 8', '64bit Amazon Linux 2015.03 v1.4.5 running Tomcat 8 Java 8', '64bit Amazon Linux 2015.03 v1.4.5 running Tomcat 7 Java 7', '64bit Amazon Linux 2015.03 v1.4.5 running Tomcat 7 Java 6', '64bit Amazon Linux 2015.03 v1.4.4 running Tomcat 7 Java 7', '64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7', '64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6', '32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7', '32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6', '64bit Amazon Linux running Tomcat 7', '64bit Amazon Linux running Tomcat 6', '32bit Amazon Linux running Tomcat 7', '32bit Amazon Linux running Tomcat 6', '64bit Windows Server Core 2012 R2 running IIS 8.5', '64bit Windows Server 2012 R2 running IIS 8.5', '64bit Windows Server 2012 running IIS 8', '64bit Windows Server 2008 R2 running IIS 7.5', '64bit Amazon Linux 2017.03 v2.7.2 running Docker 17.03.1-ce', '64bit Amazon Linux 2017.03 v2.7.1 running Docker 17.03.1-ce', '64bit Amazon Linux 2017.03 v2.6.0 running Docker 1.12.6', '64bit Amazon Linux 2016.09 v2.3.0 running Docker 1.11.2', '64bit Amazon Linux 2016.03 v2.1.6 running Docker 1.11.2', '64bit Amazon Linux 2016.03 v2.1.0 running Docker 1.9.1', '64bit Amazon Linux 2015.09 v2.0.6 running Docker 1.7.1', '64bit Amazon Linux 2015.03 v1.4.6 running Docker 1.6.2', '64bit Amazon Linux 2017.03 v2.7.3 running Multi-container Docker 17.03.1-ce (Generic)', '64bit Amazon Linux 2016.03 v2.1.6 running Multi-container Docker 1.11.2 (Generic)', '64bit Amazon Linux 2016.03 v2.1.0 running Multi-container Docker 1.9.1 (Generic)', '64bit Amazon Linux 2015.03 v1.4.6 running Multi-container Docker 1.6.2 (Generic)', '64bit Debian jessie v2.7.2 running GlassFish 4.1 Java 8 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running GlassFish 4.0 Java 7 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running GlassFish 4.1 Java 8 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running GlassFish 4.0 Java 7 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running Go 1.4 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running Go 1.3 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running Go 1.4 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running Go 1.3 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running Python 3.4 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running Python 3.4 (Preconfigured - Docker)', '64bit Amazon Linux 2017.03 v2.5.1 running Go 1.8', '64bit Amazon Linux 2016.09 v2.3.3 running Go 1.6', '64bit Amazon Linux 2016.09 v2.3.0 running Go 1.5', '64bit Amazon Linux 2016.03 v2.1.0 running Go 1.4', '64bit Amazon Linux 2017.03 v2.3.1 running Packer 1.0.3', '64bit Amazon Linux 2017.03 v2.2.2 running Packer 1.0.0', 'Node.js', 'PHP 5.6', 'PHP 5.3', 'Python 3.4', 'Python', 'Ruby 2.3 (Puma)', 'Ruby 2.3 (Passenger Standalone)', 'Tomcat 8 Java 8', 'Tomcat 7', 'IIS 8.5', 'IIS 8.5', 'IIS 8', 'Docker 1.12.6', 'Multi-container Docker 17.03.1-ce (Generic)', 'Multi-container Docker 1.11.2 (Generic)', 'GlassFish 4.1 Java 8 (Preconfigured - Docker)', 'Go 1.4 (Preconfigured - Docker)', 'Python 3.4 (Preconfigured - Docker)', 'Java 8', 'Java 7', 'Go 1.8', 'Go 1.6', 'Go 1.5', 'Go 1.4', 'Packer 1.0.0', ] solution_stacks = [ '64bit Windows Server Core 2016 v1.2.0 running IIS 10.0', '64bit Windows Server 2016 v1.2.0 running IIS 10.0', '64bit Windows Server Core 2012 R2 v1.2.0 running IIS 8.5', '64bit Windows Server 2012 R2 v1.2.0 running IIS 8.5', '64bit Windows Server 2012 v1.2.0 running IIS 8', '64bit Windows Server 2008 R2 v1.2.0 running IIS 7.5', '64bit Amazon Linux 2017.03 v2.5.3 running Java 8', '64bit Amazon Linux 2017.03 v2.5.3 running Java 7', '64bit Amazon Linux 2017.03 v4.2.1 running Node.js', '64bit Amazon Linux 2017.03 v4.2.0 running Node.js', '64bit Amazon Linux 2017.03 v4.1.1 running Node.js', '64bit Amazon Linux 2015.09 v2.0.8 running Node.js', '64bit Amazon Linux 2015.03 v1.4.6 running Node.js', '64bit Amazon Linux 2014.03 v1.1.0 running Node.js', '32bit Amazon Linux 2014.03 v1.1.0 running Node.js', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 5.4', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 5.5', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 5.6', '64bit Amazon Linux 2017.03 v2.4.3 running PHP 7.0', '64bit Amazon Linux 2017.03 v2.4.2 running PHP 5.4', '64bit Amazon Linux 2017.03 v2.4.2 running PHP 5.6', '64bit Amazon Linux 2017.03 v2.4.2 running PHP 7.0', '64bit Amazon Linux 2017.03 v2.4.1 running PHP 5.6', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 5.4', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 5.5', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 5.6', '64bit Amazon Linux 2016.03 v2.1.6 running PHP 7.0', '64bit Amazon Linux 2015.03 v1.4.6 running PHP 5.6', '64bit Amazon Linux 2015.03 v1.4.6 running PHP 5.5', '64bit Amazon Linux 2015.03 v1.4.6 running PHP 5.4', '64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5', '64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4', '32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5', '32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4', '64bit Amazon Linux running PHP 5.3', '32bit Amazon Linux running PHP 5.3', '64bit Amazon Linux 2017.03 v2.5.0 running Python 3.4', '64bit Amazon Linux 2017.03 v2.5.0 running Python', '64bit Amazon Linux 2017.03 v2.5.0 running Python 2.7', '64bit Amazon Linux 2015.03 v1.4.6 running Python 3.4', '64bit Amazon Linux 2015.03 v1.4.6 running Python 2.7', '64bit Amazon Linux 2015.03 v1.4.6 running Python', '64bit Amazon Linux 2014.03 v1.1.0 running Python 2.7', '64bit Amazon Linux 2014.03 v1.1.0 running Python', '32bit Amazon Linux 2014.03 v1.1.0 running Python 2.7', '32bit Amazon Linux 2014.03 v1.1.0 running Python', '64bit Amazon Linux running Python', '32bit Amazon Linux running Python', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.3 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.2 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.1 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.0 (Puma)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.3 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.2 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.1 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 2.0 (Passenger Standalone)', '64bit Amazon Linux 2017.03 v2.4.3 running Ruby 1.9.3', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.2 (Puma)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.2 (Passenger Standalone)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.1 (Puma)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.1 (Passenger Standalone)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.0 (Puma)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 2.0 (Passenger Standalone)', '64bit Amazon Linux 2015.03 v1.4.6 running Ruby 1.9.3', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Puma)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Passenger Standalone)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Puma)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Passenger Standalone)', '64bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3', '32bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3', '64bit Amazon Linux 2017.03 v2.6.3 running Tomcat 8 Java 8', '64bit Amazon Linux 2017.03 v2.6.3 running Tomcat 7 Java 7', '64bit Amazon Linux 2017.03 v2.6.3 running Tomcat 7 Java 6', '64bit Amazon Linux 2017.03 v2.6.1 running Tomcat 8 Java 8', '64bit Amazon Linux 2015.03 v1.4.5 running Tomcat 8 Java 8', '64bit Amazon Linux 2015.03 v1.4.5 running Tomcat 7 Java 7', '64bit Amazon Linux 2015.03 v1.4.5 running Tomcat 7 Java 6', '64bit Amazon Linux 2015.03 v1.4.4 running Tomcat 7 Java 7', '64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7', '64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6', '32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7', '32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6', '64bit Amazon Linux running Tomcat 7', '64bit Amazon Linux running Tomcat 6', '32bit Amazon Linux running Tomcat 7', '32bit Amazon Linux running Tomcat 6', '64bit Windows Server Core 2012 R2 running IIS 8.5', '64bit Windows Server 2012 R2 running IIS 8.5', '64bit Windows Server 2012 running IIS 8', '64bit Windows Server 2008 R2 running IIS 7.5', '64bit Amazon Linux 2017.03 v2.7.2 running Docker 17.03.1-ce', '64bit Amazon Linux 2017.03 v2.7.1 running Docker 17.03.1-ce', '64bit Amazon Linux 2017.03 v2.6.0 running Docker 1.12.6', '64bit Amazon Linux 2016.09 v2.3.0 running Docker 1.11.2', '64bit Amazon Linux 2016.03 v2.1.6 running Docker 1.11.2', '64bit Amazon Linux 2016.03 v2.1.0 running Docker 1.9.1', '64bit Amazon Linux 2015.09 v2.0.6 running Docker 1.7.1', '64bit Amazon Linux 2015.03 v1.4.6 running Docker 1.6.2', '64bit Amazon Linux 2017.03 v2.7.3 running Multi-container Docker 17.03.1-ce (Generic)', '64bit Amazon Linux 2016.03 v2.1.6 running Multi-container Docker 1.11.2 (Generic)', '64bit Amazon Linux 2016.03 v2.1.0 running Multi-container Docker 1.9.1 (Generic)', '64bit Amazon Linux 2015.03 v1.4.6 running Multi-container Docker 1.6.2 (Generic)', '64bit Debian jessie v2.7.2 running GlassFish 4.1 Java 8 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running GlassFish 4.0 Java 7 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running GlassFish 4.1 Java 8 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running GlassFish 4.0 Java 7 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running Go 1.4 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running Go 1.3 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running Go 1.4 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running Go 1.3 (Preconfigured - Docker)', '64bit Debian jessie v2.7.2 running Python 3.4 (Preconfigured - Docker)', '64bit Debian jessie v1.4.6 running Python 3.4 (Preconfigured - Docker)', '64bit Amazon Linux 2017.03 v2.5.1 running Go 1.8', '64bit Amazon Linux 2016.09 v2.3.3 running Go 1.6', '64bit Amazon Linux 2016.09 v2.3.0 running Go 1.5', '64bit Amazon Linux 2016.03 v2.1.0 running Go 1.4', '64bit Amazon Linux 2017.03 v2.3.1 running Packer 1.0.3', '64bit Amazon Linux 2017.03 v2.2.2 running Packer 1.0.0', ] solution_stacks = [ SolutionStack(solution_stack) for solution_stack in solution_stacks ] custom_platforms = [ 'arn:aws:elasticbeanstalk:us-west-2:12345678:platform/custom-platform-1/1.0.0', ] solution_stack_lister_mock.return_value = solution_stacks custom_platforms_lister_mock.return_value = custom_platforms for solution_string in solution_strings: solution_stack_ops.find_solution_stack_from_string(solution_string)