本文整理汇总了Golang中github.com/crowdmob/goamz/ec2.NewFilter函数的典型用法代码示例。如果您正苦于以下问题:Golang NewFilter函数的具体用法?Golang NewFilter怎么用?Golang NewFilter使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewFilter函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestDescribeSecurityGroupsExampleWithFilter
func (s *S) TestDescribeSecurityGroupsExampleWithFilter(c *check.C) {
testServer.Response(200, nil, DescribeSecurityGroupsExample)
filter := ec2.NewFilter()
filter.Add("ip-permission.protocol", "tcp")
filter.Add("ip-permission.from-port", "22")
filter.Add("ip-permission.to-port", "22")
filter.Add("ip-permission.group-name", "app_server_group", "database_group")
_, err := s.ec2.SecurityGroups(nil, filter)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeSecurityGroups"})
c.Assert(req.Form["Filter.1.Name"], check.DeepEquals, []string{"ip-permission.from-port"})
c.Assert(req.Form["Filter.1.Value.1"], check.DeepEquals, []string{"22"})
c.Assert(req.Form["Filter.2.Name"], check.DeepEquals, []string{"ip-permission.group-name"})
c.Assert(req.Form["Filter.2.Value.1"], check.DeepEquals, []string{"app_server_group"})
c.Assert(req.Form["Filter.2.Value.2"], check.DeepEquals, []string{"database_group"})
c.Assert(req.Form["Filter.3.Name"], check.DeepEquals, []string{"ip-permission.protocol"})
c.Assert(req.Form["Filter.3.Value.1"], check.DeepEquals, []string{"tcp"})
c.Assert(req.Form["Filter.4.Name"], check.DeepEquals, []string{"ip-permission.to-port"})
c.Assert(req.Form["Filter.4.Value.1"], check.DeepEquals, []string{"22"})
c.Assert(err, check.IsNil)
}
示例2: getPrivateIPs
func getPrivateIPs(ec2region *ec2.EC2) []string {
filter := ec2.NewFilter()
for _, tag := range *tags {
parts := strings.SplitN(tag, ":", 2)
if len(parts) != 2 {
log.Println("expected TAG:VALUE got", tag)
break
}
filter.Add(fmt.Sprintf("tag:%v", parts[0]), parts[1])
}
taggedInstances := []string{}
resp, err := ec2region.DescribeInstances(nil, filter)
if err != nil {
log.Println(err)
return taggedInstances
}
for _, rsv := range resp.Reservations {
for _, inst := range rsv.Instances {
taggedInstances = append(taggedInstances, inst.PrivateIPAddress)
}
}
return taggedInstances
}
示例3: TestDescribeInstancesExample1
func (s *S) TestDescribeInstancesExample1(c *check.C) {
testServer.Response(200, nil, DescribeInstancesExample1)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
filter.Add("key2", "value2", "value3")
resp, err := s.ec2.DescribeInstances([]string{"i-1", "i-2"}, nil)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeInstances"})
c.Assert(req.Form["InstanceId.1"], check.DeepEquals, []string{"i-1"})
c.Assert(req.Form["InstanceId.2"], check.DeepEquals, []string{"i-2"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "98e3c9a4-848c-4d6d-8e8a-b1bdEXAMPLE")
c.Assert(resp.Reservations, check.HasLen, 2)
r0 := resp.Reservations[0]
c.Assert(r0.ReservationId, check.Equals, "r-b27e30d9")
c.Assert(r0.OwnerId, check.Equals, "999988887777")
c.Assert(r0.RequesterId, check.Equals, "854251627541")
c.Assert(r0.SecurityGroups, check.DeepEquals, []ec2.SecurityGroup{{Name: "default", Id: "sg-67ad940e"}})
c.Assert(r0.Instances, check.HasLen, 1)
r0i := r0.Instances[0]
c.Assert(r0i.InstanceId, check.Equals, "i-c5cd56af")
c.Assert(r0i.PrivateDNSName, check.Equals, "domU-12-31-39-10-56-34.compute-1.internal")
c.Assert(r0i.DNSName, check.Equals, "ec2-174-129-165-232.compute-1.amazonaws.com")
c.Assert(r0i.AvailabilityZone, check.Equals, "us-east-1b")
c.Assert(r0i.IPAddress, check.Equals, "174.129.165.232")
c.Assert(r0i.PrivateIPAddress, check.Equals, "10.198.85.190")
}
示例4: TestDescribeTags
func (s *S) TestDescribeTags(c *check.C) {
testServer.Response(200, nil, DescribeTagsExample)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
resp, err := s.ec2.DescribeTags(filter)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeTags"})
c.Assert(req.Form["Filter.1.Name"], check.DeepEquals, []string{"key1"})
c.Assert(req.Form["Filter.1.Value.1"], check.DeepEquals, []string{"value1"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
c.Assert(resp.Tags, check.HasLen, 6)
r0 := resp.Tags[0]
c.Assert(r0.Key, check.Equals, "webserver")
c.Assert(r0.Value, check.Equals, "")
c.Assert(r0.ResourceId, check.Equals, "ami-1a2b3c4d")
c.Assert(r0.ResourceType, check.Equals, "image")
r1 := resp.Tags[1]
c.Assert(r1.Key, check.Equals, "stack")
c.Assert(r1.Value, check.Equals, "Production")
c.Assert(r1.ResourceId, check.Equals, "ami-1a2b3c4d")
c.Assert(r1.ResourceType, check.Equals, "image")
}
示例5: TestDescribeImagesExample
func (s *S) TestDescribeImagesExample(c *check.C) {
testServer.Response(200, nil, DescribeImagesExample)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
filter.Add("key2", "value2", "value3")
resp, err := s.ec2.Images([]string{"ami-1", "ami-2"}, filter)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeImages"})
c.Assert(req.Form["ImageId.1"], check.DeepEquals, []string{"ami-1"})
c.Assert(req.Form["ImageId.2"], check.DeepEquals, []string{"ami-2"})
c.Assert(req.Form["Filter.1.Name"], check.DeepEquals, []string{"key1"})
c.Assert(req.Form["Filter.1.Value.1"], check.DeepEquals, []string{"value1"})
c.Assert(req.Form["Filter.1.Value.2"], check.IsNil)
c.Assert(req.Form["Filter.2.Name"], check.DeepEquals, []string{"key2"})
c.Assert(req.Form["Filter.2.Value.1"], check.DeepEquals, []string{"value2"})
c.Assert(req.Form["Filter.2.Value.2"], check.DeepEquals, []string{"value3"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "4a4a27a2-2e7c-475d-b35b-ca822EXAMPLE")
c.Assert(resp.Images, check.HasLen, 1)
i0 := resp.Images[0]
c.Assert(i0.Id, check.Equals, "ami-a2469acf")
c.Assert(i0.Type, check.Equals, "machine")
c.Assert(i0.Name, check.Equals, "example-marketplace-amzn-ami.1")
c.Assert(i0.Description, check.Equals, "Amazon Linux AMI i386 EBS")
c.Assert(i0.Location, check.Equals, "aws-marketplace/example-marketplace-amzn-ami.1")
c.Assert(i0.State, check.Equals, "available")
c.Assert(i0.Public, check.Equals, true)
c.Assert(i0.OwnerId, check.Equals, "123456789999")
c.Assert(i0.OwnerAlias, check.Equals, "aws-marketplace")
c.Assert(i0.Architecture, check.Equals, "i386")
c.Assert(i0.KernelId, check.Equals, "aki-805ea7e9")
c.Assert(i0.RootDeviceType, check.Equals, "ebs")
c.Assert(i0.RootDeviceName, check.Equals, "/dev/sda1")
c.Assert(i0.VirtualizationType, check.Equals, "paravirtual")
c.Assert(i0.Hypervisor, check.Equals, "xen")
c.Assert(i0.Tags, check.HasLen, 1)
c.Assert(i0.Tags[0].Key, check.Equals, "Purpose")
c.Assert(i0.Tags[0].Value, check.Equals, "EXAMPLE")
c.Assert(i0.BlockDevices, check.HasLen, 1)
c.Assert(i0.BlockDevices[0].DeviceName, check.Equals, "/dev/sda1")
c.Assert(i0.BlockDevices[0].SnapshotId, check.Equals, "snap-787e9403")
c.Assert(i0.BlockDevices[0].VolumeSize, check.Equals, int64(8))
c.Assert(i0.BlockDevices[0].DeleteOnTermination, check.Equals, true)
}
示例6: main
func main() {
flag.Parse()
auth, err := aws.GetAuth("", "", "", time.Now().Add(time.Hour))
if err != nil {
panic(err)
}
filter := ec2.NewFilter()
filter.Add("instance-state-name", "running")
filter.Add("tag:env", "prod")
c := ec2.New(auth, aws.USEast)
resp, err := c.DescribeInstances(nil, filter)
if err != nil {
log.Panicln(err)
}
rezzies := resp.Reservations
for _, rv := range rezzies {
for _, inst := range rv.Instances {
if len(inst.BlockDevices) < 3 {
for _, bd := range inst.BlockDevices {
vid := bd.EBS.VolumeId
name, err := getName(inst.Tags)
log.Printf("Creating snapshot for: %s volume: %v\n", name, vid)
if err != nil {
log.Fatalf("Error getting name:", err)
}
stamp := time.Now().UTC().Format(TIME_FORMAT)
snprsp, err := c.CreateSnapshot(vid, fmt.Sprintf("%s %s %s", name, *period, stamp))
if err != nil {
log.Printf("Failed to snap: %s, Error: %s\n", vid, err)
break
} else {
log.Printf("Created snap: %s\n", snprsp.Id)
t := ec2.Tag{Key: "inst_snap", Value: fmt.Sprintf("%s/%s", inst.InstanceId, *period)}
tags = append(inst.Tags, t)
wg.Add(1)
go tagSnapshot(inst.InstanceId, snprsp.Id, tags, c)
}
}
}
}
}
wg.Wait()
}
示例7: main
func main() {
auth := aws.Auth{
AccessKey: os.Getenv("AWS_ACCESS_KEY"),
SecretKey: os.Getenv("AWS_SECRET_KEY"),
}
filter := ec2.NewFilter()
filter.Add("event.code", "instance-retirement")
for _, _region := range regions {
region := _region
statuses, err := getInstanceStatus(region, &auth, nil, filter)
if err != nil {
fmt.Println(err)
}
for _, status := range statuses {
fmt.Printf("%s\t%s\t%s\t%s\t%s\n", status.InstanceId, status.AvailabilityZone, status.InstanceState.Name, status.SystemStatus, status.EventDetails)
}
}
}
示例8: TestDescribeSubnetsExample
func (s *S) TestDescribeSubnetsExample(c *check.C) {
testServer.Response(200, nil, DescribeSubnetsExample)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
filter.Add("key2", "value2", "value3")
resp, err := s.ec2.Subnets([]string{"subnet-1", "subnet-2"}, filter)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeSubnets"})
c.Assert(req.Form["SubnetId.1"], check.DeepEquals, []string{"subnet-1"})
c.Assert(req.Form["SubnetId.2"], check.DeepEquals, []string{"subnet-2"})
c.Assert(req.Form["Filter.1.Name"], check.DeepEquals, []string{"key1"})
c.Assert(req.Form["Filter.1.Value.1"], check.DeepEquals, []string{"value1"})
c.Assert(req.Form["Filter.1.Value.2"], check.IsNil)
c.Assert(req.Form["Filter.2.Name"], check.DeepEquals, []string{"key2"})
c.Assert(req.Form["Filter.2.Value.1"], check.DeepEquals, []string{"value2"})
c.Assert(req.Form["Filter.2.Value.2"], check.DeepEquals, []string{"value3"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "a5266c3e-2b7a-4434-971e-317b6EXAMPLE")
c.Assert(resp.Subnets, check.HasLen, 3)
s0 := resp.Subnets[0]
c.Assert(s0.Id, check.Equals, "subnet-3e993755")
c.Assert(s0.State, check.Equals, "available")
c.Assert(s0.VpcId, check.Equals, "vpc-f84a9b93")
c.Assert(s0.CidrBlock, check.Equals, "10.0.12.0/24")
c.Assert(s0.AvailableIpAddressCount, check.Equals, 249)
c.Assert(s0.AvailabilityZone, check.Equals, "us-west-2c")
c.Assert(s0.DefaultForAz, check.Equals, false)
c.Assert(s0.MapPublicIpOnLaunch, check.Equals, false)
c.Assert(s0.Tags, check.HasLen, 2)
c.Assert(s0.Tags[0].Key, check.Equals, "visibility")
c.Assert(s0.Tags[0].Value, check.Equals, "private")
c.Assert(s0.Tags[1].Key, check.Equals, "Name")
c.Assert(s0.Tags[1].Value, check.Equals, "application")
}
示例9: TestDescribeAddressesPublicIPExample
func (s *S) TestDescribeAddressesPublicIPExample(c *check.C) {
testServer.Response(200, nil, DescribeAddressesExample)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
filter.Add("key2", "value2", "value3")
resp, err := s.ec2.DescribeAddresses([]string{"192.0.2.1", "198.51.100.2", "203.0.113.41"}, []string{}, nil)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeAddresses"})
c.Assert(req.Form["PublicIp.1"], check.DeepEquals, []string{"192.0.2.1"})
c.Assert(req.Form["PublicIp.2"], check.DeepEquals, []string{"198.51.100.2"})
c.Assert(req.Form["PublicIp.3"], check.DeepEquals, []string{"203.0.113.41"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE")
c.Assert(resp.Addresses, check.HasLen, 3)
r0 := resp.Addresses[0]
c.Assert(r0.PublicIp, check.Equals, "192.0.2.1")
c.Assert(r0.Domain, check.Equals, "standard")
c.Assert(r0.InstanceId, check.Equals, "i-f15ebb98")
r0i := resp.Addresses[1]
c.Assert(r0i.PublicIp, check.Equals, "198.51.100.2")
c.Assert(r0i.Domain, check.Equals, "standard")
c.Assert(r0i.InstanceId, check.Equals, "")
r0ii := resp.Addresses[2]
c.Assert(r0ii.PublicIp, check.Equals, "203.0.113.41")
c.Assert(r0ii.Domain, check.Equals, "vpc")
c.Assert(r0ii.InstanceId, check.Equals, "i-64600030")
c.Assert(r0ii.AssociationId, check.Equals, "eipassoc-f0229899")
c.Assert(r0ii.AllocationId, check.Equals, "eipalloc-08229861")
c.Assert(r0ii.NetworkInterfaceOwnerId, check.Equals, "053230519467")
c.Assert(r0ii.NetworkInterfaceId, check.Equals, "eni-ef229886")
c.Assert(r0ii.PrivateIpAddress, check.Equals, "10.0.0.228")
}
示例10: TestDescribeSnapshotsExample
func (s *S) TestDescribeSnapshotsExample(c *check.C) {
testServer.Response(200, nil, DescribeSnapshotsExample)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
filter.Add("key2", "value2", "value3")
resp, err := s.ec2.Snapshots([]string{"snap-1", "snap-2"}, filter)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeSnapshots"})
c.Assert(req.Form["SnapshotId.1"], check.DeepEquals, []string{"snap-1"})
c.Assert(req.Form["SnapshotId.2"], check.DeepEquals, []string{"snap-2"})
c.Assert(req.Form["Filter.1.Name"], check.DeepEquals, []string{"key1"})
c.Assert(req.Form["Filter.1.Value.1"], check.DeepEquals, []string{"value1"})
c.Assert(req.Form["Filter.1.Value.2"], check.IsNil)
c.Assert(req.Form["Filter.2.Name"], check.DeepEquals, []string{"key2"})
c.Assert(req.Form["Filter.2.Value.1"], check.DeepEquals, []string{"value2"})
c.Assert(req.Form["Filter.2.Value.2"], check.DeepEquals, []string{"value3"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE")
c.Assert(resp.Snapshots, check.HasLen, 1)
s0 := resp.Snapshots[0]
c.Assert(s0.Id, check.Equals, "snap-1a2b3c4d")
c.Assert(s0.VolumeId, check.Equals, "vol-8875daef")
c.Assert(s0.VolumeSize, check.Equals, "15")
c.Assert(s0.Status, check.Equals, "pending")
c.Assert(s0.StartTime, check.Equals, "2010-07-29T04:12:01.000Z")
c.Assert(s0.Progress, check.Equals, "30%")
c.Assert(s0.OwnerId, check.Equals, "111122223333")
c.Assert(s0.Description, check.Equals, "Daily Backup")
c.Assert(s0.Tags, check.HasLen, 1)
c.Assert(s0.Tags[0].Key, check.Equals, "Purpose")
c.Assert(s0.Tags[0].Value, check.Equals, "demo_db_14_backup")
}
示例11: TestDescribeAddressesAllocationIDExample
func (s *S) TestDescribeAddressesAllocationIDExample(c *check.C) {
testServer.Response(200, nil, DescribeAddressesAllocationIdExample)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
filter.Add("key2", "value2", "value3")
resp, err := s.ec2.DescribeAddresses([]string{}, []string{"eipalloc-08229861", "eipalloc-08364752"}, nil)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeAddresses"})
c.Assert(req.Form["AllocationId.1"], check.DeepEquals, []string{"eipalloc-08229861"})
c.Assert(req.Form["AllocationId.2"], check.DeepEquals, []string{"eipalloc-08364752"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE")
c.Assert(resp.Addresses, check.HasLen, 2)
r0 := resp.Addresses[0]
c.Assert(r0.PublicIp, check.Equals, "203.0.113.41")
c.Assert(r0.AllocationId, check.Equals, "eipalloc-08229861")
c.Assert(r0.Domain, check.Equals, "vpc")
c.Assert(r0.InstanceId, check.Equals, "i-64600030")
c.Assert(r0.AssociationId, check.Equals, "eipassoc-f0229899")
c.Assert(r0.NetworkInterfaceId, check.Equals, "eni-ef229886")
c.Assert(r0.NetworkInterfaceOwnerId, check.Equals, "053230519467")
c.Assert(r0.PrivateIpAddress, check.Equals, "10.0.0.228")
r1 := resp.Addresses[1]
c.Assert(r1.PublicIp, check.Equals, "146.54.2.230")
c.Assert(r1.AllocationId, check.Equals, "eipalloc-08364752")
c.Assert(r1.Domain, check.Equals, "vpc")
c.Assert(r1.InstanceId, check.Equals, "i-64693456")
c.Assert(r1.AssociationId, check.Equals, "eipassoc-f0348693")
c.Assert(r1.NetworkInterfaceId, check.Equals, "eni-da764039")
c.Assert(r1.NetworkInterfaceOwnerId, check.Equals, "053230519467")
c.Assert(r1.PrivateIpAddress, check.Equals, "10.0.0.102")
}
示例12: trimSnapshots
func trimSnapshots(instId string, c *ec2.EC2) {
filter := ec2.NewFilter()
val := fmt.Sprintf("%s/%s", instId, *period)
filter.Add("status", "completed")
filter.Add("tag:inst_snap", val)
resp, err := c.Snapshots(nil, filter)
if err != nil {
log.Printf("Error getting existing snapshots: ", err)
}
if len(resp.Snapshots) > *copies {
excess := len(resp.Snapshots) - *copies
extras := resp.Snapshots[:excess]
log.Printf("Need %d have %d completed snapshots\n", *copies, len(resp.Snapshots))
for _, extra := range extras {
log.Printf("Trimming %s for %sn", extra.Id, instId)
_, err := c.DeleteSnapshots([]string{extra.Id})
if err != nil {
log.Println("Failed trimming snapshot:", extra.Id, " Error: ", err)
}
}
}
}
示例13: TestDescribeInstancesExample2
func (s *S) TestDescribeInstancesExample2(c *check.C) {
testServer.Response(200, nil, DescribeInstancesExample2)
filter := ec2.NewFilter()
filter.Add("key1", "value1")
filter.Add("key2", "value2", "value3")
resp, err := s.ec2.DescribeInstances([]string{"i-1", "i-2"}, filter)
req := testServer.WaitRequest()
c.Assert(req.Form["Action"], check.DeepEquals, []string{"DescribeInstances"})
c.Assert(req.Form["InstanceId.1"], check.DeepEquals, []string{"i-1"})
c.Assert(req.Form["InstanceId.2"], check.DeepEquals, []string{"i-2"})
c.Assert(req.Form["Filter.1.Name"], check.DeepEquals, []string{"key1"})
c.Assert(req.Form["Filter.1.Value.1"], check.DeepEquals, []string{"value1"})
c.Assert(req.Form["Filter.1.Value.2"], check.IsNil)
c.Assert(req.Form["Filter.2.Name"], check.DeepEquals, []string{"key2"})
c.Assert(req.Form["Filter.2.Value.1"], check.DeepEquals, []string{"value2"})
c.Assert(req.Form["Filter.2.Value.2"], check.DeepEquals, []string{"value3"})
c.Assert(err, check.IsNil)
c.Assert(resp.RequestId, check.Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE")
c.Assert(resp.Reservations, check.HasLen, 1)
r0 := resp.Reservations[0]
r0i := r0.Instances[0]
c.Assert(r0i.State.Code, check.Equals, 16)
c.Assert(r0i.State.Name, check.Equals, "running")
r0t0 := r0i.Tags[0]
r0t1 := r0i.Tags[1]
c.Assert(r0t0.Key, check.Equals, "webserver")
c.Assert(r0t0.Value, check.Equals, "")
c.Assert(r0t1.Key, check.Equals, "stack")
c.Assert(r0t1.Value, check.Equals, "Production")
}
示例14: TestGroupFiltering
//.........这里部分代码省略.........
groups []ec2.SecurityGroup // groupIds argument to SecurityGroups method.
filters []filterSpec // filters argument to SecurityGroups method.
results []ec2.SecurityGroup // set of expected result groups.
allowExtra bool // specified results may be incomplete.
err string // expected error.
}
filterCheck := func(name, val string, gs []ec2.SecurityGroup) groupTest {
return groupTest{
about: "filter check " + name,
filters: []filterSpec{{name, []string{val}}},
results: gs,
allowExtra: true,
}
}
tests := []groupTest{
{
about: "check that SecurityGroups returns all groups",
results: groups(0, 1, 2, 3),
allowExtra: true,
}, {
about: "check that specifying two group ids returns them",
groups: idsOnly(groups(0, 2)),
results: groups(0, 2),
}, {
about: "check that specifying names only works",
groups: namesOnly(groups(0, 2)),
results: groups(0, 2),
}, {
about: "check that specifying a non-existent group id gives an error",
groups: append(groups(0), ec2.SecurityGroup{Id: "sg-eeeeeeeee"}),
err: `.*\(InvalidGroup\.NotFound\)`,
}, {
about: "check that a filter allowed two groups returns both of them",
filters: []filterSpec{
{"group-id", []string{g[0].Id, g[2].Id}},
},
results: groups(0, 2),
},
{
about: "check that the previous filter works when specifying a list of ids",
groups: groups(1, 2),
filters: []filterSpec{
{"group-id", []string{g[0].Id, g[2].Id}},
},
results: groups(2),
}, {
about: "check that a filter allowing no groups returns none",
filters: []filterSpec{
{"group-id", []string{"sg-eeeeeeeee"}},
},
},
filterCheck("description", "testdescription1", groups(1)),
filterCheck("group-name", g[2].Name, groups(2)),
filterCheck("ip-permission.cidr", "1.2.3.4/32", groups(0)),
filterCheck("ip-permission.group-name", g[1].Name, groups(1, 2)),
filterCheck("ip-permission.protocol", "udp", groups(2)),
filterCheck("ip-permission.from-port", "200", groups(1, 2)),
filterCheck("ip-permission.to-port", "200", groups(0)),
// TODO owner-id
}
for i, t := range tests {
c.Logf("%d. %s", i, t.about)
var f *ec2.Filter
if t.filters != nil {
f = ec2.NewFilter()
for _, spec := range t.filters {
f.Add(spec.name, spec.values...)
}
}
resp, err := s.ec2.SecurityGroups(t.groups, f)
if t.err != "" {
c.Check(err, gocheck.ErrorMatches, t.err)
continue
}
c.Assert(err, gocheck.IsNil)
groups := make(map[string]*ec2.SecurityGroup)
for j := range resp.Groups {
group := &resp.Groups[j].SecurityGroup
c.Check(groups[group.Id], gocheck.IsNil, gocheck.Commentf("duplicate group id: %q", group.Id))
groups[group.Id] = group
}
// If extra groups may be returned, eliminate all groups that
// we did not create in this session apart from the default group.
if t.allowExtra {
namePat := regexp.MustCompile(sessionName("testgroup[0-9]"))
for id, g := range groups {
if !namePat.MatchString(g.Name) {
delete(groups, id)
}
}
}
c.Check(groups, gocheck.HasLen, len(t.results))
for j, g := range t.results {
rg := groups[g.Id]
c.Assert(rg, gocheck.NotNil, gocheck.Commentf("group %d (%v) not found; got %#v", j, g, groups))
c.Check(rg.Name, gocheck.Equals, g.Name, gocheck.Commentf("group %d (%v)", j, g))
}
}
}
示例15: TestInstanceFiltering
//.........这里部分代码省略.........
instanceIds []string // instanceIds argument to Instances method.
filters []filterSpec // filters argument to Instances method.
resultIds []string // set of instance ids of expected results.
allowExtra bool // resultIds may be incomplete.
err string // expected error.
}{
{
about: "check that Instances returns all instances",
resultIds: ids(0, 1, 2),
allowExtra: true,
}, {
about: "check that specifying two instance ids returns them",
instanceIds: ids(0, 2),
resultIds: ids(0, 2),
}, {
about: "check that specifying a non-existent instance id gives an error",
instanceIds: append(ids(0), "i-deadbeef"),
err: `.*\(InvalidInstanceID\.NotFound\)`,
}, {
about: "check that a filter allowed both instances returns both of them",
filters: []filterSpec{
{"instance-id", ids(0, 2)},
},
resultIds: ids(0, 2),
}, {
about: "check that a filter allowing only one instance returns it",
filters: []filterSpec{
{"instance-id", ids(1)},
},
resultIds: ids(1),
}, {
about: "check that a filter allowing no instances returns none",
filters: []filterSpec{
{"instance-id", []string{"i-deadbeef12345"}},
},
}, {
about: "check that filtering on group id works",
filters: []filterSpec{
{"group-id", []string{group1.Id}},
},
resultIds: ids(0, 1),
}, {
about: "check that filtering on group name works",
filters: []filterSpec{
{"group-name", []string{group1.Name}},
},
resultIds: ids(0, 1),
}, {
about: "check that filtering on image id works",
filters: []filterSpec{
{"image-id", []string{imageId}},
},
resultIds: ids(0, 1),
allowExtra: true,
}, {
about: "combination filters 1",
filters: []filterSpec{
{"image-id", []string{imageId, imageId2}},
{"group-name", []string{group1.Name}},
},
resultIds: ids(0, 1),
}, {
about: "combination filters 2",
filters: []filterSpec{
{"image-id", []string{imageId2}},
{"group-name", []string{group1.Name}},
},
},
}
for i, t := range tests {
c.Logf("%d. %s", i, t.about)
var f *ec2.Filter
if t.filters != nil {
f = ec2.NewFilter()
for _, spec := range t.filters {
f.Add(spec.name, spec.values...)
}
}
resp, err := s.ec2.DescribeInstances(t.instanceIds, f)
if t.err != "" {
c.Check(err, gocheck.ErrorMatches, t.err)
continue
}
c.Assert(err, gocheck.IsNil)
insts := make(map[string]*ec2.Instance)
for _, r := range resp.Reservations {
for j := range r.Instances {
inst := &r.Instances[j]
c.Check(insts[inst.InstanceId], gocheck.IsNil, gocheck.Commentf("duplicate instance id: %q", inst.InstanceId))
insts[inst.InstanceId] = inst
}
}
if !t.allowExtra {
c.Check(insts, gocheck.HasLen, len(t.resultIds), gocheck.Commentf("expected %d instances got %#v", len(t.resultIds), insts))
}
for j, id := range t.resultIds {
c.Check(insts[id], gocheck.NotNil, gocheck.Commentf("instance id %d (%q) not found; got %#v", j, id, insts))
}
}
}