Skip to content

Commit 256c048

Browse files
committed
updates for query compatible for cloudwatch
1 parent 1361161 commit 256c048

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed

tests/aws-cpp-sdk-monitoring-integration-tests/CloudWatchMonitoringTests.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <aws/core/utils/memory/AWSMemory.h>
1111
#include <aws/monitoring/CloudWatchClient.h>
1212
#include <aws/monitoring/model/PutMetricDataRequest.h>
13+
#include <aws/monitoring/model/GetDashboardRequest.h>
1314
#include <aws/testing/AwsTestHelpers.h>
1415
#include <aws/testing/TestingEnvironment.h>
1516
#include <gtest/gtest.h>
@@ -91,4 +92,12 @@ TEST_F(CloudWatchMonitoringOperationTest, PutLargeMetricDataTest) {
9192
m_client->PutMetricData(request);
9293
AWS_ASSERT_SUCCESS(outcome);
9394
}
95+
96+
TEST_F(CloudWatchMonitoringOperationTest, DashboardNotFoundShouldParseCorrectly) {
97+
const auto response = m_client->GetDashboard(GetDashboardRequest().WithDashboardName("foo"));
98+
EXPECT_FALSE(response.IsSuccess());
99+
EXPECT_EQ(CloudWatchErrors::DASHBOARD_NOT_FOUND, response.GetError().GetErrorType());
100+
EXPECT_EQ("ResourceNotFound", response.GetError().GetExceptionName());
101+
EXPECT_EQ("Dashboard foo does not exist", response.GetError().GetMessage());
102+
}
94103
} // namespace

tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/config/ServiceGeneratorConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.amazonaws.util.awsclientgenerator.generators.cpp.glacier.GlacierRestJsonCppClientGenerator;
2121
import com.amazonaws.util.awsclientgenerator.generators.cpp.lambda.LambdaRestJsonCppClientGenerator;
2222
import com.amazonaws.util.awsclientgenerator.generators.cpp.machinelearning.MachineLearningJsonCppClientGenerator;
23+
import com.amazonaws.util.awsclientgenerator.generators.cpp.monitoring.CloudwatchMonitoringJsonCppClientGenerator;
2324
import com.amazonaws.util.awsclientgenerator.generators.cpp.neptune.NeptuneCppClientGenerator;
2425
import com.amazonaws.util.awsclientgenerator.generators.cpp.polly.PollyCppClientGenerator;
2526
import com.amazonaws.util.awsclientgenerator.generators.cpp.rds.RDSCppClientGenerator;
@@ -68,6 +69,7 @@ public class ServiceGeneratorConfig {
6869
SPEC_OVERRIDE_MAPPING.put("cpp-neptune-query", new NeptuneCppClientGenerator());
6970
SPEC_OVERRIDE_MAPPING.put("cpp-eventbridge-json", new EventBridgeCppClientGenerator());
7071
SPEC_OVERRIDE_MAPPING.put("cpp-dsql-rest-json", new DsqlCppClientGenerator());
72+
SPEC_OVERRIDE_MAPPING.put("cpp-monitoring-json", new CloudwatchMonitoringJsonCppClientGenerator());
7173

7274
// protocol tests clients
7375
SPEC_OVERRIDE_MAPPING.put("cpp-ec2-protocol-ec2", new Ec2CppClientGenerator());

tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/domainmodels/codegeneration/ServiceModel.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class ServiceModel {
3232
boolean enableVirtualOperations;
3333
Collection<Error> serviceErrors;
3434
Collection<CustomPresignedUtility> presigners;
35+
Map<String, String> queryCompatibleErrorMappings;
3536

3637
public boolean hasStreamingRequestShapes() {
3738
return shapes.values().parallelStream().anyMatch(shape -> shape.isRequest() && (shape.hasStreamMembers() || shape.hasEventStreamMembers()));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.amazonaws.util.awsclientgenerator.generators.cpp.monitoring;
2+
3+
import com.amazonaws.util.awsclientgenerator.domainmodels.SdkFileEntry;
4+
import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.ServiceModel;
5+
import com.amazonaws.util.awsclientgenerator.generators.cpp.JsonCppClientGenerator;
6+
import com.google.common.collect.ImmutableMap;
7+
8+
public class CloudwatchMonitoringJsonCppClientGenerator extends JsonCppClientGenerator {
9+
public CloudwatchMonitoringJsonCppClientGenerator() throws Exception {
10+
super();
11+
}
12+
13+
@Override
14+
protected SdkFileEntry generateErrorSourceFile(ServiceModel serviceModel) throws Exception {
15+
serviceModel.setQueryCompatibleErrorMappings(ImmutableMap.of(
16+
"DASHBOARD_NOT_FOUND", "DashboardNotFoundError"
17+
));
18+
19+
return super.generateErrorSourceFile(serviceModel);
20+
}
21+
}

tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/ServiceErrorsSource.vm

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#set($serviceNamespace = $metadata.namespace)
66
#set($payloadType = ${CppViewHelper.computeServicePayloadType($metadata.findFirstSupportedProtocol())})
77
#set($nonCoreServiceErrors = $serviceModel.getNonCoreServiceErrors())
8+
#set($queryCompatibleMappings = $serviceModel.getQueryCompatibleErrorMappings())
89
\#include <aws/core/client/AWSError.h>
910
\#include <aws/core/utils/HashingUtils.h>
1011
\#include <aws/${metadata.projectName}/${metadata.classNamePrefix}Errors.h>
@@ -55,6 +56,9 @@ namespace ${metadata.classNamePrefix}ErrorMapper
5556
#set($constName = ${ErrorFormatter.formatErrorConstName($error.name)})
5657
static const int ${constName}_HASH = HashingUtils::HashString("${error.text}");
5758
#end
59+
#foreach($mapping in $queryCompatibleMappings.entrySet())
60+
static const int ${mapping.getKey()}_HASH_COMPATIBLE = HashingUtils::HashString("${mapping.getValue()}");
61+
#end
5862

5963
#if ($nonCoreServiceErrors.size() > 121)
6064

@@ -129,6 +133,12 @@ AWSError<CoreErrors> GetErrorForName(const char* errorName)
129133
#end
130134
#else
131135
AWS_UNREFERENCED_PARAM(errorName);
136+
#end
137+
#foreach($mapping in $queryCompatibleMappings.entrySet())
138+
${elseText}if (hashCode == ${mapping.getKey()}_HASH_COMPATIBLE)
139+
{
140+
return AWSError<CoreErrors>(static_cast<CoreErrors>(${metadata.classNamePrefix}Errors::${mapping.getKey()}), RetryableType::NOT_RETRYABLE);
141+
}
132142
#end
133143
return AWSError<CoreErrors>(CoreErrors::UNKNOWN, false);
134144
}

0 commit comments

Comments
 (0)