def _create_application_version(app_name, version_label, description, bucket, key, process=False, warning=True, repository=None, commit_id=None, build_config=None): """ A wrapper around elasticbeanstalk.create_application_version that handles certain error cases: * application doesnt exist * version already exists * validates BuildSpec files for CodeBuild """ if build_config is not None: buildspecops.validate_build_config(build_config) while True: try: elasticbeanstalk.create_application_version( app_name, version_label, description, bucket, key, process, repository, commit_id, build_config ) return version_label except InvalidParameterValueError as e: if e.message.startswith('Application Version ') and \ e.message.endswith(' already exists.'): # we must be deploying with an existing app version if warning: io.log_warning('Deploying a previously deployed commit.') return version_label elif e.message == responses['app.notexists'].replace( '{app-name}', '\'' + app_name + '\''): # App doesnt exist, must be a new region. ## Lets create the app in the region create_app(app_name) else: raise
def test_validate_build_config_happy_case(self, mock_get_roles): mock_get_roles.return_value = self.list_roles_response buildspecops.validate_build_config(self.build_config) mock_get_roles.assert_called_with()