Skip to content

Commit 1cef914

Browse files
committed
Add back the removed test for OpenFirewallRules
1 parent 1414066 commit 1cef914

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

pkg/cloud/network.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type NetworkIface interface {
3030
ResolveNetworkStatuses(*capcv1.CloudStackCluster) error
3131
ResolveNetwork(*capcv1.CloudStackCluster, *capcv1.Network) error
3232
CreateIsolatedNetwork(*capcv1.CloudStackCluster) error
33+
OpenFirewallRules(networkID string) error
3334
FetchPublicIP(*capcv1.CloudStackCluster) (*cloudstack.PublicIpAddress, error)
3435
ResolveLoadBalancerRuleDetails(*capcv1.CloudStackCluster) error
3536
GetOrCreateLoadBalancerRule(*capcv1.CloudStackCluster) error
@@ -145,7 +146,7 @@ func (c *client) CreateIsolatedNetwork(csCluster *capcv1.CloudStackCluster) (ret
145146
return err
146147
}
147148

148-
if err := c.openFirewallRules(zoneStatus.Network.ID); err != nil {
149+
if err := c.OpenFirewallRules(zoneStatus.Network.ID); err != nil {
149150
return err
150151
}
151152

@@ -271,7 +272,7 @@ func (c *client) AssociatePublicIPAddress(csCluster *capcv1.CloudStackCluster) (
271272
return nil
272273
}
273274

274-
func (c *client) openFirewallRules(networkID string) (retErr error) {
275+
func (c *client) OpenFirewallRules(networkID string) (retErr error) {
275276
p := c.cs.Firewall.NewCreateEgressFirewallRuleParams(networkID, NetworkProtocolTCP)
276277
_, retErr = c.cs.Firewall.CreateEgressFirewallRule(p)
277278
if retErr != nil && strings.Contains(strings.ToLower(retErr.Error()), "there is already") { // Already a firewall rule here.

pkg/cloud/network_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@ var _ = Describe("Network", func() {
127127
PublicIpAddresses: []*csapi.PublicIpAddress{{Id: dummies.PublicIPID, Ipaddress: "fakeIP"}}}, nil)
128128
as.EXPECT().NewAssociateIpAddressParams().Return(&csapi.AssociateIpAddressParams{})
129129
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)
130134

131135
// Will add cluster tag once to Network and once to PublicIP.
132136
createdByResponse := &csapi.ListTagsResponse{Tags: []*csapi.Tag{{Key: cloud.CreatedByCAPCTagName, Value: "1"}}}
@@ -149,6 +153,35 @@ var _ = Describe("Network", func() {
149153
Ω(client.GetOrCreateIsolatedNetwork(dummies.CSCluster)).Should(Succeed())
150154
})
151155

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+
152185
Context("in an isolated network with public IPs available", func() {
153186
It("will resolve public IP details given an endpoint spec", func() {
154187
ipAddress := "192.168.1.14"

0 commit comments

Comments
 (0)