class GoodData::LCM2::CollectSegments

Constants

DESCRIPTION
PARAMS
RESULT_HEADER

Public Class Methods

call(params) click to toggle source
# File lib/gooddata/lcm/actions/collect_segments.rb, line 35
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!

  # Return results
  {
    results: segments,
    params: {
      segments: segments
    }
  }
end