class GoodData::LCM2::CollectMeta

Constants

DESCRIPTION
PARAMS

Public Class Methods

call(params) click to toggle source
# File lib/gooddata/lcm/actions/collect_meta.rb, line 36
def call(params)
  results = []

  development_client = params.development_client
  segments_to_tags = Helpers.segment_production_tags(params.segments)
  transfer_all = GoodData::Helpers.to_boolean(params.transfer_all)

  synchronize = params.synchronize.pmap do |info|
    from = info.from
    from_project = development_client.projects(from) || fail("Invalid 'from' project specified - '#{from}'")

    segment_tags = segments_to_tags[info.segment]
    production_tags = Helpers.parse_production_tags(params.production_tags || params.production_tag, segment_tags)

    if transfer_all || production_tags.empty?
      old_dashboards = GoodData::Dashboard.all(
        project: from_project,
        client: development_client
      )
      kpi_dashboards = MdObject.query('analyticalDashboard', MdObject, client: development_client, project: from_project)
      kpi_dashboard_plugin = MdObject.query('dashboardPlugin', MdObject, client: development_client, project: from_project)
      kpi_date_filter_config = MdObject.query('dateFilterConfig', MdObject, client: development_client, project: from_project)
      objects = old_dashboards.to_a + kpi_dashboards.to_a + kpi_dashboard_plugin.to_a + kpi_date_filter_config.to_a
    else
      objects = GoodData::Dashboard.find_by_tag(
        production_tags,
        project: from_project,
        client: development_client
      )
    end

    info[:transfer_uris] ||= []
    info[:transfer_uris] += objects.map(&:uri)

    results += objects.map do |uri|
      {
        project: from,
        transfer_uri: uri
      }
    end

    info
  end

  {
    results: results,
    params: {
      synchronize: synchronize
    }
  }
end