Tags#create implemented

This commit is contained in:
Rodrigo Estebanez 2013-05-28 20:28:06 +02:00
parent 4b0ee24ea5
commit 273d951f26
3 changed files with 41 additions and 0 deletions

View File

@ -139,6 +139,7 @@ module Fog
request :undeploy
request :get_metadata
request :delete_metadata
request :configure_metadata
class Mock

View File

@ -22,6 +22,10 @@ module Fog
rescue Fog::Errors::NotFound
nil
end
def create(opts)
service.configure_metadata(opts.merge(href: href))
end
end
end
end

View File

@ -0,0 +1,36 @@
module Fog
module Vcloud
class Compute
class Real
def configure_metadata(opts= {})
valid_opts = [:key, :value, :href]
unless valid_opts.all? { |opt| opts.has_key?(opt) }
raise ArgumentError.new("Required data missing: #{(valid_opts - opts.keys).map(&:inspect).join(", ")}")
end
body = <<EOF
<Metadata
type="application/vnd.vmware.vcloud.metadata+xml"
xmlns="http://www.vmware.com/vcloud/v1.5">
<MetadataEntry>
<Key>#{opts[:key]}</Key>
<Value>#{opts[:value]}</Value>
</MetadataEntry>
</Metadata>
EOF
request(
:body => body,
:expects => 202, # it returns a task object
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.metadata+xml' },
:method => 'POST',
:uri => opts[:href],
:parse => true
)
end
end
end
end
end