Prep 2.2.17 release (#4642)

This commit is contained in:
Bert Blommers 2021-11-29 19:35:18 -01:00 committed by GitHub
parent 39fff64493
commit 9258316e16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 228 additions and 90 deletions

View File

@ -1,7 +0,0 @@
[bumpversion]
current_version = 1.3.4
[bumpversion:file:setup.py]
[bumpversion:file:moto/__init__.py]

View File

@ -170,8 +170,8 @@ jobs:
- name: Start MotoServer - name: Start MotoServer
run: | run: |
python setup.py sdist python setup.py sdist
docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock python:3.7-buster /moto/travis_moto_server.sh & docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock python:3.7-buster /moto/scripts/ci_moto_server.sh &
python wait_for.py python scripts/ci_wait_for_server.py
- name: Get pip cache dir - name: Get pip cache dir
id: pip-cache id: pip-cache
run: | run: |
@ -290,8 +290,8 @@ jobs:
- name: Start MotoServer - name: Start MotoServer
run: | run: |
python setup.py sdist python setup.py sdist
docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e MOTO_PORT=4566 -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 4566:4566 -v /var/run/docker.sock:/var/run/docker.sock python:3.7-buster /moto/travis_moto_server.sh & docker run --rm -t --name motoserver -e TEST_SERVER_MODE=true -e MOTO_PORT=4566 -e AWS_SECRET_ACCESS_KEY=server_secret -e AWS_ACCESS_KEY_ID=server_key -v `pwd`:/moto -p 4566:4566 -v /var/run/docker.sock:/var/run/docker.sock python:3.7-buster /moto/scripts/ci_moto_server.sh &
MOTO_PORT=4566 python wait_for.py MOTO_PORT=4566 python scripts/ci_wait_for_server.py
# Poor man's parallelization # Poor man's parallelization
# Running them sequentially takes to much time # Running them sequentially takes to much time
# And using the build in parallel-argument does not help with reducing runtime # And using the build in parallel-argument does not help with reducing runtime

View File

@ -1,6 +1,44 @@
Moto Changelog Moto Changelog
=================== ===================
2.2.17
------
New Services:
* CloudFront:
* create_distribution()
* delete_distribution()
* get_distribution()
* list_distributions()
New Methods:
* Autoscaling:
* describe_tags()
* CloudFormation:
* get_stack_policy()
* set_stack_policy()
* DynamoDB:
* restore_table_to_point_in_time()
* Glue:
* delete_database()
* list_jobs()
* IAM:
* update_group()
* Route53 Resolver:
* associate_resolver_rule()
* create_resolver_rule()
* delete_resolver_rule()
* disassociate_resolver_rule()
* get_resolver_rule()
* get_resolver_rule_association()
* list_resolver_rules()
* list_resolver_rule_associations()
Miscellaneous:
* Batch: register_job_definition() now supports the timeout-parameter
* Batch: submit_job() now supports the timeout-parameter
* EC2: describe_network_interfaces() now supports the `attachment.instance-id` filter
2.2.16 2.2.16
------ ------
New Services: New Services:

View File

@ -204,7 +204,7 @@
## autoscaling ## autoscaling
<details> <details>
<summary>45% implemented</summary> <summary>47% implemented</summary>
- [X] attach_instances - [X] attach_instances
- [X] attach_load_balancer_target_groups - [X] attach_load_balancer_target_groups
@ -241,7 +241,7 @@
- [ ] describe_scaling_activities - [ ] describe_scaling_activities
- [ ] describe_scaling_process_types - [ ] describe_scaling_process_types
- [ ] describe_scheduled_actions - [ ] describe_scheduled_actions
- [ ] describe_tags - [X] describe_tags
- [ ] describe_termination_policy_types - [ ] describe_termination_policy_types
- [ ] describe_warm_pool - [ ] describe_warm_pool
- [X] detach_instances - [X] detach_instances
@ -329,7 +329,7 @@
## cloudformation ## cloudformation
<details> <details>
<summary>27% implemented</summary> <summary>30% implemented</summary>
- [ ] activate_type - [ ] activate_type
- [ ] batch_describe_type_configurations - [ ] batch_describe_type_configurations
@ -364,7 +364,7 @@
- [ ] detect_stack_set_drift - [ ] detect_stack_set_drift
- [ ] estimate_template_cost - [ ] estimate_template_cost
- [X] execute_change_set - [X] execute_change_set
- [ ] get_stack_policy - [X] get_stack_policy
- [ ] get_template - [ ] get_template
- [ ] get_template_summary - [ ] get_template_summary
- [ ] import_stacks_to_stack_set - [ ] import_stacks_to_stack_set
@ -385,7 +385,7 @@
- [ ] register_publisher - [ ] register_publisher
- [ ] register_type - [ ] register_type
- [ ] rollback_stack - [ ] rollback_stack
- [ ] set_stack_policy - [X] set_stack_policy
- [ ] set_type_configuration - [ ] set_type_configuration
- [ ] set_type_default_version - [ ] set_type_default_version
- [ ] signal_resource - [ ] signal_resource
@ -1119,7 +1119,7 @@
## dynamodb ## dynamodb
<details> <details>
<summary>56% implemented</summary> <summary>58% implemented</summary>
- [ ] batch_execute_statement - [ ] batch_execute_statement
- [X] batch_get_item - [X] batch_get_item
@ -1157,7 +1157,7 @@
- [X] put_item - [X] put_item
- [X] query - [X] query
- [X] restore_table_from_backup - [X] restore_table_from_backup
- [ ] restore_table_to_point_in_time - [X] restore_table_to_point_in_time
- [X] scan - [X] scan
- [X] tag_resource - [X] tag_resource
- [X] transact_get_items - [X] transact_get_items
@ -1579,6 +1579,7 @@
- [ ] modify_launch_template - [ ] modify_launch_template
- [X] modify_managed_prefix_list - [X] modify_managed_prefix_list
- [X] modify_network_interface_attribute - [X] modify_network_interface_attribute
- [ ] modify_private_dns_name_options
- [ ] modify_reserved_instances - [ ] modify_reserved_instances
- [ ] modify_security_group_rules - [ ] modify_security_group_rules
- [ ] modify_snapshot_attribute - [ ] modify_snapshot_attribute
@ -2149,11 +2150,14 @@
## forecast ## forecast
<details> <details>
<summary>14% implemented</summary> <summary>11% implemented</summary>
- [ ] create_auto_predictor
- [ ] create_dataset - [ ] create_dataset
- [X] create_dataset_group - [X] create_dataset_group
- [ ] create_dataset_import_job - [ ] create_dataset_import_job
- [ ] create_explainability
- [ ] create_explainability_export
- [ ] create_forecast - [ ] create_forecast
- [ ] create_forecast_export_job - [ ] create_forecast_export_job
- [ ] create_predictor - [ ] create_predictor
@ -2161,14 +2165,19 @@
- [ ] delete_dataset - [ ] delete_dataset
- [X] delete_dataset_group - [X] delete_dataset_group
- [ ] delete_dataset_import_job - [ ] delete_dataset_import_job
- [ ] delete_explainability
- [ ] delete_explainability_export
- [ ] delete_forecast - [ ] delete_forecast
- [ ] delete_forecast_export_job - [ ] delete_forecast_export_job
- [ ] delete_predictor - [ ] delete_predictor
- [ ] delete_predictor_backtest_export_job - [ ] delete_predictor_backtest_export_job
- [ ] delete_resource_tree - [ ] delete_resource_tree
- [ ] describe_auto_predictor
- [ ] describe_dataset - [ ] describe_dataset
- [X] describe_dataset_group - [X] describe_dataset_group
- [ ] describe_dataset_import_job - [ ] describe_dataset_import_job
- [ ] describe_explainability
- [ ] describe_explainability_export
- [ ] describe_forecast - [ ] describe_forecast
- [ ] describe_forecast_export_job - [ ] describe_forecast_export_job
- [ ] describe_predictor - [ ] describe_predictor
@ -2177,6 +2186,8 @@
- [X] list_dataset_groups - [X] list_dataset_groups
- [ ] list_dataset_import_jobs - [ ] list_dataset_import_jobs
- [ ] list_datasets - [ ] list_datasets
- [ ] list_explainabilities
- [ ] list_explainability_exports
- [ ] list_forecast_export_jobs - [ ] list_forecast_export_jobs
- [ ] list_forecasts - [ ] list_forecasts
- [ ] list_predictor_backtest_export_jobs - [ ] list_predictor_backtest_export_jobs
@ -2229,7 +2240,7 @@
## glue ## glue
<details> <details>
<summary>8% implemented</summary> <summary>9% implemented</summary>
- [ ] batch_create_partition - [ ] batch_create_partition
- [ ] batch_delete_connection - [ ] batch_delete_connection
@ -2271,7 +2282,7 @@
- [ ] delete_column_statistics_for_table - [ ] delete_column_statistics_for_table
- [ ] delete_connection - [ ] delete_connection
- [X] delete_crawler - [X] delete_crawler
- [ ] delete_database - [X] delete_database
- [ ] delete_dev_endpoint - [ ] delete_dev_endpoint
- [ ] delete_job - [ ] delete_job
- [ ] delete_ml_transform - [ ] delete_ml_transform
@ -2346,7 +2357,7 @@
- [ ] list_blueprints - [ ] list_blueprints
- [ ] list_crawlers - [ ] list_crawlers
- [ ] list_dev_endpoints - [ ] list_dev_endpoints
- [ ] list_jobs - [X] list_jobs
- [ ] list_ml_transforms - [ ] list_ml_transforms
- [ ] list_registries - [ ] list_registries
- [ ] list_schema_versions - [ ] list_schema_versions
@ -2547,7 +2558,7 @@
- [X] update_access_key - [X] update_access_key
- [X] update_account_password_policy - [X] update_account_password_policy
- [ ] update_assume_role_policy - [ ] update_assume_role_policy
- [ ] update_group - [X] update_group
- [X] update_login_profile - [X] update_login_profile
- [ ] update_open_id_connect_provider_thumbprint - [ ] update_open_id_connect_provider_thumbprint
- [X] update_role - [X] update_role
@ -2565,7 +2576,7 @@
## iot ## iot
<details> <details>
<summary>28% implemented</summary> <summary>27% implemented</summary>
- [ ] accept_certificate_transfer - [ ] accept_certificate_transfer
- [ ] add_thing_to_billing_group - [ ] add_thing_to_billing_group
@ -2664,6 +2675,7 @@
- [X] describe_job - [X] describe_job
- [X] describe_job_execution - [X] describe_job_execution
- [ ] describe_job_template - [ ] describe_job_template
- [ ] describe_managed_job_template
- [ ] describe_mitigation_action - [ ] describe_mitigation_action
- [ ] describe_provisioning_template - [ ] describe_provisioning_template
- [ ] describe_provisioning_template_version - [ ] describe_provisioning_template_version
@ -2720,6 +2732,7 @@
- [X] list_job_executions_for_thing - [X] list_job_executions_for_thing
- [ ] list_job_templates - [ ] list_job_templates
- [X] list_jobs - [X] list_jobs
- [ ] list_managed_job_templates
- [ ] list_mitigation_actions - [ ] list_mitigation_actions
- [ ] list_ota_updates - [ ] list_ota_updates
- [ ] list_outgoing_certificates - [ ] list_outgoing_certificates
@ -3544,6 +3557,7 @@
- [ ] promote_read_replica - [ ] promote_read_replica
- [ ] promote_read_replica_db_cluster - [ ] promote_read_replica_db_cluster
- [ ] purchase_reserved_db_instances_offering - [ ] purchase_reserved_db_instances_offering
- [ ] reboot_db_cluster
- [X] reboot_db_instance - [X] reboot_db_instance
- [ ] register_db_proxy_targets - [ ] register_db_proxy_targets
- [ ] remove_from_global_cluster - [ ] remove_from_global_cluster
@ -3573,7 +3587,7 @@
## redshift ## redshift
<details> <details>
<summary>24% implemented</summary> <summary>23% implemented</summary>
- [ ] accept_reserved_node_exchange - [ ] accept_reserved_node_exchange
- [ ] add_partner - [ ] add_partner
@ -3644,6 +3658,7 @@
- [ ] describe_node_configuration_options - [ ] describe_node_configuration_options
- [ ] describe_orderable_cluster_options - [ ] describe_orderable_cluster_options
- [ ] describe_partners - [ ] describe_partners
- [ ] describe_reserved_node_exchange_status
- [ ] describe_reserved_node_offerings - [ ] describe_reserved_node_offerings
- [ ] describe_reserved_nodes - [ ] describe_reserved_nodes
- [ ] describe_resize - [ ] describe_resize
@ -3660,6 +3675,7 @@
- [ ] enable_logging - [ ] enable_logging
- [X] enable_snapshot_copy - [X] enable_snapshot_copy
- [X] get_cluster_credentials - [X] get_cluster_credentials
- [ ] get_reserved_node_exchange_configuration_options
- [ ] get_reserved_node_exchange_offerings - [ ] get_reserved_node_exchange_offerings
- [ ] modify_aqua_configuration - [ ] modify_aqua_configuration
- [ ] modify_authentication_profile - [ ] modify_authentication_profile
@ -3801,7 +3817,7 @@
## route53resolver ## route53resolver
<details> <details>
<summary>27% implemented</summary> <summary>26% implemented</summary>
- [ ] associate_firewall_rule_group - [ ] associate_firewall_rule_group
- [ ] associate_resolver_endpoint_ip_address - [ ] associate_resolver_endpoint_ip_address
@ -4911,6 +4927,7 @@
- meteringmarketplace - meteringmarketplace
- mgh - mgh
- mgn - mgn
- migration-hub-refactor-spaces
- migrationhub-config - migrationhub-config
- migrationhubstrategy - migrationhubstrategy
- mobile - mobile

View File

@ -60,7 +60,12 @@ autoscaling
- [ ] describe_scaling_activities - [ ] describe_scaling_activities
- [ ] describe_scaling_process_types - [ ] describe_scaling_process_types
- [ ] describe_scheduled_actions - [ ] describe_scheduled_actions
- [ ] describe_tags - [X] describe_tags
Pagination is not yet implemented.
Only the `auto-scaling-group` and `propagate-at-launch` filters are implemented.
- [ ] describe_termination_policy_types - [ ] describe_termination_policy_types
- [ ] describe_warm_pool - [ ] describe_warm_pool
- [X] detach_instances - [X] detach_instances

View File

@ -58,7 +58,7 @@ cloudformation
- [ ] detect_stack_set_drift - [ ] detect_stack_set_drift
- [ ] estimate_template_cost - [ ] estimate_template_cost
- [X] execute_change_set - [X] execute_change_set
- [ ] get_stack_policy - [X] get_stack_policy
- [ ] get_template - [ ] get_template
- [ ] get_template_summary - [ ] get_template_summary
- [ ] import_stacks_to_stack_set - [ ] import_stacks_to_stack_set
@ -79,7 +79,11 @@ cloudformation
- [ ] register_publisher - [ ] register_publisher
- [ ] register_type - [ ] register_type
- [ ] rollback_stack - [ ] rollback_stack
- [ ] set_stack_policy - [X] set_stack_policy
Note that Moto does no validation/parsing/enforcement of this policy - we simply persist it.
- [ ] set_type_configuration - [ ] set_type_configuration
- [ ] set_type_default_version - [ ] set_type_default_version
- [ ] signal_resource - [ ] signal_resource

View File

@ -62,6 +62,11 @@ dynamodb
- [X] query - [X] query
- [X] restore_table_from_backup - [X] restore_table_from_backup
- [X] restore_table_to_point_in_time - [X] restore_table_to_point_in_time
Currently this only accepts the source and target table elements, and will
copy all items from the source without respect to other arguments.
- [X] scan - [X] scan
- [X] tag_resource - [X] tag_resource
- [X] transact_get_items - [X] transact_get_items

View File

@ -428,6 +428,7 @@ ec2
- [ ] modify_launch_template - [ ] modify_launch_template
- [X] modify_managed_prefix_list - [X] modify_managed_prefix_list
- [X] modify_network_interface_attribute - [X] modify_network_interface_attribute
- [ ] modify_private_dns_name_options
- [ ] modify_reserved_instances - [ ] modify_reserved_instances
- [ ] modify_security_group_rules - [ ] modify_security_group_rules
- [ ] modify_snapshot_attribute - [ ] modify_snapshot_attribute

View File

@ -25,9 +25,12 @@ forecast
|start-h3| Implemented features for this service |end-h3| |start-h3| Implemented features for this service |end-h3|
- [ ] create_auto_predictor
- [ ] create_dataset - [ ] create_dataset
- [X] create_dataset_group - [X] create_dataset_group
- [ ] create_dataset_import_job - [ ] create_dataset_import_job
- [ ] create_explainability
- [ ] create_explainability_export
- [ ] create_forecast - [ ] create_forecast
- [ ] create_forecast_export_job - [ ] create_forecast_export_job
- [ ] create_predictor - [ ] create_predictor
@ -35,14 +38,19 @@ forecast
- [ ] delete_dataset - [ ] delete_dataset
- [X] delete_dataset_group - [X] delete_dataset_group
- [ ] delete_dataset_import_job - [ ] delete_dataset_import_job
- [ ] delete_explainability
- [ ] delete_explainability_export
- [ ] delete_forecast - [ ] delete_forecast
- [ ] delete_forecast_export_job - [ ] delete_forecast_export_job
- [ ] delete_predictor - [ ] delete_predictor
- [ ] delete_predictor_backtest_export_job - [ ] delete_predictor_backtest_export_job
- [ ] delete_resource_tree - [ ] delete_resource_tree
- [ ] describe_auto_predictor
- [ ] describe_dataset - [ ] describe_dataset
- [X] describe_dataset_group - [X] describe_dataset_group
- [ ] describe_dataset_import_job - [ ] describe_dataset_import_job
- [ ] describe_explainability
- [ ] describe_explainability_export
- [ ] describe_forecast - [ ] describe_forecast
- [ ] describe_forecast_export_job - [ ] describe_forecast_export_job
- [ ] describe_predictor - [ ] describe_predictor
@ -51,6 +59,8 @@ forecast
- [X] list_dataset_groups - [X] list_dataset_groups
- [ ] list_dataset_import_jobs - [ ] list_dataset_import_jobs
- [ ] list_datasets - [ ] list_datasets
- [ ] list_explainabilities
- [ ] list_explainability_exports
- [ ] list_forecast_export_jobs - [ ] list_forecast_export_jobs
- [ ] list_forecasts - [ ] list_forecasts
- [ ] list_predictor_backtest_export_jobs - [ ] list_predictor_backtest_export_jobs

View File

@ -65,7 +65,7 @@ glue
- [ ] delete_column_statistics_for_table - [ ] delete_column_statistics_for_table
- [ ] delete_connection - [ ] delete_connection
- [X] delete_crawler - [X] delete_crawler
- [ ] delete_database - [X] delete_database
- [ ] delete_dev_endpoint - [ ] delete_dev_endpoint
- [ ] delete_job - [ ] delete_job
- [ ] delete_ml_transform - [ ] delete_ml_transform
@ -140,7 +140,7 @@ glue
- [ ] list_blueprints - [ ] list_blueprints
- [ ] list_crawlers - [ ] list_crawlers
- [ ] list_dev_endpoints - [ ] list_dev_endpoints
- [ ] list_jobs - [X] list_jobs
- [ ] list_ml_transforms - [ ] list_ml_transforms
- [ ] list_registries - [ ] list_registries
- [ ] list_schema_versions - [ ] list_schema_versions

View File

@ -173,7 +173,7 @@ iam
- [X] update_access_key - [X] update_access_key
- [X] update_account_password_policy - [X] update_account_password_policy
- [ ] update_assume_role_policy - [ ] update_assume_role_policy
- [ ] update_group - [X] update_group
- [X] update_login_profile - [X] update_login_profile
- [ ] update_open_id_connect_provider_thumbprint - [ ] update_open_id_connect_provider_thumbprint
- [X] update_role - [X] update_role

View File

@ -122,6 +122,7 @@ iot
- [X] describe_job - [X] describe_job
- [X] describe_job_execution - [X] describe_job_execution
- [ ] describe_job_template - [ ] describe_job_template
- [ ] describe_managed_job_template
- [ ] describe_mitigation_action - [ ] describe_mitigation_action
- [ ] describe_provisioning_template - [ ] describe_provisioning_template
- [ ] describe_provisioning_template_version - [ ] describe_provisioning_template_version
@ -178,6 +179,7 @@ iot
- [X] list_job_executions_for_thing - [X] list_job_executions_for_thing
- [ ] list_job_templates - [ ] list_job_templates
- [X] list_jobs - [X] list_jobs
- [ ] list_managed_job_templates
- [ ] list_mitigation_actions - [ ] list_mitigation_actions
- [ ] list_ota_updates - [ ] list_ota_updates
- [ ] list_outgoing_certificates - [ ] list_outgoing_certificates

View File

@ -140,6 +140,7 @@ rds
- [ ] promote_read_replica - [ ] promote_read_replica
- [ ] promote_read_replica_db_cluster - [ ] promote_read_replica_db_cluster
- [ ] purchase_reserved_db_instances_offering - [ ] purchase_reserved_db_instances_offering
- [ ] reboot_db_cluster
- [X] reboot_db_instance - [X] reboot_db_instance
- [ ] register_db_proxy_targets - [ ] register_db_proxy_targets
- [ ] remove_from_global_cluster - [ ] remove_from_global_cluster

View File

@ -94,6 +94,7 @@ redshift
- [ ] describe_node_configuration_options - [ ] describe_node_configuration_options
- [ ] describe_orderable_cluster_options - [ ] describe_orderable_cluster_options
- [ ] describe_partners - [ ] describe_partners
- [ ] describe_reserved_node_exchange_status
- [ ] describe_reserved_node_offerings - [ ] describe_reserved_node_offerings
- [ ] describe_reserved_nodes - [ ] describe_reserved_nodes
- [ ] describe_resize - [ ] describe_resize
@ -110,6 +111,7 @@ redshift
- [ ] enable_logging - [ ] enable_logging
- [X] enable_snapshot_copy - [X] enable_snapshot_copy
- [X] get_cluster_credentials - [X] get_cluster_credentials
- [ ] get_reserved_node_exchange_configuration_options
- [ ] get_reserved_node_exchange_offerings - [ ] get_reserved_node_exchange_offerings
- [ ] modify_aqua_configuration - [ ] modify_aqua_configuration
- [ ] modify_authentication_profile - [ ] modify_authentication_profile

View File

@ -31,6 +31,8 @@ route53resolver
- [ ] associate_resolver_endpoint_ip_address - [ ] associate_resolver_endpoint_ip_address
- [ ] associate_resolver_query_log_config - [ ] associate_resolver_query_log_config
- [X] associate_resolver_rule - [X] associate_resolver_rule
Return description for a newly created resolver rule association.
- [ ] create_firewall_domain_list - [ ] create_firewall_domain_list
- [ ] create_firewall_rule - [ ] create_firewall_rule
- [ ] create_firewall_rule_group - [ ] create_firewall_rule_group
@ -43,6 +45,8 @@ route53resolver
- [ ] create_resolver_query_log_config - [ ] create_resolver_query_log_config
- [X] create_resolver_rule - [X] create_resolver_rule
Return description for a newly created resolver rule.
- [ ] delete_firewall_domain_list - [ ] delete_firewall_domain_list
- [ ] delete_firewall_rule - [ ] delete_firewall_rule
- [ ] delete_firewall_rule_group - [ ] delete_firewall_rule_group
@ -51,10 +55,14 @@ route53resolver
- [ ] delete_resolver_query_log_config - [ ] delete_resolver_query_log_config
- [X] delete_resolver_rule - [X] delete_resolver_rule
Delete a resolver rule.
- [ ] disassociate_firewall_rule_group - [ ] disassociate_firewall_rule_group
- [ ] disassociate_resolver_endpoint_ip_address - [ ] disassociate_resolver_endpoint_ip_address
- [ ] disassociate_resolver_query_log_config - [ ] disassociate_resolver_query_log_config
- [X] disassociate_resolver_rule - [X] disassociate_resolver_rule
Removes association between a resolver rule and a VPC.
- [ ] get_firewall_config - [ ] get_firewall_config
- [ ] get_firewall_domain_list - [ ] get_firewall_domain_list
- [ ] get_firewall_rule_group - [ ] get_firewall_rule_group
@ -69,7 +77,11 @@ route53resolver
- [ ] get_resolver_query_log_config_association - [ ] get_resolver_query_log_config_association
- [ ] get_resolver_query_log_config_policy - [ ] get_resolver_query_log_config_policy
- [X] get_resolver_rule - [X] get_resolver_rule
Return info for specified resolver rule.
- [X] get_resolver_rule_association - [X] get_resolver_rule_association
Return info for specified resolver rule association.
- [ ] get_resolver_rule_policy - [ ] get_resolver_rule_policy
- [ ] import_firewall_domains - [ ] import_firewall_domains
- [ ] list_firewall_configs - [ ] list_firewall_configs
@ -89,7 +101,11 @@ route53resolver
- [ ] list_resolver_query_log_config_associations - [ ] list_resolver_query_log_config_associations
- [ ] list_resolver_query_log_configs - [ ] list_resolver_query_log_configs
- [X] list_resolver_rule_associations - [X] list_resolver_rule_associations
List all resolver rule associations, using filters if specified.
- [X] list_resolver_rules - [X] list_resolver_rules
List all resolver rules, using filters if specified.
- [X] list_tags_for_resource - [X] list_tags_for_resource
List all tags for the given resource. List all tags for the given resource.

View File

@ -1730,12 +1730,12 @@ class DynamoDBBackend(BaseBackend):
self.tables[target_table_name] = new_table self.tables[target_table_name] = new_table
return new_table return new_table
def restore_table_to_point_in_time(self, target_table_name, source_table_name):
""" """
Currently this only accepts the source and target table elements, and will Currently this only accepts the source and target table elements, and will
copy all items from the source without respect to other arguments. copy all items from the source without respect to other arguments.
""" """
def restore_table_to_point_in_time(self, target_table_name, source_table_name):
source = self.get_table(source_table_name) source = self.get_table(source_table_name)
if source is None: if source is None:
raise KeyError() raise KeyError()

View File

@ -2075,14 +2075,11 @@ class IAMBackend(BaseBackend):
return group return group
def get_group(self, group_name, marker=None, max_items=None): def get_group(self, group_name, marker=None, max_items=None):
group = None
try: try:
group = self.groups[group_name] return self.groups[group_name]
except KeyError: except KeyError:
raise IAMNotFoundException("Group {0} not found".format(group_name)) raise IAMNotFoundException("Group {0} not found".format(group_name))
return group
def list_groups(self): def list_groups(self):
return self.groups.values() return self.groups.values()
@ -2122,11 +2119,11 @@ class IAMBackend(BaseBackend):
"The group with name {0} cannot be found.".format(group_name) "The group with name {0} cannot be found.".format(group_name)
) )
def update_group(self, group_name, new_group_name, new_path="/"): def update_group(self, group_name, new_group_name, new_path):
if new_group_name: if new_group_name:
if new_group_name in self.groups: if new_group_name in self.groups:
raise IAMConflictException( raise IAMConflictException(
"Group {0} already exists".format(new_group_name) message="Group {0} already exists".format(new_group_name)
) )
try: try:
group = self.groups[group_name] group = self.groups[group_name]

View File

@ -507,7 +507,7 @@ class IamResponse(BaseResponse):
def update_group(self): def update_group(self):
group_name = self._get_param("GroupName") group_name = self._get_param("GroupName")
new_group_name = self._get_param("NewGroupName") new_group_name = self._get_param("NewGroupName")
new_path = self._get_param("NewPath", "/") new_path = self._get_param("NewPath")
iam_backend.update_group(group_name, new_group_name, new_path) iam_backend.update_group(group_name, new_group_name, new_path)
template = self.response_template(GENERIC_EMPTY_TEMPLATE) template = self.response_template(GENERIC_EMPTY_TEMPLATE)
return template.render(name="UpdateGroup") return template.render(name="UpdateGroup")

View File

@ -317,7 +317,7 @@ def create_backend_app(service):
def signal_handler(reset_server_port, signum, frame): def signal_handler(reset_server_port, signum, frame):
if reset_server_port: if reset_server_port:
del os.environ["MOTO_SERVER_PORT"] del os.environ["MOTO_PORT"]
sys.exit(0) sys.exit(0)
@ -335,7 +335,11 @@ def main(argv=sys.argv[1:]):
"-H", "--host", type=str, help="Which host to bind", default="127.0.0.1" "-H", "--host", type=str, help="Which host to bind", default="127.0.0.1"
) )
parser.add_argument( parser.add_argument(
"-p", "--port", type=int, help="Port number to use for connection", default=5000 "-p",
"--port",
type=int,
help="Port number to use for connection",
default=int(os.environ.get("MOTO_PORT", 5000)),
) )
parser.add_argument( parser.add_argument(
"-r", "-r",
@ -361,9 +365,9 @@ def main(argv=sys.argv[1:]):
args = parser.parse_args(argv) args = parser.parse_args(argv)
reset_server_port = False reset_server_port = False
if "MOTO_SERVER_PORT" not in os.environ: if "MOTO_PORT" not in os.environ:
reset_server_port = True reset_server_port = True
os.environ["MOTO_SERVER_PORT"] = f"{args.port}" os.environ["MOTO_PORT"] = f"{args.port}"
try: try:
signal.signal(signal.SIGINT, partial(signal_handler, reset_server_port)) signal.signal(signal.SIGINT, partial(signal_handler, reset_server_port))

View File

@ -47,7 +47,7 @@ def ecs_new_arn_format():
def moto_server_port(): def moto_server_port():
return os.environ.get("MOTO_SERVER_PORT") or "5000" return os.environ.get("MOTO_PORT") or "5000"
def moto_server_host(): def moto_server_host():

5
scripts/ci_moto_server.sh Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -e
pip install $(ls /moto/dist/moto*.gz)[server,all]
moto_server -H 0.0.0.0 > /moto/server_output.log 2>&1

View File

@ -1,16 +1,6 @@
import os import os
import time import time
try:
# py2
import urllib2 as urllib
from urllib2 import URLError
import socket
import httplib
EXCEPTIONS = (URLError, socket.error, httplib.BadStatusLine)
except ImportError:
# py3
import urllib.request as urllib import urllib.request as urllib
from urllib.error import URLError from urllib.error import URLError
import socket import socket

View File

@ -8,6 +8,10 @@ markers =
[coverage:run] [coverage:run]
relative_files = True relative_files = True
[flake8]
ignore = W503,W605,E128,E501,E203,E266,E501,E231
exclude = moto/packages,dist
[pylint.'MESSAGES CONTROL'] [pylint.'MESSAGES CONTROL']
disable = W,C,R,E disable = W,C,R,E
# Check we have any tests with duplicate names (causing them to be skipped) # Check we have any tests with duplicate names (causing them to be skipped)

View File

@ -355,3 +355,73 @@ def test_delete_unknown_group():
err.value.response["Error"]["Message"].should.equal( err.value.response["Error"]["Message"].should.equal(
"The group with name unknown-group cannot be found." "The group with name unknown-group cannot be found."
) )
@mock_iam
def test_update_group_name():
conn = boto3.client("iam", region_name="us-east-1")
conn.create_group(GroupName="my-group")
initial_group = conn.get_group(GroupName="my-group")["Group"]
conn.update_group(GroupName="my-group", NewGroupName="new-group")
# The old group-name should no longer exist
with pytest.raises(ClientError) as exc:
conn.get_group(GroupName="my-group")
exc.value.response["Error"]["Code"].should.equal("NoSuchEntity")
result = conn.get_group(GroupName="new-group")["Group"]
result["Path"].should.equal("/")
result["GroupName"].should.equal("new-group")
result["GroupId"].should.equal(initial_group["GroupId"])
result["Arn"].should.match(":group/new-group")
@mock_iam
def test_update_group_name_that_has_a_path():
conn = boto3.client("iam", region_name="us-east-1")
conn.create_group(GroupName="my-group", Path="/path")
conn.update_group(GroupName="my-group", NewGroupName="new-group")
# Verify the path hasn't changed
new = conn.get_group(GroupName="new-group")["Group"]
new["Path"].should.equal("/path")
@mock_iam
def test_update_group_path():
conn = boto3.client("iam", region_name="us-east-1")
conn.create_group(GroupName="my-group", Path="/path")
conn.update_group(
GroupName="my-group", NewGroupName="new-group", NewPath="/new-path"
)
# Verify the path has changed
new = conn.get_group(GroupName="new-group")["Group"]
new["Path"].should.equal("/new-path")
@mock_iam
def test_update_group_that_does_not_exist():
conn = boto3.client("iam", region_name="us-east-1")
with pytest.raises(ClientError) as exc:
conn.update_group(GroupName="nonexisting", NewGroupName="..")
err = exc.value.response["Error"]
err["Code"].should.equal("NoSuchEntity")
err["Message"].should.equal("The group with name nonexisting cannot be found.")
@mock_iam
def test_update_group_with_existing_name():
conn = boto3.client("iam", region_name="us-east-1")
conn.create_group(GroupName="existing1")
conn.create_group(GroupName="existing2")
with pytest.raises(ClientError) as exc:
conn.update_group(GroupName="existing1", NewGroupName="existing2")
err = exc.value.response["Error"]
err["Code"].should.equal("Conflict")
err["Message"].should.equal("Group existing2 already exists")

19
tox.ini
View File

@ -1,19 +0,0 @@
[tox]
envlist = py27, py36, py37
[testenv]
setenv =
BOTO_CONFIG=/dev/null
AWS_SECRET_ACCESS_KEY=foobar_secret
AWS_ACCESS_KEY_ID=foobar_key
AWS_DEFAULT_REGION=us-east-1
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/requirements-dev.txt
commands =
{envpython} setup.py test
pytest -v {posargs}
[flake8]
ignore = W503,W605,E128,E501,E203,E266,E501,E231
exclude = moto/packages,dist

View File

@ -1,7 +0,0 @@
#!/usr/bin/env bash
export MOTO_PORT=${MOTO_PORT:-5000}
set -e
pip install $(ls /moto/dist/moto*.gz)[server,all]
moto_server -H 0.0.0.0 -p ${MOTO_PORT} > /moto/server_output.log 2>&1