TechDebt - Unpin TF (#5590)

This commit is contained in:
Bert Blommers 2022-10-23 11:23:23 +00:00 committed by GitHub
parent bd465b032b
commit b44b5b797f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 186 additions and 60 deletions

View File

@ -29,12 +29,6 @@ jobs:
uses: actions/setup-python@v4 uses: actions/setup-python@v4
with: with:
python-version: "3.8" python-version: "3.8"
# FIXME: pinned because of https://github.com/hashicorp/terraform-provider-aws/issues/27049
- name: Install terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: "1.2.9"
terraform_wrapper: "false"
- name: Start MotoServer - name: Start MotoServer
run: | run: |
pip install PyYAML pip install PyYAML

View File

@ -22,18 +22,18 @@
## amp ## amp
<details> <details>
<summary>61% implemented</summary> <summary>80% implemented</summary>
- [ ] create_alert_manager_definition - [ ] create_alert_manager_definition
- [ ] create_logging_configuration - [X] create_logging_configuration
- [X] create_rule_groups_namespace - [X] create_rule_groups_namespace
- [X] create_workspace - [X] create_workspace
- [ ] delete_alert_manager_definition - [ ] delete_alert_manager_definition
- [ ] delete_logging_configuration - [X] delete_logging_configuration
- [X] delete_rule_groups_namespace - [X] delete_rule_groups_namespace
- [X] delete_workspace - [X] delete_workspace
- [ ] describe_alert_manager_definition - [ ] describe_alert_manager_definition
- [ ] describe_logging_configuration - [X] describe_logging_configuration
- [X] describe_rule_groups_namespace - [X] describe_rule_groups_namespace
- [X] describe_workspace - [X] describe_workspace
- [X] list_rule_groups_namespaces - [X] list_rule_groups_namespaces
@ -43,7 +43,7 @@
- [X] put_rule_groups_namespace - [X] put_rule_groups_namespace
- [X] tag_resource - [X] tag_resource
- [X] untag_resource - [X] untag_resource
- [ ] update_logging_configuration - [X] update_logging_configuration
- [X] update_workspace_alias - [X] update_workspace_alias
</details> </details>

View File

@ -28,7 +28,7 @@ amp
|start-h3| Implemented features for this service |end-h3| |start-h3| Implemented features for this service |end-h3|
- [ ] create_alert_manager_definition - [ ] create_alert_manager_definition
- [ ] create_logging_configuration - [X] create_logging_configuration
- [X] create_rule_groups_namespace - [X] create_rule_groups_namespace
The ClientToken-parameter is not yet implemented The ClientToken-parameter is not yet implemented
@ -40,7 +40,7 @@ amp
- [ ] delete_alert_manager_definition - [ ] delete_alert_manager_definition
- [ ] delete_logging_configuration - [X] delete_logging_configuration
- [X] delete_rule_groups_namespace - [X] delete_rule_groups_namespace
The ClientToken-parameter is not yet implemented The ClientToken-parameter is not yet implemented
@ -52,7 +52,7 @@ amp
- [ ] describe_alert_manager_definition - [ ] describe_alert_manager_definition
- [ ] describe_logging_configuration - [X] describe_logging_configuration
- [X] describe_rule_groups_namespace - [X] describe_rule_groups_namespace
- [X] describe_workspace - [X] describe_workspace
- [X] list_rule_groups_namespaces - [X] list_rule_groups_namespaces
@ -66,7 +66,7 @@ amp
- [X] tag_resource - [X] tag_resource
- [X] untag_resource - [X] untag_resource
- [ ] update_logging_configuration - [X] update_logging_configuration
- [X] update_workspace_alias - [X] update_workspace_alias
The ClientToken-parameter is not yet implemented The ClientToken-parameter is not yet implemented

View File

@ -5,7 +5,7 @@ from moto.core.utils import BackendDict, unix_time
from moto.moto_api._internal import mock_random from moto.moto_api._internal import mock_random
from moto.utilities.paginator import paginate from moto.utilities.paginator import paginate
from moto.utilities.tagging_service import TaggingService from moto.utilities.tagging_service import TaggingService
from typing import Any, Callable, Dict, List from typing import Any, Callable, Dict, List, Optional
from .exceptions import RuleGroupNamespaceNotFound, WorkspaceNotFound from .exceptions import RuleGroupNamespaceNotFound, WorkspaceNotFound
from .utils import PAGINATION_MODEL from .utils import PAGINATION_MODEL
@ -59,6 +59,7 @@ class Workspace(BaseModel):
self.created_at = unix_time() self.created_at = unix_time()
self.tag_fn = tag_fn self.tag_fn = tag_fn
self.rule_group_namespaces: Dict[str, RuleGroupNamespace] = dict() self.rule_group_namespaces: Dict[str, RuleGroupNamespace] = dict()
self.logging_config: Optional[Dict[str, Any]] = None
def to_dict(self) -> Dict[str, Any]: def to_dict(self) -> Dict[str, Any]:
return { return {
@ -182,5 +183,35 @@ class PrometheusServiceBackend(BaseBackend):
] ]
return list(ws.rule_group_namespaces.values()) return list(ws.rule_group_namespaces.values())
def create_logging_configuration(
self, workspace_id: str, log_group_arn: str
) -> Dict[str, str]:
ws = self.describe_workspace(workspace_id)
ws.logging_config = {
"logGroupArn": log_group_arn,
"createdAt": unix_time(),
"status": {"statusCode": "ACTIVE"},
"workspace": workspace_id,
}
return ws.logging_config["status"]
def describe_logging_configuration(self, workspace_id: str) -> Dict[str, Any]:
ws = self.describe_workspace(workspace_id)
if ws.logging_config is None:
return {}
return ws.logging_config
def delete_logging_configuration(self, workspace_id: str) -> None:
ws = self.describe_workspace(workspace_id)
ws.logging_config = None
def update_logging_configuration(
self, workspace_id: str, log_group_arn: str
) -> Dict[str, str]:
ws = self.describe_workspace(workspace_id)
ws.logging_config["logGroupArn"] = log_group_arn # type: ignore[index]
ws.logging_config["modifiedAt"] = unix_time() # type: ignore[index]
return ws.logging_config["status"] # type: ignore[index]
amp_backends = BackendDict(PrometheusServiceBackend, "amp") amp_backends = BackendDict(PrometheusServiceBackend, "amp")

View File

@ -140,3 +140,32 @@ class PrometheusServiceResponse(BaseResponse):
ruleGroupsNamespaces=[ns.to_dict() for ns in namespaces], ruleGroupsNamespaces=[ns.to_dict() for ns in namespaces],
) )
) )
def create_logging_configuration(self) -> str:
workspace_id = unquote(self.path).split("/")[-2]
log_group_arn = self._get_param("logGroupArn")
status = self.amp_backend.create_logging_configuration(
workspace_id=workspace_id,
log_group_arn=log_group_arn,
)
return json.dumps({"status": status})
def describe_logging_configuration(self) -> str:
workspace_id = unquote(self.path).split("/")[-2]
config = self.amp_backend.describe_logging_configuration(
workspace_id=workspace_id
)
return json.dumps({"loggingConfiguration": config})
def update_logging_configuration(self) -> str:
workspace_id = unquote(self.path).split("/")[-2]
log_group_arn = self._get_param("logGroupArn")
status = self.amp_backend.update_logging_configuration(
workspace_id=workspace_id, log_group_arn=log_group_arn
)
return json.dumps({"status": status})
def delete_logging_configuration(self) -> str:
workspace_id = unquote(self.path).split("/")[-2]
self.amp_backend.delete_logging_configuration(workspace_id=workspace_id)
return "{}"

View File

@ -13,6 +13,7 @@ url_paths = {
"{0}/workspaces$": response.dispatch, "{0}/workspaces$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)$": response.dispatch, "{0}/workspaces/(?P<workspace_id>[^/]+)$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/alias$": response.dispatch, "{0}/workspaces/(?P<workspace_id>[^/]+)/alias$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/logging$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces$": response.dispatch, "{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces$": response.dispatch,
"{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces/(?P<name>[^/]+)$": response.dispatch, "{0}/workspaces/(?P<workspace_id>[^/]+)/rulegroupsnamespaces/(?P<name>[^/]+)$": response.dispatch,
"{0}/tags/(?P<resource_arn>[^/]+)$": response.dispatch, "{0}/tags/(?P<resource_arn>[^/]+)$": response.dispatch,

View File

@ -169,6 +169,7 @@ class VPC(TaggedEC2Resource, CloudFormationModel):
# This attribute is set to 'true' only for default VPCs # This attribute is set to 'true' only for default VPCs
# or VPCs created using the wizard of the VPC console # or VPCs created using the wizard of the VPC console
self.enable_dns_hostnames = "true" if is_default else "false" self.enable_dns_hostnames = "true" if is_default else "false"
self.enable_network_address_usage_metrics = "false"
self.associate_vpc_cidr_block(cidr_block) self.associate_vpc_cidr_block(cidr_block)
if amazon_provided_ipv6_cidr_block: if amazon_provided_ipv6_cidr_block:
@ -466,7 +467,11 @@ class VPCBackend:
def describe_vpc_attribute(self, vpc_id, attr_name): def describe_vpc_attribute(self, vpc_id, attr_name):
vpc = self.get_vpc(vpc_id) vpc = self.get_vpc(vpc_id)
if attr_name in ("enable_dns_support", "enable_dns_hostnames"): if attr_name in (
"enable_dns_support",
"enable_dns_hostnames",
"enable_network_address_usage_metrics",
):
return getattr(vpc, attr_name) return getattr(vpc, attr_name)
else: else:
raise InvalidParameterValueError(attr_name) raise InvalidParameterValueError(attr_name)
@ -493,7 +498,11 @@ class VPCBackend:
def modify_vpc_attribute(self, vpc_id, attr_name, attr_value): def modify_vpc_attribute(self, vpc_id, attr_name, attr_value):
vpc = self.get_vpc(vpc_id) vpc = self.get_vpc(vpc_id)
if attr_name in ("enable_dns_support", "enable_dns_hostnames"): if attr_name in (
"enable_dns_support",
"enable_dns_hostnames",
"enable_network_address_usage_metrics",
):
setattr(vpc, attr_name, attr_value) setattr(vpc, attr_name, attr_value)
else: else:
raise InvalidParameterValueError(attr_name) raise InvalidParameterValueError(attr_name)

View File

@ -1,60 +1,49 @@
From ba338bc6eff2276671b8fd8e61c5a1aceab96112 Mon Sep 17 00:00:00 2001 From 01a50d07400ee7513b31ec10e9832a2d8290b4e2 Mon Sep 17 00:00:00 2001
From: Bert Blommers <info@bertblommers.nl> From: Bert Blommers <info@bertblommers.nl>
Date: Tue, 4 Oct 2022 19:00:11 +0000 Date: Sat, 22 Oct 2022 13:25:17 +0000
Subject: [PATCH] Patch: Reduce Comprehend timings Subject: [PATCH] Patch: Comprehend timings
--- ---
internal/service/comprehend/common_model.go | 2 +- internal/service/comprehend/common_model.go | 2 +-
internal/service/comprehend/consts.go | 6 +++--- internal/service/comprehend/consts.go | 12 ++++++------
internal/service/comprehend/entity_recognizer.go | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-)
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/internal/service/comprehend/common_model.go b/internal/service/comprehend/common_model.go diff --git a/internal/service/comprehend/common_model.go b/internal/service/comprehend/common_model.go
index 7fa0c1022f..eb6b7c9265 100644 index 034314bdcc..03a29aa3c2 100644
--- a/internal/service/comprehend/common_model.go --- a/internal/service/comprehend/common_model.go
+++ b/internal/service/comprehend/common_model.go +++ b/internal/service/comprehend/common_model.go
@@ -57,7 +57,7 @@ func waitNetworkInterfaceCreated(ctx context.Context, conn *ec2.EC2, initialENII @@ -60,7 +60,7 @@ func waitNetworkInterfaceCreated(ctx context.Context, conn *ec2.EC2, initialENII
Pending: []string{}, Pending: []string{},
Target: []string{ec2.NetworkInterfaceStatusInUse}, Target: []string{ec2.NetworkInterfaceStatusInUse},
Refresh: statusNetworkInterfaces(ctx, conn, initialENIIds, securityGroups, subnets), Refresh: statusNetworkInterfaces(ctx, conn, initialENIIds, securityGroups, subnets),
- Delay: 4 * time.Minute, - Delay: 4 * time.Minute,
+ Delay: 40 * time.Second, + Delay: 4 * time.Second,
MinTimeout: 10 * time.Second, MinTimeout: 10 * time.Second,
Timeout: timeout, Timeout: timeout,
} }
diff --git a/internal/service/comprehend/consts.go b/internal/service/comprehend/consts.go diff --git a/internal/service/comprehend/consts.go b/internal/service/comprehend/consts.go
index 8c926987a4..2420b78dcc 100644 index e57884a12d..df5fd0678b 100644
--- a/internal/service/comprehend/consts.go --- a/internal/service/comprehend/consts.go
+++ b/internal/service/comprehend/consts.go +++ b/internal/service/comprehend/consts.go
@@ -4,8 +4,8 @@ import ( @@ -7,12 +7,12 @@ import (
"time" const iamPropagationTimeout = 2 * time.Minute
)
-const iamPropagationTimeout = 2 * time.Minute
+const iamPropagationTimeout = 20 * time.Second
// Avoid service throttling // Avoid service throttling
-const entityRegcognizerDelay = 1 * time.Minute -const entityRegcognizerCreatedDelay = 10 * time.Minute
+const entityRegcognizerCreatedDelay = 10 * time.Second
const entityRegcognizerStoppedDelay = 0
-const entityRegcognizerDeletedDelay = 5 * time.Minute
-const entityRegcognizerPollInterval = 1 * time.Minute -const entityRegcognizerPollInterval = 1 * time.Minute
+const entityRegcognizerDelay = 10 * time.Second +const entityRegcognizerDeletedDelay = 5 * time.Second
+const entityRegcognizerPollInterval = 10 * time.Second +const entityRegcognizerPollInterval = 1 * time.Second
diff --git a/internal/service/comprehend/entity_recognizer.go b/internal/service/comprehend/entity_recognizer.go
index 119bf790db..3e953427af 100644
--- a/internal/service/comprehend/entity_recognizer.go
+++ b/internal/service/comprehend/entity_recognizer.go
@@ -42,9 +42,9 @@ func ResourceEntityRecognizer() *schema.Resource {
},
Timeouts: &schema.ResourceTimeout{ -const documentClassifierCreatedDelay = 15 * time.Minute
- Create: schema.DefaultTimeout(60 * time.Minute), +const documentClassifierCreatedDelay = 15 * time.Second
- Update: schema.DefaultTimeout(60 * time.Minute), const documentClassifierStoppedDelay = 0
- Delete: schema.DefaultTimeout(30 * time.Minute), -const documentClassifierDeletedDelay = 5 * time.Minute
+ Create: schema.DefaultTimeout(60 * time.Second), -const documentClassifierPollInterval = 1 * time.Minute
+ Update: schema.DefaultTimeout(60 * time.Second), +const documentClassifierDeletedDelay = 5 * time.Second
+ Delete: schema.DefaultTimeout(30 * time.Second), +const documentClassifierPollInterval = 1 * time.Second
},
Schema: map[string]*schema.Schema{
-- --
2.25.1 2.25.1

@ -1 +1 @@
Subproject commit 6020c871a99278bc855638a801e662328ab2b342 Subproject commit f9a6db6e3c3f3299701747972fd6c37ba4af36f4

View File

@ -39,7 +39,13 @@ autoscaling:
- TestAccAutoScalingGroup_mixedInstancesPolicy - TestAccAutoScalingGroup_mixedInstancesPolicy
- TestAccAutoScalingGroup_MixedInstancesPolicy_capacityRebalance - TestAccAutoScalingGroup_MixedInstancesPolicy_capacityRebalance
- TestAccAutoScalingLaunchConfigurationDataSource - TestAccAutoScalingLaunchConfigurationDataSource
- TestAccAutoScalingLaunchConfiguration_ - TestAccAutoScalingLaunchConfiguration_AssociatePublicIPAddress
- TestAccAutoScalingLaunchConfiguration_EBS_noDevice
- TestAccAutoScalingLaunchConfiguration_userData
- TestAccAutoScalingLaunchConfiguration_metadataOptions
- TestAccAutoScalingLaunchConfiguration_with
- TestAccAutoScalingLaunchConfiguration_encryptedEBSBlockDevice
- TestAccAutoScalingLaunchConfiguration_encryptedRootBlockDevice
batch: batch:
- TestAccBatchJobDefinition - TestAccBatchJobDefinition
- TestAccBatchJobQueue_basic - TestAccBatchJobQueue_basic
@ -76,7 +82,14 @@ cognitoidp:
- TestAccCognitoIDPUser_ - TestAccCognitoIDPUser_
- TestAccCognitoIDPUserPoolClients - TestAccCognitoIDPUserPoolClients
comprehend: comprehend:
- TestAccComprehendEntityRecognizer - TestAccComprehendEntityRecognizer_basic
- TestAccComprehendEntityRecognizer_disappears
- TestAccComprehendEntityRecognizer_version
- TestAccComprehendEntityRecognizer_documents
- TestAccComprehendEntityRecognizer_annotations
- TestAccComprehendEntityRecognizer_tags
- TestAccComprehendEntityRecognizer_DefaultTags
- TestAccComprehendEntityRecognizer_KMSKeys
dax: dax:
- TestAccDAXCluster_basic - TestAccDAXCluster_basic
- TestAccDAXCluster_Encryption - TestAccDAXCluster_Encryption
@ -95,7 +108,6 @@ ec2:
- TestAccEC2VPCsDataSource - TestAccEC2VPCsDataSource
- TestAccEC2VPNGateway_ - TestAccEC2VPNGateway_
- TestAccEC2VPNGatewayAttachment_ - TestAccEC2VPNGatewayAttachment_
- TestAccVPC_
- TestAccVPCEgressOnlyInternetGateway_ - TestAccVPCEgressOnlyInternetGateway_
- TestAccVPCInternetGateway - TestAccVPCInternetGateway
- TestAccVPCNATGateway_ - TestAccVPCNATGateway_

View File

@ -0,0 +1,61 @@
import boto3
import sys
import unittest
from moto import mock_amp
@mock_amp
class TestAmpLoggingConfig(unittest.TestCase):
def setUp(self) -> None:
if sys.version_info < (3, 7):
raise unittest.SkipTest(
"Cannot test this in Py3.6; outdated botocore dependencies do not yet support this feature"
)
self.client = boto3.client("amp", region_name="us-east-2")
workspace = self.client.create_workspace(alias="test", tags={"t": "v"})
self.workspace_id = workspace["workspaceId"]
def test_describe_logging(self):
resp = self.client.describe_logging_configuration(workspaceId=self.workspace_id)
resp.should.have.key("loggingConfiguration").equals({})
def test_create_logging(self):
resp = self.client.create_logging_configuration(
workspaceId=self.workspace_id, logGroupArn="log/arn"
)
resp.should.have.key("status").equals({"statusCode": "ACTIVE"})
resp = self.client.describe_logging_configuration(
workspaceId=self.workspace_id
)["loggingConfiguration"]
resp.should.have.key("createdAt")
resp.should.have.key("logGroupArn").equals("log/arn")
resp.should.have.key("status").equals({"statusCode": "ACTIVE"})
resp.should.have.key("workspace").equals(self.workspace_id)
def test_update_logging(self):
self.client.create_logging_configuration(
workspaceId=self.workspace_id, logGroupArn="log/arn"
)
resp = self.client.update_logging_configuration(
workspaceId=self.workspace_id, logGroupArn="log/arn2"
)
resp.should.have.key("status").equals({"statusCode": "ACTIVE"})
resp = self.client.describe_logging_configuration(
workspaceId=self.workspace_id
)["loggingConfiguration"]
resp.should.have.key("modifiedAt")
resp.should.have.key("logGroupArn").equals("log/arn2")
def test_delete_logging(self):
resp = self.client.create_logging_configuration(
workspaceId=self.workspace_id, logGroupArn="log/arn"
)
self.client.delete_logging_configuration(workspaceId=self.workspace_id)
resp = self.client.describe_logging_configuration(workspaceId=self.workspace_id)
resp.should.have.key("loggingConfiguration").equals({})