示例#1
0
/*
addVPC with call ec2 and try to create a new VPC with the configured VPC definition
*/
func addVPC(ec2Client *ec2.EC2, providerConfig *providers.JSONObject) (success bool, warnings []string, err []error) {
	vpcName := providerConfig.Provider.ProviderConfig.Aws.Vpc.Name
	cidrBlock := providerConfig.Provider.ProviderConfig.Aws.Vpc.CidrBlock

	vpcCreateOutput, callErr := ec2Client.CreateVPC(&ec2.CreateVPCInput{
		CIDRBlock: &cidrBlock,
	})

	if err != nil {
		//error calling AWS
		err = append(err, callErr)
		success = false
	} else {
		providerConfig.Provider.ProviderConfig.Aws.Vpc.VpcID = *vpcCreateOutput.VPC.VPCID
		log.WithFields(log.Fields{
			"Created": providerConfig.Provider.ProviderConfig.Aws.Vpc.VpcID,
		}).Info("VPC Created")

		tagCreated, callErr := addDockerTagToResource(ec2Client, providerConfig.Provider.ProviderConfig.Aws.Vpc.VpcID, vpcName, vpcName)
		if callErr != nil {
			log.WithFields(log.Fields{
				"AWS Error": callErr,
			}).Error("Error Tagging VPC")
			warnings = append(warnings, "Issue tagging vpc, please tag via console")
			success = true
		}
		if tagCreated == providerConfig.Provider.ProviderConfig.Aws.Vpc.VpcID {
			log.WithFields(log.Fields{
				"Created": tagCreated,
			}).Info("Tag Created")
			success = true
		}
	}

	return success, warnings, err
}