Class: Vcloud::EdgeGateway::ConfigurationGenerator::NatService
- Inherits:
-
Object
- Object
- Vcloud::EdgeGateway::ConfigurationGenerator::NatService
- Defined in:
- lib/vcloud/edge_gateway/configuration_generator/nat_service.rb
Instance Method Summary collapse
- #generate_fog_config ⇒ Object
-
#initialize(input_config, edge_gateway_interfaces) ⇒ NatService
constructor
A new instance of NatService.
- #populate_gateway_nat_rule(rule) ⇒ Object
- #populate_nat_interface(edge_interface) ⇒ Object
- #populate_nat_rules ⇒ Object
Constructor Details
#initialize(input_config, edge_gateway_interfaces) ⇒ NatService
Returns a new instance of NatService.
6 7 8 9 |
# File 'lib/vcloud/edge_gateway/configuration_generator/nat_service.rb', line 6 def initialize input_config, edge_gateway_interfaces @input_config = input_config @edge_gateway_interfaces = edge_gateway_interfaces end |
Instance Method Details
#generate_fog_config ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/vcloud/edge_gateway/configuration_generator/nat_service.rb', line 11 def generate_fog_config if @input_config nat_service = {} nat_service[:IsEnabled] = @input_config.key?(:enabled) ? @input_config[:enabled].to_s : 'true' nat_service[:NatRule] = populate_nat_rules nat_service end end |
#populate_gateway_nat_rule(rule) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/vcloud/edge_gateway/configuration_generator/nat_service.rb', line 35 def populate_gateway_nat_rule(rule) raise "Must supply a :network_id parameter" unless rule[:network_id] edge_gw_interface = @edge_gateway_interfaces.find do |interface| interface.network_id == rule[:network_id] end raise "unable to find gateway network interface with id #{rule[:network_id]}" unless edge_gw_interface gateway_nat_rule = {} gateway_nat_rule[:Interface] = populate_nat_interface(edge_gw_interface) gateway_nat_rule[:OriginalIp] = rule[:original_ip] gateway_nat_rule[:TranslatedIp] = rule[:translated_ip] gateway_nat_rule[:OriginalPort] = rule[:original_port] if rule.key?(:original_port) gateway_nat_rule[:TranslatedPort] = rule[:translated_port] if rule.key?(:translated_port) if rule[:rule_type] == 'DNAT' gateway_nat_rule[:Protocol] = rule.key?(:protocol) ? rule[:protocol] : "tcp" end gateway_nat_rule end |
#populate_nat_interface(edge_interface) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/vcloud/edge_gateway/configuration_generator/nat_service.rb', line 53 def populate_nat_interface(edge_interface) vcloud_interface = {} vcloud_interface[:type] = 'application/vnd.vmware.admin.network+xml' vcloud_interface[:name] = edge_interface.network_name vcloud_interface[:href] = edge_interface.network_href vcloud_interface end |
#populate_nat_rules ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/vcloud/edge_gateway/configuration_generator/nat_service.rb', line 20 def populate_nat_rules rules = @input_config[:nat_rules] i = ID_RANGES::NAT_SERVICE[:min] rules.collect do |rule| new_rule = {} new_rule[:Id] = rule.key?(:id) ? rule[:id] : i.to_s new_rule[:IsEnabled] = rule.key?(:enabled) ? rule[:enabled].to_s : 'true' new_rule[:RuleType] = rule[:rule_type] gateway_nat_rule = populate_gateway_nat_rule(rule) new_rule[:GatewayNatRule] = gateway_nat_rule i += 1 new_rule end end |