protected ProgressEvent handleRequest()

in aws-ec2-enclavecertificateiamroleassociation/src/main/java/software/amazon/ec2/enclavecertificateiamroleassociation/DeleteHandler.java [16:59]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(AmazonWebServicesClientProxy proxy,
                                                                          ResourceHandlerRequest<ResourceModel> request,
                                                                          CallbackContext callbackContext,
                                                                          ProxyClient<Ec2Client> proxyClient,
                                                                          Logger logger) {
        final ResourceModel model = request.getDesiredResourceState();

        try {
            validateNotNull(model.getCertificateArn(), Properties.CertificateArn);
            validateNotNull(model.getRoleArn(), Properties.RoleArn);

            if (Helper.getAssociatedRole(proxyClient, model.getCertificateArn(),
                    model.getRoleArn()) == null) {
                return ProgressEvent.<ResourceModel, CallbackContext>builder()
                        .resourceModel(model)
                        .message(String.format("No association found for certificate arn %s and" +
                                        " role arn %s",
                                model.getCertificateArn(), model.getRoleArn()))
                        .status(OperationStatus.FAILED)
                        .errorCode(HandlerErrorCode.NotFound)
                        .build();
            }

            final DisassociateEnclaveCertificateIamRoleRequest disassociateRequest =
                    DisassociateEnclaveCertificateIamRoleRequest
                            .builder()
                            .certificateArn(model.getCertificateArn())
                            .roleArn(model.getRoleArn())
                            .build();
            final DisassociateEnclaveCertificateIamRoleResponse response = proxyClient
                    .injectCredentialsAndInvokeV2(disassociateRequest,
                            proxyClient.client()::disassociateEnclaveCertificateIamRole);

            logger.log(String.format("%s [%s] deleted successfully.",
                    ResourceModel.TYPE_NAME,
                    model.getPrimaryIdentifier()));

            return ProgressEvent.<ResourceModel, CallbackContext>builder()
                    .status(OperationStatus.SUCCESS)
                    .build();
        } catch (final Throwable e) {
            return handleException(e, logger);
        }
    }