diff --git a/lib/fog/glesys/compute.rb b/lib/fog/glesys/compute.rb index e5cbba62c..9f05b167d 100644 --- a/lib/fog/glesys/compute.rb +++ b/lib/fog/glesys/compute.rb @@ -19,6 +19,7 @@ module Fog # Server request :create + request :edit request :destroy request :list_servers request :server_details diff --git a/lib/fog/glesys/models/compute/server.rb b/lib/fog/glesys/models/compute/server.rb index b940f45e3..1d108cdb7 100644 --- a/lib/fog/glesys/models/compute/server.rb +++ b/lib/fog/glesys/models/compute/server.rb @@ -53,28 +53,39 @@ module Fog end def save - raise "Operation not supported" if self.identity - requires :hostname, :rootpassword + if self.identity + options = { + :serverid => self.identity, + :disksize => disksize, + :memorysize => memorysize, + :cpucores => cpucores, + :hostname => hostname, + :bandwidth => bandwidth + } + data = service.edit(options) + else + requires :hostname, :rootpassword - options = { - :datacenter => datacenter || "Falkenberg", - :platform => platform || "OpenVz", - :hostname => hostname, - :templatename => templatename || "Debian 7.0 64-bit", - :disksize => disksize || "10", - :memorysize => memorysize || "512", - :cpucores => cpucores || "1", - :rootpassword => rootpassword, - :transfer => transfer || "500", - :bandwidth => bandwidth || "10", - } + options = { + :datacenter => datacenter || "Falkenberg", + :platform => platform || "OpenVz", + :hostname => hostname, + :templatename => templatename || "Debian 7.0 64-bit", + :disksize => disksize || "10", + :memorysize => memorysize || "512", + :cpucores => cpucores || "1", + :rootpassword => rootpassword, + :transfer => transfer || "500", + :bandwidth => bandwidth || "10", + } - # optional options when creating a server: - [:ip, :ipv6, :description].each do |k| - options[k] = attributes[k] if attributes[k] + # optional options when creating a server: + [:ip, :ipv6, :description].each do |k| + options[k] = attributes[k] if attributes[k] + end + + data = service.create(options) end - - data = service.create(options) merge_attributes(data.body['response']['server']) data.status == 200 ? true : false end diff --git a/lib/fog/glesys/requests/compute/edit.rb b/lib/fog/glesys/requests/compute/edit.rb new file mode 100644 index 000000000..4ccca1714 --- /dev/null +++ b/lib/fog/glesys/requests/compute/edit.rb @@ -0,0 +1,11 @@ +module Fog + module Compute + class Glesys + class Real + def edit(options = {}) + request('server/edit/',options) + end + end + end + end +end diff --git a/tests/glesys/requests/compute/helper.rb b/tests/glesys/requests/compute/helper.rb index ed096e5e1..2f58fcf74 100644 --- a/tests/glesys/requests/compute/helper.rb +++ b/tests/glesys/requests/compute/helper.rb @@ -85,6 +85,18 @@ class Glesys } ) + EDIT = DETAILS.merge( + 'debug' => { + 'input' => { + 'serverid' => Fog::Nullable::String, + 'disksize' => String, + 'memorysize' => String, + 'cpucores' => String, + 'bandwidth' => String + } + } + ) + STATUS = { 'debug' => { 'input' => { diff --git a/tests/glesys/requests/compute/server_tests.rb b/tests/glesys/requests/compute/server_tests.rb index 4cc789325..6cb693f56 100644 --- a/tests/glesys/requests/compute/server_tests.rb +++ b/tests/glesys/requests/compute/server_tests.rb @@ -94,11 +94,26 @@ Shindo.tests('Fog::Compute[:glesys] | server requests', ['glesys']) do :transfer => "500", :bandwidth => "10" ) - @serverid = vm.body['response']['server']['serverid'] vm.body['response'] end + unless Fog.mocking? + Fog::Compute[:glesys].servers.get(@serverid).wait_for { ready? } + end + + tests("#edit #{@serverid}").formats(Glesys::Compute::Formats::Servers::EDIT) do + pending if Fog.mocking? + vm = Fog::Compute[:glesys].edit( + :serverid => @serverid, + :disksize => "10", + :memorysize => "512", + :cpucores => "1", + :bandwidth => "10" + ) + vm.body['response'] + end + tests("#server_details(#{@serverid})").formats(Glesys::Compute::Formats::Servers::DETAILS) do pending if Fog.mocking? Fog::Compute[:glesys].server_details(@serverid).body['response']