Method: GoodData::Project.transfer_output_stage

Defined in:
lib/gooddata/models/project.rb

.transfer_output_stage(from_project, to_project, options) ⇒ Object



199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# File 'lib/gooddata/models/project.rb', line 199

def transfer_output_stage(from_project, to_project, options)
  from_prj_output_stage = from_project.add.output_stage
  output_stage_prefix = options[:ads_output_stage_prefix] || from_prj_output_stage.output_stage_prefix
  output_stage_uri = options[:ads_output_stage_uri] || from_prj_output_stage.schema
  if from_project.processes.any? { |p| p.type == :dataload }
    if to_project.processes.any? { |p| p.type == :dataload }
      to_project.add.output_stage.schema = output_stage_uri
      to_project.add.output_stage.output_stage_prefix = output_stage_prefix
      to_project.add.output_stage.save
    else
      from_server = from_project.client.connection.server.url
      to_server = to_project.client.connection.server.url
      if from_server != to_server && options[:ads_output_stage_uri].nil?
        raise "Cannot transfer output stage from #{from_server} to #{to_server}. " \
              'It is not possible to transfer output stages between ' \
              'different domains. Please specify an address of an output ' \
              'stage that is in the same domain as the target project ' \
              'using the "ads_output_stage_uri" parameter.'
      end

      to_project.add.output_stage = GoodData::AdsOutputStage.create(
        client: to_project.client,
        ads: output_stage_uri,
        client_id: from_prj_output_stage.client_id,
        output_stage_prefix: output_stage_prefix,
        project: to_project
      )
    end
  end
end