当前位置: 首页>>代码示例>>Golang>>正文


Golang ec2.NewFilter函数代码示例

本文整理汇总了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)
}
开发者ID:hayesgm,项目名称:goamz,代码行数:25,代码来源:ec2_test.go

示例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
}
开发者ID:madedotcom,项目名称:varnish-purge-proxy,代码行数:27,代码来源:varnish-purge-proxy.go

示例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")
}
开发者ID:hayesgm,项目名称:goamz,代码行数:33,代码来源:ec2_test.go

示例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")
}
开发者ID:drombosky,项目名称:goamz,代码行数:29,代码来源:ec2_test.go

示例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)
}
开发者ID:hayesgm,项目名称:goamz,代码行数:51,代码来源:ec2_test.go

示例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()
}
开发者ID:reedobrien,项目名称:aws-go-utils,代码行数:48,代码来源:main.go

示例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)
		}
	}
}
开发者ID:jaibheem,项目名称:trash,代码行数:18,代码来源:retirement.go

示例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")
}
开发者ID:linyows,项目名称:goamz,代码行数:40,代码来源:ec2_test.go

示例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")
}
开发者ID:hayesgm,项目名称:goamz,代码行数:39,代码来源:ec2_test.go

示例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")
}
开发者ID:hayesgm,项目名称:goamz,代码行数:38,代码来源:ec2_test.go

示例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")
}
开发者ID:hayesgm,项目名称:goamz,代码行数:38,代码来源:ec2_test.go

示例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)
			}
		}

	}
}
开发者ID:reedobrien,项目名称:aws-go-utils,代码行数:23,代码来源:main.go

示例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")
}
开发者ID:hayesgm,项目名称:goamz,代码行数:36,代码来源:ec2_test.go

示例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))
		}
	}
}
开发者ID:nkts,项目名称:golang-devops-stuff,代码行数:101,代码来源:ec2t_test.go

示例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))
		}
	}
}
开发者ID:nkts,项目名称:golang-devops-stuff,代码行数:101,代码来源:ec2t_test.go


注:本文中的github.com/crowdmob/goamz/ec2.NewFilter函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。