def compose_multiple_apps(self): module_names = self.app.pargs.modules group = self.app.pargs.env_group_suffix or 'dev' nohang = self.app.pargs.nohang timeout = self.app.pargs.timeout root_dir = os.getcwd() version_labels = [] grouped_env_names = [] app_name = None for module in module_names: if not os.path.isdir(os.path.join(root_dir, module)): io.log_warning(strings['create.appdoesntexist'].replace( '{app_name}', module)) continue os.chdir(os.path.join(root_dir, module)) if not fileoperations.env_yaml_exists(): io.log_warning(strings['compose.noenvyaml'].replace( '{module}', module)) continue io.echo( '--- Creating application version for module: {0} ---'.format( module)) # Re-run hooks to get values from .elasticbeanstalk folders of modules hooks.set_region(None) hooks.set_ssl(None) hooks.set_profile(None) commonops.set_group_suffix_for_current_branch(group) if not app_name: app_name = self.get_app_name() process_app_version = fileoperations.env_yaml_exists() version_label = commonops.create_app_version( app_name, process=process_app_version) version_labels.append(version_label) environment_name = fileoperations.get_env_name_from_env_yaml() if environment_name is not None: commonops.set_environment_for_current_branch( environment_name.replace('+', '-{0}'.format(group))) grouped_env_names.append( environment_name.replace('+', '-{0}'.format(group))) os.chdir(root_dir) if len(version_labels) > 0: composeops.compose(app_name, version_labels, grouped_env_names, group, nohang, timeout) else: io.log_warning(strings['compose.novalidmodules'])
def compose_deploy(self): app_name = None modules = self.app.pargs.modules group_name = self.app.pargs.env_group_suffix env_names = [] stages_version_labels = {} stages_env_names = {} top_dir = getcwd() for module in modules: if not path.isdir(path.join(top_dir, module)): io.log_error(strings['deploy.notadirectory'].replace('{module}', module)) continue chdir(path.join(top_dir, module)) if not group_name: group_name = commonops.get_current_branch_group_suffix() if group_name not in stages_version_labels.keys(): stages_version_labels[group_name] = [] stages_env_names[group_name] = [] if not app_name: app_name = self.get_app_name() io.echo('--- Creating application version for module: {0} ---'.format(module)) hooks.set_region(None) hooks.set_ssl(None) hooks.set_profile(None) if not app_name: app_name = self.get_app_name() process_app_version = fileoperations.env_yaml_exists() version_label = commonops.create_app_version(app_name, process=process_app_version) stages_version_labels[group_name].append(version_label) environment_name = fileoperations.get_env_name_from_env_yaml() if environment_name is not None: commonops.set_environment_for_current_branch(environment_name. replace('+', '-{0}'. format(group_name))) env_name = commonops.get_current_branch_environment() stages_env_names[group_name].append(env_name) env_names.append(env_name) else: io.echo(strings['deploy.noenvname'].replace('{module}', module)) stages_version_labels[group_name] = [ v for v in stages_version_labels[group_name] if v != version_label ] chdir(top_dir) if len(stages_version_labels) > 0: for stage in stages_version_labels.keys(): request_id = composeops.compose_no_events(app_name, stages_version_labels[stage], group_name=stage) if request_id is None: io.log_error("Unable to compose modules.") return commonops.wait_for_compose_events(request_id, app_name, env_names, self.timeout) else: io.log_warning(strings['compose.novalidmodules'])