Fix bgp resource for puppet 3

Change-Id: I1178ac50e7b204ac9aa874cc2ce6fbb86859e8ba
This commit is contained in:
Alex Ruiz Estradera 2016-10-05 14:32:19 +02:00
parent ca72b4db0a
commit 954d1cf69f

View File

@ -11,6 +11,18 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
def create
if resource[:bgp_neighbors].class == Hash
bgp_neighbors_resource = [resource[:bgp_neighbors]]
else
bgp_neighbors_resource = resource[:bgp_neighbors]
end
if resource[:bgp_advertised_networks].class == String
bgp_advertised_networks_resource = [resource[:bgp_advertised_networks]]
else
bgp_advertised_networks_resource = resource[:bgp_advertised_networks]
end
define_connection(resource[:midonet_api_url])
# Get the edge router uuid
@ -29,15 +41,8 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
"remote_asn" => bgp_neighbor["asNumber"] }
m << n
end
if resource[:bgp_neighbors].class == Hash
bgp_advertised_networks_resource = [resource[:bgp_neighbors]]
else
bgp_advertised_networks_resource = resource[:bgp_neighbors]
end
tbd_peers = m - bgp_advertised_networks_resource
tba_peers = bgp_advertised_networks_resource - m
tbd_peers = m - bgp_neighbors_resource
tba_peers = bgp_neighbors_resource - m
tba_peers.each { |a| call_add_bgp_peer(provider_router_id, a['ip_address'], a['remote_asn']) }
tbd_peers.each do |d|
@ -53,12 +58,6 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
j << k
end
if resource[:bgp_advertised_networks].class == String
bgp_advertised_networks_resource = [resource[:bgp_advertised_networks]]
else
bgp_advertised_networks_resource = resource[:bgp_advertised_networks]
end
tbd_bgp_networks = j - bgp_advertised_networks_resource
tba_bgp_networks = bgp_advertised_networks_resource - j
tbd_bgp_networks.each do |d|
@ -70,7 +69,7 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
# Get routes and see which ones do we need to actually create
dup_routes = Array.new
existing_bgp_routes = call_get_bgp_routes(provider_router_id)
neighbors_remote_net = resource[:bgp_neighbors].map { |x| x['remote_net'] }.uniq
neighbors_remote_net = bgp_neighbors_resource.map { |x| x['remote_net'] }.uniq
existing_bgp_routes.each do |r|
dup_routes << r if neighbors_remote_net.select { |net| net == "#{r['dstNetworkAddr']}/#{r['dstNetworkLength']}" }
end
@ -83,15 +82,15 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
# Add default routes
dup_routes = Array.new
existing_bgp_routes = call_get_bgp_routes(provider_router_id)
neighbors_remote_ips = resource[:bgp_neighbors].map { |x| x['ip_address'] }.uniq
neighbors_remote_ips = bgp_neighbors_resource.map { |x| x['ip_address'] }.uniq
existing_bgp_routes.each do |r|
dup_routes << r if neighbors_remote_ips.select { |ip| ip == "#{r['nextHopGateway']}" }
end
# Add routes to remote BGP peers
tba_routes = neighbors_remote_ips - dup_routes.map { |dr| "#{dr['nextHopGateway']}" }
tba_routes.each do |ip|
b = resource[:bgp_neighbors].select { |neighbor| neighbor['ip_address'] == ip }
call_add_default_routes(provider_router_id, resource[:bgp_neighbors].select { |neighbor| neighbor['ip_address'] == ip }[0])
b = bgp_neighbors_resource.select { |neighbor| neighbor['ip_address'] == ip }
call_add_default_routes(provider_router_id, bgp_neighbors_resource.select { |neighbor| neighbor['ip_address'] == ip }[0])
end
end
@ -120,6 +119,18 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
def exists?
if resource[:bgp_neighbors].class == Hash
bgp_neighbors_resource = [resource[:bgp_neighbors]]
else
bgp_neighbors_resource = resource[:bgp_neighbors]
end
if resource[:bgp_advertised_networks].class == String
bgp_advertised_networks_resource = [resource[:bgp_advertised_networks]]
else
bgp_advertised_networks_resource = resource[:bgp_advertised_networks]
end
define_connection(resource[:midonet_api_url])
# Get the edge router uuid
@ -137,7 +148,7 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
"remote_asn" => bgp_neighbor["asNumber"] }
m << n
end
result_array.push(m == resource[:bgp_neighbors])
result_array.push(m == bgp_neighbors_resource)
# Check if advertised networks are the same
bgp_advertised_networks = call_get_bgp_networks(provider_router_id)
j = Array.new
@ -145,7 +156,7 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
k = [ bgp_advertised_network["subnetAddress"], bgp_advertised_network["subnetLength"] ].join("/")
j << k
end
result_array.push(j == resource[:bgp_advertised_networks])
result_array.push(j == bgp_advertised_networks_resource)
# Test if all tests are positive
return result_array.uniq == [true]