Example #1
0
func addInternetGateway(ec2Client *ec2.EC2, providerConfig *providers.JSONObject) (success bool, warnings []string, err []error) {
	createInternetGatewayOutput, callErr := ec2Client.CreateInternetGateway(&ec2.CreateInternetGatewayInput{})
	if callErr != nil {
		err = append(err, callErr)
		success = false
	} else {
		providerConfig.Provider.ProviderConfig.Aws.Vpc.InternetGateway.InternetGatewayID = *createInternetGatewayOutput.InternetGateway.InternetGatewayID
		tagCreated, callTagErr := addDockerTagToResource(ec2Client, providerConfig.Provider.ProviderConfig.Aws.Vpc.InternetGateway.InternetGatewayID, providerConfig.Provider.ProviderConfig.Aws.Vpc.Name, providerConfig.Provider.ProviderConfig.Aws.Vpc.Name+"-internet-gateway")
		if callErr != nil {

			warnings = append(warnings, "Error creating tag on Internet Gateway, will need to fix "+callTagErr.Error())
			success = true
		} else {
			if tagCreated == providerConfig.Provider.ProviderConfig.Aws.Vpc.InternetGateway.InternetGatewayID {
				success = true
			}
		}
	}
	return success, warnings, err
}
Example #2
0
func createGateway(svc *ec2.EC2, vpc *ec2.Vpc, subid *string) error {
	cigi := &ec2.CreateInternetGatewayInput{}
	cigo, err := svc.CreateInternetGateway(cigi)
	if err != nil {
		fmt.Println("Failed to create gateway.")
		return err
	}

	//fmt.Println("We have vpcid: " + *vpc.VpcId)
	_, err = svc.AttachInternetGateway(&ec2.AttachInternetGatewayInput{InternetGatewayId: cigo.InternetGateway.InternetGatewayId, VpcId: vpc.VpcId})
	if err != nil {
		fmt.Println("Failed to attach gateway.")
		return err
	}

	defr := "0.0.0.0/0"
	rtid, err := getMainRouteTableFromVPC(svc, vpc.VpcId)
	if err != nil {
		fmt.Println("Failed to get route table from VPC id.")
		panic(err)
	}
	cri := &ec2.CreateRouteInput{DestinationCidrBlock: &defr, GatewayId: cigo.InternetGateway.InternetGatewayId, RouteTableId: rtid}
	_, err = svc.CreateRoute(cri)
	//fmt.Println(cro)
	if err != nil {
		fmt.Println("Failed to create default route.")
		return err
	}

	arti := &ec2.AssociateRouteTableInput{RouteTableId: rtid, SubnetId: subid}
	_, err = svc.AssociateRouteTable(arti)
	//fmt.Println(arto)
	if err != nil {
		fmt.Println("Failed to associate subnet with route table.")
		return err
	}

	return nil

}