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