From 28a01545e30e9abf8608294a22ff13b52aab3af1 Mon Sep 17 00:00:00 2001 From: Michael Hale Date: Thu, 2 Jul 2015 16:52:41 -0400 Subject: [PATCH] Implement remove_tags_from_stream --- lib/fog/aws/kinesis.rb | 2 +- .../kinesis/remove_tags_from_stream.rb | 49 +++++++++++++++++++ tests/requests/kinesis/stream_tests.rb | 9 ++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 lib/fog/aws/requests/kinesis/remove_tags_from_stream.rb diff --git a/lib/fog/aws/kinesis.rb b/lib/fog/aws/kinesis.rb index 21ab25778..884f12fb7 100644 --- a/lib/fog/aws/kinesis.rb +++ b/lib/fog/aws/kinesis.rb @@ -26,7 +26,7 @@ module Fog request :merge_shards request :add_tags_to_stream request :list_tags_for_stream - # request :remove_tags_from_stream + request :remove_tags_from_stream class Real include Fog::AWS::CredentialFetcher::ConnectionMethods diff --git a/lib/fog/aws/requests/kinesis/remove_tags_from_stream.rb b/lib/fog/aws/requests/kinesis/remove_tags_from_stream.rb new file mode 100644 index 000000000..318cf633a --- /dev/null +++ b/lib/fog/aws/requests/kinesis/remove_tags_from_stream.rb @@ -0,0 +1,49 @@ +module Fog + module AWS + class Kinesis + class Real + # Deletes tags from the specified Amazon Kinesis stream. + # + # ==== Options + # * StreamName<~String>: The name of the stream. + # * TagKeys<~Array>: A list of tag keys. + # ==== Returns + # * response<~Excon::Response>: + # + # ==== See Also + # https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RemoveTagsFromStream.html + # + def remove_tags_from_stream(options={}) + body = { + "StreamName" => options.delete("StreamName"), + "TagKeys" => options.delete("TagKeys") + }.reject{ |_,v| v.nil? } + + request({ + 'X-Amz-Target' => "Kinesis_#{@version}.RemoveTagsFromStream", + :body => body, + }.merge(options)) + end + end + + class Mock + def remove_tags_from_stream(options={}) + stream_name = options.delete("StreamName") + tags = options.delete("TagKeys") + + unless stream = data[:kinesis_streams].detect{ |s| s["StreamName"] == stream_name } + raise 'unknown stream' + end + + stream["Tags"] = stream["Tags"].delete_if { |k,_| tags.include?(k) } + + response = Excon::Response.new + response.status = 200 + response.body = "" + response + end + end + + end + end +end diff --git a/tests/requests/kinesis/stream_tests.rb b/tests/requests/kinesis/stream_tests.rb index 9f8bed15e..82b23ae03 100644 --- a/tests/requests/kinesis/stream_tests.rb +++ b/tests/requests/kinesis/stream_tests.rb @@ -227,6 +227,15 @@ Shindo.tests('AWS::Kinesis | stream requests', ['aws', 'kinesis']) do end end + tests("#remove_tags_from_stream").returns("") do + Fog::AWS[:kinesis].remove_tags_from_stream("StreamName" => @stream_id, "TagKeys" => %w[b]).body.tap do + returns({"a" => "1"}) { + body = Fog::AWS[:kinesis].list_tags_for_stream("StreamName" => @stream_id).body + body["Tags"].inject({}){ |m, tag| m.merge(tag["Key"] => tag["Value"]) } + } + end + end + tests("#delete_stream").returns("") do Fog::AWS[:kinesis].delete_stream("StreamName" => @stream_id).body end