From 2df0ec1dfc66381d16228d6ad9727e7208182558 Mon Sep 17 00:00:00 2001 From: Sneha Somwanshi Date: Thu, 31 Oct 2013 11:41:43 +0000 Subject: [PATCH 1/2] fixing firewall config to follow api documentation Changed include following fixes: 1. policy, description and port fields are not mandatory. 2. Request layer should be dump and should not do smart handling of data. Accepting data in same format as documented in api doc => https://pubs.vmware.com/vcd-51/index.jsp#doc/index.html 3. SourceIp and destinationIp fields are used to control source and destination for traffice. These fields are included in documentation, but there is no other field provided to accept ips. --- .../compute/edge_gateway_service_configuration.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb b/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb index 7022389ad..016111b4f 100644 --- a/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +++ b/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb @@ -128,21 +128,22 @@ module Fog xml.Id rule[:Id] xml.IsEnabled rule[:IsEnabled] if rule.key?(:IsEnabled) xml.MatchOnTranslate rule[:MatchOnTranslate] if rule.key?(:MatchOnTranslate) - xml.Description rule[:Description] - xml.Policy rule[:Policy] + xml.Description rule[:Description] if rule.key?(:Description) + xml.Policy rule[:Policy] if rule.key?(:Policy) xml.Protocols { - rule[:Protocols].each do |protocol, is_enabled| - xml.send(protocol.to_s.capitalize, is_enabled) + rule[:Protocols].each do |key, value| + xml.send(key.to_s.capitalize, value) end } - xml.IcmpSubType "any" if (rule[:Protocols].include?(:Icmp) && rule[:Protocols][:Icmp] == true ) - xml.Port rule[:Port] == "Any" ? "-1" : rule[:Port] + xml.IcmpSubType rule[:IcmpSubType] if rule.key?(:IcmpSubType) + xml.Port rule[:Port] if rule.key?(:Port) xml.DestinationPortRange rule[:DestinationPortRange] xml.DestinationIp rule[:DestinationIp] - xml.SourcePort rule[:SourcePort] == "Any" ? "-1" : rule[:SourcePort] + xml.SourcePort rule[:SourcePort] if rule.key?(:SourcePort) xml.SourcePortRange rule[:SourcePortRange] xml.SourceIp rule[:SourceIp] + xml.Direction rule[:Direction] if rule.key?(:Direction) #Firewall rule direction is allowed only in backward compatibility mode. xml.EnableLogging rule[:EnableLogging] if rule.key?(:EnableLogging) } From 3aa8cd2b5f1d12929350f0cb5aff8630dc6131db Mon Sep 17 00:00:00 2001 From: Sneha Somwanshi Date: Thu, 31 Oct 2013 13:29:32 +0000 Subject: [PATCH 2/2] Added missing health check uri and pool description --- .../generators/compute/edge_gateway_service_configuration.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb b/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb index 016111b4f..265f93bc2 100644 --- a/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +++ b/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb @@ -28,7 +28,7 @@ module Fog lb_config[:Pool].each do |pool| xml.Pool { xml.Name pool[:Name] - + xml.Description pool[:Description] if pool.key?(:Description) pool[:ServicePort].each do |service_port| xml.ServicePort { xml.IsEnabled service_port[:IsEnabled] @@ -38,6 +38,7 @@ module Fog xml.HealthCheckPort service_port[:HealthCheckPort] xml.HealthCheck { xml.Mode service_port[:HealthCheck][:Mode] + xml.Uri service_port[:HealthCheck][:Uri] xml.HealthThreshold service_port[:HealthCheck][:HealthThreshold] xml.UnhealthThreshold service_port[:HealthCheck][:UnhealthThreshold] xml.Interval service_port[:HealthCheck][:Interval]