awscli/customizations/removals.py (59 lines of code) (raw):
# Copyright 2013 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.
"""
Remove deprecated commands
--------------------------
This customization removes commands that are either deprecated or not
yet fully supported.
"""
import logging
from functools import partial
LOG = logging.getLogger(__name__)
def register_removals(event_handler):
cmd_remover = CommandRemover(event_handler)
cmd_remover.remove(on_event='building-command-table.ses',
remove_commands=['delete-verified-email-address',
'list-verified-email-addresses',
'verify-email-address'])
cmd_remover.remove(on_event='building-command-table.ec2',
remove_commands=['import-instance', 'import-volume'])
cmd_remover.remove(on_event='building-command-table.emr',
remove_commands=['run-job-flow', 'describe-job-flows',
'add-job-flow-steps',
'terminate-job-flows',
'list-bootstrap-actions',
'list-instance-groups',
'set-termination-protection',
'set-keep-job-flow-alive-when-no-steps',
'set-visible-to-all-users',
'set-unhealthy-node-replacement'])
cmd_remover.remove(on_event='building-command-table.kinesis',
remove_commands=['subscribe-to-shard'])
cmd_remover.remove(on_event='building-command-table.lexv2-runtime',
remove_commands=['start-conversation'])
cmd_remover.remove(on_event='building-command-table.lambda',
remove_commands=['invoke-with-response-stream'])
cmd_remover.remove(on_event='building-command-table.sagemaker-runtime',
remove_commands=['invoke-endpoint-with-response-stream'])
cmd_remover.remove(on_event='building-command-table.bedrock-runtime',
remove_commands=['invoke-model-with-response-stream',
'invoke-model-with-bidirectional-stream',
'converse-stream'])
cmd_remover.remove(on_event='building-command-table.bedrock-agent-runtime',
remove_commands=['invoke-agent',
'invoke-flow',
'invoke-inline-agent',
'optimize-prompt',
'retrieve-and-generate-stream'])
cmd_remover.remove(on_event='building-command-table.qbusiness',
remove_commands=['chat'])
cmd_remover.remove(on_event='building-command-table.iotsitewise',
remove_commands=['invoke-assistant'])
class CommandRemover(object):
def __init__(self, events):
self._events = events
def remove(self, on_event, remove_commands):
self._events.register(on_event,
self._create_remover(remove_commands))
def _create_remover(self, commands_to_remove):
return partial(_remove_commands, commands_to_remove=commands_to_remove)
def _remove_commands(command_table, commands_to_remove, **kwargs):
# Hooked up to building-command-table.<service>
for command in commands_to_remove:
try:
LOG.debug("Removing operation: %s", command)
del command_table[command]
except KeyError:
LOG.warning("Attempting to delete command that does not exist: %s",
command)