@@ -127,6 +127,10 @@ var _ = Describe("Network", func() {
127
127
PublicIpAddresses : []* csapi.PublicIpAddress {{Id : dummies .PublicIPID , Ipaddress : "fakeIP" }}}, nil )
128
128
as .EXPECT ().NewAssociateIpAddressParams ().Return (& csapi.AssociateIpAddressParams {})
129
129
as .EXPECT ().AssociateIpAddress (gomock .Any ())
130
+ fs .EXPECT ().NewCreateEgressFirewallRuleParams (dummies .ISONet1 .ID , cloud .NetworkProtocolTCP ).
131
+ Return (& csapi.CreateEgressFirewallRuleParams {})
132
+ fs .EXPECT ().CreateEgressFirewallRule (& csapi.CreateEgressFirewallRuleParams {}).
133
+ Return (& csapi.CreateEgressFirewallRuleResponse {}, nil )
130
134
131
135
// Will add cluster tag once to Network and once to PublicIP.
132
136
createdByResponse := & csapi.ListTagsResponse {Tags : []* csapi.Tag {{Key : cloud .CreatedByCAPCTagName , Value : "1" }}}
@@ -149,6 +153,35 @@ var _ = Describe("Network", func() {
149
153
Ω (client .GetOrCreateIsolatedNetwork (dummies .CSCluster )).Should (Succeed ())
150
154
})
151
155
156
+ Context ("for a closed firewall" , func () {
157
+ It ("OpenFirewallRule asks CloudStack to open the firewall" , func () {
158
+ dummies .Zone1 .Network = dummies .ISONet1
159
+ dummies .CSCluster .Status .Zones = capcv1.ZoneStatusMap {dummies .Zone1 .ID : dummies .Zone1 }
160
+ dummies .CSCluster .Status .PublicIPNetworkID = dummies .ISONet1 .ID
161
+ fs .EXPECT ().NewCreateEgressFirewallRuleParams (dummies .ISONet1 .ID , cloud .NetworkProtocolTCP ).
162
+ Return (& csapi.CreateEgressFirewallRuleParams {})
163
+ fs .EXPECT ().CreateEgressFirewallRule (& csapi.CreateEgressFirewallRuleParams {}).
164
+ Return (& csapi.CreateEgressFirewallRuleResponse {}, nil )
165
+
166
+ Ω (client .OpenFirewallRules (dummies .ISONet1 .ID )).Should (Succeed ())
167
+ })
168
+ })
169
+
170
+ Context ("for an open firewall" , func () {
171
+ It ("OpenFirewallRule asks CloudStack to open the firewall anyway, but doesn't fail" , func () {
172
+ dummies .Zone1 .Network = dummies .ISONet1
173
+ dummies .CSCluster .Status .Zones = capcv1.ZoneStatusMap {dummies .Zone1 .ID : dummies .Zone1 }
174
+ dummies .CSCluster .Status .PublicIPNetworkID = dummies .ISONet1 .ID
175
+
176
+ fs .EXPECT ().NewCreateEgressFirewallRuleParams (dummies .ISONet1 .ID , "tcp" ).
177
+ Return (& csapi.CreateEgressFirewallRuleParams {})
178
+ fs .EXPECT ().CreateEgressFirewallRule (& csapi.CreateEgressFirewallRuleParams {}).
179
+ Return (& csapi.CreateEgressFirewallRuleResponse {}, errors .New ("there is already a rule like this" ))
180
+
181
+ Ω (client .OpenFirewallRules (dummies .ISONet1 .ID )).Should (Succeed ())
182
+ })
183
+ })
184
+
152
185
Context ("in an isolated network with public IPs available" , func () {
153
186
It ("will resolve public IP details given an endpoint spec" , func () {
154
187
ipAddress := "192.168.1.14"
0 commit comments