in aws-iot-securityprofile/src/main/java/com/amazonaws/iot/securityprofile/UpdateHandler.java [83:138]
String updateSecurityProfile(AmazonWebServicesClientProxy proxy,
ResourceModel model,
Logger logger) {
// If the desired template has no behaviors, passing an empty list in the behaviors field
// is not enough. UpdateSecurityProfile needs us to pass a deleteBehaviors=true flag.
boolean deleteBehaviors;
Set<software.amazon.awssdk.services.iot.model.Behavior> behaviorsForRequest;
if (CollectionUtils.isNullOrEmpty(model.getBehaviors())) {
deleteBehaviors = true;
behaviorsForRequest = null;
} else {
deleteBehaviors = false;
behaviorsForRequest = Translator.translateBehaviorSetFromCfnToIot(model.getBehaviors());
}
// Same for alertTargets
boolean deleteAlertTargets;
Map<String, software.amazon.awssdk.services.iot.model.AlertTarget> alertTargetsForRequest;
if (CollectionUtils.isNullOrEmpty(model.getAlertTargets())) {
deleteAlertTargets = true;
alertTargetsForRequest = null;
} else {
deleteAlertTargets = false;
alertTargetsForRequest = Translator.translateAlertTargetMapFromCfnToIot(model.getAlertTargets());
}
// Same for additionalMetricsToRetain
boolean deleteAdditionalMetricsToRetain;
Set<MetricToRetain> additionalMetricsV2ForRequest;
if (CollectionUtils.isNullOrEmpty(model.getAdditionalMetricsToRetainV2())) {
deleteAdditionalMetricsToRetain = true;
additionalMetricsV2ForRequest = null;
} else {
deleteAdditionalMetricsToRetain = false;
additionalMetricsV2ForRequest = Translator.translateMetricToRetainSetFromCfnToIot(
model.getAdditionalMetricsToRetainV2());
}
UpdateSecurityProfileRequest updateRequest = UpdateSecurityProfileRequest.builder()
.securityProfileName(model.getSecurityProfileName())
.securityProfileDescription(model.getSecurityProfileDescription())
.behaviors(behaviorsForRequest)
.alertTargetsWithStrings(alertTargetsForRequest)
.additionalMetricsToRetainV2(additionalMetricsV2ForRequest)
.deleteBehaviors(deleteBehaviors)
.deleteAlertTargets(deleteAlertTargets)
.deleteAdditionalMetricsToRetain(deleteAdditionalMetricsToRetain)
.build();
UpdateSecurityProfileResponse updateResponse = proxy.injectCredentialsAndInvokeV2(
updateRequest, iotClient::updateSecurityProfile);
String arn = updateResponse.securityProfileArn();
logger.log("Called UpdateSecurityProfile for " + arn);
return arn;
}