def describe_volumes_modifications(filters = {})
response = Excon::Response.new
modification_set = self.data[:volume_modifications].values
aliases = {
'volume-id' => 'volumeId',
'modification-state' => 'modificationState',
'target-size' => 'targetSize',
'target-iops' => 'targetIops',
'target-volume-type' => 'targetVolumeType',
'original-size' => 'originalSize',
'original-iops' => 'originalIops',
'original-volume-type' => 'originalVolumeType',
'start-time' => 'startTime'
}
attribute_aliases = {
'targetSize' => 'size',
'targetVolumeType' => 'volumeType',
'targetIops' => 'iops'
}
for filter_key, filter_value in filters
aliased_key = aliases[filter_key]
modification_set = modification_set.reject { |m| ![*filter_value].include?(m[aliased_key]) }
end
modification_set.each do |modification|
case modification['modificationState']
when 'modifying'
volume = self.data[:volumes][modification['volumeId']]
modification['modificationState'] = 'optimizing'
%w(targetSize targetIops targetVolumeType).each do |attribute|
aliased_attribute = attribute_aliases[attribute]
volume[aliased_attribute] = modification[attribute] if modification[attribute]
end
self.data[:volumes][modification['volumeId']] = volume
when 'optimizing'
modification['modificationState'] = 'completed'
modification['endTime'] = Time.now
end
end
response.body = {'requestId' => Fog::AWS::Mock.request_id, 'volumeModificationSet' => modification_set}
response
end