Skip to content

Commit c0d1547

Browse files
authored
Merge pull request #213 from cowboyrushforth/update_firewall_request
add support for update_firewall
2 parents f2d510c + 24289df commit c0d1547

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

lib/fog/compute/google.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class Google < Fog::Service
101101
request :insert_backend_service
102102
request :insert_disk
103103
request :insert_firewall
104+
request :update_firewall
104105
request :insert_forwarding_rule
105106
request :insert_global_forwarding_rule
106107
request :insert_http_health_check

lib/fog/compute/google/models/firewall.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ def save
2828
reload
2929
end
3030

31+
def update
32+
requires :identity, :allowed, :network
33+
34+
data = service.update_firewall(identity, allowed, network, attributes)
35+
operation = Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"])
36+
operation.wait_for { !pending? }
37+
reload
38+
end
39+
3140
def destroy(async = true)
3241
requires :identity
3342

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
module Fog
2+
module Compute
3+
class Google
4+
class Mock
5+
def update_firewall(_firewall_name, _allowed, _network = GOOGLE_COMPUTE_DEFAULT_NETWORK, _options = {})
6+
Fog::Mock.not_implemented
7+
end
8+
end
9+
10+
class Real
11+
def update_firewall(firewall_name, allowed, network = GOOGLE_COMPUTE_DEFAULT_NETWORK, options = {})
12+
unless network.start_with? "http"
13+
network = "#{@api_url}#{@project}/global/networks/#{network}"
14+
end
15+
16+
api_method = @compute.firewalls.update
17+
parameters = {
18+
"project" => @project,
19+
"firewall" => firewall_name
20+
}
21+
body_object = {
22+
"allowed" => allowed,
23+
"network" => network
24+
}
25+
unless options[:description].nil?
26+
body_object["description"] = options[:description]
27+
end
28+
unless options[:source_ranges].nil? || options[:source_ranges].empty?
29+
body_object["sourceRanges"] = options[:source_ranges]
30+
end
31+
unless options[:source_tags].nil? || options[:source_tags].empty?
32+
body_object["sourceTags"] = options[:source_tags]
33+
end
34+
unless options[:target_tags].nil? || options[:target_tags].empty?
35+
body_object["targetTags"] = options[:target_tags]
36+
end
37+
38+
request(api_method, parameters, body_object)
39+
end
40+
end
41+
end
42+
end
43+
end

0 commit comments

Comments
 (0)