"""
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.bedrock-agentcore',
remove_commands=['invoke-code-interpreter'])
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'])
cmd_remover.remove(on_event='building-command-table.logs',
remove_commands=['get-log-object'])
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):
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)