Skip to content

Commit 0f24217

Browse files
FEATURE: TMA-1672 Support sync process with generic datasource
1 parent 62ed7d5 commit 0f24217

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

lib/gooddata/models/process.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,13 @@ def deploy_simple_process(path, options = { client: GoodData.client, project: Go
118118
GoodData.logger.info("Deploying #{path}") if verbose
119119

120120
deployed_path = Process.upload_package(path, files_to_exclude, client: client, project: project)
121+
data_sources = options[:data_sources] || []
121122
data = {
122123
:process => {
123124
:name => deploy_name,
124125
:path => "/uploads/#{File.basename(deployed_path)}",
125-
:type => type
126+
:type => type,
127+
:dataSources => data_sources
126128
}
127129
}
128130

@@ -171,10 +173,12 @@ def deploy_from_appstore(path, options = { :client => GoodData.client, :project
171173
verbose = options[:verbose] || false
172174
GoodData.logger.info("Deploying #{path}") if verbose
173175

176+
data_sources = options[:data_sources] || []
174177
data = {
175178
process: {
176179
name: deploy_name,
177180
path: path,
181+
dataSources: data_sources,
178182
type: 'RUBY'
179183
}
180184
}
@@ -185,7 +189,7 @@ def deploy_from_appstore(path, options = { :client => GoodData.client, :project
185189
def deploy_component(data, options = { client: GoodData.client, project: GoodData.project })
186190
client, project = GoodData.get_client_and_project(options)
187191
data = { process: data } unless data[:process]
188-
data[:process] = GoodData::Helpers.symbolize_keys(data[:process]).select { |k| %i[type name component].include? k }
192+
data[:process] = GoodData::Helpers.symbolize_keys(data[:process]).select { |k| %i[type name component dataSources].include? k }
189193
data[:process][:component] = GoodData::Helpers.symbolize_keys(data[:process][:component]).select { |k| %i[name version configLocation config].include? k }
190194

191195
save(data, options)
@@ -266,7 +270,7 @@ def delete
266270
# @option options [String] :name Readable name of the process
267271
# @option options [Boolean] :verbose (false) Switch on verbose mode for detailed logging
268272
def deploy(path, options = {})
269-
Process.deploy(path, { client: client, process_id: process_id, :project => project, :name => name, :type => type }.merge(options))
273+
Process.deploy(path, { client: client, process_id: process_id, :project => project, :name => name, :type => type, :data_sources => data_sources }.merge(options))
270274
end
271275

272276
# Downloads the process from S3 in a zipped form.
@@ -326,6 +330,10 @@ def component
326330
process['component']
327331
end
328332

333+
def data_sources
334+
process['dataSources']
335+
end
336+
329337
# Determines whether the process is an ADDv2 component.
330338
# @return [Bool] True if the process is an ADDv2 component.
331339
def add_v2_component?

lib/gooddata/models/project.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,11 @@ def transfer_processes(from_project, to_project, options = {})
271271

272272
to_process = if process.path
273273
to_process.delete if to_process
274-
GoodData::Process.deploy_from_appstore(process.path, name: process.name, client: to_project.client, project: to_project)
274+
Process.deploy_from_appstore(process.path, name: process.name, client: to_project.client, project: to_project, data_sources: process.data_sources)
275275
elsif process.component
276276
to_process.delete if to_process
277277
process_hash = GoodData::Helpers::DeepMergeableHash[GoodData::Helpers.symbolize_keys(process.to_hash)].deep_merge(additional_hidden_params)
278-
GoodData::Process.deploy_component(process_hash, project: to_project, client: to_project.client)
278+
Process.deploy_component(process_hash, project: to_project, client: to_project.client)
279279
else
280280
Dir.mktmpdir('etl_transfer') do |dir|
281281
dir = Pathname(dir)
@@ -285,9 +285,9 @@ def transfer_processes(from_project, to_project, options = {})
285285
end
286286

287287
if to_process
288-
to_process.deploy(filename, type: process.type, name: process.name)
288+
to_process.deploy(filename, type: process.type, name: process.name, data_sources: process.data_sources)
289289
else
290-
to_project.deploy_process(filename, type: process.type, name: process.name)
290+
to_project.deploy_process(filename, type: process.type, name: process.name, data_sources: process.data_sources)
291291
end
292292
end
293293
end

0 commit comments

Comments
 (0)