diff --git a/lib/fog/compute/google.rb b/lib/fog/compute/google.rb index dc685f419..a203acec2 100644 --- a/lib/fog/compute/google.rb +++ b/lib/fog/compute/google.rb @@ -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 diff --git a/lib/fog/compute/google/models/server.rb b/lib/fog/compute/google/models/server.rb index 21019f3ca..c389dc463 100644 --- a/lib/fog/compute/google/models/server.rb +++ b/lib/fog/compute/google/models/server.rb @@ -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 diff --git a/lib/fog/compute/google/requests/resume_server.rb b/lib/fog/compute/google/requests/resume_server.rb new file mode 100644 index 000000000..77159b468 --- /dev/null +++ b/lib/fog/compute/google/requests/resume_server.rb @@ -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 diff --git a/lib/fog/compute/google/requests/suspend_server.rb b/lib/fog/compute/google/requests/suspend_server.rb new file mode 100644 index 000000000..9e231ab12 --- /dev/null +++ b/lib/fog/compute/google/requests/suspend_server.rb @@ -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