mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-25 14:20:22 -07:00
AWS WAF module custom waiter (#37026)
Consolidate waiters to a single file * Add waiter message with token ID * Add waiter Add waiter for WAF change tokens Working waiter for waf_condition module Add support for waiters to waf_rule * WAF data model refactor * Fix ref to self.client * Add custom waiters to aws_waf_web_acl * Allow add/remove rule tasks to operate in parallel, then wait for their change tokens to complete * Move waiter into run_func_with_change_token_backoff since it is generic to all WAF update operations * Wait for deletes on waf_web_acl * Remove always-wait * Remove waiter retry catch
This commit is contained in:
parent
534e9e142b
commit
1c7b9e66b4
5 changed files with 82 additions and 19 deletions
|
@ -119,54 +119,90 @@ ec2_data = {
|
|||
}
|
||||
|
||||
|
||||
def model_for(name):
|
||||
waf_data = {
|
||||
"version": 2,
|
||||
"waiters": {
|
||||
"ChangeTokenInSync": {
|
||||
"delay": 20,
|
||||
"maxAttempts": 60,
|
||||
"operation": "GetChangeTokenStatus",
|
||||
"acceptors": [
|
||||
{
|
||||
"matcher": "path",
|
||||
"expected": True,
|
||||
"argument": "ChangeTokenStatus == 'INSYNC'",
|
||||
"state": "success"
|
||||
},
|
||||
{
|
||||
"matcher": "error",
|
||||
"expected": "WAFInternalErrorException",
|
||||
"state": "retry"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def ec2_model(name):
|
||||
ec2_models = core_waiter.WaiterModel(waiter_config=ec2_data)
|
||||
return ec2_models.get_waiter(name)
|
||||
|
||||
|
||||
def waf_model(name):
|
||||
waf_models = core_waiter.WaiterModel(waiter_config=waf_data)
|
||||
return waf_models.get_waiter(name)
|
||||
|
||||
|
||||
waiters_by_name = {
|
||||
('EC2', 'route_table_exists'): lambda ec2: core_waiter.Waiter(
|
||||
'route_table_exists',
|
||||
model_for('RouteTableExists'),
|
||||
ec2_model('RouteTableExists'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
ec2.describe_route_tables
|
||||
)),
|
||||
('EC2', 'subnet_exists'): lambda ec2: core_waiter.Waiter(
|
||||
'subnet_exists',
|
||||
model_for('SubnetExists'),
|
||||
ec2_model('SubnetExists'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
ec2.describe_subnets
|
||||
)),
|
||||
('EC2', 'subnet_has_map_public'): lambda ec2: core_waiter.Waiter(
|
||||
'subnet_has_map_public',
|
||||
model_for('SubnetHasMapPublic'),
|
||||
ec2_model('SubnetHasMapPublic'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
ec2.describe_subnets
|
||||
)),
|
||||
('EC2', 'subnet_no_map_public'): lambda ec2: core_waiter.Waiter(
|
||||
'subnet_no_map_public',
|
||||
model_for('SubnetNoMapPublic'),
|
||||
ec2_model('SubnetNoMapPublic'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
ec2.describe_subnets
|
||||
)),
|
||||
('EC2', 'subnet_has_assign_ipv6'): lambda ec2: core_waiter.Waiter(
|
||||
'subnet_has_assign_ipv6',
|
||||
model_for('SubnetHasAssignIpv6'),
|
||||
ec2_model('SubnetHasAssignIpv6'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
ec2.describe_subnets
|
||||
)),
|
||||
('EC2', 'subnet_no_assign_ipv6'): lambda ec2: core_waiter.Waiter(
|
||||
'subnet_no_assign_ipv6',
|
||||
model_for('SubnetNoAssignIpv6'),
|
||||
ec2_model('SubnetNoAssignIpv6'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
ec2.describe_subnets
|
||||
)),
|
||||
('EC2', 'subnet_deleted'): lambda ec2: core_waiter.Waiter(
|
||||
'subnet_deleted',
|
||||
model_for('SubnetDeleted'),
|
||||
ec2_model('SubnetDeleted'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
ec2.describe_subnets
|
||||
)),
|
||||
('WAF', 'change_token_in_sync'): lambda waf: core_waiter.Waiter(
|
||||
'change_token_in_sync',
|
||||
waf_model('ChangeTokenInSync'),
|
||||
core_waiter.NormalizedOperationMethod(
|
||||
waf.get_change_token_status
|
||||
)),
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue