1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb
2013-02-17 15:27:41 -05:00

72 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