| Index: boto/emr/emrobject.py
 | 
| diff --git a/boto/emr/emrobject.py b/boto/emr/emrobject.py
 | 
| index 0ffe29285e6a3459169f853bfc1ee4da8fa394cd..3430b987983d915357cef8cb7094d583f01ceed6 100644
 | 
| --- a/boto/emr/emrobject.py
 | 
| +++ b/boto/emr/emrobject.py
 | 
| @@ -1,5 +1,6 @@
 | 
|  # Copyright (c) 2010 Spotify AB
 | 
|  # Copyright (c) 2010 Jeremy Thurgood <firxen+boto@gmail.com>
 | 
| +# Copyright (c) 2010-2011 Yelp
 | 
|  #
 | 
|  # Permission is hereby granted, free of charge, to any person obtaining a
 | 
|  # copy of this software and associated documentation files (the
 | 
| @@ -44,6 +45,12 @@ class EmrObject(object):
 | 
|  class RunJobFlowResponse(EmrObject):
 | 
|      Fields = set(['JobFlowId'])
 | 
|  
 | 
| +class AddInstanceGroupsResponse(EmrObject):
 | 
| +    Fields = set(['InstanceGroupIds', 'JobFlowId'])
 | 
| +    
 | 
| +class ModifyInstanceGroupsResponse(EmrObject):
 | 
| +    Fields = set(['RequestId'])
 | 
| +    
 | 
|  
 | 
|  class Arg(EmrObject):
 | 
|      def __init__(self, connection=None):
 | 
| @@ -54,19 +61,37 @@ class Arg(EmrObject):
 | 
|  
 | 
|  
 | 
|  class BootstrapAction(EmrObject):
 | 
| -    Fields = set(['Name',
 | 
| -                  'Args',
 | 
| -                  'Path'])
 | 
| +    Fields = set([
 | 
| +        'Args',
 | 
| +        'Name',
 | 
| +        'Path',
 | 
| +    ])
 | 
| +
 | 
| +    def startElement(self, name, attrs, connection):
 | 
| +        if name == 'Args':
 | 
| +            self.args = ResultSet([('member', Arg)])
 | 
| +            return self.args
 | 
| +
 | 
| +
 | 
| +class KeyValue(EmrObject):
 | 
| +    Fields = set([
 | 
| +        'Key',
 | 
| +        'Value',
 | 
| +    ])
 | 
|  
 | 
|  
 | 
|  class Step(EmrObject):
 | 
| -    Fields = set(['Name',
 | 
| -                  'ActionOnFailure',
 | 
| -                  'CreationDateTime',
 | 
| -                  'StartDateTime',
 | 
| -                  'EndDateTime',
 | 
| -                  'LastStateChangeReason',
 | 
| -                  'State'])
 | 
| +    Fields = set([
 | 
| +        'ActionOnFailure',
 | 
| +        'CreationDateTime',
 | 
| +        'EndDateTime',
 | 
| +        'Jar',
 | 
| +        'LastStateChangeReason',
 | 
| +        'MainClass',
 | 
| +        'Name',
 | 
| +        'StartDateTime',
 | 
| +        'State',
 | 
| +    ])
 | 
|  
 | 
|      def __init__(self, connection=None):
 | 
|          self.connection = connection
 | 
| @@ -76,49 +101,58 @@ class Step(EmrObject):
 | 
|          if name == 'Args':
 | 
|              self.args = ResultSet([('member', Arg)])
 | 
|              return self.args
 | 
| +        if name == 'Properties':
 | 
| +            self.properties = ResultSet([('member', KeyValue)])
 | 
| +            return self.properties
 | 
|  
 | 
|  
 | 
|  class InstanceGroup(EmrObject):
 | 
| -    Fields = set(['Name',
 | 
| -                  'CreationDateTime',
 | 
| -                  'InstanceRunningCount',
 | 
| -                  'StartDateTime',
 | 
| -                  'ReadyDateTime',
 | 
| -                  'State',
 | 
| -                  'EndDateTime',
 | 
| -                  'InstanceRequestCount',
 | 
| -                  'InstanceType',
 | 
| -                  'Market',
 | 
| -                  'LastStateChangeReason',
 | 
| -                  'InstanceRole',
 | 
| -                  'InstanceGroupId',
 | 
| -                  'LaunchGroup',
 | 
| -                  'SpotPrice'])
 | 
| +    Fields = set([
 | 
| +        'BidPrice',
 | 
| +        'CreationDateTime',
 | 
| +        'EndDateTime',
 | 
| +        'InstanceGroupId',
 | 
| +        'InstanceRequestCount',
 | 
| +        'InstanceRole',
 | 
| +        'InstanceRunningCount',
 | 
| +        'InstanceType',
 | 
| +        'LastStateChangeReason',
 | 
| +        'LaunchGroup',
 | 
| +        'Market',
 | 
| +        'Name',
 | 
| +        'ReadyDateTime',
 | 
| +        'StartDateTime',
 | 
| +        'State',
 | 
| +    ])
 | 
|  
 | 
|  
 | 
|  class JobFlow(EmrObject):
 | 
| -    Fields = set(['CreationDateTime',
 | 
| -                  'StartDateTime',
 | 
| -                  'State',
 | 
| -                  'EndDateTime',
 | 
| -                  'Id',
 | 
| -                  'InstanceCount',
 | 
| -                  'JobFlowId',
 | 
| -                  'LogUri',
 | 
| -                  'MasterPublicDnsName',
 | 
| -                  'MasterInstanceId',
 | 
| -                  'Name',
 | 
| -                  'Placement',
 | 
| -                  'RequestId',
 | 
| -                  'Type',
 | 
| -                  'Value',
 | 
| -                  'AvailabilityZone',
 | 
| -                  'SlaveInstanceType',
 | 
| -                  'MasterInstanceType',
 | 
| -                  'Ec2KeyName',
 | 
| -                  'InstanceCount',
 | 
| -                  'KeepJobFlowAliveWhenNoSteps',
 | 
| -                  'LastStateChangeReason'])
 | 
| +    Fields = set([
 | 
| +        'AvailabilityZone',
 | 
| +        'CreationDateTime',
 | 
| +        'Ec2KeyName',
 | 
| +        'EndDateTime',
 | 
| +        'HadoopVersion',
 | 
| +        'Id',
 | 
| +        'InstanceCount',
 | 
| +        'JobFlowId',
 | 
| +        'KeepJobFlowAliveWhenNoSteps',
 | 
| +        'LastStateChangeReason',
 | 
| +        'LogUri',
 | 
| +        'MasterInstanceId',
 | 
| +        'MasterInstanceType',
 | 
| +        'MasterPublicDnsName',
 | 
| +        'Name',
 | 
| +        'NormalizedInstanceHours',
 | 
| +        'ReadyDateTime',
 | 
| +        'RequestId',
 | 
| +        'SlaveInstanceType',
 | 
| +        'StartDateTime',
 | 
| +        'State',
 | 
| +        'TerminationProtected',
 | 
| +        'Type',
 | 
| +        'Value',
 | 
| +    ])
 | 
|  
 | 
|      def __init__(self, connection=None):
 | 
|          self.connection = connection
 | 
| @@ -138,4 +172,3 @@ class JobFlow(EmrObject):
 | 
|              return self.bootstrapactions
 | 
|          else:
 | 
|              return None
 | 
| -
 | 
| 
 |