awscli/customizations/configservice/putconfigurationrecorder.py (50 lines of code) (raw):
# Copyright 2015 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.
import copy
from awscli.arguments import CLIArgument
def register_modify_put_configuration_recorder(cli):
cli.register(
'building-argument-table.configservice.put-configuration-recorder',
extract_recording_group)
def extract_recording_group(session, argument_table, **kwargs):
# The purpose of this customization is to extract the recordingGroup
# member from ConfigurationRecorder into its own argument.
# This customization is needed because the recordingGroup member
# breaks the shorthand syntax as it is a structure and not a scalar value.
configuration_recorder_argument = argument_table['configuration-recorder']
configuration_recorder_model = copy.deepcopy(
configuration_recorder_argument.argument_model)
recording_group_model = copy.deepcopy(
configuration_recorder_argument.argument_model.
members['recordingGroup'])
del configuration_recorder_model.members['recordingGroup']
argument_table['configuration-recorder'] = ConfigurationRecorderArgument(
name='configuration-recorder',
argument_model=configuration_recorder_model,
operation_model=configuration_recorder_argument._operation_model,
is_required=True,
event_emitter=session.get_component('event_emitter'),
serialized_name='ConfigurationRecorder'
)
argument_table['recording-group'] = RecordingGroupArgument(
name='recording-group',
argument_model=recording_group_model,
operation_model=configuration_recorder_argument._operation_model,
is_required=False,
event_emitter=session.get_component('event_emitter'),
serialized_name='recordingGroup'
)
class ConfigurationRecorderArgument(CLIArgument):
def add_to_params(self, parameters, value):
if value is None:
return
unpacked = self._unpack_argument(value)
if 'ConfigurationRecorder' in parameters:
current_value = parameters['ConfigurationRecorder']
current_value.update(unpacked)
else:
parameters['ConfigurationRecorder'] = unpacked
class RecordingGroupArgument(CLIArgument):
def add_to_params(self, parameters, value):
if value is None:
return
unpacked = self._unpack_argument(value)
if 'ConfigurationRecorder' in parameters:
parameters['ConfigurationRecorder']['recordingGroup'] = unpacked
else:
parameters['ConfigurationRecorder'] = {}
parameters['ConfigurationRecorder']['recordingGroup'] = unpacked