# File lib/fog/vcloud/models/compute/server.rb, line 177
        def save
          unless persisted?
            #Lame ...
            raise RuntimeError, "Should not be here"
          else
            if on?
              if @changed
                raise RuntimeError, "Can't save cpu, name or memory changes while the VM is on."
              end
            end

            if @update_password
                guest_customization[:AdminPassword] = @update_password.to_s
                service.configure_vm_password(guest_customization)
                wait_for { ready? }
            end

            if @update_cpu_value
              cpu_mess["rasd:VirtualQuantity""rasd:VirtualQuantity"] = @update_cpu_value.to_s
              service.configure_vm_cpus(cpu_mess)
              wait_for { ready? }
            end

            if @update_memory_value
              memory_mess["rasd:VirtualQuantity""rasd:VirtualQuantity"] = @update_memory_value.to_s
              service.configure_vm_memory(memory_mess)
              wait_for { ready? }
            end

            if @disk_change == :deleted
              data = disk_mess.delete_if do |vh|
                vh['rasd:ResourceType''rasd:ResourceType'] == '17' &&
                  vh['rasd:AddressOnParent''rasd:AddressOnParent'].to_s == @remove_disk.to_s
              end
              service.configure_vm_disks(self.href, data)
              wait_for { ready? }
            end
            if @disk_change == :added
              data = disk_mess
              data << @add_disk
              service.configure_vm_disks(self.href, data)
              wait_for { ready? }
            end
            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]
              service.configure_vm_name_description(edit_uri, self.name, self.description)
              wait_for { ready? }
            end
          end
          reset_tracking
          true
        end