mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
73 lines
2 KiB
Ruby
73 lines
2 KiB
Ruby
|
module Fog
|
||
|
module AWS
|
||
|
class DataPipeline
|
||
|
|
||
|
class Real
|
||
|
|
||
|
# Put raw pipeline definition JSON
|
||
|
# http://docs.aws.amazon.com/datapipeline/latest/APIReference/API_PutPipelineDefinition.html
|
||
|
# ==== Parameters
|
||
|
# * PipelineId <~String> - The ID of the pipeline
|
||
|
# * PipelineObjects <~String> - Objects in the pipeline
|
||
|
# ==== Returns
|
||
|
# * response<~Excon::Response>:
|
||
|
# * body<~Hash>:
|
||
|
def put_pipeline_definition(id, objects)
|
||
|
params = {
|
||
|
'pipelineId' => id,
|
||
|
'pipelineObjects' => transform_objects(objects),
|
||
|
}
|
||
|
|
||
|
response = request({
|
||
|
:body => Fog::JSON.encode(params),
|
||
|
:headers => { 'X-Amz-Target' => 'DataPipeline.PutPipelineDefinition' },
|
||
|
})
|
||
|
|
||
|
Fog::JSON.decode(response.body)
|
||
|
end
|
||
|
|
||
|
# Take a list of pipeline object hashes as specified in the Data Pipeline JSON format
|
||
|
# and transform it into the format expected by the API
|
||
|
private
|
||
|
def transform_objects(objects)
|
||
|
output = []
|
||
|
|
||
|
objects.each do |object|
|
||
|
new_object = {}
|
||
|
new_object['id'] = object.delete('id')
|
||
|
new_object['name'] = object.delete('name') || new_object['id']
|
||
|
|
||
|
new_object['fields'] = []
|
||
|
object.each do |key, value|
|
||
|
if value.is_a?(Hash)
|
||
|
new_object['fields'] << { 'key' => key, 'refValue' => value['ref'] }
|
||
|
|
||
|
elsif value.is_a?(Array)
|
||
|
value.each do |v|
|
||
|
new_object['fields'] << { 'key' => key, 'stringValue' => v }
|
||
|
end
|
||
|
|
||
|
else
|
||
|
new_object['fields'] << { 'key' => key, 'stringValue' => value }
|
||
|
|
||
|
end
|
||
|
end
|
||
|
|
||
|
output << new_object
|
||
|
end
|
||
|
|
||
|
output
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
class Mock
|
||
|
def put_pipeline_definition(id, objects)
|
||
|
Fog::Mock.not_implemented
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
end
|