File: //lib/python3/dist-packages/awscli/customizations/emr/addinstancegroups.py
# Copyright 2014 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 awscli.customizations.emr import argumentschema
from awscli.customizations.emr import emrutils
from awscli.customizations.emr import helptext
from awscli.customizations.emr import instancegroupsutils
from awscli.customizations.emr.command import Command
class AddInstanceGroups(Command):
NAME = 'add-instance-groups'
DESCRIPTION = 'Adds an instance group to a running cluster.'
ARG_TABLE = [
{'name': 'cluster-id', 'required': True,
'help_text': helptext.CLUSTER_ID},
{'name': 'instance-groups', 'required': True,
'help_text': helptext.INSTANCE_GROUPS,
'schema': argumentschema.INSTANCE_GROUPS_SCHEMA}
]
def _run_main_command(self, parsed_args, parsed_globals):
parameters = {'JobFlowId': parsed_args.cluster_id}
parameters['InstanceGroups'] = \
instancegroupsutils.build_instance_groups(
parsed_args.instance_groups)
add_instance_groups_response = emrutils.call(
self._session, 'add_instance_groups', parameters,
self.region, parsed_globals.endpoint_url,
parsed_globals.verify_ssl)
constructed_result = self._construct_result(
add_instance_groups_response)
emrutils.display_response(self._session, 'add_instance_groups',
constructed_result, parsed_globals)
return 0
def _construct_result(self, add_instance_groups_result):
jobFlowId = None
instanceGroupIds = None
clusterArn = None
if add_instance_groups_result is not None:
jobFlowId = add_instance_groups_result.get('JobFlowId')
instanceGroupIds = add_instance_groups_result.get(
'InstanceGroupIds')
clusterArn = add_instance_groups_result.get('ClusterArn')
if jobFlowId is not None and instanceGroupIds is not None:
return {'ClusterId': jobFlowId,
'InstanceGroupIds': instanceGroupIds,
'ClusterArn': clusterArn}
else:
return {}