Fix the types for midonet gateway type

Change-Id: I1bb96901856173de8d9b5d7d20016d9a2a10467f
This commit is contained in:
Alex Ruiz Estradera
2016-10-10 16:04:14 +02:00
parent 178a9d1c4c
commit f615e10861
2 changed files with 16 additions and 10 deletions

View File

@@ -25,13 +25,15 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
define_connection(resource[:midonet_api_url]) define_connection(resource[:midonet_api_url])
entered_neighbors_parsed = bgp_neighbors_resource.collect { |x| {'ip_address' => x['ip_address'], 'remote_asn' => x['remote_asn'].to_i} }
# Get the edge router uuid # Get the edge router uuid
provider_router = call_get_provider_router()[0] provider_router = call_get_provider_router()[0]
provider_router_id = provider_router['id'] provider_router_id = provider_router['id']
# Assign local ASN to the provider router # Assign local ASN to the provider router
asn = provider_router['asNumber'] asn = provider_router['asNumber']
call_assign_asn(provider_router, resource[:bgp_local_as_number]) unless asn == resource[:bgp_local_as_number] call_assign_asn(provider_router, resource[:bgp_local_as_number]) unless asn.to_i == resource[:bgp_local_as_number].to_i
# Sync BGP peers # Sync BGP peers
bgp_neighbors = call_get_bgp_peers(provider_router_id) bgp_neighbors = call_get_bgp_peers(provider_router_id)
@@ -41,8 +43,8 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
"remote_asn" => bgp_neighbor["asNumber"] } "remote_asn" => bgp_neighbor["asNumber"] }
m << n m << n
end end
tbd_peers = m - bgp_neighbors_resource tbd_peers = m - entered_neighbors_parsed
tba_peers = bgp_neighbors_resource - m tba_peers = entered_neighbors_parsed - m
tba_peers.each { |a| call_add_bgp_peer(provider_router_id, a['ip_address'], a['remote_asn']) } tba_peers.each { |a| call_add_bgp_peer(provider_router_id, a['ip_address'], a['remote_asn']) }
tbd_peers.each do |d| tbd_peers.each do |d|
@@ -113,7 +115,7 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
# De-advertise floating IP networks # De-advertise floating IP networks
bgp_networks = call_get_bgp_networks(provider_router_id) bgp_networks = call_get_bgp_networks(provider_router_id)
bgp_networks.each do |bgp_network| bgp_networks.each do |bgp_network|
call_delete_bgp_network(bgp_network) call_delete_bgp_network(bgp_network["id"])
end end
end end
@@ -133,13 +135,15 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
define_connection(resource[:midonet_api_url]) define_connection(resource[:midonet_api_url])
entered_neighbors_parsed = bgp_neighbors_resource.collect { |x| {'ip_address' => x['ip_address'], 'remote_asn' => x['remote_asn'].to_i} }
# Get the edge router uuid # Get the edge router uuid
provider_router = call_get_provider_router()[0] provider_router = call_get_provider_router()[0]
provider_router_id = provider_router['id'] provider_router_id = provider_router['id']
result_array = Array.new result_array = Array.new
# Check if local ASN is the same # Check if local ASN is the same
result_array.push(provider_router["asNumber"] == resource[:bgp_local_as_number]) result_array.push(provider_router["asNumber"].to_i == resource[:bgp_local_as_number].to_i)
# Check if BGP neighbors are the same # Check if BGP neighbors are the same
bgp_neighbors = call_get_bgp_peers(provider_router_id) bgp_neighbors = call_get_bgp_peers(provider_router_id)
m = Array.new m = Array.new
@@ -148,7 +152,7 @@ Puppet::Type.type(:midonet_gateway_bgp).provide(:midonet_api_caller) do
"remote_asn" => bgp_neighbor["asNumber"] } "remote_asn" => bgp_neighbor["asNumber"] }
m << n m << n
end end
result_array.push(m == bgp_neighbors_resource) result_array.push(m == entered_neighbors_parsed)
# Check if advertised networks are the same # Check if advertised networks are the same
bgp_advertised_networks = call_get_bgp_networks(provider_router_id) bgp_advertised_networks = call_get_bgp_networks(provider_router_id)
j = Array.new j = Array.new

View File

@@ -62,6 +62,8 @@ describe Puppet::Type.type(:midonet_gateway_bgp).provider(:midonet_api_caller) d
[ [
{ {
"id" => "4a5e4356-3417-4c60-9cf8-7516abcd1234", "id" => "4a5e4356-3417-4c60-9cf8-7516abcd1234",
"subnetAddress" => "10.0.0.0",
"subnetLength" => "24"
} }
] ]
} }
@@ -84,7 +86,7 @@ describe Puppet::Type.type(:midonet_gateway_bgp).provider(:midonet_api_caller) d
allow(provider).to receive(:call_advertise_bgp_network) allow(provider).to receive(:call_advertise_bgp_network)
allow(provider).to receive(:call_get_bgp_peers).and_return(bgp_peers) allow(provider).to receive(:call_get_bgp_peers).and_return(bgp_peers)
allow(provider).to receive(:call_delete_bgp_peer) allow(provider).to receive(:call_delete_bgp_peer)
allow(provider).to receive(:call_get_bgp_networks).and_return(bgp_networks.map { |e| e['id'] }) allow(provider).to receive(:call_get_bgp_networks).and_return(bgp_networks)
allow(provider).to receive(:call_delete_bgp_network) allow(provider).to receive(:call_delete_bgp_network)
allow(provider).to receive(:call_get_bgp_routes).and_return(bgp_routes) allow(provider).to receive(:call_get_bgp_routes).and_return(bgp_routes)
end end
@@ -92,8 +94,8 @@ describe Puppet::Type.type(:midonet_gateway_bgp).provider(:midonet_api_caller) d
it 'follows happy path (BGP)' do it 'follows happy path (BGP)' do
expect(provider).to receive(:call_get_provider_router) expect(provider).to receive(:call_get_provider_router)
expect(provider).to receive(:call_assign_asn) expect(provider).to receive(:call_assign_asn)
expect(provider).to receive(:call_add_bgp_peer).with(routers[0]['id'], '200.100.98.7', '45237') expect(provider).to receive(:call_add_bgp_peer).with(routers[0]['id'], '200.100.98.7', 45237)
expect(provider).to receive(:call_add_bgp_peer).with(routers[0]['id'], '182.24.63.2', '45235') expect(provider).to receive(:call_add_bgp_peer).with(routers[0]['id'], '182.24.63.2', 45235)
expect(provider).to receive(:call_advertise_bgp_network).with(routers[0]['id'], '200.100.0.0/24') expect(provider).to receive(:call_advertise_bgp_network).with(routers[0]['id'], '200.100.0.0/24')
expect(provider).to receive(:call_advertise_bgp_network).with(routers[0]['id'], '200.0.20.0/24') expect(provider).to receive(:call_advertise_bgp_network).with(routers[0]['id'], '200.0.20.0/24')
expect(provider).to receive(:call_get_bgp_peers).with(routers[0]['id']) expect(provider).to receive(:call_get_bgp_peers).with(routers[0]['id'])