Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compute: add suspend/resume server methods #631

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/fog/compute/google.rb
Original file line number Diff line number Diff line change
Expand Up @@ -188,8 +188,10 @@ class Google < Fog::Service

request :expand_subnetwork_ip_cidr_range
request :reset_server
request :resume_server
request :start_server
request :stop_server
request :suspend_server

request :invalidate_url_map_cache
request :validate_url_map
Expand Down
22 changes: 22 additions & 0 deletions lib/fog/compute/google/models/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,28 @@ def stop(async = true, discard_local_ssd=false)
operation
end

def resume(async = true)
requires :identity, :zone

data = service.resume_server(identity, zone_name)
operation = Fog::Compute::Google::Operations
.new(:service => service)
.get(data.name, data.zone)
operation.wait_for { ready? } unless async
operation
end

def suspend(async = true, discard_local_ssd=false)
requires :identity, :zone

data = service.suspend_server(identity, zone_name, discard_local_ssd)
operation = Fog::Compute::Google::Operations
.new(:service => service)
.get(data.name, data.zone)
operation.wait_for { ready? } unless async
operation
end

def serial_port_output(port: 1)
requires :identity, :zone

Expand Down
19 changes: 19 additions & 0 deletions lib/fog/compute/google/requests/resume_server.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module Fog
module Compute
class Google
class Mock
def resume_server(_identity, _zone)
# :no-coverage:
Fog::Mock.not_implemented
# :no-coverage:
end
end

class Real
def resume_server(identity, zone)
@compute.resume_instance(@project, zone.split("/")[-1], identity)
end
end
end
end
end
19 changes: 19 additions & 0 deletions lib/fog/compute/google/requests/suspend_server.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module Fog
module Compute
class Google
class Mock
def suspend_server(_identity, _zone)
# :no-coverage:
Fog::Mock.not_implemented
# :no-coverage:
end
end

class Real
def suspend_server(identity, zone, discard_local_ssd=false)
@compute.suspend_instance(@project, zone.split("/")[-1], identity, discard_local_ssd: discard_local_ssd)
end
end
end
end
end
Loading