mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Tags#create implemented
This commit is contained in:
parent
4b0ee24ea5
commit
273d951f26
3 changed files with 41 additions and 0 deletions
|
@ -139,6 +139,7 @@ module Fog
|
|||
request :undeploy
|
||||
request :get_metadata
|
||||
request :delete_metadata
|
||||
request :configure_metadata
|
||||
|
||||
class Mock
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
36
lib/fog/vcloud/requests/compute/configure_metadata.rb
Normal file
36
lib/fog/vcloud/requests/compute/configure_metadata.rb
Normal 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
|
Loading…
Reference in a new issue