From c1eb41711cf77b2635d47297dc409d419dbc2680 Mon Sep 17 00:00:00 2001 From: jayreddy519 Date: Mon, 16 Mar 2026 15:38:18 -0400 Subject: [PATCH 1/4] ridp_rba : add subscribers and publisher in EA --- .../publishers/fdsh/ridp_rba_publisher.rb | 13 +++++ .../ridp_rba_determination_subscriber.rb | 54 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 app/event_source/publishers/fdsh/ridp_rba_publisher.rb create mode 100644 app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb diff --git a/app/event_source/publishers/fdsh/ridp_rba_publisher.rb b/app/event_source/publishers/fdsh/ridp_rba_publisher.rb new file mode 100644 index 00000000000..21aebb9ba37 --- /dev/null +++ b/app/event_source/publishers/fdsh/ridp_rba_publisher.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Publishers + module Fdsh + # Publisher will send RIDP RBA request payload to FDSH gateway + class RidpRbaPublisher + include ::EventSource::Publisher[amqp: 'enroll.ridp_rba'] + + register_event 'determination_requested' + register_event 'get_record_requested' + end + end +end \ No newline at end of file diff --git a/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb b/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb new file mode 100644 index 00000000000..b7672b2fbed --- /dev/null +++ b/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +module Subscribers + module FdshGateway + # Subscriber will receive RIDP RBA determination response payload from FDSH gateway + class RidpRbaDeterminationSubscriber + include EventSource::Logging + include ::EventSource::Subscriber[amqp: 'fdsh.ridp_rba'] + + subscribe(:on_determined) do |delivery_info, metadata, response| + logger.info "FdshGateway::RidpRbaDeterminationSubscriber: invoked on_determined with delivery_info: #{delivery_info.inspect}, response: #{response.inspect}" + + payload = JSON.parse(response, symbolize_names: true) + job_id = metadata[:headers]['job_id'] + status = metadata[:headers]['status'] + + if status == 'failure' + handle_failure_response(job_id) + logger.info 'FdshGateway::RidpRbaDeterminationSubscriber: on_determined acked and processed failure from fdsh_gateway' + else + result = Operations::Fdsh::RidpRba::ProcessDeterminationResponse.new.call( + { + correlation_id: metadata.correlation_id, + metadata: metadata, + response: payload + } + ) + + if result.success? + logger.info "FdshGateway::RidpRbaDeterminationSubscriber: on_determined acked with success: #{result.success}" + else + logger.error "FdshGateway::RidpRbaDeterminationSubscriber: on_determined acked with failure, errors: #{result.failure}" + end + end + + ack(delivery_info.delivery_tag) + rescue StandardError => e + ack(delivery_info.delivery_tag) + logger.error "FdshGateway::RidpRbaDeterminationSubscriber: on_determined error_message: #{e.message}, backtrace: #{e.backtrace}" + end + + def handle_failure_response(job_id) + return unless job_id + + job = Transmittable::Job.where(job_id: job_id)&.last + return unless job + + message = 'Job failed in FDSH Gateway' + Operations::Transmittable::UpdateProcessStatus.new.call({ transmittable_objects: { job: job }, state: :failed, message: message }) + Operations::Transmittable::AddError.new.call({ transmittable_objects: { job: job }, key: :fdsh_gateway, message: message }) + end + end + end +end \ No newline at end of file From 00556425d238334bc5a2ba5687f162d51253df05 Mon Sep 17 00:00:00 2001 From: jayreddy519 Date: Tue, 17 Mar 2026 15:23:51 -0400 Subject: [PATCH 2/4] add events for publisher & subscrber --- .../enroll/ridp_rba/determination_requested.rb | 12 ++++++++++++ .../events/enroll/ridp_rba/get_record_requested.rb | 12 ++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 app/event_source/events/enroll/ridp_rba/determination_requested.rb create mode 100644 app/event_source/events/enroll/ridp_rba/get_record_requested.rb diff --git a/app/event_source/events/enroll/ridp_rba/determination_requested.rb b/app/event_source/events/enroll/ridp_rba/determination_requested.rb new file mode 100644 index 00000000000..1dcceed68ed --- /dev/null +++ b/app/event_source/events/enroll/ridp_rba/determination_requested.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +module Events + module Enroll + module RidpRba + # This class will register event for RIDP RBA determination request + class DeterminationRequested < EventSource::Event + publisher_path 'publishers.fdsh.ridp_rba_publisher' + end + end + end +end \ No newline at end of file diff --git a/app/event_source/events/enroll/ridp_rba/get_record_requested.rb b/app/event_source/events/enroll/ridp_rba/get_record_requested.rb new file mode 100644 index 00000000000..9b418023758 --- /dev/null +++ b/app/event_source/events/enroll/ridp_rba/get_record_requested.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +module Events + module Enroll + module RidpRba + # This class will register event for RIDP RBA get record request + class GetRecordRequested < EventSource::Event + publisher_path 'publishers.fdsh.ridp_rba_publisher' + end + end + end +end \ No newline at end of file From 557dfca87cd86b0b9f7f0b3af4142376656d1f88 Mon Sep 17 00:00:00 2001 From: jayreddy519 Date: Fri, 27 Mar 2026 08:21:09 -0400 Subject: [PATCH 3/4] comment out pending operation --- .../ridp_rba_determination_subscriber.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb b/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb index b7672b2fbed..5e1ca8e2a38 100644 --- a/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb +++ b/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb @@ -18,13 +18,14 @@ class RidpRbaDeterminationSubscriber handle_failure_response(job_id) logger.info 'FdshGateway::RidpRbaDeterminationSubscriber: on_determined acked and processed failure from fdsh_gateway' else - result = Operations::Fdsh::RidpRba::ProcessDeterminationResponse.new.call( - { - correlation_id: metadata.correlation_id, - metadata: metadata, - response: payload - } - ) + # TODO: Enroll operation that handles the CMS response coming back from FDSH + # result = Operations::Fdsh::RidpRba::ProcessDeterminationResponse.new.call( + # { + # correlation_id: metadata.correlation_id, + # metadata: metadata, + # response: payload + # } + # ) if result.success? logger.info "FdshGateway::RidpRbaDeterminationSubscriber: on_determined acked with success: #{result.success}" From 14a9153ffa7920c5d3fbfb55143116d9f7b88c8e Mon Sep 17 00:00:00 2001 From: Jay Reddy Date: Fri, 27 Mar 2026 10:02:19 -0400 Subject: [PATCH 4/4] Potential fix for pull request finding 'Useless assignment to local variable' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: Jay Reddy --- .../fdsh_gateway/ridp_rba_determination_subscriber.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb b/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb index 5e1ca8e2a38..7fa0be01fa9 100644 --- a/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb +++ b/app/event_source/subscribers/fdsh_gateway/ridp_rba_determination_subscriber.rb @@ -10,7 +10,6 @@ class RidpRbaDeterminationSubscriber subscribe(:on_determined) do |delivery_info, metadata, response| logger.info "FdshGateway::RidpRbaDeterminationSubscriber: invoked on_determined with delivery_info: #{delivery_info.inspect}, response: #{response.inspect}" - payload = JSON.parse(response, symbolize_names: true) job_id = metadata[:headers]['job_id'] status = metadata[:headers]['status'] @@ -19,6 +18,7 @@ class RidpRbaDeterminationSubscriber logger.info 'FdshGateway::RidpRbaDeterminationSubscriber: on_determined acked and processed failure from fdsh_gateway' else # TODO: Enroll operation that handles the CMS response coming back from FDSH + # payload = JSON.parse(response, symbolize_names: true) # result = Operations::Fdsh::RidpRba::ProcessDeterminationResponse.new.call( # { # correlation_id: metadata.correlation_id,