from awscli.customizations.emr import argumentschema
from awscli.customizations.emr import emrutils
from awscli.customizations.emr import helptext
from awscli.customizations.emr import steputils
from awscli.customizations.emr.command import Command
class AddSteps(Command):
NAME = 'add-steps'
DESCRIPTION = ('Add a list of steps to a cluster.')
ARG_TABLE = [
{'name': 'cluster-id', 'required': True,
'help_text': helptext.CLUSTER_ID
},
{'name': 'steps',
'required': True,
'nargs': '+',
'schema': argumentschema.STEPS_SCHEMA,
'help_text': helptext.STEPS
},
{'name': 'execution-role-arn',
'required': False,
'help_text': helptext.EXECUTION_ROLE_ARN
}
]
def _run_main_command(self, parsed_args, parsed_globals):
parsed_steps = parsed_args.steps
release_label = emrutils.get_release_label(
parsed_args.cluster_id, self._session, self.region,
parsed_globals.endpoint_url, parsed_globals.verify_ssl)
step_list = steputils.build_step_config_list(
parsed_step_list=parsed_steps, region=self.region,
release_label=release_label)
parameters = {
'JobFlowId': parsed_args.cluster_id,
'Steps': step_list
}
if parsed_args.execution_role_arn is not None:
parameters['ExecutionRoleArn'] = parsed_args.execution_role_arn
emrutils.call_and_display_response(self._session, 'AddJobFlowSteps',
parameters, parsed_globals)
return 0