fog-azure-rm 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +19 -8
- data/LICENSE.md +1 -1
- data/README.md +9 -8
- data/lib/fog/azurerm/models/compute/availability_set.rb +17 -3
- data/lib/fog/azurerm/models/compute/availability_sets.rb +2 -6
- data/lib/fog/azurerm/models/compute/server.rb +1 -1
- data/lib/fog/azurerm/models/compute/servers.rb +3 -1
- data/lib/fog/azurerm/models/dns/record_set.rb +31 -3
- data/lib/fog/azurerm/models/dns/record_sets.rb +7 -17
- data/lib/fog/azurerm/models/dns/zone.rb +26 -3
- data/lib/fog/azurerm/models/dns/zones.rb +8 -6
- data/lib/fog/azurerm/models/network/frontend_ip_configuration.rb +32 -0
- data/lib/fog/azurerm/models/network/inbound_nat_pool.rb +27 -0
- data/lib/fog/azurerm/models/network/inbound_nat_rule.rb +29 -0
- data/lib/fog/azurerm/models/network/load_balancer.rb +249 -0
- data/lib/fog/azurerm/models/network/load_balancers.rb +27 -0
- data/lib/fog/azurerm/models/network/load_balancing_rule.rb +42 -0
- data/lib/fog/azurerm/models/network/network_interface.rb +46 -7
- data/lib/fog/azurerm/models/network/network_interfaces.rb +2 -8
- data/lib/fog/azurerm/models/network/network_security_group.rb +89 -0
- data/lib/fog/azurerm/models/network/network_security_groups.rb +27 -0
- data/lib/fog/azurerm/models/network/network_security_rule.rb +40 -0
- data/lib/fog/azurerm/models/network/probe.rb +29 -0
- data/lib/fog/azurerm/models/network/public_ip.rb +32 -4
- data/lib/fog/azurerm/models/network/public_ips.rb +2 -8
- data/lib/fog/azurerm/models/network/subnet.rb +20 -12
- data/lib/fog/azurerm/models/network/subnets.rb +1 -7
- data/lib/fog/azurerm/models/network/traffic_manager_end_point.rb +63 -0
- data/lib/fog/azurerm/models/network/traffic_manager_end_points.rb +29 -0
- data/lib/fog/azurerm/models/network/traffic_manager_profile.rb +59 -0
- data/lib/fog/azurerm/models/network/traffic_manager_profiles.rb +24 -0
- data/lib/fog/azurerm/models/network/virtual_network.rb +19 -6
- data/lib/fog/azurerm/models/network/virtual_networks.rb +4 -9
- data/lib/fog/azurerm/models/resources/resource_group.rb +2 -1
- data/lib/fog/azurerm/models/resources/resource_groups.rb +1 -9
- data/lib/fog/azurerm/models/storage/storage_account.rb +5 -7
- data/lib/fog/azurerm/models/storage/storage_accounts.rb +5 -6
- data/lib/fog/azurerm/network.rb +30 -0
- data/lib/fog/azurerm/requests/compute/create_availability_set.rb +13 -2
- data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +60 -2
- data/lib/fog/azurerm/requests/compute/deallocate_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/compute/delete_availability_set.rb +4 -2
- data/lib/fog/azurerm/requests/compute/delete_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/compute/generalize_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/compute/get_virtual_machine.rb +57 -1
- data/lib/fog/azurerm/requests/compute/list_availability_sets.rb +16 -1
- data/lib/fog/azurerm/requests/compute/list_available_sizes_for_virtual_machine.rb +27 -1
- data/lib/fog/azurerm/requests/compute/power_off_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/compute/redeploy_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/compute/restart_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/compute/start_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/dns/check_for_zone.rb +16 -17
- data/lib/fog/azurerm/requests/dns/create_record_set.rb +80 -37
- data/lib/fog/azurerm/requests/dns/create_zone.rb +43 -27
- data/lib/fog/azurerm/requests/dns/delete_record_set.rb +17 -19
- data/lib/fog/azurerm/requests/dns/delete_zone.rb +16 -19
- data/lib/fog/azurerm/requests/dns/get_records_from_record_set.rb +29 -28
- data/lib/fog/azurerm/requests/dns/list_record_sets.rb +49 -23
- data/lib/fog/azurerm/requests/dns/list_zones.rb +57 -23
- data/lib/fog/azurerm/requests/network/check_for_public_ip.rb +3 -1
- data/lib/fog/azurerm/requests/network/check_for_virtual_network.rb +4 -2
- data/lib/fog/azurerm/requests/network/create_load_balancer.rb +208 -0
- data/lib/fog/azurerm/requests/network/create_network_interface.rb +42 -4
- data/lib/fog/azurerm/requests/network/create_network_security_group.rb +200 -0
- data/lib/fog/azurerm/requests/network/create_public_ip.rb +19 -5
- data/lib/fog/azurerm/requests/network/create_subnet.rb +19 -6
- data/lib/fog/azurerm/requests/network/create_traffic_manager_endpoint.rb +78 -0
- data/lib/fog/azurerm/requests/network/create_traffic_manager_profile.rb +127 -0
- data/lib/fog/azurerm/requests/network/create_virtual_network.rb +40 -5
- data/lib/fog/azurerm/requests/network/delete_load_balancer.rb +27 -0
- data/lib/fog/azurerm/requests/network/delete_network_interface.rb +5 -3
- data/lib/fog/azurerm/requests/network/delete_network_security_group.rb +29 -0
- data/lib/fog/azurerm/requests/network/delete_public_ip.rb +4 -2
- data/lib/fog/azurerm/requests/network/delete_subnet.rb +10 -8
- data/lib/fog/azurerm/requests/network/delete_traffic_manager_endpoint.rb +37 -0
- data/lib/fog/azurerm/requests/network/delete_traffic_manager_profile.rb +37 -0
- data/lib/fog/azurerm/requests/network/delete_virtual_network.rb +8 -6
- data/lib/fog/azurerm/requests/network/get_traffic_manager_profile.rb +96 -0
- data/lib/fog/azurerm/requests/network/list_load_balancers.rb +31 -0
- data/lib/fog/azurerm/requests/network/list_network_interfaces.rb +41 -9
- data/lib/fog/azurerm/requests/network/list_network_security_groups.rb +171 -0
- data/lib/fog/azurerm/requests/network/list_public_ips.rb +21 -9
- data/lib/fog/azurerm/requests/network/list_subnets.rb +34 -11
- data/lib/fog/azurerm/requests/network/list_traffic_manager_profiles.rb +98 -0
- data/lib/fog/azurerm/requests/network/list_virtual_networks.rb +53 -8
- data/lib/fog/azurerm/requests/resources/create_resource_group.rb +11 -2
- data/lib/fog/azurerm/requests/resources/delete_resource_group.rb +4 -2
- data/lib/fog/azurerm/requests/resources/list_resource_groups.rb +23 -7
- data/lib/fog/azurerm/requests/storage/check_storage_account_name_availability.rb +2 -0
- data/lib/fog/azurerm/requests/storage/create_storage_account.rb +14 -8
- data/lib/fog/azurerm/requests/storage/delete_storage_account.rb +4 -3
- data/lib/fog/azurerm/requests/storage/list_storage_account_for_rg.rb +33 -2
- data/lib/fog/azurerm/requests/storage/list_storage_accounts.rb +32 -5
- data/lib/fog/azurerm/storage.rb +0 -1
- data/lib/fog/azurerm/version.rb +1 -1
- metadata +35 -10
@@ -0,0 +1,249 @@
|
|
1
|
+
module Fog
|
2
|
+
module Network
|
3
|
+
class AzureRM
|
4
|
+
# LoadBalancer model class for Network Service
|
5
|
+
class LoadBalancer < Fog::Model
|
6
|
+
identity :name
|
7
|
+
attribute :id
|
8
|
+
attribute :location
|
9
|
+
attribute :resource_group
|
10
|
+
attribute :frontend_ip_configurations
|
11
|
+
attribute :backend_address_pool_names
|
12
|
+
attribute :load_balancing_rules
|
13
|
+
attribute :probes
|
14
|
+
attribute :inbound_nat_rules
|
15
|
+
attribute :inbound_nat_pools
|
16
|
+
|
17
|
+
# @param [Object] load_balancer
|
18
|
+
def self.parse(load_balancer)
|
19
|
+
load_balancer_properties = load_balancer['properties']
|
20
|
+
|
21
|
+
hash = {}
|
22
|
+
hash['id'] = load_balancer['id']
|
23
|
+
hash['name'] = load_balancer['name']
|
24
|
+
hash['location'] = load_balancer['location']
|
25
|
+
hash['resource_group'] = load_balancer['id'].split('/')[4]
|
26
|
+
hash['backend_address_pool_names'] = load_balancer_properties['backendAddressPools'].map { |item| item['name'] } unless load_balancer_properties['backendAddressPools'].nil?
|
27
|
+
|
28
|
+
hash['frontend_ip_configurations'] = []
|
29
|
+
load_balancer_properties['frontendIPConfigurations'].each do |fic|
|
30
|
+
frontend_ip_configuration = Fog::Network::AzureRM::FrontendIPConfiguration.new
|
31
|
+
hash['frontend_ip_configurations'] << frontend_ip_configuration.merge_attributes(Fog::Network::AzureRM::FrontendIPConfiguration.parse(fic))
|
32
|
+
end unless load_balancer_properties['frontendIPConfigurations'].nil?
|
33
|
+
|
34
|
+
hash['load_balancing_rules'] = []
|
35
|
+
load_balancer_properties['loadBalancingRules'].each do |lbr|
|
36
|
+
load_balancing_rule = Fog::Network::AzureRM::LoadBalangcingRule.new
|
37
|
+
hash['load_balancing_rules'] << load_balancing_rule.merge_attributes(Fog::Network::AzureRM::LoadBalangcingRule.parse(lbr))
|
38
|
+
end unless load_balancer_properties['loadBalancingRules'].nil?
|
39
|
+
|
40
|
+
hash['probes'] = []
|
41
|
+
load_balancer_properties['probes'].each do |prb|
|
42
|
+
prob = Fog::Network::AzureRM::Probe.new
|
43
|
+
hash['probes'] << prob.merge_attributes(Fog::Network::AzureRM::Probe.parse(prb))
|
44
|
+
end unless load_balancer_properties['probes'].nil?
|
45
|
+
|
46
|
+
hash['inbound_nat_rules'] = []
|
47
|
+
load_balancer_properties['inboundNatRules'].each do |inr|
|
48
|
+
inbound_nat_rule = Fog::Network::AzureRM::InboundNatRule.new
|
49
|
+
hash['inbound_nat_rules'] << inbound_nat_rule.merge_attributes(Fog::Network::AzureRM::InboundNatRule.parse(inr))
|
50
|
+
end unless load_balancer_properties['inboundNatRules'].nil?
|
51
|
+
|
52
|
+
hash['inbound_nat_rules'] = []
|
53
|
+
load_balancer_properties['inboundNatPools'].each do |inp|
|
54
|
+
inbound_nat_pool = Fog::Network::AzureRM::InboundNatPool.new
|
55
|
+
hash['inbound_nat_rules'] << inbound_nat_pool.merge_attributes(Fog::Network::AzureRM::InboundNatPool.parse(inp))
|
56
|
+
end unless load_balancer_properties['inboundNatPools'].nil?
|
57
|
+
|
58
|
+
hash
|
59
|
+
end
|
60
|
+
|
61
|
+
def save
|
62
|
+
requires :name, :location, :resource_group
|
63
|
+
|
64
|
+
validate_frontend_ip_configurations(frontend_ip_configurations) unless frontend_ip_configurations.nil?
|
65
|
+
validate_load_balancing_rules(load_balancing_rules) unless load_balancing_rules.nil?
|
66
|
+
validate_probes(probes) unless probes.nil?
|
67
|
+
validate_inbound_nat_rules(inbound_nat_rules) unless inbound_nat_rules.nil?
|
68
|
+
validate_inbound_nat_pools(inbound_nat_pools) unless inbound_nat_pools.nil?
|
69
|
+
|
70
|
+
load_balancer = service.create_load_balancer(name, location, resource_group, frontend_ip_configurations, backend_address_pool_names, load_balancing_rules, probes, inbound_nat_rules, inbound_nat_pools)
|
71
|
+
|
72
|
+
merge_attributes(Fog::Network::AzureRM::LoadBalancer.parse(load_balancer))
|
73
|
+
end
|
74
|
+
|
75
|
+
def validate_load_balancing_rules(load_balancing_rules)
|
76
|
+
if load_balancing_rules.is_a?(Array)
|
77
|
+
if load_balancing_rules.any?
|
78
|
+
load_balancing_rules.each do |lbr|
|
79
|
+
if lbr.is_a?(Hash)
|
80
|
+
validate_load_balancing_rule_params(lbr)
|
81
|
+
else
|
82
|
+
raise(ArgumentError, ':load_balancing_rules must be an Array of Hashes')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
else
|
86
|
+
raise(ArgumentError, ':load_balancing_rules must not be an empty Array')
|
87
|
+
end
|
88
|
+
else
|
89
|
+
raise(ArgumentError, ':load_balancing_rules must be an Array')
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def validate_load_balancing_rule_params(load_balancing_rule)
|
94
|
+
required_params = [
|
95
|
+
:name,
|
96
|
+
:protocol,
|
97
|
+
:frontend_port,
|
98
|
+
:backend_port
|
99
|
+
]
|
100
|
+
missing = required_params.select { |p| p unless load_balancing_rule.key?(p) }
|
101
|
+
if missing.length == 1
|
102
|
+
raise(ArgumentError, "#{missing.first} is required for this operation")
|
103
|
+
elsif missing.any?
|
104
|
+
raise(ArgumentError, "#{missing[0...-1].join(', ')} and #{missing[-1]} are required for this operation")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def validate_probes(probes)
|
109
|
+
if probes.is_a?(Array)
|
110
|
+
if probes.any?
|
111
|
+
probes.each do |prb|
|
112
|
+
if prb.is_a?(Hash)
|
113
|
+
validate_probe_params(prb)
|
114
|
+
else
|
115
|
+
raise(ArgumentError, ':probes must be an Array of Hashes')
|
116
|
+
end
|
117
|
+
end
|
118
|
+
else
|
119
|
+
raise(ArgumentError, ':probes must not be an empty Array')
|
120
|
+
end
|
121
|
+
else
|
122
|
+
raise(ArgumentError, ':probes must be an Array')
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def validate_probe_params(probe)
|
127
|
+
required_params = [
|
128
|
+
:name,
|
129
|
+
:port,
|
130
|
+
:request_path,
|
131
|
+
:interval_in_seconds,
|
132
|
+
:number_of_probes
|
133
|
+
]
|
134
|
+
missing = required_params.select { |p| p unless probe.key?(p) }
|
135
|
+
if missing.length == 1
|
136
|
+
raise(ArgumentError, "#{missing.first} is required for this operation")
|
137
|
+
elsif missing.any?
|
138
|
+
raise(ArgumentError, "#{missing[0...-1].join(', ')} and #{missing[-1]} are required for this operation")
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def validate_inbound_nat_rules(inbound_nat_rules)
|
143
|
+
if inbound_nat_rules.is_a?(Array)
|
144
|
+
if inbound_nat_rules.any?
|
145
|
+
inbound_nat_rules.each do |inr|
|
146
|
+
if inr.is_a?(Hash)
|
147
|
+
validate_inbound_nat_rule_params(inr)
|
148
|
+
else
|
149
|
+
raise(ArgumentError, ':inbound_nat_rules must be an Array of Hashes')
|
150
|
+
end
|
151
|
+
end
|
152
|
+
else
|
153
|
+
raise(ArgumentError, ':inbound_nat_rules must not be an empty Array')
|
154
|
+
end
|
155
|
+
else
|
156
|
+
raise(ArgumentError, ':inbound_nat_rules must be an Array')
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def validate_inbound_nat_rule_params(inbound_nat_rule)
|
161
|
+
required_params = [
|
162
|
+
:name,
|
163
|
+
:protocol,
|
164
|
+
:frontend_port,
|
165
|
+
:backend_port
|
166
|
+
]
|
167
|
+
missing = required_params.select { |p| p unless inbound_nat_rule.key?(p) }
|
168
|
+
if missing.length == 1
|
169
|
+
raise(ArgumentError, "#{missing.first} is required for this operation")
|
170
|
+
elsif missing.any?
|
171
|
+
raise(ArgumentError, "#{missing[0...-1].join(', ')} and #{missing[-1]} are required for this operation")
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
def validate_inbound_nat_pools(inbound_nat_pools)
|
176
|
+
if inbound_nat_pools.is_a?(Array)
|
177
|
+
if inbound_nat_pools.any?
|
178
|
+
inbound_nat_pools.each do |inp|
|
179
|
+
if inp.is_a?(Hash)
|
180
|
+
validate_inbound_nat_pool_params(inp)
|
181
|
+
else
|
182
|
+
raise(ArgumentError, ':inbound_nat_pools must be an Array of Hashes')
|
183
|
+
end
|
184
|
+
end
|
185
|
+
else
|
186
|
+
raise(ArgumentError, ':inbound_nat_pools must not be an empty Array')
|
187
|
+
end
|
188
|
+
else
|
189
|
+
raise(ArgumentError, ':inbound_nat_pools must be an Array')
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
def validate_inbound_nat_pool_params(inbound_nat_pool)
|
194
|
+
required_params = [
|
195
|
+
:name,
|
196
|
+
:protocol,
|
197
|
+
:frontend_port_range_start,
|
198
|
+
:frontend_port_range_end,
|
199
|
+
:backend_port
|
200
|
+
]
|
201
|
+
missing = required_params.select { |p| p unless inbound_nat_pool.key?(p) }
|
202
|
+
if missing.length == 1
|
203
|
+
raise(ArgumentError, "#{missing.first} is required for this operation")
|
204
|
+
elsif missing.any?
|
205
|
+
raise(ArgumentError, "#{missing[0...-1].join(', ')} and #{missing[-1]} are required for this operation")
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def validate_frontend_ip_configurations(frontend_ip_configurations)
|
210
|
+
if frontend_ip_configurations.is_a?(Array)
|
211
|
+
if frontend_ip_configurations.any?
|
212
|
+
frontend_ip_configurations.each do |frontend_ip_configuration|
|
213
|
+
if fic.is_a?(Hash)
|
214
|
+
validate_frontend_ip_configuration_params(fic)
|
215
|
+
else
|
216
|
+
raise(ArgumentError, ':frontend_ip_configurations must be an Array of Hashes')
|
217
|
+
end
|
218
|
+
end
|
219
|
+
else
|
220
|
+
raise(ArgumentError, ':frontend_ip_configurations must not be an empty Array')
|
221
|
+
end
|
222
|
+
else
|
223
|
+
raise(ArgumentError, ':frontend_ip_configurations must be an Array')
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
def validate_frontend_ip_configuration_params(frontend_ip_configuration)
|
228
|
+
required_params = [
|
229
|
+
:name,
|
230
|
+
:private_ipallocation_method
|
231
|
+
]
|
232
|
+
missing = required_params.select { |p| p unless frontend_ip_configuration.key?(p) }
|
233
|
+
if missing.length == 1
|
234
|
+
raise(ArgumentError, "#{missing.first} is required for this operation")
|
235
|
+
elsif missing.any?
|
236
|
+
raise(ArgumentError, "#{missing[0...-1].join(', ')} and #{missing[-1]} are required for this operation")
|
237
|
+
end
|
238
|
+
unless frontend_ip_configuration.key?(:subnet_id) || frontend_ip_configuration.key?(:public_ipaddress_id)
|
239
|
+
raise(ArgumentError, 'subnet_id and public_id can not be empty at the same time.')
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
def destroy
|
244
|
+
service.delete_load_balancer(resource_group, name)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/azurerm/models/network/load_balancer'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Network
|
6
|
+
class AzureRM
|
7
|
+
# LoadBalancers collection class for Network Service
|
8
|
+
class LoadBalancers < Fog::Collection
|
9
|
+
model Fog::Network::AzureRM::LoadBalancer
|
10
|
+
attribute :resource_group
|
11
|
+
|
12
|
+
def all
|
13
|
+
requires :resource_group
|
14
|
+
load_balancers = []
|
15
|
+
service.list_load_balancers(resource_group).each do |load_balancer|
|
16
|
+
load_balancers << Fog::Network::AzureRM::LoadBalancer.parse(load_balancer)
|
17
|
+
end
|
18
|
+
load(load_balancers)
|
19
|
+
end
|
20
|
+
|
21
|
+
def get(identity)
|
22
|
+
all.find { |f| f.name == identity }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Fog
|
2
|
+
module Network
|
3
|
+
class AzureRM
|
4
|
+
# LoadBalangcingRule model for Network Service
|
5
|
+
class LoadBalangcingRule < Fog::Model
|
6
|
+
identity :name
|
7
|
+
attribute :id
|
8
|
+
attribute :frontend_ip_configuration_id
|
9
|
+
attribute :backend_address_pool_id
|
10
|
+
attribute :protocol
|
11
|
+
attribute :frontend_port
|
12
|
+
attribute :backend_port
|
13
|
+
attribute :probe_id
|
14
|
+
attribute :enable_floating_ip
|
15
|
+
attribute :idle_timeout_in_minutes
|
16
|
+
attribute :load_distribution
|
17
|
+
|
18
|
+
def self.parse(load_balancing_rule)
|
19
|
+
load_balancing_rule_prop = load_balancing_rule['properties']
|
20
|
+
hash = {}
|
21
|
+
hash['id'] = load_balancing_rule['id']
|
22
|
+
hash['name'] = load_balancing_rule['name']
|
23
|
+
unless load_balancing_rule_prop['frontendIPConfiguration'].nil?
|
24
|
+
hash['frontend_ip_configuration_id'] = load_balancing_rule_prop['frontendIPConfiguration']['id']
|
25
|
+
end
|
26
|
+
unless load_balancing_rule_prop['backendAddressPool'].nil?
|
27
|
+
hash['backend_address_pool_id'] = load_balancing_rule_prop['backendAddressPool']['id']
|
28
|
+
end
|
29
|
+
|
30
|
+
hash['protocol'] = load_balancing_rule_prop['protocol']
|
31
|
+
hash['frontend_port'] = load_balancing_rule_prop['frontendPort']
|
32
|
+
hash['backend_port'] = load_balancing_rule_prop['backendPort']
|
33
|
+
hash['probe_id'] = load_balancing_rule_prop['probe']['id'] unless load_balancing_rule_prop['probe'].nil?
|
34
|
+
hash['enable_floating_ip'] = load_balancing_rule_prop['enableFloatingIP']
|
35
|
+
hash['idle_timeout_in_minutes'] = load_balancing_rule_prop['idleTimeoutInMinutes']
|
36
|
+
hash['load_distribution'] = load_balancing_rule_prop['loadDistribution']
|
37
|
+
hash
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -7,10 +7,52 @@ module Fog
|
|
7
7
|
attribute :id
|
8
8
|
attribute :location
|
9
9
|
attribute :resource_group
|
10
|
-
attribute :
|
10
|
+
attribute :virtual_machine_id
|
11
|
+
attribute :mac_address
|
12
|
+
attribute :network_security_group_id
|
11
13
|
attribute :ip_configuration_name
|
14
|
+
attribute :ip_configuration_id
|
15
|
+
attribute :subnet_id
|
12
16
|
attribute :private_ip_allocation_method
|
13
|
-
attribute :
|
17
|
+
attribute :private_ip_address
|
18
|
+
attribute :public_ip_address_id
|
19
|
+
attribute :load_balancer_backend_address_pools_ids
|
20
|
+
attribute :load_balancer_inbound_nat_rules_ids
|
21
|
+
attribute :dns_servers
|
22
|
+
attribute :applied_dns_servers
|
23
|
+
attribute :internal_dns_name_label
|
24
|
+
attribute :internal_fqd
|
25
|
+
|
26
|
+
def self.parse(nic)
|
27
|
+
nic_properties = nic['properties']
|
28
|
+
nic_ip_configuration = nic['properties']['ipConfigurations'][0]
|
29
|
+
hash = {}
|
30
|
+
hash['id'] = nic['id']
|
31
|
+
hash['name'] = nic['name']
|
32
|
+
hash['location'] = nic['location']
|
33
|
+
hash['resource_group'] = nic['id'].split('/')[4]
|
34
|
+
hash['virtual_machine_id'] = nic_properties['virtualMachine']['id'] unless nic_properties['virtualMachine'].nil?
|
35
|
+
hash['mac_address'] = nic_properties['macAddress'] unless nic_properties['macAddress'].nil?
|
36
|
+
hash['network_security_group_id'] = nic_properties['networkSecurityGroup']['id'] unless nic_properties['networkSecurityGroup'].nil?
|
37
|
+
|
38
|
+
unless nic_ip_configuration.nil?
|
39
|
+
nic_ip_configuration_properties = nic_ip_configuration['properties']
|
40
|
+
hash['ip_configuration_name'] = nic_ip_configuration['name']
|
41
|
+
hash['ip_configuration_id'] = nic_ip_configuration['id']
|
42
|
+
hash['subnet_id'] = nic_ip_configuration_properties['subnet']['id'] unless nic_ip_configuration_properties['subnet'].nil?
|
43
|
+
hash['private_ip_allocation_method'] = nic_ip_configuration_properties['privateIPAllocationMethod']
|
44
|
+
hash['private_ip_address'] = nic_ip_configuration_properties['privateIPAddress']
|
45
|
+
hash['public_ip_address_id'] = nic_ip_configuration_properties['publicIPAddress']['id'] unless nic_ip_configuration_properties['publicIPAddress'].nil?
|
46
|
+
hash['load_balancer_backend_address_pools_ids'] = nic_ip_configuration_properties['loadBalancerBackendAddressPools'].map{ |item| item['id'] } unless nic_ip_configuration_properties['loadBalancerBackendAddressPools'].nil?
|
47
|
+
hash['load_balancer_inbound_nat_rules_ids'] = nic_ip_configuration_properties['loadBalancerInboundNatRules'].map{ |item| item['id'] } unless nic_ip_configuration_properties['loadBalancerInboundNatRules'].nil?
|
48
|
+
end
|
49
|
+
|
50
|
+
hash['dns_servers'] = nic_properties['dnsSettings']['dnsServers']
|
51
|
+
hash['applied_dns_servers'] = nic_properties['appliedDnsServers']
|
52
|
+
hash['internal_dns_name_label'] = nic_properties['internalDnsNameLabel']
|
53
|
+
hash['internal_fqd'] = nic_properties['internalFqd']
|
54
|
+
hash
|
55
|
+
end
|
14
56
|
|
15
57
|
def save
|
16
58
|
requires :name
|
@@ -19,11 +61,8 @@ module Fog
|
|
19
61
|
requires :subnet_id
|
20
62
|
requires :ip_configuration_name
|
21
63
|
requires :private_ip_allocation_method
|
22
|
-
|
23
|
-
Fog::
|
24
|
-
network_interface = service.create_network_interface(name, location, resource_group, subnet_id, ip_configuration_name, private_ip_allocation_method)
|
25
|
-
Fog::Logger.debug "Network Interface #{name} created successfully."
|
26
|
-
network_interface
|
64
|
+
network_interface = service.create_network_interface(resource_group, name, location, subnet_id, ip_configuration_name, private_ip_allocation_method)
|
65
|
+
merge_attributes(Fog::Network::AzureRM::NetworkInterface.parse(network_interface))
|
27
66
|
end
|
28
67
|
|
29
68
|
def destroy
|
@@ -12,14 +12,8 @@ module Fog
|
|
12
12
|
def all
|
13
13
|
requires :resource_group
|
14
14
|
network_interfaces = []
|
15
|
-
|
16
|
-
|
17
|
-
hash = {}
|
18
|
-
nic.instance_variables.each do |var|
|
19
|
-
hash[var.to_s.delete('@')] = nic.instance_variable_get(var)
|
20
|
-
end
|
21
|
-
hash['resource_group'] = resource_group
|
22
|
-
network_interfaces << hash
|
15
|
+
service.list_network_interfaces(resource_group).each do |nic|
|
16
|
+
network_interfaces << Fog::Network::AzureRM::NetworkInterface.parse(nic)
|
23
17
|
end
|
24
18
|
load(network_interfaces)
|
25
19
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module Fog
|
2
|
+
module Network
|
3
|
+
class AzureRM
|
4
|
+
# Subnet model for Network Security Group
|
5
|
+
class NetworkSecurityGroup < Fog::Model
|
6
|
+
identity :name
|
7
|
+
attribute :id
|
8
|
+
attribute :resource_group
|
9
|
+
attribute :location
|
10
|
+
attribute :network_interfaces_ids
|
11
|
+
attribute :subnets_ids
|
12
|
+
attribute :security_rules
|
13
|
+
attribute :default_security_rules
|
14
|
+
|
15
|
+
def self.parse(nsg)
|
16
|
+
hash = {}
|
17
|
+
hash['id'] = nsg['id']
|
18
|
+
hash['name'] = nsg['name']
|
19
|
+
hash['resource_group'] = nsg['id'].split('/')[4]
|
20
|
+
hash['location'] = nsg['location']
|
21
|
+
hash['network_interfaces_ids'] = nsg['properties']['networkInterfaces'].map { |item| item['id'] } unless nsg['properties']['networkInterfaces'].nil?
|
22
|
+
hash['subnets_ids'] = nsg['properties']['subnets'].map { |item| item['id'] } unless nsg['properties']['subnets'].nil?
|
23
|
+
hash['security_rules'] = []
|
24
|
+
hash['default_security_rules'] = []
|
25
|
+
|
26
|
+
nsg['properties']['securityRules'].each do |sr|
|
27
|
+
security_rule = Fog::Network::AzureRM::NetworkSecurityRule.new
|
28
|
+
hash['security_rules'] << security_rule.merge_attributes(Fog::Network::AzureRM::NetworkSecurityRule.parse(sr))
|
29
|
+
end unless nsg['properties']['securityRules'].nil?
|
30
|
+
|
31
|
+
nsg['properties']['defaultSecurityRules'].each do |dsr|
|
32
|
+
security_rule = Fog::Network::AzureRM::NetworkSecurityRule.new
|
33
|
+
hash['default_security_rules'] << security_rule.merge_attributes(Fog::Network::AzureRM::NetworkSecurityRule.parse(dsr))
|
34
|
+
end
|
35
|
+
|
36
|
+
hash
|
37
|
+
end
|
38
|
+
|
39
|
+
def save
|
40
|
+
requires :name, :location, :resource_group
|
41
|
+
|
42
|
+
validate_security_rules(security_rules) unless security_rules.nil?
|
43
|
+
nsg = service.create_network_security_group(resource_group, name, location, security_rules)
|
44
|
+
merge_attributes(Fog::Network::AzureRM::NetworkSecurityGroup.parse(nsg))
|
45
|
+
end
|
46
|
+
|
47
|
+
def destroy
|
48
|
+
service.delete_network_security_group(resource_group, name)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def validate_security_rules(security_rules)
|
54
|
+
if security_rules.is_a?(Array)
|
55
|
+
security_rules.each do |sr|
|
56
|
+
if sr.is_a?(Hash)
|
57
|
+
validate_security_rule_params(sr)
|
58
|
+
else
|
59
|
+
raise(ArgumentError, ':security_rules must be an Array of Hashes')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
else
|
63
|
+
raise(ArgumentError, ':security_rules must be an Array')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def validate_security_rule_params(nsr)
|
68
|
+
required_params = [
|
69
|
+
:name,
|
70
|
+
:protocol,
|
71
|
+
:source_port_range,
|
72
|
+
:destination_port_range,
|
73
|
+
:source_address_prefix,
|
74
|
+
:destination_address_prefix,
|
75
|
+
:access,
|
76
|
+
:priority,
|
77
|
+
:direction
|
78
|
+
]
|
79
|
+
missing = required_params.select { |p| p unless nsr.key?(p) }
|
80
|
+
if missing.length == 1
|
81
|
+
raise(ArgumentError, "#{missing.first} is required for this operation")
|
82
|
+
elsif missing.any?
|
83
|
+
raise(ArgumentError, "#{missing[0...-1].join(', ')} and #{missing[-1]} are required for this operation")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|