Skip to content

Commit d59e0bb

Browse files
bretambrosekucnavyaxiazhvera
authored
Update Greengrass V2 IPC model for PutComponentMetric operation (#296)
* Update Greengrass V2 IPC model for PutComponentMetric operation * @kucnavya fix: increase timeout for subscriptionClosed from commit: 4ea1e66 Co-authored-by: Navya Kuchibhotla <[email protected]> Co-authored-by: Vera Xia <[email protected]>
1 parent 427f913 commit d59e0bb

File tree

11 files changed

+477
-4
lines changed

11 files changed

+477
-4
lines changed

sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPC.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import software.amazon.awssdk.aws.greengrass.model.PauseComponentRequest;
2323
import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreRequest;
2424
import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest;
25+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricRequest;
2526
import software.amazon.awssdk.aws.greengrass.model.RestartComponentRequest;
2627
import software.amazon.awssdk.aws.greengrass.model.ResumeComponentRequest;
2728
import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportRequest;
@@ -101,6 +102,9 @@ PublishToIoTCoreResponseHandler publishToIoTCore(final PublishToIoTCoreRequest r
101102
PublishToTopicResponseHandler publishToTopic(final PublishToTopicRequest request,
102103
final Optional<StreamResponseHandler<EventStreamJsonMessage>> streamResponseHandler);
103104

105+
PutComponentMetricResponseHandler putComponentMetric(final PutComponentMetricRequest request,
106+
final Optional<StreamResponseHandler<EventStreamJsonMessage>> streamResponseHandler);
107+
104108
RestartComponentResponseHandler restartComponent(final RestartComponentRequest request,
105109
final Optional<StreamResponseHandler<EventStreamJsonMessage>> streamResponseHandler);
106110

sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCClient.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import software.amazon.awssdk.aws.greengrass.model.PauseComponentRequest;
2424
import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreRequest;
2525
import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest;
26+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricRequest;
2627
import software.amazon.awssdk.aws.greengrass.model.RestartComponentRequest;
2728
import software.amazon.awssdk.aws.greengrass.model.ResumeComponentRequest;
2829
import software.amazon.awssdk.aws.greengrass.model.SendConfigurationValidityReportRequest;
@@ -178,6 +179,14 @@ public PublishToTopicResponseHandler publishToTopic(final PublishToTopicRequest
178179
return new PublishToTopicResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler));
179180
}
180181

182+
@Override
183+
public PutComponentMetricResponseHandler putComponentMetric(
184+
final PutComponentMetricRequest request,
185+
final Optional<StreamResponseHandler<EventStreamJsonMessage>> streamResponseHandler) {
186+
final PutComponentMetricOperationContext operationContext = GreengrassCoreIPCServiceModel.getPutComponentMetricModelContext();
187+
return new PutComponentMetricResponseHandler(doOperationInvoke(operationContext, request, streamResponseHandler));
188+
}
189+
181190
@Override
182191
public RestartComponentResponseHandler restartComponent(final RestartComponentRequest request,
183192
final Optional<StreamResponseHandler<EventStreamJsonMessage>> streamResponseHandler) {

sdk/greengrass/greengrass-client/src/event-stream-rpc-java/client/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCClientV2.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreResponse;
5858
import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest;
5959
import software.amazon.awssdk.aws.greengrass.model.PublishToTopicResponse;
60+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricRequest;
61+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricResponse;
6062
import software.amazon.awssdk.aws.greengrass.model.RestartComponentRequest;
6163
import software.amazon.awssdk.aws.greengrass.model.RestartComponentResponse;
6264
import software.amazon.awssdk.aws.greengrass.model.ResumeComponentRequest;
@@ -558,6 +560,31 @@ public CompletableFuture<PublishToTopicResponse> publishToTopicAsync(
558560
return client.publishToTopic(request, Optional.empty()).getResponse();
559561
}
560562

563+
/**
564+
* Perform the putComponentMetric operation synchronously.
565+
*
566+
* @throws InterruptedException if thread is interrupted while waiting for the response
567+
* @return the response
568+
*
569+
* @param request request object
570+
*/
571+
public PutComponentMetricResponse putComponentMetric(final PutComponentMetricRequest request)
572+
throws InterruptedException {
573+
return getResponse(this.putComponentMetricAsync(request));
574+
}
575+
576+
/**
577+
* Perform the putComponentMetric operation asynchronously.
578+
*
579+
* @return a future which resolves to the response
580+
*
581+
* @param request request object
582+
*/
583+
public CompletableFuture<PutComponentMetricResponse> putComponentMetricAsync(
584+
final PutComponentMetricRequest request) {
585+
return client.putComponentMetric(request, Optional.empty()).getResponse();
586+
}
587+
561588
/**
562589
* Perform the restartComponent operation synchronously.
563590
*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package software.amazon.awssdk.aws.greengrass;
2+
3+
import java.lang.Override;
4+
import java.lang.Void;
5+
import java.util.concurrent.CompletableFuture;
6+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricResponse;
7+
import software.amazon.awssdk.eventstreamrpc.OperationResponse;
8+
import software.amazon.awssdk.eventstreamrpc.StreamResponse;
9+
import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage;
10+
11+
public final class PutComponentMetricResponseHandler implements StreamResponse<PutComponentMetricResponse, EventStreamJsonMessage> {
12+
private final OperationResponse<PutComponentMetricResponse, EventStreamJsonMessage> operationResponse;
13+
14+
public PutComponentMetricResponseHandler(
15+
final OperationResponse<PutComponentMetricResponse, EventStreamJsonMessage> operationResponse) {
16+
this.operationResponse = operationResponse;
17+
}
18+
19+
@Override
20+
public CompletableFuture<Void> getRequestFlushFuture() {
21+
return operationResponse.getRequestFlushFuture();
22+
}
23+
24+
@Override
25+
public CompletableFuture<PutComponentMetricResponse> getResponse() {
26+
return operationResponse.getResponse();
27+
}
28+
29+
@Override
30+
public CompletableFuture<Void> sendStreamEvent(final EventStreamJsonMessage event) {
31+
return operationResponse.sendStreamEvent(event);
32+
}
33+
34+
@Override
35+
public CompletableFuture<Void> closeStream() {
36+
return operationResponse.closeStream();
37+
}
38+
39+
@Override
40+
public boolean isClosed() {
41+
return operationResponse.isClosed();
42+
}
43+
}

sdk/greengrass/greengrass-client/src/event-stream-rpc-java/model/software/amazon/awssdk/aws/greengrass/GreengrassCoreIPCServiceModel.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@
6767
import software.amazon.awssdk.aws.greengrass.model.MQTTCredential;
6868
import software.amazon.awssdk.aws.greengrass.model.MQTTMessage;
6969
import software.amazon.awssdk.aws.greengrass.model.MessageContext;
70+
import software.amazon.awssdk.aws.greengrass.model.Metric;
71+
import software.amazon.awssdk.aws.greengrass.model.MetricUnitType;
7072
import software.amazon.awssdk.aws.greengrass.model.PauseComponentRequest;
7173
import software.amazon.awssdk.aws.greengrass.model.PauseComponentResponse;
7274
import software.amazon.awssdk.aws.greengrass.model.PostComponentUpdateEvent;
@@ -76,6 +78,8 @@
7678
import software.amazon.awssdk.aws.greengrass.model.PublishToIoTCoreResponse;
7779
import software.amazon.awssdk.aws.greengrass.model.PublishToTopicRequest;
7880
import software.amazon.awssdk.aws.greengrass.model.PublishToTopicResponse;
81+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricRequest;
82+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricResponse;
7983
import software.amazon.awssdk.aws.greengrass.model.QOS;
8084
import software.amazon.awssdk.aws.greengrass.model.ReceiveMode;
8185
import software.amazon.awssdk.aws.greengrass.model.ReportedLifecycleState;
@@ -204,6 +208,10 @@ public class GreengrassCoreIPCServiceModel extends EventStreamRPCServiceModel {
204208

205209
private static final PublishToTopicOperationContext _PUBLISH_TO_TOPIC_OPERATION_CONTEXT = new PublishToTopicOperationContext();
206210

211+
public static final String PUT_COMPONENT_METRIC = SERVICE_NAMESPACE + "#" + "PutComponentMetric";
212+
213+
private static final PutComponentMetricOperationContext _PUT_COMPONENT_METRIC_OPERATION_CONTEXT = new PutComponentMetricOperationContext();
214+
207215
public static final String RESTART_COMPONENT = SERVICE_NAMESPACE + "#" + "RestartComponent";
208216

209217
private static final RestartComponentOperationContext _RESTART_COMPONENT_OPERATION_CONTEXT = new RestartComponentOperationContext();
@@ -299,6 +307,8 @@ public class GreengrassCoreIPCServiceModel extends EventStreamRPCServiceModel {
299307
SERVICE_OPERATION_SET.add(PUBLISH_TO_IOT_CORE);
300308
SERVICE_OPERATION_MODEL_MAP.put(PUBLISH_TO_TOPIC, _PUBLISH_TO_TOPIC_OPERATION_CONTEXT);
301309
SERVICE_OPERATION_SET.add(PUBLISH_TO_TOPIC);
310+
SERVICE_OPERATION_MODEL_MAP.put(PUT_COMPONENT_METRIC, _PUT_COMPONENT_METRIC_OPERATION_CONTEXT);
311+
SERVICE_OPERATION_SET.add(PUT_COMPONENT_METRIC);
302312
SERVICE_OPERATION_MODEL_MAP.put(RESTART_COMPONENT, _RESTART_COMPONENT_OPERATION_CONTEXT);
303313
SERVICE_OPERATION_SET.add(RESTART_COMPONENT);
304314
SERVICE_OPERATION_MODEL_MAP.put(RESUME_COMPONENT, _RESUME_COMPONENT_OPERATION_CONTEXT);
@@ -387,6 +397,8 @@ public class GreengrassCoreIPCServiceModel extends EventStreamRPCServiceModel {
387397
SERVICE_OBJECT_MODEL_MAP.put(MQTTCredential.APPLICATION_MODEL_TYPE, MQTTCredential.class);
388398
SERVICE_OBJECT_MODEL_MAP.put(MQTTMessage.APPLICATION_MODEL_TYPE, MQTTMessage.class);
389399
SERVICE_OBJECT_MODEL_MAP.put(MessageContext.APPLICATION_MODEL_TYPE, MessageContext.class);
400+
SERVICE_OBJECT_MODEL_MAP.put(Metric.APPLICATION_MODEL_TYPE, Metric.class);
401+
SERVICE_OBJECT_MODEL_MAP.put(MetricUnitType.APPLICATION_MODEL_TYPE, MetricUnitType.class);
390402
SERVICE_OBJECT_MODEL_MAP.put(PauseComponentRequest.APPLICATION_MODEL_TYPE, PauseComponentRequest.class);
391403
SERVICE_OBJECT_MODEL_MAP.put(PauseComponentResponse.APPLICATION_MODEL_TYPE, PauseComponentResponse.class);
392404
SERVICE_OBJECT_MODEL_MAP.put(PostComponentUpdateEvent.APPLICATION_MODEL_TYPE, PostComponentUpdateEvent.class);
@@ -396,6 +408,8 @@ public class GreengrassCoreIPCServiceModel extends EventStreamRPCServiceModel {
396408
SERVICE_OBJECT_MODEL_MAP.put(PublishToIoTCoreResponse.APPLICATION_MODEL_TYPE, PublishToIoTCoreResponse.class);
397409
SERVICE_OBJECT_MODEL_MAP.put(PublishToTopicRequest.APPLICATION_MODEL_TYPE, PublishToTopicRequest.class);
398410
SERVICE_OBJECT_MODEL_MAP.put(PublishToTopicResponse.APPLICATION_MODEL_TYPE, PublishToTopicResponse.class);
411+
SERVICE_OBJECT_MODEL_MAP.put(PutComponentMetricRequest.APPLICATION_MODEL_TYPE, PutComponentMetricRequest.class);
412+
SERVICE_OBJECT_MODEL_MAP.put(PutComponentMetricResponse.APPLICATION_MODEL_TYPE, PutComponentMetricResponse.class);
399413
SERVICE_OBJECT_MODEL_MAP.put(QOS.APPLICATION_MODEL_TYPE, QOS.class);
400414
SERVICE_OBJECT_MODEL_MAP.put(ReceiveMode.APPLICATION_MODEL_TYPE, ReceiveMode.class);
401415
SERVICE_OBJECT_MODEL_MAP.put(ReportedLifecycleState.APPLICATION_MODEL_TYPE, ReportedLifecycleState.class);
@@ -522,6 +536,10 @@ public static PublishToTopicOperationContext getPublishToTopicModelContext() {
522536
return _PUBLISH_TO_TOPIC_OPERATION_CONTEXT;
523537
}
524538

539+
public static PutComponentMetricOperationContext getPutComponentMetricModelContext() {
540+
return _PUT_COMPONENT_METRIC_OPERATION_CONTEXT;
541+
}
542+
525543
public static RestartComponentOperationContext getRestartComponentModelContext() {
526544
return _RESTART_COMPONENT_OPERATION_CONTEXT;
527545
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package software.amazon.awssdk.aws.greengrass;
2+
3+
import java.lang.Class;
4+
import java.lang.Override;
5+
import java.lang.String;
6+
import java.util.Optional;
7+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricRequest;
8+
import software.amazon.awssdk.aws.greengrass.model.PutComponentMetricResponse;
9+
import software.amazon.awssdk.eventstreamrpc.EventStreamRPCServiceModel;
10+
import software.amazon.awssdk.eventstreamrpc.OperationModelContext;
11+
import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage;
12+
13+
public class PutComponentMetricOperationContext implements OperationModelContext<PutComponentMetricRequest, PutComponentMetricResponse, EventStreamJsonMessage, EventStreamJsonMessage> {
14+
@Override
15+
public EventStreamRPCServiceModel getServiceModel() {
16+
return GreengrassCoreIPCServiceModel.getInstance();
17+
}
18+
19+
@Override
20+
public String getOperationName() {
21+
return GreengrassCoreIPCServiceModel.PUT_COMPONENT_METRIC;
22+
}
23+
24+
@Override
25+
public Class<PutComponentMetricRequest> getRequestTypeClass() {
26+
return PutComponentMetricRequest.class;
27+
}
28+
29+
@Override
30+
public Class<PutComponentMetricResponse> getResponseTypeClass() {
31+
return PutComponentMetricResponse.class;
32+
}
33+
34+
@Override
35+
public String getRequestApplicationModelType() {
36+
return PutComponentMetricRequest.APPLICATION_MODEL_TYPE;
37+
}
38+
39+
@Override
40+
public String getResponseApplicationModelType() {
41+
return PutComponentMetricResponse.APPLICATION_MODEL_TYPE;
42+
}
43+
44+
@Override
45+
public Optional<Class<EventStreamJsonMessage>> getStreamingRequestTypeClass() {
46+
return Optional.empty();
47+
}
48+
49+
@Override
50+
public Optional<Class<EventStreamJsonMessage>> getStreamingResponseTypeClass() {
51+
return Optional.empty();
52+
}
53+
54+
public Optional<String> getStreamingRequestApplicationModelType() {
55+
return Optional.empty();
56+
}
57+
58+
@Override
59+
public Optional<String> getStreamingResponseApplicationModelType() {
60+
return Optional.empty();
61+
}
62+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package software.amazon.awssdk.aws.greengrass.model;
2+
3+
import com.google.gson.annotations.Expose;
4+
import java.lang.Double;
5+
import java.lang.Object;
6+
import java.lang.Override;
7+
import java.lang.String;
8+
import java.util.Objects;
9+
import java.util.Optional;
10+
import software.amazon.awssdk.eventstreamrpc.model.EventStreamJsonMessage;
11+
12+
public class Metric implements EventStreamJsonMessage {
13+
public static final String APPLICATION_MODEL_TYPE = "aws.greengrass#Metric";
14+
15+
public static final Metric VOID;
16+
17+
static {
18+
VOID = new Metric() {
19+
@Override
20+
public boolean isVoid() {
21+
return true;
22+
}
23+
};
24+
}
25+
26+
@Expose(
27+
serialize = true,
28+
deserialize = true
29+
)
30+
private Optional<String> name;
31+
32+
@Expose(
33+
serialize = true,
34+
deserialize = true
35+
)
36+
private Optional<String> unit;
37+
38+
@Expose(
39+
serialize = true,
40+
deserialize = true
41+
)
42+
private Optional<Double> value;
43+
44+
public Metric() {
45+
this.name = Optional.empty();
46+
this.unit = Optional.empty();
47+
this.value = Optional.empty();
48+
}
49+
50+
public String getName() {
51+
if (name.isPresent()) {
52+
return name.get();
53+
}
54+
return null;
55+
}
56+
57+
public void setName(final String name) {
58+
this.name = Optional.ofNullable(name);
59+
}
60+
61+
public Metric withName(final String name) {
62+
setName(name);
63+
return this;
64+
}
65+
66+
public MetricUnitType getUnit() {
67+
if (unit.isPresent()) {
68+
return MetricUnitType.get(unit.get());
69+
}
70+
return null;
71+
}
72+
73+
public String getUnitAsString() {
74+
if (unit.isPresent()) {
75+
return unit.get();
76+
}
77+
return null;
78+
}
79+
80+
public void setUnit(final String unit) {
81+
this.unit = Optional.ofNullable(unit);
82+
}
83+
84+
public Metric withUnit(final String unit) {
85+
setUnit(unit);
86+
return this;
87+
}
88+
89+
public void setUnit(final MetricUnitType unit) {
90+
this.unit = Optional.ofNullable(unit.getValue());
91+
}
92+
93+
public Metric withUnit(final MetricUnitType unit) {
94+
setUnit(unit);
95+
return this;
96+
}
97+
98+
public Double getValue() {
99+
if (value.isPresent()) {
100+
return value.get();
101+
}
102+
return null;
103+
}
104+
105+
public void setValue(final Double value) {
106+
this.value = Optional.ofNullable(value);
107+
}
108+
109+
public Metric withValue(final Double value) {
110+
setValue(value);
111+
return this;
112+
}
113+
114+
@Override
115+
public String getApplicationModelType() {
116+
return APPLICATION_MODEL_TYPE;
117+
}
118+
119+
@Override
120+
public boolean equals(Object rhs) {
121+
if (rhs == null) return false;
122+
if (!(rhs instanceof Metric)) return false;
123+
if (this == rhs) return true;
124+
final Metric other = (Metric)rhs;
125+
boolean isEquals = true;
126+
isEquals = isEquals && this.name.equals(other.name);
127+
isEquals = isEquals && this.unit.equals(other.unit);
128+
isEquals = isEquals && this.value.equals(other.value);
129+
return isEquals;
130+
}
131+
132+
@Override
133+
public int hashCode() {
134+
return Objects.hash(name, unit, value);
135+
}
136+
}

0 commit comments

Comments
 (0)