summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/goamz/goamz/ec2/vpc.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/goamz/goamz/ec2/vpc.go')
-rw-r--r--vendor/github.com/goamz/goamz/ec2/vpc.go399
1 files changed, 399 insertions, 0 deletions
diff --git a/vendor/github.com/goamz/goamz/ec2/vpc.go b/vendor/github.com/goamz/goamz/ec2/vpc.go
new file mode 100644
index 000000000..3a2ff7c6e
--- /dev/null
+++ b/vendor/github.com/goamz/goamz/ec2/vpc.go
@@ -0,0 +1,399 @@
+package ec2
+
+// RouteTable describes a route table which contains a set of rules, called routes
+// that are used to determine where network traffic is directed.
+//
+// See http://goo.gl/bI9hkg for more details.
+type RouteTable struct {
+ Id string `xml:"routeTableId"`
+ VpcId string `xml:"vpcId"`
+ Routes []Route `xml:"routeSet>item"`
+ Associations []RouteTableAssociation `xml:"associationSet>item"`
+ PropagatingVgws []PropagatingVgw `xml:"propagatingVgwSet>item"`
+ Tags []Tag `xml:"tagSet>item"`
+}
+
+// Route describes a route in a route table.
+//
+// See http://goo.gl/hE5Kxe for more details.
+type Route struct {
+ DestinationCidrBlock string `xml:"destinationCidrBlock"` // The CIDR block used for the destination match.
+ GatewayId string `xml:"gatewayId"` // The ID of a gateway attached to your VPC.
+ InstanceId string `xml:"instanceId"` // The ID of a NAT instance in your VPC.
+ InstanceOwnerId string `xml:"instanceOwnerId"` // The AWS account ID of the owner of the instance.
+ NetworkInterfaceId string `xml:"networkInterfaceId"` // The ID of the network interface.
+ State string `xml:"state"` // The state of the route. Valid values: active | blackhole
+ Origin string `xml:"origin"` // Describes how the route was created. Valid values: Valid values: CreateRouteTable | CreateRoute | EnableVgwRoutePropagation
+ VpcPeeringConnectionId string `xml:"vpcPeeringConnectionId"` // The ID of the VPC peering connection.
+}
+
+// RouteTableAssociation describes an association between a route table and a subnet.
+//
+// See http://goo.gl/BZB8o8 for more details.
+type RouteTableAssociation struct {
+ Id string `xml:"routeTableAssociationId"` // The ID of the association between a route table and a subnet.
+ RouteTableId string `xml:"routeTableId"` // The ID of the route table.
+ SubnetId string `xml:"subnetId"` // The ID of the subnet.
+ Main bool `xml:"main"` // Indicates whether this is the main route table.
+}
+
+// PropagatingVgw describes a virtual private gateway propagating route.
+//
+// See http://goo.gl/myGQtG for more details.
+type PropagatingVgw struct {
+ GatewayId string `xml:"gatewayID"`
+}
+
+// CreateRouteTableResp represents a response from a CreateRouteTable request
+//
+// See http://goo.gl/LD0TqP for more details.
+type CreateRouteTableResp struct {
+ RequestId string `xml:"requestId"`
+ RouteTable RouteTable `xml:"routeTable"`
+}
+
+// CreateRouteTable creates a route table for the specified VPC.
+// After you create a route table, you can add routes and associate the table with a subnet.
+//
+// See http://goo.gl/V9h6gE for more details..
+func (ec2 *EC2) CreateRouteTable(vpcId string) (resp *CreateRouteTableResp, err error) {
+ params := makeParams("CreateRouteTable")
+ params["VpcId"] = vpcId
+ resp = &CreateRouteTableResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// DescribeRouteTablesResp represents a response from a DescribeRouteTables call
+//
+// See http://goo.gl/T3tVsg for more details.
+type DescribeRouteTablesResp struct {
+ RequestId string `xml:"requestId"`
+ RouteTables []RouteTable `xml:"routeTableSet>item"`
+}
+
+// DescribeRouteTables describes one or more of your route tables
+//
+// See http://goo.gl/S0RVos for more details.
+func (ec2 *EC2) DescribeRouteTables(routeTableIds []string, filter *Filter) (resp *DescribeRouteTablesResp, err error) {
+ params := makeParams("DescribeRouteTables")
+ addParamsList(params, "RouteTableId", routeTableIds)
+ filter.addParams(params)
+ resp = &DescribeRouteTablesResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// AssociateRouteTableResp represents a response from an AssociateRouteTable call
+//
+// See http://goo.gl/T4KlYk for more details.
+type AssociateRouteTableResp struct {
+ RequestId string `xml:"requestId"`
+ AssociationId string `xml:"associationId"`
+}
+
+// AssociateRouteTable associates a subnet with a route table.
+//
+// The subnet and route table must be in the same VPC. This association causes
+// traffic originating from the subnet to be routed according to the routes
+// in the route table. The action returns an association ID, which you need in
+// order to disassociate the route table from the subnet later.
+// A route table can be associated with multiple subnets.
+//
+// See http://goo.gl/bfnONU for more details.
+func (ec2 *EC2) AssociateRouteTable(routeTableId, subnetId string) (resp *AssociateRouteTableResp, err error) {
+ params := makeParams("AssociateRouteTable")
+ params["RouteTableId"] = routeTableId
+ params["SubnetId"] = subnetId
+ resp = &AssociateRouteTableResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// DisassociateRouteTableResp represents the response from a DisassociateRouteTable request
+//
+// See http://goo.gl/1v4reT for more details.
+type DisassociateRouteTableResp struct {
+ RequestId string `xml:"requestId"`
+ Return bool `xml:"return"` // True if the request succeeds
+}
+
+// DisassociateRouteTable disassociates a subnet from a route table.
+//
+// See http://goo.gl/A4NJum for more details.
+func (ec2 *EC2) DisassociateRouteTable(associationId string) (resp *DisassociateRouteTableResp, err error) {
+ params := makeParams("DisassociateRouteTable")
+ params["AssociationId"] = associationId
+ resp = &DisassociateRouteTableResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// ReplaceRouteTableAssociationResp represents a response from a ReplaceRouteTableAssociation call
+//
+// See http://goo.gl/VhILGe for more details.
+type ReplaceRouteTableAssociationResp struct {
+ RequestId string `xml:"requestId"`
+ NewAssociationId string `xml:"newAssociationId"`
+}
+
+// ReplaceRouteTableAssociation changes the route table associated with a given subnet in a VPC.
+//
+// See http://goo.gl/kiit8j for more details.
+func (ec2 *EC2) ReplaceRouteTableAssociation(associationId, routeTableId string) (resp *ReplaceRouteTableAssociationResp, err error) {
+ params := makeParams("ReplaceRouteTableAssociation")
+ params["AssociationId"] = associationId
+ params["RouteTableId"] = routeTableId
+ resp = &ReplaceRouteTableAssociationResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// DeleteRouteTableResp represents a response from a DeleteRouteTable request
+//
+// See http://goo.gl/b8usig for more details.
+type DeleteRouteTableResp struct {
+ RequestId string `xml:"requestId"`
+ Return bool `xml:"return"` // True if the request succeeds
+}
+
+// DeleteRouteTable deletes the specified route table.
+// You must disassociate the route table from any subnets before you can delete it.
+// You can't delete the main route table.
+//
+// See http://goo.gl/crHxT2 for more details.
+func (ec2 *EC2) DeleteRouteTable(routeTableId string) (resp *DeleteRouteTableResp, err error) {
+ params := makeParams("DeleteRouteTable")
+ params["RouteTableId"] = routeTableId
+ resp = &DeleteRouteTableResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// VPC describes a VPC.
+//
+// See http://goo.gl/WjX0Es for more details.
+type VPC struct {
+ CidrBlock string `xml:"cidrBlock"`
+ DHCPOptionsID string `xml:"dhcpOptionsId"`
+ State string `xml:"state"`
+ VpcId string `xml:"vpcId"`
+ InstanceTenancy string `xml:"instanceTenancy"`
+ IsDefault bool `xml:"isDefault"`
+ Tags []Tag `xml:"tagSet>item"`
+}
+
+// CreateVpcResp represents a response from a CreateVpcResp request
+//
+// See http://goo.gl/QoK11F for more details.
+type CreateVpcResp struct {
+ RequestId string `xml:"requestId"`
+ VPC VPC `xml:"vpc"` // Information about the VPC.
+}
+
+// CreateVpc creates a VPC with the specified CIDR block.
+//
+// The smallest VPC you can create uses a /28 netmask (16 IP addresses),
+// and the largest uses a /16 netmask (65,536 IP addresses).
+//
+// By default, each instance you launch in the VPC has the default DHCP options,
+// which includes only a default DNS server that Amazon provides (AmazonProvidedDNS).
+//
+// See http://goo.gl/QoK11F for more details.
+func (ec2 *EC2) CreateVpc(cidrBlock, instanceTenancy string) (resp *CreateVpcResp, err error) {
+ params := makeParams("CreateVpc")
+ params["CidrBlock"] = cidrBlock
+
+ if instanceTenancy != "" {
+ params["InstanceTenancy"] = instanceTenancy
+ }
+
+ resp = &CreateVpcResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+
+ return
+}
+
+// DeleteVpcResp represents a response from a DeleteVpc request
+//
+// See http://goo.gl/qawyrz for more details.
+type DeleteVpcResp struct {
+ RequestId string `xml:"requestId"`
+ Return bool `xml:"return"` // True if the request succeeds
+}
+
+// DeleteVpc deletes the specified VPC.
+//
+// You must detach or delete all gateways and resources that are associated with
+// the VPC before you can delete it. For example, you must terminate all
+// instances running in the VPC, delete all security groups associated with
+// the VPC (except the default one), delete all route tables associated with
+// the VPC (except the default one), and so on.
+//
+// See http://goo.gl/qawyrz for more details.
+func (ec2 *EC2) DeleteVpc(vpcId string) (resp *DeleteVpcResp, err error) {
+ params := makeParams("DeleteVpc")
+ params["VpcId"] = vpcId
+
+ resp = &DeleteVpcResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// DescribeVpcsResp represents a response from a DescribeVpcs request
+//
+// See http://goo.gl/DWQWvZ for more details.
+type DescribeVpcsResp struct {
+ RequestId string `xml:"requestId"`
+ VPCs []VPC `xml:"vpcSet>item"` // Information about one or more VPCs.
+}
+
+// DescribeVpcs describes one or more of your VPCs.
+//
+// See http://goo.gl/DWQWvZ for more details.
+func (ec2 *EC2) DescribeVpcs(vpcIds []string, filter *Filter) (resp *DescribeVpcsResp, err error) {
+ params := makeParams("DescribeVpcs")
+ addParamsList(params, "VpcId", vpcIds)
+ filter.addParams(params)
+ resp = &DescribeVpcsResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+
+ return
+}
+
+// DeleteRouteResp represents a response from a DeleteRoute request
+//
+// See http://goo.gl/Uqyt3w for more details.
+type DeleteRouteResp struct {
+ RequestId string `xml:"requestId"`
+ Return bool `xml:"return"` // True if the request succeeds
+}
+
+// DeleteRoute deletes the specified route from the specified route table.
+//
+// See http://goo.gl/Uqyt3w for more details.
+func (ec2 *EC2) DeleteRoute(routeTableId, destinationCidrBlock string) (resp *DeleteRouteResp, err error) {
+ params := makeParams("DeleteRoute")
+ params["RouteTableId"] = routeTableId
+ params["DestinationCidrBlock"] = destinationCidrBlock
+ resp = &DeleteRouteResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// CreateRouteResp represents a response from a CreateRoute request
+//
+// See http://goo.gl/c6Bg7e for more details.
+type CreateRouteResp struct {
+ RequestId string `xml:"requestId"`
+ Return bool `xml:"return"` // True if the request succeeds
+}
+
+// CreateRoute structure contains the options for a CreateRoute API call.
+type CreateRoute struct {
+ DestinationCidrBlock string
+ GatewayId string
+ InstanceId string
+ NetworkInterfaceId string
+ VpcPeeringConnectionId string
+}
+
+// CreateRoute creates a route in a route table within a VPC.
+// You must specify one of the following targets: Internet gateway or virtual
+// private gateway, NAT instance, VPC peering connection, or network interface.
+//
+// See http://goo.gl/c6Bg7e for more details.
+func (ec2 *EC2) CreateRoute(routeTableId string, options *CreateRoute) (resp *CreateRouteResp, err error) {
+ params := makeParams("CreateRoute")
+ params["RouteTableId"] = routeTableId
+ if options.DestinationCidrBlock != "" {
+ params["DestinationCidrBlock"] = options.DestinationCidrBlock
+ }
+ if options.GatewayId != "" {
+ params["GatewayId"] = options.GatewayId
+ }
+ if options.InstanceId != "" {
+ params["InstanceId"] = options.InstanceId
+ }
+ if options.NetworkInterfaceId != "" {
+ params["NetworkInterfaceId"] = options.NetworkInterfaceId
+ }
+ if options.VpcPeeringConnectionId != "" {
+ params["VpcPeeringConnectionId"] = options.VpcPeeringConnectionId
+ }
+ resp = &CreateRouteResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+// Subnet describes a subnet
+//
+// See http://goo.gl/bifW4R
+type Subnet struct {
+ AvailabilityZone string `xml:"availabilityZone"`
+ AvailableIpAddressCount int `xml:"availableIpAddressCount"`
+ CidrBlock string `xml:"cidrBlock"`
+ DefaultForAZ bool `xml:"defaultForAz"`
+ MapPublicIpOnLaunch bool `xml:"mapPublicIpOnLaunch"`
+ State string `xml:"state"`
+ SubnetId string `xml:"subnetId"`
+ Tags []Tag `xml:"tagSet>item"`
+ VpcId string `xml:"vpcId"`
+}
+
+// DescribeSubnetsResp represents a response from a DescribeSubnets request
+//
+// See https://goo.gl/1s0UQd for more details.
+type DescribeSubnetsResp struct {
+ RequestId string `xml:"requestId"`
+ Subnets []Subnet `xml:"subnetSet>item"`
+}
+
+// DescribeSubnets describes one or more Subnets.
+//
+// See https://goo.gl/1s0UQd for more details.
+func (ec2 *EC2) DescribeSubnets(subnetIds []string, filter *Filter) (resp *DescribeSubnetsResp, err error) {
+ params := makeParams("DescribeSubnets")
+ addParamsList(params, "SubnetId", subnetIds)
+ filter.addParams(params)
+ resp = &DescribeSubnetsResp{}
+ err = ec2.query(params, resp)
+ if err != nil {
+ return nil, err
+ }
+
+ return
+}