diff --git a/lib/fog/serverlove/requests/compute/create_server.rb b/lib/fog/serverlove/requests/compute/create_server.rb new file mode 100644 index 000000000..cd044ab2b --- /dev/null +++ b/lib/fog/serverlove/requests/compute/create_server.rb @@ -0,0 +1,33 @@ +module Fog + module Compute + class Serverlove + class Real + + def create_server(options) + return nil if options.empty? || options.nil? + request(:method => "post", :path => "/servers/create", :expects => 200, :options => options) + end + + end + + class Mock + + def create_server(options = {}) + response = Excon::Response.new + response.status = 200 + + data = { + 'name' => options['name'] || 'Test', + 'cpu' => options['cpu'] || 1000, + 'persistent' => options['persistent'] || false, + 'vnc:password' => options['vnc:password'] || 'T35tServER!' + } + + response.body = data + response + end + + end + end + end +end diff --git a/lib/fog/serverlove/requests/compute/destroy_server.rb b/lib/fog/serverlove/requests/compute/destroy_server.rb new file mode 100644 index 000000000..692b8d22a --- /dev/null +++ b/lib/fog/serverlove/requests/compute/destroy_server.rb @@ -0,0 +1,13 @@ +module Fog + module Compute + class Serverlove + class Real + + def destroy_server(server_id) + request(:method => "post", :path => "/servers/#{server_id}/destroy", :expects => 204) + end + + end + end + end +end \ No newline at end of file diff --git a/lib/fog/serverlove/requests/compute/update_server.rb b/lib/fog/serverlove/requests/compute/update_server.rb new file mode 100644 index 000000000..2994770e7 --- /dev/null +++ b/lib/fog/serverlove/requests/compute/update_server.rb @@ -0,0 +1,15 @@ +module Fog + module Compute + class Serverlove + class Real + + def update_server(identifier, options) + return nil if identifier.nil? || identifier == "" + return nil if options.empty? || options.nil? + request(:method => "post", :path => "/servers/#{identifier}/set", :expects => 200, :options => options) + end + + end + end + end +end diff --git a/tests/serverlove/requests/compute/server_tests.rb b/tests/serverlove/requests/compute/server_tests.rb index 57f4dea17..56f963e6a 100644 --- a/tests/serverlove/requests/compute/server_tests.rb +++ b/tests/serverlove/requests/compute/server_tests.rb @@ -1,10 +1,38 @@ Shindo.tests('Fog::Compute[:serverlove] | server requests', ['serverlove']) do + @server_format = { + 'server' => String, + 'name' => String, + 'user' => String, + 'status' => String, + 'started' => String, + 'cpu' => Integer, + 'persistent' => Fog::Nullable::String, + 'vnc:password' => String + } + tests('success') do + + attributes = { 'name' => 'Test', 'cpu' => '1000' } + + tests("#create_server").formats(@server_format) do + @server = Fog::Compute[:serverlove].create_server(attributes).body + end tests("#list_servers").succeeds do Fog::Compute[:serverlove].servers end + + tests("#update_server").returns(true) do + @server['name'] = "Diff" + Fog::Compute[:serverlove].update_server(@server['server'], { name: @server['name']}) + Fog::Compute[:serverlove].servers.get(@server['server']).name == "Diff" + end + + + tests("#destroy_server").succeeds do + Fog::Compute[:serverlove].destroy_server(@server['server']) + end end