2011-09-16 19:59:28 -04:00
|
|
|
module Fog
|
|
|
|
module Parsers
|
|
|
|
module AWS
|
|
|
|
module EMR
|
|
|
|
|
|
|
|
class DescribeJobFlows < Fog::Parsers::Base
|
|
|
|
|
|
|
|
def reset
|
|
|
|
@context = []
|
|
|
|
@contexts = ['BootstrapActions', 'ExecutionStatusDetail', 'Instances', 'Steps', 'InstanceGroups', 'Args']
|
|
|
|
|
|
|
|
@response = { 'JobFlows' => [] }
|
|
|
|
@bootstrap_actions = {'ScriptBootstrapActionConfig' => {'Args' => []}}
|
|
|
|
@instance = { 'InstanceGroups' => [], 'Placement' => {}}
|
|
|
|
@step = {
|
|
|
|
'ExecutionStatusDetail' => {},
|
|
|
|
'StepConfig' => {
|
|
|
|
'HadoopJarStepConfig' => {
|
|
|
|
'Args' => [],
|
|
|
|
'Properties' => []
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@flow = {'Instances' => [], 'ExecutionStatusDetail' => {}, 'BootstrapActions' => [], 'Steps' => []}
|
|
|
|
@instance_group_detail = {}
|
|
|
|
@execution_status_detail = {}
|
|
|
|
end
|
|
|
|
|
|
|
|
def start_element(name, attrs = [])
|
|
|
|
super
|
|
|
|
if @contexts.include?(name)
|
|
|
|
@context.push(name)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def end_element(name)
|
|
|
|
if @context.last == 'BootstrapActions'
|
|
|
|
case name
|
|
|
|
when 'Name'
|
|
|
|
@bootstrap_actions[name] = value
|
|
|
|
when 'Path'
|
|
|
|
@bootstrap_actions['ScriptBootstrapActionConfig'][name] = value
|
|
|
|
when 'BootstrapActions'
|
|
|
|
@flow['BootstrapActions'] = @bootstrap_actions
|
|
|
|
@bootstrap_actions = {'ScriptBootstrapActionConfig' => {'Args' => []}}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if @context.last == 'ExecutionStatusDetail'
|
|
|
|
case name
|
|
|
|
when 'CreationDateTime', 'EndDateTime', 'LastStateChangeReason',
|
|
|
|
'ReadyDateTime', 'StartDateTime', 'State'
|
|
|
|
@execution_status_detail[name] = value
|
|
|
|
when 'ExecutionStatusDetail'
|
|
|
|
if @context.include?('Steps')
|
|
|
|
@step['ExecutionStatusDetail'] = @execution_status_detail
|
|
|
|
else
|
|
|
|
@flow['ExecutionStatusDetail'] = @execution_status_detail
|
|
|
|
end
|
|
|
|
@execution_status_detail = {}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if @context.last == 'Instances'
|
|
|
|
case name
|
|
|
|
when 'AvailabilityZone'
|
|
|
|
@instance['Placement'][name] = value
|
|
|
|
when 'Ec2KeyName', 'HadoopVersion', 'InstanceCount', 'KeepJobFlowAliveWhenNoSteps',
|
|
|
|
'MasterInstanceId', 'MasterInstanceType', 'MasterPublicDnsName', 'NormalizedInstanceHours',
|
|
|
|
'SlaveInstanceType', 'TerminationProtected'
|
|
|
|
@instance[name] = value
|
|
|
|
when 'member'
|
|
|
|
@instance['InstanceGroups'] << @instance_group_detail
|
|
|
|
@instance_group_detail = {}
|
|
|
|
when 'Instances'
|
|
|
|
@flow['Instances'] = @instance
|
|
|
|
@instance = { 'InstanceGroups' => [], 'Placement' => {}}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2011-11-03 13:57:21 -04:00
|
|
|
if @context.last == 'InstanceGroups'
|
|
|
|
case name
|
|
|
|
when 'member'
|
|
|
|
@instance['InstanceGroups'] << @instance_group_detail
|
|
|
|
@instance_group_detail = {}
|
|
|
|
else
|
|
|
|
@instance_group_detail[name] = value
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2011-09-16 19:59:28 -04:00
|
|
|
if @context.last == 'Args'
|
|
|
|
if name == 'member'
|
|
|
|
if @context.include?('Steps')
|
|
|
|
@step['StepConfig']['HadoopJarStepConfig']['Args'] << value.strip
|
|
|
|
else
|
|
|
|
@bootstrap_actions['ScriptBootstrapActionConfig']['Args'] << value
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if @context.last == 'Steps'
|
|
|
|
case name
|
|
|
|
when 'ActionOnFailure', 'Name'
|
|
|
|
@step[name] = value
|
|
|
|
when 'Jar', 'MainClass'
|
|
|
|
@step['StepConfig']['HadoopJarStepConfig'][name] = value
|
|
|
|
when 'member'
|
|
|
|
@flow['Steps'] << @step
|
|
|
|
@step = {
|
|
|
|
'ExecutionStatusDetail' => {},
|
|
|
|
'StepConfig' => {
|
|
|
|
'HadoopJarStepConfig' => {
|
|
|
|
'Args' => [],
|
|
|
|
'Properties' => []
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if @context.empty?
|
|
|
|
case name
|
|
|
|
when 'AmiVersion', 'JobFlowId', 'LogUri', 'Name'
|
|
|
|
@flow[name] = value
|
|
|
|
when 'member'
|
2011-11-03 13:57:21 -04:00
|
|
|
@response['JobFlows'] << @flow
|
2011-09-16 19:59:28 -04:00
|
|
|
@flow = {'Instances' => [], 'ExecutionStatusDetail' => {}, 'BootstrapActions' => [], 'Steps' => []}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if @context.last == name
|
|
|
|
@context.pop
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|