github.com/mweagle/Sparta@v1.15.0/delete.go (about)

     1  // +build !lambdabinary
     2  
     3  package sparta
     4  
     5  import (
     6  	"github.com/aws/aws-sdk-go/aws"
     7  	"github.com/aws/aws-sdk-go/service/cloudformation"
     8  	spartaAWS "github.com/mweagle/Sparta/aws"
     9  	spartaCF "github.com/mweagle/Sparta/aws/cloudformation"
    10  	"github.com/sirupsen/logrus"
    11  )
    12  
    13  // Delete ensures that the provided serviceName is deleted.
    14  // Failing to delete a non-existent service is considered a success.
    15  func Delete(serviceName string, logger *logrus.Logger) error {
    16  	session := spartaAWS.NewSession(logger)
    17  	awsCloudFormation := cloudformation.New(session)
    18  
    19  	exists, err := spartaCF.StackExists(serviceName, session, logger)
    20  	if nil != err {
    21  		return err
    22  	}
    23  	logger.WithFields(logrus.Fields{
    24  		"Exists": exists,
    25  		"Name":   serviceName,
    26  	}).Info("Stack existence check")
    27  
    28  	if exists {
    29  
    30  		params := &cloudformation.DeleteStackInput{
    31  			StackName: aws.String(serviceName),
    32  		}
    33  		resp, err := awsCloudFormation.DeleteStack(params)
    34  		if nil != resp {
    35  			logger.WithFields(logrus.Fields{
    36  				"Response": resp,
    37  			}).Info("Delete request submitted")
    38  		}
    39  		return err
    40  	}
    41  	logger.Info("Stack does not exist")
    42  	return nil
    43  }