func deleteCluster(context *cli.Context, rdwr config.ReadWriter, ecsClient ecsclient.ECSClient, cfnClient cloudformation.CloudformationClient) error {
	// Validate cli flags
	if !isForceSet(context) {
		return fmt.Errorf("Missing required flag '--%s'", forceFlag)
		// TODO prompt override for force
	}
	ecsParams, err := newCliParams(context, rdwr)
	if err != nil {
		return err
	}

	// Validate that cluster exists in ECS
	ecsClient.Initialize(ecsParams)
	if err := validateCluster(ecsParams.Cluster, ecsClient); err != nil {
		return err
	}

	// Validate that a cfn stack exists for the cluster
	cfnClient.Initialize(ecsParams)
	stackName := ecsParams.GetCfnStackName()
	if err := cfnClient.ValidateStackExists(stackName); err != nil {
		return fmt.Errorf("CloudFormation stack not found for cluster '%s'", ecsParams.Cluster)
	}

	// Delete cfn stack
	if err := cfnClient.DeleteStack(stackName); err != nil {
		return err
	}
	logrus.Info("Waiting for your cluster resources to be deleted...")
	if err := cfnClient.WaitUntilDeleteComplete(stackName); err != nil {
		return err
	}

	// Delete cluster in ECS
	if _, err := ecsClient.DeleteCluster(ecsParams.Cluster); err != nil {
		return err
	}

	return nil
}