def call(params)
data_product = params.data_product
data_product_segments = data_product.segments
segment_names = data_product_segments.map(&:segment_id)
params.gdc_logger.debug("Domain segments: #{segment_names}")
if params.segments_filter
params.gdc_logger.info("Segments filter: #{params.segments_filter}")
data_product_segments.select! do |segment|
params.segments_filter.include?(segment.segment_id)
end
end
segments = data_product_segments.pmap do |segment|
project = nil
begin
project = segment.master_project
rescue RestClient::BadRequest => e
raise "Failed to retrieve master project for segment #{segment.id}. Error: #{e}"
end
raise "Master project for segment #{segment.id} doesn't exist." unless project
{
segment_id: segment.segment_id,
segment: segment,
development_pid: project.pid,
driver: project.driver.downcase,
master_name: project.title,
segment_master: project,
uri: segment.uri
}
end
segments.compact!
{
results: segments,
params: {
segments: segments
}
}
end