mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-15 17:11:30 +00:00
40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
//go:build e2e
|
||
|
||
package single
|
||
|
||
import (
|
||
"regexp"
|
||
|
||
"github.com/aws/aws-sdk-go/aws"
|
||
"github.com/aws/aws-sdk-go/service/ec2"
|
||
"github.com/mulgadc/spinifex/tests/e2e/harness"
|
||
)
|
||
|
||
// pingReceivedRE matches the busybox/iputils summary line for 1–3 echo replies
|
||
// (`3 packets received` or `1 received`). Mirrors the bash grep pattern.
|
||
var pingReceivedRE = regexp.MustCompile(`[1-3] (packets )?received`)
|
||
|
||
// pingDroppedRE matches the summary for a fully dropped probe — either
|
||
// `0 received` or `100% packet loss`. Mirrors the bash grep pattern.
|
||
var pingDroppedRE = regexp.MustCompile(`0 (packets )?received|100% packet loss`)
|
||
|
||
// allowAllEgressPermission returns the SDK shape for the default SG's stock
|
||
// `IpProtocol=-1, CidrIp=0.0.0.0/0` rule.
|
||
func allowAllEgressPermission() *ec2.IpPermission {
|
||
return &ec2.IpPermission{
|
||
IpProtocol: aws.String("-1"),
|
||
IpRanges: []*ec2.IpRange{{CidrIp: aws.String("0.0.0.0/0")}},
|
||
}
|
||
}
|
||
|
||
// authorizeAllowAllEgress is the idempotent re-add used both by the happy
|
||
// path and t.Cleanup. Returns the raw SDK error so the caller can decide
|
||
// whether `InvalidPermission.Duplicate` is fatal in its context.
|
||
func authorizeAllowAllEgress(c *harness.AWSClient, sgID string) error {
|
||
_, err := c.EC2.AuthorizeSecurityGroupEgress(&ec2.AuthorizeSecurityGroupEgressInput{
|
||
GroupId: aws.String(sgID),
|
||
IpPermissions: []*ec2.IpPermission{allowAllEgressPermission()},
|
||
})
|
||
return err
|
||
}
|