From 9029b76bed906c5150d5db41f9ab2cda56109608 Mon Sep 17 00:00:00 2001 From: Manuel Garcia-Amado Date: Fri, 21 Jun 2024 17:00:31 +0200 Subject: [PATCH 1/2] add suspend/resume methods --- lib/fog/compute/google.rb | 2 ++ lib/fog/compute/google/models/server.rb | 22 +++++++++++++++++++ .../compute/google/requests/resume_server.rb | 19 ++++++++++++++++ .../compute/google/requests/suspend_server.rb | 19 ++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 lib/fog/compute/google/requests/resume_server.rb create mode 100644 lib/fog/compute/google/requests/suspend_server.rb diff --git a/lib/fog/compute/google.rb b/lib/fog/compute/google.rb index dc685f4194..a203acec27 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 21019f3ca0..c389dc463f 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 0000000000..ed2a641d05 --- /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 suspend_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 0000000000..9e231ab128 --- /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 From b86fa812f81694506719248a9cf269c7fecbcf5b Mon Sep 17 00:00:00 2001 From: Manuel Garcia-Amado Date: Fri, 21 Jun 2024 17:02:51 +0200 Subject: [PATCH 2/2] fix resume_server --- lib/fog/compute/google/requests/resume_server.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/compute/google/requests/resume_server.rb b/lib/fog/compute/google/requests/resume_server.rb index ed2a641d05..77159b4688 100644 --- a/lib/fog/compute/google/requests/resume_server.rb +++ b/lib/fog/compute/google/requests/resume_server.rb @@ -10,7 +10,7 @@ def resume_server(_identity, _zone) end class Real - def suspend_server(identity, zone) + def resume_server(identity, zone) @compute.resume_instance(@project, zone.split("/")[-1], identity) end end