diff --git a/lib/fog/compute/models/vcloud/server.rb b/lib/fog/compute/models/vcloud/server.rb index 95cbdec9a..f78b8276e 100644 --- a/lib/fog/compute/models/vcloud/server.rb +++ b/lib/fog/compute/models/vcloud/server.rb @@ -153,6 +153,16 @@ module Fog true end + def description=(description) + @description_changed = true unless attributes[:description] == description || attributes[:description] == nil + attributes[:description] = description + end + + def name=(name) + @name_changed = true unless attributes[:name] == name || attributes[:name] == nil + attributes[:name] = name + end + def reload reset_tracking super @@ -184,7 +194,11 @@ module Fog data << @add_disk connection.configure_vm_disks(vm_href, data) end - #connection.configure_vapp( href, _compose_vapp_data ) + if @name_changed || @description_changed + edit_uri = links.select {|i| i[:rel] == 'edit'} + edit_uri = edit_uri.kind_of?(Array) ? edit_uri.flatten[0][:href] : edit_uri[:href] + connection.configure_vm_name_description(edit_uri, self.name, self.description) + end end reset_tracking true @@ -216,6 +230,8 @@ module Fog @disk_change = false @changed = false @update_memory_value = nil + @name_changed = false + @description_changed = nil end def _compose_vapp_data diff --git a/lib/fog/compute/requests/vcloud/configure_vm_name_description.rb b/lib/fog/compute/requests/vcloud/configure_vm_name_description.rb new file mode 100644 index 000000000..898d71e28 --- /dev/null +++ b/lib/fog/compute/requests/vcloud/configure_vm_name_description.rb @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +module Fog + module Vcloud + class Compute + class Real + + def configure_vm_name_description(edit_href, name, description) + + body = < + + #{description} + +EOF + + request( + :body => body, + :expects => 202, + :headers => {'Content-Type' => "application/vnd.vmware.vcloud.vApp+xml"}, + :method => 'PUT', + :uri => edit_href, + :parse => true + ) + end + + end + + end + end +end diff --git a/lib/fog/compute/vcloud.rb b/lib/fog/compute/vcloud.rb index 286f3d967..a6cb242b7 100644 --- a/lib/fog/compute/vcloud.rb +++ b/lib/fog/compute/vcloud.rb @@ -90,6 +90,7 @@ module Fog request :configure_network_ip request :configure_vapp request :configure_vm_memory + request :configure_vm_name_description request :configure_vm_disks request :delete_vapp request :get_catalog diff --git a/tests/compute/models/vcloud/servers_tests.rb b/tests/compute/models/vcloud/servers_tests.rb index d136b114f..073f8fba8 100644 --- a/tests/compute/models/vcloud/servers_tests.rb +++ b/tests/compute/models/vcloud/servers_tests.rb @@ -17,6 +17,15 @@ Shindo.tests("Vcloud::Compute | servers", ['vcloud']) do @svr.on? end + tests("#svr.description(\"testing\")").returns("testing") do + pending if Fog.mocking? + @svr.wait_for { ready? } + @svr.description = "testing" + @svr.save + @svr.wait_for { ready? } + @svr.description + end + # Power off only stops the OS, doesn't free up resources. #undeploy is for this. tests("#svr.undeploy()").returns(true) do pending if Fog.mocking?