Skip to content

Commit b755acf

Browse files
authored
Merge pull request #1056 from ninjarobot/route-server-depends-on
Route Servers: Support 'depends_on' for routeServerBGPConnection
2 parents 2722cab + 4f47fc2 commit b755acf

File tree

5 files changed

+66
-6
lines changed

5 files changed

+66
-6
lines changed

RELEASE_NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Release Notes
33

44
## 1.7.26
55
* Container Apps: Add support for Dapr components
6+
* Route Servers: Support 'depends_on' for routeServerBGPConnection.
67
* WebApps: When creating keyvault secrets for web app appsettings replace characters unsupported in keyvault secret names with `-`
78

89
## 1.7.25

docs/content/api-overview/resources/route-server.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ The `routeServer` builder creates a route server to simplify dynamic routing bet
2424
| routeServerBGPConnection | name | Name of the BGP connection |
2525
| routeServerBGPConnection | peer_ip | The peer IP of the BGP connection |
2626
| routeServerBGPConnection | peer_asn | The peer Asn of the BGP connection |
27+
| routeServerBGPConnection | depends_on | Depend on another resource before deploying this bgp connection |
2728

2829
#### Example
2930

src/Farmer/Arm/Network.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ type RouteServerBGPConnection =
230230
PeerIp: string
231231
PeerAsn: int
232232
IpConfig: LinkedResource
233+
Dependencies: Set<ResourceId>
233234
}
234235

235236
interface IArmResource with
@@ -246,6 +247,7 @@ type RouteServerBGPConnection =
246247
this.RouteServer.ResourceId
247248
}
248249
|> Set.ofSeq
250+
|> Set.union this.Dependencies
249251

250252
{| routeServerBGPConnections.Create(this.RouteServer.Name / this.Name, dependsOn = dependencies) with
251253
properties =

src/Farmer/Builders/Builders.RouteServer.fs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,17 @@ type RSBGPConnectionConfig =
1111
Name: string
1212
PeerIp: string
1313
PeerAsn: int
14+
Dependencies: Set<ResourceId>
1415
}
1516

1617
type RSBGPConnectionBuilder() =
17-
member _.Yield _ = { Name = ""; PeerIp = ""; PeerAsn = 0 }
18+
member _.Yield _ =
19+
{
20+
Name = ""
21+
PeerIp = ""
22+
PeerAsn = 0
23+
Dependencies = Set.empty
24+
}
1825

1926
[<CustomOperation "name">]
2027
member _.ConnectionName(state: RSBGPConnectionConfig, name) = { state with Name = name }
@@ -25,6 +32,13 @@ type RSBGPConnectionBuilder() =
2532
[<CustomOperation "peer_asn">]
2633
member _.PeerAsn(state: RSBGPConnectionConfig, peerAsn) = { state with PeerAsn = peerAsn }
2734

35+
interface IDependable<RSBGPConnectionConfig> with
36+
/// Adds an explicit dependency to this Container App Environment.
37+
member _.Add state newDeps =
38+
{ state with
39+
Dependencies = state.Dependencies + newDeps
40+
}
41+
2842
let routeServerBGPConnection = RSBGPConnectionBuilder()
2943

3044
type RouteServerConfig =
@@ -111,6 +125,7 @@ type RouteServerConfig =
111125
ResourceName $"{this.Name.Value}-ipconfig"
112126
)
113127
)
128+
Dependencies = connection.Dependencies
114129
}
115130
]
116131

src/Tests/Network.fs

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -854,6 +854,19 @@ let tests =
854854
peer_ip "10.0.1.85"
855855
peer_asn 65000
856856
}
857+
routeServerBGPConnection {
858+
name "my-bgp-conn-2"
859+
peer_ip "10.0.1.86"
860+
peer_asn 65000
861+
862+
depends_on (
863+
ResourceId.create (
864+
routeServerBGPConnections,
865+
ResourceName "my-route-server",
866+
ResourceName "my-bgp-conn"
867+
)
868+
)
869+
}
857870
]
858871
}
859872
]
@@ -982,8 +995,7 @@ let tests =
982995
Expect.equal sku "Standard" "Incorrect default value for sku"
983996

984997
//validate bgp connection generated
985-
let bgpConn =
986-
jobj.SelectToken "resources[?(@.type=='Microsoft.Network/virtualHubs/bgpConnections')]"
998+
let bgpConn = jobj.SelectToken "resources[?(@.name=='my-route-server/my-bgp-conn')]"
987999

9881000
Expect.isNotNull bgpConn "bgp connection should be generated"
9891001

@@ -994,9 +1006,7 @@ let tests =
9941006
(JToken.op_Implicit "my-route-server/my-bgp-conn")
9951007
"Incorrect default value for bgp connection name"
9961008

997-
let bgpConnDependencies =
998-
jobj.SelectToken "resources[?(@.type=='Microsoft.Network/virtualHubs/bgpConnections')].dependsOn"
999-
:?> JArray
1009+
let bgpConnDependencies = bgpConn.SelectToken "dependsOn" :?> JArray
10001010

10011011
Expect.isNotNull bgpConnDependencies "Missing dependency for bgp connection"
10021012
Expect.hasLength bgpConnDependencies 2 "Incorrect number of dependencies for bgp connection"
@@ -1016,6 +1026,37 @@ let tests =
10161026
Expect.equal peerAsn 65000 "Incorrect peer Asn for bgp connection"
10171027
let peerIp: string = JToken.op_Explicit bgpConnProps.["peerIp"]
10181028
Expect.equal peerIp "10.0.1.85" "Incorrect peer ip for bgp connection"
1029+
1030+
//validate bgp connection generated
1031+
let bgpConnWithDep =
1032+
jobj.SelectToken "resources[?(@.name=='my-route-server/my-bgp-conn-2')]"
1033+
1034+
Expect.isNotNull bgpConnWithDep "bgp connection with dependency should be generated"
1035+
1036+
let bgpConnWithDepName = bgpConnWithDep.["name"]
1037+
1038+
Expect.equal
1039+
bgpConnWithDepName
1040+
(JToken.op_Implicit "my-route-server/my-bgp-conn-2")
1041+
"Incorrect default value for bgp connection with dependency name"
1042+
1043+
let bgpConnWithDepDependencies = bgpConnWithDep.SelectToken "dependsOn" :?> JArray
1044+
1045+
Expect.isNotNull
1046+
bgpConnWithDepDependencies
1047+
"Missing dependency for bgp connection with explicit dependency"
1048+
1049+
Expect.hasLength
1050+
bgpConnWithDepDependencies
1051+
3
1052+
"Incorrect number of dependencies for bgp connection with explicit 'depends_on'"
1053+
1054+
Expect.contains
1055+
(bgpConnWithDepDependencies)
1056+
(JValue
1057+
"[resourceId('Microsoft.Network/virtualHubs/bgpConnections', 'my-route-server', 'my-bgp-conn')]")
1058+
"Incorrect bgp connection dependencies with explicit 'depends_on'"
1059+
10191060
}
10201061

10211062
test "Creates basic network interface with static ip" {

0 commit comments

Comments
 (0)