1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/lib/fog/aws/requests/kinesis/create_stream.rb
2015-07-02 18:19:53 -04:00

70 lines
2.2 KiB
Ruby

module Fog
module AWS
class Kinesis
class Real
# Creates a Amazon Kinesis stream.
#
# ==== Options
# * ShardCount<~Number>: The number of shards that the stream will use.
# * StreamName<~String>: A name to identify the stream.
# ==== Returns
# * response<~Excon::Response>:
#
# ==== See Also
# https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html
#
def create_stream(options={})
body = {
"ShardCount" => options.delete("ShardCount") || 1,
"StreamName" => options.delete("StreamName")
}.reject{ |_,v| v.nil? }
request({
'X-Amz-Target' => "Kinesis_#{@version}.CreateStream",
:body => body,
}.merge(options))
end
end
class Mock
def create_stream(options={})
stream_name = options.delete("StreamName")
shard_count = options.delete("ShardCount") || 1
stream_arn = "arn:aws:kinesis:#{@region}:#{@account_id}:stream/#{stream_name}"
if data[:kinesis_streams].detect{ |s| s["StreamName"] == stream_name }
raise Fog::AWS::Kinesis::ResourceInUse.new("Stream #{stream_name} under account #{@account_id} already exists.")
end
shards = (0...shard_count).map do |shard|
{
"HashKeyRange"=>{
"EndingHashKey"=>"340282366920938463463374607431768211455",
"StartingHashKey"=>"0"
},
"SequenceNumberRange"=>{
"StartingSequenceNumber"=> next_sequence_number
},
"ShardId"=>next_shard_id,
"Records" => []
}
end
data[:kinesis_streams] = [{
"HasMoreShards" => false,
"StreamARN" => stream_arn,
"StreamName" => stream_name,
"StreamStatus" => "ACTIVE",
"Shards" => shards,
"Tags" => {}
}]
response = Excon::Response.new
response.status = 200
response.body = ""
response
end
end
end
end
end