Repository: chef/automate
Pull request #7980 (2023-06-21 10:35:40)

[Print reporting output]Create CLI Verify subcommand which validates given Config toml file before Deployment
### :nut_and_bolt: Description: What code changed, and why?
Print the report output in STDOUT.
Deleted unused lib/config_parser and lib/verification files.

### :chains: Related Resources
https://chefio.atlassian.net/browse/CHEF-3589
https://chefio.atlassian.net/browse/CHEF-2053
https://github.com/chef/automate/pull/7961

### :+1: Definition of Done

### :athletic_shoe: How to Build and Test the Change

### :white_check_mark: Checklist

**All PRs** must tick these:

- [ ] I have read the [CONTRIBUTING document](https://github.com/chef/automate/blob/master/CONTRIBUTING.md).
- [ ] All commits signed-off for the [Developer Certification of Origin](https://github.com/chef/chef/blob/master/CONTRIBUTING.md#developer-certification-of-origin-dco).

With occasional exceptions, all PRs **from Progress employees** must tick these:

- [ ] Is the code clear? *(complicated code or lots of comments--subdivide and use well-named methods, meaningful variable names, etc.)*
- [ ] Consistency checked? *(user notifications, user prompts, visual patterns, code patterns, variable names)*
- [ ] Repeated code blocks eliminated? *(adapt and reuse existing components, blocks, functions, etc.)*
- [ ] Spelling, grammar, typos checked? *(at a minimum use `make spell` in any component directory)*
- [ ] Code well-formatted? *(indents, line breaks, etc. improve rather than hinder readability)*

All PRs **from Progress employees** should tick these if appropriate:

- [ ] Tests added/updated? (all new code needs new tests)
- [ ] Docs added/updated? (all customer-facing changes)

*Please add a note next to any checkbox above if you are NOT ticking it.*

### :camera: Screenshots, if applicable

![Screenshot 2023-06-22 at 4 34 10 PM](https://github.com/chef/automate/assets/11033984/3533e85d-769b-4903-ba56-26eb6f056e72)
![Screenshot 2023-06-22 at 4 34 38 PM](https://github.com/chef/automate/assets/11033984/d6a57c59-a268-4fe7-94a6-4240914111d7)
![Screenshot 2023-06-22 at 4 35 07 PM](https://github.com/chef/automate/assets/11033984/dac5f9f9-1588-420a-94f4-bb6dfbb016d6)
![Screenshot 2023-06-22 at 4 35 54 PM](https://github.com/chef/automate/assets/11033984/6eb80e1c-d4b9-4304-aa4b-b7e9d34679b3)
![Screenshot 2023-06-22 at 4 36 36 PM](https://github.com/chef/automate/assets/11033984/a5bd4f2d-d4a9-4b44-90c0-5374cadd62d2)
![Screenshot 2023-06-22 at 4 37 03 PM](https://github.com/chef/automate/assets/11033984/91d0c896-5438-4644-927e-2237f565dd6e)
![Screenshot 2023-06-22 at 4 37 23 PM](https://github.com/chef/automate/assets/11033984/498ad84c-2faa-4896-8449-89283631578e)
![Screenshot 2023-06-22 at 4 37 41 PM](https://github.com/chef/automate/assets/11033984/625917e0-d694-4b71-9d99-9a43df433fb1)
![Screenshot 2023-06-22 at 4 38 00 PM](https://github.com/chef/automate/assets/11033984/08ee1168-a4d9-440f-abe9-41247bc5a679)
![Screenshot 2023-06-22 at 4 38 21 PM](https://github.com/chef/automate/assets/11033984/c59f9b35-04d1-4ac3-8ef9-0a7eb63dff52)

Video (Bastion - Failed): https://progresssoftware.sharepoint.com/:v:/s/ChefCoreC/EbT_ck2d6XJBkgGb6r-Eh_ABvRHq3-iEFn1YcBq4KI92-A?e=1Hr5dQ



netlify[bot]: ### <span aria-hidden="true">👷</span> Deploy Preview for *chef-automate* processing.


|  Name | Link |
|:-:|------------------------|
|<span aria-hidden="true">🔨</span> Latest commit | 7707d2e18669d195abbfd9cc462d08ef7e73cd34 |
|<span aria-hidden="true">🔍</span> Latest deploy log | https://app.netlify.com/sites/chef-automate/deploys/6492d27ed92acc000856e266 |
sonarqube-for-infrastructure-prod[bot]: **SonarQube Quality Gate**

[![Quality Gate failed](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)

[![Failed condition](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/FailedConditionIcon-16px.png 'Failed condition')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) [![10.5%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '10.5%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) 10.5% Coverage on New Code (is less than 80%)  
[![Failed condition](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/FailedConditionIcon-16px.png 'Failed condition')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) [![13.5%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/Duplications/20-16px.png '13.5%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) 13.47% Duplicated Lines (%) on New Code (is greater than 3%)  

[See analysis details on SonarQube](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)


sonarqube-for-infrastructure-prod[bot]: **SonarQube Quality Gate**

[![Quality Gate failed](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)

[![Failed condition](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/FailedConditionIcon-16px.png 'Failed condition')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) [![10.5%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '10.5%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) 10.5% Coverage on New Code (is less than 80%)  

[See analysis details on SonarQube](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)


sonarqube-for-infrastructure-prod[bot]: **SonarQube Quality Gate**

[![Quality Gate failed](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)

[![Failed condition](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/FailedConditionIcon-16px.png 'Failed condition')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) [![10.5%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '10.5%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) 10.5% Coverage on New Code (is less than 80%)  

[See analysis details on SonarQube](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)


atultherajput: > Details

Done
atultherajput: > please fix the automate-cli unit test pipeline and upload the demo video

Done.
sonarqube-for-infrastructure-prod[bot]: **SonarQube Quality Gate**

[![Quality Gate failed](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)

[![Failed condition](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/FailedConditionIcon-16px.png 'Failed condition')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) [![12.8%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '12.8%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) 12.8% Coverage on New Code (is less than 80%)  

[See analysis details on SonarQube](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)


sonarqube-for-infrastructure-prod[bot]: **SonarQube Quality Gate**

[![Quality Gate failed](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)

[![Failed condition](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/FailedConditionIcon-16px.png 'Failed condition')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) [![12.8%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '12.8%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980) 12.8% Coverage on New Code (is less than 80%)  

[See analysis details on SonarQube](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7980)


bvtejaswi: I think in Successful column we can add success_checks/total_checks instead of just giving 75 successful.
e.g. 75/75, 6/75 in success column

Patch:
diff --git a/.bldr.toml b/.bldr.toml
index 7344be58a..71ef8a143 100644
--- a/.bldr.toml
+++ b/.bldr.toml
@@ -458,6 +458,7 @@ paths = [
   "lib/proc/*",
   "lib/product/*",
   "lib/proxy/*",
+  "lib/reporting/*",
   "lib/secrets/*",
   "lib/sshutils/*",
   "lib/stringutils/*",
diff --git a/VERSION b/VERSION
index ce48585c6..2ec3d8c8b 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-4.7.90
\ No newline at end of file
+4.7.91
\ No newline at end of file
diff --git a/components/automate-cli/cmd/chef-automate/verify.go b/components/automate-cli/cmd/chef-automate/verify.go
index 6fb1f41ed..fd9be1bad 100644
--- a/components/automate-cli/cmd/chef-automate/verify.go
+++ b/components/automate-cli/cmd/chef-automate/verify.go
@@ -20,9 +20,11 @@ import (
 	"github.com/chef/automate/lib/httputils"
 	"github.com/chef/automate/lib/logger"
 	"github.com/chef/automate/lib/platform/command"
+	"github.com/chef/automate/lib/reporting"
 	"github.com/chef/automate/lib/sshutils"
 	"github.com/chef/automate/lib/stringutils"
 	"github.com/chef/automate/lib/version"
+	"github.com/jedib0t/go-pretty/v5/table"
 	"github.com/spf13/cobra"
 )
 
@@ -54,6 +56,13 @@ type verifyCmdFlow struct {
 	SSHUtil              sshutils.SSHUtil
 	Writer               *cli.Writer
 	prettyPrint          bool
+	automateIPs          []string
+	chefServerIPs        []string
+	postgresqlIPs        []string
+	opensearchIPs        []string
+	sshPort              string
+	sshKeyFile           string
+	sshUserName          string
 }
 
 func NewVerifyCmdFlow(client httputils.HTTPClient, createSystemdService verifysystemdcreate.CreateSystemdService, systemdCreateUtils verifysystemdcreate.SystemdCreateUtils, config *config.HaDeployConfig, sshutil sshutils.SSHUtil, writer *cli.Writer) *verifyCmdFlow {
@@ -248,24 +257,63 @@ func (v *verifyCmdFlow) RunVerify(config string) error {
 			ObjectStorage: &models.ObjectStorage{},
 		},
 	}
+
 	err = batchCheckConfig.PopulateWith(v.Config)
 	if err != nil {
 		return err
 	}
 
-	// TODO: For now just print the result as json. Need to merge the result with the response from batch-check API call for remote.
+	if v.Config.IsExistingInfra() {
+		v.sshPort, v.sshKeyFile, v.sshUserName = v.getSSHConfig(v.Config.Architecture.ExistingInfra)
+
+		v.automateIPs = v.Config.ExistingInfra.Config.AutomatePrivateIps
+		v.chefServerIPs = v.Config.ExistingInfra.Config.ChefServerPrivateIps
+		v.postgresqlIPs = v.Config.ExistingInfra.Config.PostgresqlPrivateIps
+		v.opensearchIPs = v.Config.ExistingInfra.Config.OpensearchPrivateIps
+	}
+
+	var batchCheckResultBastion, batchCheckResultRemote models.BatchCheckResponse
+	var batchCheckResults []models.BatchCheckResult
 
+	// Doing batch-check API call for bastion
 	resBastion, err := v.runVerifyServiceForBastion(*batchCheckConfig)
 	if err != nil {
 		return err
 	}
-	v.Writer.Printf("Response for batch-check API on bastion: \n%s\n", string(resBastion))
 
+	if err := json.Unmarshal(resBastion, &batchCheckResultBastion); err != nil {
+		return fmt.Errorf("failed to unmarshal batch-check API result field for bastion: %v", err)
+	}
+
+	batchCheckResults = append(batchCheckResults, batchCheckResultBastion.NodeResult...)
+
+	// If batch-check API failed on bastion
+	if !batchCheckResultBastion.Passed {
+		v.printResponse(batchCheckResults)
+		return fmt.Errorf("batch-check API failed on bastion")
+	}
+
+	// Doing batch-check API call for remote nodes
 	resRemote, err := v.runVerifyServiceForRemote(*batchCheckConfig)
 	if err != nil {
 		return err
 	}
-	v.Writer.Printf("Response for batch-check API on remote nodes: \n%s\n", string(resRemote))
+
+	if err := json.Unmarshal(resRemote, &batchCheckResultRemote); err != nil {
+		return fmt.Errorf("failed to unmarshal batch-check API result field for remote nodes: %v", err)
+	}
+
+	// Appending batch-check API result for remote nodes to batch-check API result for bastion
+	batchCheckResults = append(batchCheckResults, batchCheckResultRemote.NodeResult...)
+
+	// If batch-check API failed on remote nodes
+	if !batchCheckResultRemote.Passed {
+		v.printResponse(batchCheckResults)
+		return fmt.Errorf("batch-check API failed on remote nodes")
+	}
+
+	// Printing response for success case
+	v.printResponse(batchCheckResults)
 
 	return nil
 }
@@ -329,33 +377,28 @@ func (v *verifyCmdFlow) runVerifyServiceForBastion(batchCheckConfig models.Confi
 func (v *verifyCmdFlow) runVerifyServiceForRemote(batchCheckConfig models.Config) ([]byte, error) {
 
 	// TODO: Need to check if automate-verify service is already running on remote nodes and upgrade if needed.
-	var port, keyFile, userName string
-	var hostIPs []string
 
-	if v.Config.IsExistingInfra() {
-		port, keyFile, userName = v.getSSHConfig(v.Config.Architecture.ExistingInfra)
-		hostIPs = v.getHostIPs(
-			v.Config.ExistingInfra.Config.AutomatePrivateIps,
-			v.Config.ExistingInfra.Config.ChefServerPrivateIps,
-			v.Config.ExistingInfra.Config.PostgresqlPrivateIps,
-			v.Config.ExistingInfra.Config.OpensearchPrivateIps,
-		)
+	hostIPs := v.getHostIPs(
+		v.automateIPs,
+		v.chefServerIPs,
+		v.postgresqlIPs,
+		v.opensearchIPs,
+	)
 
-		sshConfig := sshutils.NewSshConfig("", port, keyFile, userName)
+	sshConfig := sshutils.NewSshConfig("", v.sshPort, v.sshKeyFile, v.sshUserName)
 
-		destFileName := "chef-automate"
+	destFileName := "chef-automate"
 
-		// Copying CLI binary to remote nodes
-		err := v.copyCLIOnRemoteNodes(destFileName, sshConfig, hostIPs)
-		if err != nil {
-			return nil, err
-		}
+	// Copying CLI binary to remote nodes
+	err := v.copyCLIOnRemoteNodes(destFileName, sshConfig, hostIPs)
+	if err != nil {
+		return nil, err
+	}
 
-		// Starting automate-verify service on remote nodes
-		err = v.startServiceOnRemoteNodes(destFileName, sshConfig, hostIPs)
-		if err != nil {
-			return nil, err
-		}
+	// Starting automate-verify service on remote nodes
+	err = v.startServiceOnRemoteNodes(destFileName, sshConfig, hostIPs)
+	if err != nil {
+		return nil, err
 	}
 
 	//TODO: Need to handle the case for AWS
@@ -365,6 +408,7 @@ func (v *verifyCmdFlow) runVerifyServiceForRemote(batchCheckConfig models.Config
 		Checks: constants.GetRemoteChecks(),
 		Config: &batchCheckConfig,
 	}
+
 	return v.makeBatchCheckAPICall(batchCheckRemoteReq, REMOTE_NODES)
 }
 
@@ -385,7 +429,7 @@ func (v *verifyCmdFlow) makeBatchCheckAPICall(requestBody models.BatchCheckReque
 	_, responseBody, err := v.Client.MakeRequest(http.MethodPost, batchCheckAPIEndpoint, requestBody)
 	if err != nil {
 		if responseBody != nil {
-			v.Writer.Printf("Error response body: %s\n", string(responseBody))
+			return nil, fmt.Errorf("error while doing batch-check API call for %s:\n%s", nodeType, string(responseBody))
 		}
 		return nil, fmt.Errorf("error while doing batch-check API call for %s: %v", nodeType, err)
 	}
@@ -479,6 +523,109 @@ func (v *verifyCmdFlow) getHostIPs(automatePrivateIps, chefServerPrivateIps, pos
 	return hostIPs
 }
 
+func (v *verifyCmdFlow) printResponse(batchCheckResults []models.BatchCheckResult) {
+	reports := buildReports(batchCheckResults)
+	tables := createTables(len(v.automateIPs), len(v.chefServerIPs), len(v.postgresqlIPs), len(v.opensearchIPs))
+	reportingModule := reporting.NewReportingModule(v.Writer, tables)
+	nodeInfoMap := make(map[string][]reporting.Info)
+
+	reporting.VerificationReports(reports, reportingModule, nodeInfoMap)
+}
+
+func buildReports(batchCheckResults []models.BatchCheckResult) []reporting.VerificationReport {
+	var reports []reporting.VerificationReport
+
+	for _, batchCheckResult := range batchCheckResults {
+
+		for _, test := range batchCheckResult.Tests {
+
+			if test.Skipped {
+				continue
+			}
+
+			report := reporting.VerificationReport{}
+			report.TableKey = batchCheckResult.NodeType
+
+			info := reporting.Info{}
+			info.Hostip = batchCheckResult.Ip
+
+			info.Parameter = test.Check
+
+			if test.Passed {
+				info.Status = "Success"
+			} else {
+				info.Status = "Failed"
+			}
+
+			var errorMsgs, resolutionMsgs []string
+			var successfulCount, failedCount int
+			for _, check := range test.Checks {
+				if check.Passed {
+					successfulCount++
+				} else {
+					failedCount++
+					errorMsgs = append(errorMsgs, check.ErrorMsg)
+					resolutionMsgs = append(resolutionMsgs, check.ResolutionMsg)
+				}
+			}
+
+			statusMessage := &reporting.StatusMessage{}
+			statusMessage.MainMessage = fmt.Sprintf("%s - %s", test.Message, info.Status)
+			statusMessage.SubMessage = errorMsgs
+			info.StatusMessage = statusMessage
+
+			summaryInfo := &reporting.SummaryInfo{}
+			summaryInfo.SuccessfulCount = successfulCount
+			summaryInfo.FailedCount = failedCount
+			summaryInfo.ToResolve = resolutionMsgs
+			info.SummaryInfo = summaryInfo
+
+			report.Report = info
+
+			reports = append(reports, report)
+		}
+
+	}
+
+	return reports
+}
+
+func createTables(numberOfAutomateNodes, numberOfChefServerNodes, numberOfPostgreSQLNodes, numberOfOpenSearchNodes int) map[string]*reporting.Table {
+	bastionSummaryTableTitle := "Summary: Bastion <Node> - 1"
+	automateSummaryTableTitle := fmt.Sprintf("Summary: Automate <Nodes> - %d", numberOfAutomateNodes)
+	chefServerSummaryTableTitle := fmt.Sprintf("Summary: Chef Infra Server <Nodes> - %d", numberOfChefServerNodes)
+	postgreSQLSummaryTableTitle := fmt.Sprintf("Summary: PostgreSQL <Nodes> - %d", numberOfPostgreSQLNodes)
+	openSearchSummaryTableTitle := fmt.Sprintf("Summary: Opensearch <Nodes> - %d", numberOfOpenSearchNodes)
+	tb := make(map[string]*reporting.Table)
+	tb["bastionStatusTable"] = getStatusTable("Bastion")
+	tb["bastionSummaryTable"] = getSummaryTable(bastionSummaryTableTitle)
+	tb["automateStatusTable"] = getStatusTable("Automate")
+	tb["automateSummaryTable"] = getSummaryTable(automateSummaryTableTitle)
+	tb["chef-infra-serverStatusTable"] = getStatusTable("Chef Infra Server")
+	tb["chef-infra-serverSummaryTable"] = getSummaryTable(chefServerSummaryTableTitle)
+	tb["postgresqlStatusTable"] = getStatusTable("PostgreSQL")
+	tb["postgresqlSummaryTable"] = getSummaryTable(postgreSQLSummaryTableTitle)
+	tb["opensearchStatusTable"] = getStatusTable("OpenSearch")
+	tb["opensearchSummaryTable"] = getSummaryTable(openSearchSummaryTableTitle)
+	return tb
+}
+
+func getStatusTable(title string) *reporting.Table {
+	return &reporting.Table{
+		Title:     title,
+		Header:    table.Row{"No.", "Identifier", "Parameter", "Status", "Message"},
+		ColConfig: []table.ColumnConfig{{Number: 1, WidthMax: 5, WidthMin: 5}, {Number: 2, WidthMax: 15, WidthMin: 15}, {Number: 3, WidthMax: 25, WidthMin: 25}, {Number: 4, WidthMax: 15, WidthMin: 15}, {Number: 5, WidthMax: 60, WidthMin: 60}},
+	}
+}
+
+func getSummaryTable(title string) *reporting.Table {
+	return &reporting.Table{
+		Title:     title,
+		Header:    table.Row{"Parameter", "Successful", "Failed", "How to resolve it"},
+		ColConfig: []table.ColumnConfig{{Number: 1, WidthMax: 30, WidthMin: 30}, {Number: 2, WidthMax: 15, WidthMin: 15}, {Number: 3, WidthMax: 15, WidthMin: 15}, {Number: 4, WidthMax: 60, WidthMin: 60}},
+	}
+}
+
 // Returns port
 func getPort() string {
 	port := server.DEFAULT_PORT
diff --git a/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice.go b/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice.go
index fa49af531..23c8ddc61 100644
--- a/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice.go
+++ b/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice.go
@@ -44,6 +44,7 @@ func NewBatchCheckService(trigger trigger.CheckTrigger, log logger.Logger, port
 func (ss *BatchCheckService) BatchCheck(checks []string, config *models.Config) (models.BatchCheckResponse, error) {
 	var bastionChecks = stringutils.SliceIntersection(checks, constants.GetBastionChecks())
 	var remoteChecks = stringutils.SliceIntersection(checks, constants.GetRemoteChecks())
+	var err error
 	checkTriggerRespMap := make(map[string][]models.CheckTriggerResponse)
 
 	// Get bastion check trigger resp
@@ -51,12 +52,14 @@ func (ss *BatchCheckService) BatchCheck(checks []string, config *models.Config)
 		checkTriggerRespMap = getBastionCheckResp(ss, bastionChecks, config)
 	}
 
-	successfullyStartedMockServers, notStartedMockServers, err := ss.startMockServerIfNeeded(remoteChecks, config)
+	config.DeploymentState, err = ss.getDeploymentState(config)
 	if err != nil {
-		ss.log.Error("Error occurred while starting mock server")
+		ss.log.Error("Failed to get the Deployment state:", err)
 		return models.BatchCheckResponse{}, err
 	}
 
+	successfullyStartedMockServers, notStartedMockServers := ss.startMockServerIfNeeded(remoteChecks, config)
+
 	if len(notStartedMockServers) > 0 {
 		mockServersStoppedSuccessfully := ss.stopAllMockServers(successfullyStartedMockServers)
 		if !mockServersStoppedSuccessfully {
@@ -105,32 +108,24 @@ func (ss *BatchCheckService) stopAllMockServers(successfullyStartedMockServers [
 	return true
 }
 
-func (ss *BatchCheckService) startMockServerIfNeeded(remoteChecks []string, config *models.Config) ([]models.MockServerFromBatchServiceResponse, []models.MockServerFromBatchServiceResponse, error) {
+func (ss *BatchCheckService) startMockServerIfNeeded(remoteChecks []string, config *models.Config) ([]models.MockServerFromBatchServiceResponse, []models.MockServerFromBatchServiceResponse) {
 	successfullyStartedMockServers := []models.MockServerFromBatchServiceResponse{}
 	notStartedMockServers := []models.MockServerFromBatchServiceResponse{}
 
 	if len(remoteChecks) > 0 {
-		startMockServer, err := ss.shouldStartMockServer(remoteChecks, config)
-		if err != nil {
-			return successfullyStartedMockServers, notStartedMockServers, err
-		}
+		startMockServer := ss.shouldStartMockServer(remoteChecks, config)
 		if startMockServer {
 			successfullyStartedMockServers, notStartedMockServers = ss.startMockServer(remoteChecks, config)
 		}
 	}
-	return successfullyStartedMockServers, notStartedMockServers, nil
+	return successfullyStartedMockServers, notStartedMockServers
 }
 
-func (ss *BatchCheckService) shouldStartMockServer(remoteChecks []string, config *models.Config) (bool, error) {
+func (ss *BatchCheckService) shouldStartMockServer(remoteChecks []string, config *models.Config) bool {
 	if stringutils.SliceContains(remoteChecks, constants.FIREWALL) || stringutils.SliceContains(remoteChecks, constants.FQDN) {
-		deploymentState, err := ss.getDeploymentState(config)
-		if err != nil {
-			ss.log.Error("Error while calling status api from batch check service:", err)
-			return false, err
-		}
-		return deploymentState == constants.PRE_DEPLOY, nil
+		return config.DeploymentState == constants.PRE_DEPLOY
 	}
-	return false, nil
+	return false
 }
 
 func (ss *BatchCheckService) createNodeTypeMap(remoteChecks []string) map[string]map[string][]int {
diff --git a/lib/config_parser/parser.go b/lib/config_parser/parser.go
deleted file mode 100644
index e37dc0c80..000000000
--- a/lib/config_parser/parser.go
+++ /dev/null
@@ -1,78 +0,0 @@
-package config_parser
-
-import (
-	sc "github.com/chef/automate/api/config/deployment"
-	"github.com/chef/automate/components/automate-cli/pkg/status"
-	"github.com/chef/automate/lib/io/fileutils"
-	ptoml "github.com/pelletier/go-toml"
-)
-
-type ConfigParser interface {
-	ParseAWSAutomateConfig(configFile string) (*HAAwsConfigToml, error)
-	ParseOnPremConfig(configFile string) (*HAOnPremConfigToml, error)
-	ParseStandaloneConfig(configFile string) (*sc.AutomateConfig, error)
-}
-
-type ConfigParserImpl struct{}
-
-func (cp *ConfigParserImpl) ParseAWSAutomateConfig(configFile string) (*HAAwsConfigToml, error) {
-	return ParseAWSAutomateConfig(configFile)
-}
-
-func (cp *ConfigParserImpl) ParseOnPremConfig(configFile string) (*HAOnPremConfigToml, error) {
-	return ParseOnPremConfig(configFile)
-}
-
-func (cp *ConfigParserImpl) ParseStandaloneConfig(configFile string) (*sc.AutomateConfig, error) {
-	return ParseStandaloneConfig(configFile)
-}
-
-func ParseAWSAutomateConfig(configFile string) (*HAAwsConfigToml, error) {
-
-	/* This function will read the config toml file and will try to parse it in the structure.
-	   On successful parse, it will return the config structure. This is applicable for both
-	   AWS Provision and Deployment configuration both with Chef Managed and AWS Managed resources. */
-
-	fileUtils := &fileutils.FileSystemUtils{}
-	templateBytes, err := fileUtils.ReadFile(configFile)
-	if err != nil {
-		return nil, status.Wrap(err, status.FileAccessError, "error in reading config toml file")
-	}
-	config := HAAwsConfigToml{}
-	err = ptoml.Unmarshal(templateBytes, &config)
-	if err != nil {
-		return nil, status.Wrap(err, status.ConfigError, "error in unmarshalling config toml file")
-	}
-	return &config, nil
-}
-
-func ParseOnPremConfig(configFile string) (*HAOnPremConfigToml, error) {
-
-	/* This function will read the OnPrem config toml file and will try to parse it in the structure.
-	   On successful parse, it will return the config structure. This is applicable for Chef Managed,
-	   AWS Managed and Customer Managed resources*/
-
-	fileUtils := &fileutils.FileSystemUtils{}
-	templateBytes, err := fileUtils.ReadFile(configFile)
-	if err != nil {
-		return nil, status.Wrap(err, status.FileAccessError, "error in reading config toml file")
-	}
-	config := HAOnPremConfigToml{}
-	err = ptoml.Unmarshal(templateBytes, &config)
-	if err != nil {
-		return nil, status.Wrap(err, status.ConfigError, "error in unmarshalling config toml file")
-	}
-	return &config, nil
-}
-
-func ParseStandaloneConfig(configFile string) (*sc.AutomateConfig, error) {
-
-	/* This function will read the Standalone Automate config toml file and will try to parse it in the structure.
-	   On successful parse, it will return the config structure. */
-
-	config, err := sc.LoadUserOverrideConfigFile(configFile)
-	if err != nil {
-		return nil, err
-	}
-	return config, nil
-}
diff --git a/lib/config_parser/setupConfig.go b/lib/config_parser/setupConfig.go
deleted file mode 100644
index 167d14e0e..000000000
--- a/lib/config_parser/setupConfig.go
+++ /dev/null
@@ -1,262 +0,0 @@
-package config_parser
-
-type CertByIP struct {
-	IP         string `toml:"ip"`
-	PrivateKey string `toml:"private_key"`
-	PublicKey  string `toml:"public_key"`
-	NodesDn    string `toml:"nodes_dn,omitempty"`
-}
-
-type HAAwsConfigToml struct {
-	Architecture struct {
-		ConfigInitials struct {
-			SecretsKeyFile              string `toml:"secrets_key_file"`
-			SecretsStoreFile            string `toml:"secrets_store_file"`
-			Architecture                string `toml:"architecture"`
-			WorkspacePath               string `toml:"workspace_path"`
-			SSHUser                     string `toml:"ssh_user"`
-			SSHKeyFile                  string `toml:"ssh_key_file"`
-			SSHPort                     string `toml:"ssh_port"`
-			SudoPassword                string `toml:"sudo_password"`
-			LoggingMonitoringManagement string `toml:"logging_monitoring_management"`
-			NewElk                      string `toml:"new_elk"`
-			ExistingElkInstanceIP       string `toml:"existing_elk_instance_ip"`
-			ExistingElkPort             string `toml:"existing_elk_port"`
-			ExistingElkCert             string `toml:"existing_elk_cert"`
-			ExistingElkUsername         string `toml:"existing_elk_username"`
-			ExistingElkPassword         string `toml:"existing_elk_password"`
-			BackupMount                 string `toml:"backup_mount"`
-			BackupConfig                string `toml:"backup_config"`
-			S3BucketName                string `toml:"s3_bucketName"`
-			HabitatUIDGid               string `toml:"habitat_uid_gid"`
-		} `toml:"aws"`
-	} `toml:"architecture"`
-	Automate struct {
-		Config struct {
-			AdminPassword     string     `toml:"admin_password"`
-			Fqdn              string     `toml:"fqdn"`
-			AutomateSetupType string     `toml:"automate_setup_type"`
-			InstanceCount     string     `toml:"instance_count"`
-			TeamsPort         string     `toml:"teams_port"`
-			ConfigFile        string     `toml:"config_file"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			RootCA            string     `toml:"root_ca"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"automate"`
-	ChefServer struct {
-		Config struct {
-			InstanceCount     string     `toml:"instance_count"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"chef_server"`
-	Opensearch struct {
-		Config struct {
-			InstanceCount     string     `toml:"instance_count"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			RootCA            string     `toml:"root_ca"`
-			AdminCert         string     `toml:"admin_cert"`
-			AdminKey          string     `toml:"admin_key"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			AdminDn           string     `toml:"admin_dn"`
-			NodesDn           string     `toml:"nodes_dn"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"opensearch"`
-	Postgresql struct {
-		Config struct {
-			InstanceCount     string     `toml:"instance_count"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			RootCA            string     `toml:"root_ca"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"postgresql"`
-	Aws struct {
-		Config struct {
-			Profile                      string   `toml:"profile"`
-			Region                       string   `toml:"region"`
-			AwsVpcId                     string   `toml:"aws_vpc_id"`
-			AwsCidrBlockAddr             string   `toml:"aws_cidr_block_addr"`
-			PrivateCustomSubnets         []string `toml:"private_custom_subnets"`
-			PublicCustomSubnets          []string `toml:"public_custom_subnets"`
-			SSHKeyPairName               string   `toml:"ssh_key_pair_name"`
-			SetupManagedServices         bool     `toml:"setup_managed_services"`
-			OpensearchDomainName         string   `toml:"managed_opensearch_domain_name"`
-			OpensearchDomainUrl          string   `toml:"managed_opensearch_domain_url"`
-			OpensearchUsername           string   `toml:"managed_opensearch_username"`
-			OpensearchUserPassword       string   `toml:"managed_opensearch_user_password"`
-			OpensearchCertificate        string   `toml:"managed_opensearch_certificate"`
-			AwsOsSnapshotRoleArn         string   `toml:"aws_os_snapshot_role_arn"`
-			OsUserAccessKeyId            string   `toml:"os_snapshot_user_access_key_id"`
-			OsUserAccessKeySecret        string   `toml:"os_snapshot_user_access_key_secret"`
-			RDSInstanceUrl               string   `toml:"managed_rds_instance_url"`
-			RDSSuperUserName             string   `toml:"managed_rds_superuser_username"`
-			RDSSuperUserPassword         string   `toml:"managed_rds_superuser_password"`
-			RDSDBUserName                string   `toml:"managed_rds_dbuser_username"`
-			RDSDBUserPassword            string   `toml:"managed_rds_dbuser_password"`
-			RDSCertificate               string   `toml:"managed_rds_certificate"`
-			AmiFilterName                string   `toml:"ami_filter_name"`
-			AmiFilterVirtType            string   `toml:"ami_filter_virt_type"`
-			AmiFilterOwner               string   `toml:"ami_filter_owner"`
-			AmiID                        string   `toml:"ami_id"`
-			LBAccessLogs                 string   `toml:"lb_access_logs"`
-			DeleteOnTermination          bool     `toml:"delete_on_termination"`
-			AutomateServerInstanceType   string   `toml:"automate_server_instance_type"`
-			ChefServerInstanceType       string   `toml:"chef_server_instance_type"`
-			OpensearchServerInstanceType string   `toml:"opensearch_server_instance_type"`
-			PostgresqlServerInstanceType string   `toml:"postgresql_server_instance_type"`
-			AutomateLbCertificateArn     string   `toml:"automate_lb_certificate_arn"`
-			ChefServerLbCertificateArn   string   `toml:"chef_server_lb_certificate_arn"`
-			AutomateEbsVolumeIops        string   `toml:"automate_ebs_volume_iops"`
-			AutomateEbsVolumeSize        string   `toml:"automate_ebs_volume_size"`
-			AutomateEbsVolumeType        string   `toml:"automate_ebs_volume_type"`
-			ChefEbsVolumeIops            string   `toml:"chef_ebs_volume_iops"`
-			ChefEbsVolumeSize            string   `toml:"chef_ebs_volume_size"`
-			ChefEbsVolumeType            string   `toml:"chef_ebs_volume_type"`
-			OpensearchEbsVolumeIops      string   `toml:"opensearch_ebs_volume_iops"`
-			OpensearchEbsVolumeSize      string   `toml:"opensearch_ebs_volume_size"`
-			OpensearchEbsVolumeType      string   `toml:"opensearch_ebs_volume_type"`
-			PostgresqlEbsVolumeIops      string   `toml:"postgresql_ebs_volume_iops"`
-			PostgresqlEbsVolumeSize      string   `toml:"postgresql_ebs_volume_size"`
-			PostgresqlEbsVolumeType      string   `toml:"postgresql_ebs_volume_type"`
-			XContact                     string   `toml:"X-Contact"`
-			XDept                        string   `toml:"X-Dept"`
-			XProject                     string   `toml:"X-Project"`
-			XProduction                  string   `toml:"X-Production"`
-			XCustomer                    string   `toml:"X-Customer"`
-			AwsAutomateRoute53Prefix     string   `toml:"aws_automate_route53_prefix"`
-			AwsChefServerRoute53Prefix   string   `toml:"aws_chef_server_route53_prefix"`
-			AwsRoute53HostedZone         string   `toml:"aws_route53_hosted_zone"`
-			PostrgesqlDbIdentifier       string   `toml:"postgresql_db_identifier"`
-			ElasticsearchDomainName      string   `toml:"elasticsearch_domain_name"`
-			RDSInstanceType              string   `toml:"rds_postgresql_instance_type"`
-			RDSRestoreIdentifier         string   `toml:"rds_postgresql_restore_identifier"`
-			DatadogAPIKey                string   `toml:"datadog_api_key"`
-			UseExistingManagedInfra      bool     `toml:"use_existing_managed_infra"`
-		} `toml:"config"`
-	} `toml:"aws"`
-}
-
-type HAOnPremConfigToml struct {
-	Architecture struct {
-		ConfigInitials struct {
-			SecretsKeyFile              string `toml:"secrets_key_file,omitempty"`
-			SecretsStoreFile            string `toml:"secrets_store_file,omitempty"`
-			Architecture                string `toml:"architecture,omitempty"`
-			WorkspacePath               string `toml:"workspace_path,omitempty"`
-			SSHUser                     string `toml:"ssh_user,omitempty"`
-			SSHKeyFile                  string `toml:"ssh_key_file,omitempty"`
-			SSHPort                     string `toml:"ssh_port,omitempty"`
-			SudoPassword                string `toml:"sudo_password,omitempty"`
-			LoggingMonitoringManagement string `toml:"logging_monitoring_management,omitempty"`
-			NewElk                      string `toml:"new_elk,omitempty"`
-			ExistingElkInstanceIP       string `toml:"existing_elk_instance_ip,omitempty"`
-			ExistingElkPort             string `toml:"existing_elk_port,omitempty"`
-			ExistingElkCert             string `toml:"existing_elk_cert,omitempty"`
-			ExistingElkUsername         string `toml:"existing_elk_username,omitempty"`
-			ExistingElkPassword         string `toml:"existing_elk_password,omitempty"`
-			BackupMount                 string `toml:"backup_mount,omitempty"`
-			HabitatUIDGid               string `toml:"habitat_uid_gid,omitempty"`
-			BackupConfig                string `toml:"backup_config,omitempty"`
-		} `toml:"existing_infra"`
-	} `toml:"architecture"`
-	Automate struct {
-		Config struct {
-			AdminPassword     string     `toml:"admin_password"`
-			Fqdn              string     `toml:"fqdn"`
-			InstanceCount     string     `toml:"instance_count"`
-			TeamsPort         string     `toml:"teams_port,omitempty"`
-			ConfigFile        string     `toml:"config_file"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			RootCA            string     `toml:"root_ca"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"automate"`
-	ChefServer struct {
-		Config struct {
-			InstanceCount     string     `toml:"instance_count"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"chef_server"`
-	Opensearch struct {
-		Config struct {
-			InstanceCount     string     `toml:"instance_count"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			RootCA            string     `toml:"root_ca"`
-			AdminCert         string     `toml:"admin_cert"`
-			AdminKey          string     `toml:"admin_key"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			AdminDn           string     `toml:"admin_dn"`
-			NodesDn           string     `toml:"nodes_dn"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"opensearch"`
-	Postgresql struct {
-		Config struct {
-			InstanceCount     string     `toml:"instance_count"`
-			EnableCustomCerts bool       `toml:"enable_custom_certs"`
-			RootCA            string     `toml:"root_ca"`
-			PrivateKey        string     `toml:"private_key"`
-			PublicKey         string     `toml:"public_key"`
-			CertsByIP         []CertByIP `toml:"certs_by_ip"`
-		} `toml:"config"`
-	} `toml:"postgresql"`
-	ExistingInfra struct {
-		Config struct {
-			AutomatePrivateIps   []string `toml:"automate_private_ips"`
-			ChefServerPrivateIps []string `toml:"chef_server_private_ips"`
-			OpensearchPrivateIps []string `toml:"opensearch_private_ips"`
-			PostgresqlPrivateIps []string `toml:"postgresql_private_ips"`
-		} `toml:"config"`
-	} `toml:"existing_infra"`
-	ExternalDB struct {
-		Database struct {
-			Type       string `toml:"type"`
-			PostgreSQL struct {
-				PostgreSQLInstanceURL       string `toml:"instance_url"`
-				PostgreSQLSuperUserName     string `toml:"superuser_username"`
-				PostgreSQLSuperUserPassword string `toml:"superuser_password"`
-				PostgreSQLDBUserName        string `toml:"dbuser_username"`
-				PostgreSQLDBUserPassword    string `toml:"dbuser_password"`
-				PostgreSQLCertificate       string `toml:"postgresql_certificate"`
-				PostgreSQLRootCert          string `toml:"postgresql_root_cert"`
-			} `toml:"postgre_sql"`
-			Opensearch struct {
-				OpensearchInstanceURL       string `toml:"opensearch_domain_url"`
-				OpensearchSuperUserName     string `toml:"opensearch_username"`
-				OpensearchSuperUserPassword string `toml:"opensearch_user_password"`
-				OpensearchCertificate       string `toml:"opensearch_certificate"`
-				OpensearchRootCert          string `toml:"opensearch_root_cert"`
-				OpensearchDomainName        string `toml:"opensearch_domain_name"`
-				AWS                         struct {
-					AwsOsSnapshotRoleArn  string `toml:"aws_os_snapshot_role_arn"`
-					OsUserAccessKeyId     string `toml:"os_snapshot_user_access_key_id"`
-					OsUserAccessKeySecret string `toml:"os_snapshot_user_access_key_secret"`
-				} `toml:"aws"`
-			} `toml:"open_search"`
-		} `toml:"database"`
-	} `toml:"external"`
-	ObjectStorage struct {
-		Config struct {
-			BucketName string `toml:"bucket_name"`
-			AccessKey  string `toml:"access_key"`
-			SecretKey  string `toml:"secret_key"`
-			Endpoint   string `toml:"endpoint"`
-			Region     string `toml:"region"`
-		} `toml:"config"`
-	} `toml:"object_storage"`
-}
diff --git a/lib/httputils/http.go b/lib/httputils/http.go
index b43d0cc2d..4cd9d7ce0 100644
--- a/lib/httputils/http.go
+++ b/lib/httputils/http.go
@@ -59,7 +59,7 @@ func (c *Client) MakeRequest(requestMethod, url string, body interface{}) (*http
 		if err != nil {
 			return nil, nil, fmt.Errorf("failed to marshal request body: %w", err)
 		}
-		c.Logger.Debugf("Request body for MakeRequest: %s\n", string(requestBody))
+		c.Logger.Debugf("Request body for MakeRequest: \n%s\n", string(requestBody))
 		reader = bytes.NewReader(requestBody)
 	}
 
@@ -82,6 +82,8 @@ func (c *Client) MakeRequest(requestMethod, url string, body interface{}) (*http
 		return nil, nil, fmt.Errorf("failed to read response body: %w", err)
 	}
 
+	c.Logger.Debugf("Response body for MakeRequest: \n%s\n", string(responseBody))
+
 	if resp.StatusCode < 200 || resp.StatusCode >= 300 {
 		return resp, responseBody, fmt.Errorf("unexpected response status: %s", resp.Status)
 	}
diff --git a/lib/reporting/helperForVerification.go b/lib/reporting/helperForVerification.go
index cef0e25c1..3cfd54f1a 100644
--- a/lib/reporting/helperForVerification.go
+++ b/lib/reporting/helperForVerification.go
@@ -4,15 +4,13 @@ import (
 	"fmt"
 	"sort"
 	"strings"
-	"time"
 
 	"github.com/jedib0t/go-pretty/v5/table"
 )
 
 type VerificationReport struct {
-	TableKey     string
-	Report       Info
-	TotalReports int
+	TableKey string
+	Report   Info
 }
 
 type Info struct {
@@ -34,47 +32,27 @@ type SummaryInfo struct {
 	ToResolve       []string `json:"toResolve,omitempty"`
 }
 
-type progress struct {
-	currentCount int
-	totalCount   int
-}
-
-func VerificationReports(reportChan chan VerificationReport, reporting Reporting, nodeInfoMap map[string][]Info, done chan bool) {
-	tableProgress := make(map[string]progress)
+func VerificationReports(reports []VerificationReport, reporting Reporting, nodeInfoMap map[string][]Info) {
 	keyMap := make(map[string][]string)
 	tableKeys := reporting.GetAllTableKeys()
-	oldProgresslen := 0
-	for n := range reportChan {
-		time.Sleep(time.Second * 1)
-		report := n
+
+	for _, report := range reports {
 		info := report.Report
-		total := report.TotalReports
 		node := report.TableKey
 		var nodeinfo []Info
 		if _, ok := nodeInfoMap[node]; ok {
 			nodeinfo := nodeInfoMap[node]
 			nodeinfo = append(nodeinfo, info)
 			nodeInfoMap[node] = nodeinfo
-			oldCount := tableProgress[node].currentCount
-			tableProgress[node] = progress{
-				currentCount: oldCount + 1,
-				totalCount:   total,
-			}
 		} else {
 			nodeinfo = append(nodeinfo, info)
 			nodeInfoMap[node] = nodeinfo
 			keyMap[node] = matchNodeNameWithRespectiveTablesName(node, tableKeys)
-			tableProgress[node] = progress{
-				currentCount: 1,
-				totalCount:   total,
-			}
 		}
-		oldProgresslen = showProgress(tableProgress, oldProgresslen)
 	}
-	clearPrintedProgressMsg(len(tableProgress))
+
 	updateTablesWithData(reporting, nodeInfoMap, keyMap)
 	printTables(reporting, nodeInfoMap, keyMap)
-	done <- true
 }
 
 func printTables(reporting Reporting, nodeInfo map[string][]Info, keyMap map[string][]string) {
@@ -107,8 +85,15 @@ func updateTablesWithData(reporting Reporting, nodeInfo map[string][]Info, keyMa
 	for key, value := range nodeInfo {
 		summaryMap := make(map[string]SummaryInfo)
 		statusTableRows, summaryTableRows := createSingleNodeRowsForBothTables(key, value, reporting, summaryMap)
-		reporting.GetTable(keyMap[key][0]).Rows = statusTableRows
-		reporting.GetTable(keyMap[key][1]).Rows = summaryTableRows
+		if _, ok := keyMap[key]; !ok {
+			continue
+		}
+		matchingKeys := keyMap[key]
+		if len(matchingKeys) < 2 {
+			continue
+		}
+		reporting.GetTable(matchingKeys[0]).Rows = statusTableRows
+		reporting.GetTable(matchingKeys[1]).Rows = summaryTableRows
 	}
 }
 
@@ -234,32 +219,12 @@ func createSingleParameterRows(parameter string, parameterSummary SummaryInfo, r
 	return rows
 }
 
-func showProgress(tableProgess map[string]progress, lines int) int {
-	clearPrintedProgressMsg(lines)
-	keys := make([]string, len(tableProgess))
-	i := 0
-	for key := range tableProgess {
-		keys[i] = key
-		i++
-	}
-	sort.Strings(keys)
-	for _, key := range keys {
-		percent := float64(tableProgess[key].currentCount) / float64(tableProgess[key].totalCount) * 100
-		progressMsg := fmt.Sprintf("%-12s %.2f%%\n", key, percent)
-		fmt.Print(progressMsg)
-	}
-	return len(keys)
-}
-
-func clearPrintedProgressMsg(lines int) {
-	if lines > 0 {
-		fmt.Printf("\033[%dA\033[J", lines)
-	}
-}
-
 func updateTableTitle(reporting Reporting, nodeInfo map[string][]Info, keyMap map[string][]string) {
 	var failed bool
 	for key, value := range nodeInfo {
+		if _, ok := keyMap[key]; !ok {
+			continue
+		}
 		title := reporting.GetTable(keyMap[key][0]).Title
 		if checkStatusNotEmpty(value) {
 			return
@@ -296,7 +261,7 @@ func checkFailedStatus(info []Info) bool {
 func matchNodeNameWithRespectiveTablesName(substring string, keys []string) []string {
 	var matchingKeys []string
 	for _, key := range keys {
-		if strings.Contains(key, substring) {
+		if strings.Contains(strings.ToUpper(key), strings.ToUpper(substring)) {
 			matchingKeys = append(matchingKeys, key)
 		}
 	}
diff --git a/lib/verification/checks.go b/lib/verification/checks.go
deleted file mode 100644
index 849059ab9..000000000
--- a/lib/verification/checks.go
+++ /dev/null
@@ -1,271 +0,0 @@
-package verification
-
-import (
-	sc "github.com/chef/automate/api/config/deployment"
-	"github.com/chef/automate/lib/config_parser"
-	"github.com/chef/automate/lib/reporting"
-)
-
-const (
-	systemResources  = "System Resources"
-	softwareVersions = "Software Versions"
-)
-
-type Result struct {
-	Valid  bool
-	Report reporting.Info
-}
-
-func validateAWSProvisionConfig(config *config_parser.HAAwsConfigToml) {
-
-	/* Write the checks to validate if all the required fields for AWS Infra Provision without Managed Services
-	are filled in the parsed config */
-
-	if config.Aws.Config.SetupManagedServices {
-		/* Write the checks to validate if all the required fields for AWS Infra Provision with Managed Services
-		are filled in the parsed config */
-	}
-
-}
-
-func validateAWSManagedProvisionConfig(config *config_parser.HAAwsConfigToml) {
-
-	/* Write the checks to validate if all the required fields for AWS Infra Provision with Managed Services
-	are filled in the parsed config */
-
-}
-
-func validateAWSDeploymentConfig(config *config_parser.HAAwsConfigToml) {
-
-	/* Write the checks to validate if all the required fields for AWS Deployment without Managed Services
-	are filled in the parsed config */
-
-}
-
-func validateAWSManagedDeploymentConfig(config *config_parser.HAAwsConfigToml) {
-
-	/* Write the checks to validate if all the required fields for AWS Deployment with Managed Services
-	are filled in the parsed config */
-
-}
-
-func validateOnPremConfig(config *config_parser.HAOnPremConfigToml) {
-
-	/* Write the checks to validate if all the required fields for On-Prem Deployment with Chef Managed Services
-	are filled in the parsed config */
-
-}
-
-func validateOnPremAWSConfig(config *config_parser.HAOnPremConfigToml) {
-
-	/* Write the checks to validate if all the required fields for On-Prem Deployment with AWS Managed Services
-	are filled in the parsed config */
-
-}
-
-func validateOnPremCustomerConfig(config *config_parser.HAOnPremConfigToml) {
-
-	/* Write the checks to validate if all the required fields for On-Prem Deployment with Customer Managed Services
-	are filled in the parsed config */
-
-}
-
-func validateStandaloneDeploymentConfig(config *sc.AutomateConfig) {
-
-	/* Write the checks to validate if all the required fields for On-Prem Deployment with Customer Managed Services
-	are filled in the parsed config */
-
-}
-
-func validateNodeReachability(ipaddress string, nodeType string, channel chan reporting.VerificationReport, numberOfNodes *numberOfNodes) {
-
-	/* Write the checks to validate if the nodes are reachable */
-
-	result := reporting.Info{
-		Hostip:    ipaddress,
-		Parameter: "Node Reachabilility",
-		Status:    "Success",
-		StatusMessage: &reporting.StatusMessage{
-			MainMessage: "Node " + ipaddress + " is reachable",
-		},
-		SummaryInfo: &reporting.SummaryInfo{
-			SuccessfulCount: 1,
-		},
-	}
-
-	chanWriter(channel, nodeType, result, numberOfNodes)
-
-}
-
-func validateCertificateExpiry(ipaddress string, certContents string) Result {
-
-	return Result{
-		Valid: true,
-		Report: reporting.Info{
-			Hostip:    ipaddress,
-			Parameter: "Certificates",
-			Status:    "Success",
-			StatusMessage: &reporting.StatusMessage{
-				MainMessage: "Certificate A validated successfully",
-			},
-		},
-	}
-
-	/* Write the checks to validate the expiry date of the certificate */
-
-}
-
-func validateCertificateFormat(ipaddress string, certContents string) Result {
-
-	return Result{
-		Valid: true,
-		Report: reporting.Info{
-			Hostip:    ipaddress,
-			Parameter: "Certificates",
-			Status:    "Failed",
-			StatusMessage: &reporting.StatusMessage{
-				MainMessage: "Certificate B validation failed",
-				SubMessage:  []string{"Certificate is not formatted properly"},
-			},
-			SummaryInfo: &reporting.SummaryInfo{
-				ToResolve: []string{"Add the start and end certificate markers"},
-			},
-		},
-	}
-
-	/* Write the checks to validate the expiry date of the certificate */
-
-}
-
-func validateFreeDisk(ipaddress string, nodeType string) Result {
-
-	if nodeType == "OpenSearch" {
-		return Result{
-			Valid: false,
-			Report: reporting.Info{
-				Hostip:    ipaddress,
-				Parameter: systemResources,
-				Status:    "Failed",
-				StatusMessage: &reporting.StatusMessage{
-					MainMessage: "System Resources check failed",
-					SubMessage:  []string{"/hab volume is not of 100 GB"},
-				},
-				SummaryInfo: &reporting.SummaryInfo{
-					ToResolve: []string{"Re-mount the hab volume with 100 GB"},
-				},
-			},
-		}
-	}
-	return Result{
-		Valid: true,
-		Report: reporting.Info{
-			Hostip:    ipaddress,
-			Parameter: systemResources,
-			Status:    "Success",
-			StatusMessage: &reporting.StatusMessage{
-				MainMessage: "System Resources as per the requirement",
-			},
-		},
-	}
-
-}
-
-func validateCPU(ipaddress string, nodeType string) Result {
-
-	if nodeType == "ChefServer" {
-		return Result{
-			Valid: true,
-			Report: reporting.Info{
-				Hostip:    ipaddress,
-				Parameter: systemResources,
-				Status:    "Success",
-				StatusMessage: &reporting.StatusMessage{
-					MainMessage: "System Resources as per the requirement",
-				},
-			},
-		}
-	}
-	return Result{
-		Valid: false,
-		Report: reporting.Info{
-			Hostip:    ipaddress,
-			Parameter: systemResources,
-			Status:    "Failed",
-			StatusMessage: &reporting.StatusMessage{
-				MainMessage: "System Resources check failed",
-				SubMessage:  []string{"CPU count is not as per the requirement"},
-			},
-			SummaryInfo: &reporting.SummaryInfo{
-				ToResolve: []string{"Increase the CPU of the machine. Machine should have 4 CPUs"},
-			},
-		},
-	}
-
-}
-
-func validateOSVersion(ipaddress string, nodeType string) Result {
-
-	if nodeType == "Automate" {
-		return Result{
-			Valid: false,
-			Report: reporting.Info{
-				Hostip:    ipaddress,
-				Parameter: softwareVersions,
-				Status:    "Failed",
-				StatusMessage: &reporting.StatusMessage{
-					MainMessage: "Software Versions check Failed",
-					SubMessage:  []string{"OS version is not Ubuntu 20.04"},
-				},
-				SummaryInfo: &reporting.SummaryInfo{
-					ToResolve: []string{"Setup the machine with Ubuntu 20.04"},
-				},
-			},
-		}
-	}
-	return Result{
-		Valid: true,
-		Report: reporting.Info{
-			Hostip:    ipaddress,
-			Parameter: softwareVersions,
-			Status:    "Success",
-			StatusMessage: &reporting.StatusMessage{
-				MainMessage: "Software Versions check Passed",
-			},
-		},
-	}
-
-}
-
-func validateLinuxCommands(ipaddress string, nodeType string) Result {
-
-	if nodeType == "OpenSearch" {
-		return Result{
-			Valid: true,
-			Report: reporting.Info{
-				Hostip:    ipaddress,
-				Parameter: softwareVersions,
-				Status:    "Success",
-				StatusMessage: &reporting.StatusMessage{
-					MainMessage: "Software Versions check Failed",
-					SubMessage:  []string{"make command failed"},
-				},
-				SummaryInfo: &reporting.SummaryInfo{
-					ToResolve: []string{"Add the required paths in the PATH folder"},
-				},
-			},
-		}
-	}
-
-	return Result{
-		Valid: true,
-		Report: reporting.Info{
-			Hostip:    ipaddress,
-			Parameter: softwareVersions,
-			Status:    "Success",
-			StatusMessage: &reporting.StatusMessage{
-				MainMessage: "Software Versions check Passed",
-			},
-		},
-	}
-
-}
diff --git a/lib/verification/mockVerify.go b/lib/verification/mockVerify.go
deleted file mode 100644
index b8318648b..000000000
--- a/lib/verification/mockVerify.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package verification
-
-type VerificationMock struct {
-	VerifyHAAWSProvisionFunc              func(configFile string) error
-	VerifyHAAWSManagedProvisionFunc       func(configFile string) error
-	VerifyHAAWSDeploymentFunc             func(configFile string) error
-	VerifyHAAWSManagedDeploymentFunc      func(configFile string) error
-	VerifyOnPremDeploymentFunc            func(configFile string) error
-	VerifyOnPremAWSManagedDeploymentFunc  func(configFile string) error
-	VerifyOnPremCustManagedDeploymentFunc func(configFile string) error
-	VerifyStandaloneDeploymentFunc        func(configFile string) error
-	VerifyCertificatesFunc                func(configFile string) error
-}
-
-func (v *VerificationMock) VerifyHAAWSProvision(configFile string) error {
-	return v.VerifyHAAWSProvisionFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyHAAWSManagedProvision(configFile string) error {
-	return v.VerifyHAAWSManagedProvisionFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyHAAWSDeployment(configFile string) error {
-	return v.VerifyHAAWSDeploymentFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyHAAWSManagedDeployment(configFile string) error {
-	return v.VerifyHAAWSManagedDeploymentFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyOnPremDeployment(configFile string) error {
-	return v.VerifyOnPremDeploymentFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyOnPremAWSManagedDeployment(configFile string) error {
-	return v.VerifyOnPremAWSManagedDeploymentFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyOnPremCustManagedDeployment(configFile string) error {
-	return v.VerifyOnPremCustManagedDeploymentFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyStandaloneDeployment(configFile string) error {
-	return v.VerifyStandaloneDeploymentFunc(configFile)
-}
-
-func (v *VerificationMock) VerifyCertificates(configFile string) error {
-	return v.VerifyCertificatesFunc(configFile)
-}
diff --git a/lib/verification/verify.go b/lib/verification/verify.go
deleted file mode 100644
index 2684228d0..000000000
--- a/lib/verification/verify.go
+++ /dev/null
@@ -1,425 +0,0 @@
-package verification
-
-import (
-	"fmt"
-	"os"
-	"sync"
-
-	"github.com/chef/automate/components/automate-deployment/pkg/cli"
-	"github.com/chef/automate/lib/config_parser"
-	"github.com/chef/automate/lib/reporting"
-	"github.com/jedib0t/go-pretty/v5/table"
-)
-
-type Verification interface {
-	VerifyHAAWSProvision(configFile string) error
-	VerifyHAAWSManagedProvision(configFile string) error
-	VerifyHAAWSDeployment(configFile string) error
-	VerifyHAAWSManagedDeployment(configFile string) error
-	VerifyOnPremDeployment(configFile string) error
-	VerifyOnPremAWSManagedDeployment(configFile string) error
-	VerifyOnPremCustManagedDeployment(configFile string) error
-	VerifyStandaloneDeployment(configFile string) error
-	VerifyCertificates(configFile string) error
-}
-
-type VerificationModule struct{}
-
-type report struct {
-	ipaddress             string
-	parameter             string
-	message               string
-	errors                []string
-	resolutions           []string
-	successfulChecksCount int
-	failedChecksCount     int
-}
-
-type numberOfNodes struct {
-	numberOfAutomateNodes    int
-	numberOfChefServerNodes  int
-	numberOfPostgresSQLNodes int
-	numberOfOpenSearchNodes  int
-}
-
-var reportChan = make(chan reporting.VerificationReport)
-var nodeInfoMap = make(map[string][]reporting.Info)
-var doneChan = make(chan bool, 1)
-
-func (v *VerificationModule) VerifyHAAWSProvision(configFile string) error {
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseAWSAutomateConfig(configFile)
-	if err != nil {
-		return err
-	}
-
-	validateAWSProvisionConfig(config)
-	return nil
-}
-
-func (v *VerificationModule) VerifyHAAWSManagedProvision(configFile string) error {
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseAWSAutomateConfig(configFile)
-	if err != nil {
-		return err
-	}
-	validateAWSManagedProvisionConfig(config)
-	return nil
-}
-
-func (v *VerificationModule) VerifyHAAWSDeployment(configFile string) error {
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseAWSAutomateConfig(configFile)
-	if err != nil {
-		return err
-	}
-	validateAWSDeploymentConfig(config)
-	return nil
-}
-
-func (v *VerificationModule) VerifyHAAWSManagedDeployment(configFile string) error {
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseAWSAutomateConfig(configFile)
-	if err != nil {
-		return err
-	}
-	validateAWSManagedDeploymentConfig(config)
-	return nil
-}
-
-func (v *VerificationModule) VerifyOnPremAWSManagedDeployment(configFile string) error {
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseOnPremConfig(configFile)
-	if err != nil {
-		return err
-	}
-	validateOnPremAWSConfig(config)
-	return nil
-}
-
-func (v *VerificationModule) VerifyOnPremCustManagedDeployment(configFile string) error {
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseOnPremConfig(configFile)
-	if err != nil {
-		return err
-	}
-	validateOnPremCustomerConfig(config)
-	return nil
-}
-
-func (v *VerificationModule) VerifyStandaloneDeployment(configFile string) error {
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseStandaloneConfig(configFile)
-	if err != nil {
-		return err
-	}
-	validateStandaloneDeploymentConfig(config)
-	return nil
-}
-
-func (v *VerificationModule) VerifyCertificates(certContents string) error {
-
-	return nil
-}
-
-func (v *VerificationModule) VerifyOnPremDeployment(configFile string) error {
-
-	configParser := &config_parser.ConfigParserImpl{}
-	config, err := configParser.ParseOnPremConfig(configFile)
-	if err != nil {
-		return err
-	}
-	var ipsMap = make(map[string]string)
-	automateIps := config.ExistingInfra.Config.AutomatePrivateIps
-	chefServerIps := config.ExistingInfra.Config.ChefServerPrivateIps
-	opensearchIps := config.ExistingInfra.Config.OpensearchPrivateIps
-	postgresIps := config.ExistingInfra.Config.PostgresqlPrivateIps
-
-	dataMap := map[string][]string{
-		"Automate":    automateIps,
-		"ChefServer":  chefServerIps,
-		"OpenSearch":  opensearchIps,
-		"PostgresSQL": postgresIps,
-	}
-
-	for nodeType, nodeIps := range dataMap {
-		constructMap(nodeIps, nodeType, &ipsMap)
-	}
-
-	numberOfNodes := &numberOfNodes{
-		numberOfAutomateNodes:    len(automateIps),
-		numberOfChefServerNodes:  len(chefServerIps),
-		numberOfPostgresSQLNodes: len(postgresIps),
-		numberOfOpenSearchNodes:  len(opensearchIps),
-	}
-
-	startReportModule(numberOfNodes)
-
-	//validateOnPremConfig(config)
-
-	runTests(ipsMap, numberOfNodes)
-
-	return nil
-}
-
-func constructMap(nodeIps []string, nodeType string, m *map[string]string) {
-	for _, val := range nodeIps {
-		(*m)[val] = nodeType
-	}
-}
-
-func runTests(ipsMap map[string]string, numberOfNodes *numberOfNodes) {
-	var wg sync.WaitGroup
-
-	for k, v := range ipsMap {
-		wg.Add(3)
-		ip := fmt.Sprintf("%v", k)
-		nodeType := fmt.Sprintf("%v", v)
-		if nodeType == "OpenSearch" || nodeType == "PostgresSQL" {
-			wg.Add(1)
-			go func() {
-				defer wg.Done()
-				producerChan := make(chan bool, 1)
-				runChecksForCertificates(ip, nodeType, producerChan, numberOfNodes)
-			}()
-		}
-		go func() {
-			defer wg.Done()
-			validateNodeReachability(ip, nodeType, reportChan, numberOfNodes)
-		}()
-		go func() {
-			defer wg.Done()
-			runChecksForSystemResources(ip, nodeType, numberOfNodes)
-		}()
-		go func() {
-			defer wg.Done()
-			runChecksForSoftwareVersions(ip, nodeType, numberOfNodes)
-		}()
-	}
-	wg.Wait()
-	close(reportChan)
-	if <-doneChan {
-		fmt.Println("done!!")
-	}
-}
-
-func runChecksForCertificates(ipaddress string, nodeType string, doneChan chan bool, numberOfNodes *numberOfNodes) {
-	var successCount, failedCount int
-	result := validateCertificateFormat(ipaddress, "abc")
-	if !result.Valid {
-		failedCount++
-		result.Report.SummaryInfo.FailedCount = failedCount
-		chanWriter(reportChan, nodeType, result.Report, numberOfNodes)
-	} else {
-		result = validateCertificateExpiry(ipaddress, "abc")
-		if !result.Valid {
-			failedCount++
-			result.Report.SummaryInfo.FailedCount = failedCount
-			chanWriter(reportChan, nodeType, result.Report, numberOfNodes)
-		} else {
-			successCount++
-			report := report{
-				ipaddress:             ipaddress,
-				parameter:             "Certificates",
-				message:               "Certificate validation successful",
-				successfulChecksCount: successCount,
-			}
-			chanWriter(reportChan, nodeType, getReport(report, "Success"), numberOfNodes)
-		}
-	}
-	doneChan <- true
-}
-
-func runChecksForSystemResources(ipaddress string, nodeType string, numberOfNodes *numberOfNodes) {
-	var successCount, failedCount int
-	var errors []string
-	var resolutions []string
-	failed := false
-
-	result := validateFreeDisk(ipaddress, nodeType)
-	if !result.Valid {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		failed = true
-		failedCount++
-	} else if result.Valid && result.Report.StatusMessage.SubMessage != nil {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		successCount++
-	} else if result.Valid {
-		successCount++
-	}
-
-	result = validateCPU(ipaddress, nodeType)
-	if !result.Valid {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		failed = true
-		failedCount++
-	} else if result.Valid && result.Report.StatusMessage.SubMessage != nil {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		successCount++
-	} else if result.Valid {
-		successCount++
-	}
-
-	if failed {
-		report := report{
-			ipaddress:             ipaddress,
-			parameter:             "System Resources",
-			message:               "System Resource Check failed",
-			errors:                errors,
-			resolutions:           resolutions,
-			failedChecksCount:     failedCount,
-			successfulChecksCount: successCount,
-		}
-		chanWriter(reportChan, nodeType, getReport(report, "Failed"), numberOfNodes)
-
-	} else {
-		report := report{
-			ipaddress:             ipaddress,
-			parameter:             "System Resources",
-			message:               "All System Resources are as per the requirement",
-			errors:                errors,
-			resolutions:           resolutions,
-			failedChecksCount:     failedCount,
-			successfulChecksCount: successCount,
-		}
-		chanWriter(reportChan, nodeType, getReport(report, "Success"), numberOfNodes)
-	}
-}
-
-func runChecksForSoftwareVersions(ipaddress string, nodeType string, numberOfNodes *numberOfNodes) {
-	var successCount, failedCount int
-	var errors []string
-	var resolutions []string
-	failed := false
-
-	result := validateOSVersion(ipaddress, nodeType)
-	if !result.Valid {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		failed = true
-		failedCount++
-	} else if result.Valid && result.Report.StatusMessage.SubMessage != nil {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		successCount++
-	} else if result.Valid {
-		successCount++
-	}
-
-	result = validateLinuxCommands(ipaddress, nodeType)
-	if !result.Valid {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		failed = true
-		failedCount++
-	} else if result.Valid && result.Report.StatusMessage.SubMessage != nil {
-		errors = append(errors, result.Report.StatusMessage.SubMessage...)
-		resolutions = append(resolutions, result.Report.SummaryInfo.ToResolve...)
-		successCount++
-	} else if result.Valid {
-		successCount++
-	}
-
-	if failed {
-		report := report{
-			ipaddress:             ipaddress,
-			parameter:             result.Report.Parameter,
-			message:               result.Report.StatusMessage.MainMessage,
-			errors:                errors,
-			resolutions:           resolutions,
-			failedChecksCount:     failedCount,
-			successfulChecksCount: successCount,
-		}
-		chanWriter(reportChan, nodeType, getReport(report, "Failed"), numberOfNodes)
-
-	} else {
-		report := report{
-			ipaddress:             ipaddress,
-			parameter:             result.Report.Parameter,
-			message:               result.Report.StatusMessage.MainMessage,
-			errors:                errors,
-			resolutions:           resolutions,
-			failedChecksCount:     failedCount,
-			successfulChecksCount: successCount,
-		}
-		chanWriter(reportChan, nodeType, getReport(report, "Success"), numberOfNodes)
-	}
-}
-
-func getReport(testReport report, status string) reporting.Info {
-	return reporting.Info{
-		Hostip:    testReport.ipaddress,
-		Parameter: testReport.parameter,
-		Status:    status,
-		StatusMessage: &reporting.StatusMessage{
-			MainMessage: testReport.message,
-			SubMessage:  testReport.errors,
-		},
-		SummaryInfo: &reporting.SummaryInfo{
-			ToResolve:       testReport.resolutions,
-			SuccessfulCount: testReport.successfulChecksCount,
-			FailedCount:     testReport.failedChecksCount,
-		},
-	}
-}
-
-func startReportModule(nodeNumbers *numberOfNodes) {
-	wr := cli.NewWriter(os.Stdout, os.Stderr, os.Stdin)
-	tb := createTables(nodeNumbers)
-	rp := reporting.NewReportingModule(wr, tb)
-	go reporting.VerificationReports(reportChan, rp, nodeInfoMap, doneChan)
-}
-
-func createTables(nodeNumbers *numberOfNodes) map[string]*reporting.Table {
-	automateSummaryTableTitle := fmt.Sprintf("Summary: Automate <Nodes> - %d", nodeNumbers.numberOfAutomateNodes)
-	chefServerSummaryTableTitle := fmt.Sprintf("Summary: Chef Infra Server <Nodes> - %d", nodeNumbers.numberOfChefServerNodes)
-	postgresSQLSummaryTableTitle := fmt.Sprintf("Summary: PostgresSQL <Nodes> - %d", nodeNumbers.numberOfPostgresSQLNodes)
-	openSearchSummaryTableTitle := fmt.Sprintf("Summary: Opensearch <Nodes> - %d", nodeNumbers.numberOfOpenSearchNodes)
-	tb := make(map[string]*reporting.Table)
-	tb["AutomateStatusTable"] = getStatusTable("Automate")
-	tb["AutomateSummaryTable"] = getSummaryTable(automateSummaryTableTitle)
-	tb["ChefServerStatusTable"] = getStatusTable("Chef Infra Server")
-	tb["ChefServerSummaryTable"] = getSummaryTable(chefServerSummaryTableTitle)
-	tb["PostgresSQLStatusTable"] = getStatusTable("PostgresSQL")
-	tb["PostgresSQLSummaryTable"] = getSummaryTable(postgresSQLSummaryTableTitle)
-	tb["OpenSearchStatusTable"] = getStatusTable("OpenSearch")
-	tb["OpenSearchSummaryTable"] = getSummaryTable(openSearchSummaryTableTitle)
-	return tb
-}
-
-func getStatusTable(title string) *reporting.Table {
-	return &reporting.Table{
-		Title:     title,
-		Header:    table.Row{"No.", "Identifier", "Parameter", "Status", "Message"},
-		ColConfig: []table.ColumnConfig{{Number: 1, WidthMax: 5, WidthMin: 5}, {Number: 2, WidthMax: 15, WidthMin: 15}, {Number: 3, WidthMax: 25, WidthMin: 25}, {Number: 4, WidthMax: 15, WidthMin: 15}, {Number: 5, WidthMax: 60, WidthMin: 60}},
-	}
-}
-
-func getSummaryTable(title string) *reporting.Table {
-	return &reporting.Table{
-		Title:     title,
-		Header:    table.Row{"Parameter", "Successful", "Failed", "How to resolve it"},
-		ColConfig: []table.ColumnConfig{{Number: 1, WidthMax: 30, WidthMin: 30}, {Number: 2, WidthMax: 15, WidthMin: 15}, {Number: 3, WidthMax: 15, WidthMin: 15}, {Number: 4, WidthMax: 60, WidthMin: 60}},
-	}
-}
-
-func chanWriter(reportChan chan reporting.VerificationReport, nodeType string, report reporting.Info, nodeNumbers *numberOfNodes) {
-	total := 3 * nodeNumbers.numberOfAutomateNodes
-	if nodeType == "ChefServer" {
-		total = 3 * nodeNumbers.numberOfChefServerNodes
-	} else if nodeType == "OpenSearch" {
-		total = 4 * nodeNumbers.numberOfOpenSearchNodes
-	} else if nodeType == "PostgresSQL" {
-		total = 4 * nodeNumbers.numberOfPostgresSQLNodes
-	}
-	msg := reporting.VerificationReport{
-		TableKey:     nodeType,
-		Report:       report,
-		TotalReports: total,
-	}
-	reportChan <- msg
-}


Test patch:
diff --git a/components/automate-cli/cmd/chef-automate/verify_test.go b/components/automate-cli/cmd/chef-automate/verify_test.go
index 355273560..8d077d1a6 100644
--- a/components/automate-cli/cmd/chef-automate/verify_test.go
+++ b/components/automate-cli/cmd/chef-automate/verify_test.go
@@ -3,6 +3,7 @@ package main
 import (
 	"errors"
 	"net/http"
+	"strings"
 	"testing"
 
 	"github.com/chef/automate/components/automate-cli/pkg/verifysystemdcreate"
@@ -14,7 +15,9 @@ import (
 )
 
 const (
-	CONFIG_FILE = "/config_valid_config_parser.toml"
+	CONFIG_FILE         = "/config_valid_config_parser.toml"
+	STATUS_API_RESPONSE = `{"status":"SUCCESS","result":{"status":"OK","services":[],"cli_version":"20230622174936","error":"error getting services from hab svc status"}}`
+	BATCH_CHECK_REQUEST = `{"status":"SUCCESS","result":{"passed":true,"node_result":[]}}`
 )
 
 func TestRunVerifyCmd(t *testing.T) {
@@ -31,10 +34,16 @@ func TestRunVerifyCmd(t *testing.T) {
 			description: "bastion with existing automate-verify - success",
 			mockHttputils: &httputils.MockHTTPClient{
 				MakeRequestFunc: func(requestMethod, url string, body interface{}) (*http.Response, []byte, error) {
+					if strings.Contains(url, "batch-check") {
+						return &http.Response{
+							StatusCode: http.StatusOK,
+							Body:       nil,
+						}, []byte(BATCH_CHECK_REQUEST), nil
+					}
 					return &http.Response{
 						StatusCode: http.StatusOK,
 						Body:       nil,
-					}, []byte(`{"status":"success"}`), nil
+					}, []byte(STATUS_API_RESPONSE), nil
 				},
 			},
 			mockCreateSystemdService: &verifysystemdcreate.MockCreateSystemdService{
@@ -74,13 +83,13 @@ func TestRunVerifyCmd(t *testing.T) {
 			description: "bastion without automate-verify - success",
 			mockHttputils: &httputils.MockHTTPClient{
 				MakeRequestFunc: func(requestMethod, url string, body interface{}) (*http.Response, []byte, error) {
-					if requestMethod == http.MethodGet {
-						return nil, nil, errors.New("some error occurred")
+					if strings.Contains(url, "batch-check") {
+						return &http.Response{
+							StatusCode: http.StatusOK,
+							Body:       nil,
+						}, []byte(BATCH_CHECK_REQUEST), nil
 					}
-					return &http.Response{
-						StatusCode: http.StatusOK,
-						Body:       nil,
-					}, []byte(`{"status":"success"}`), nil
+					return nil, nil, errors.New("some error occurred")
 				},
 			},
 			mockCreateSystemdService: &verifysystemdcreate.MockCreateSystemdService{
diff --git a/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice_test.go b/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice_test.go
index bc85f652b..824cb24b1 100644
--- a/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice_test.go
+++ b/components/automate-cli/pkg/verifyserver/services/batchcheckservice/batchcheckservice_test.go
@@ -912,7 +912,7 @@ func TestShouldStartMockServer(t *testing.T) {
 			"error": ""
 		}
 	}`, nil, false)
-	shouldStartMockServer, _ := ss.shouldStartMockServer([]string{"abc"}, &models.Config{
+	shouldStartMockServer := ss.shouldStartMockServer([]string{"abc"}, &models.Config{
 		Hardware: &models.Hardware{
 			AutomateNodeCount:        1,
 			AutomateNodeIps:          []string{"1.2.3.4"},
@@ -970,7 +970,7 @@ func TestStartMockServerIfNeeded(t *testing.T) {
 	ss := getBatchCheckServiceInstance()
 
 	ss.httpRequestClient = SetupMockHttpRequestClient(`{}`, errors.New("error occurred"), false)
-	resp, _, err := ss.startMockServerIfNeeded([]string{"firewall"}, &models.Config{
+	resp, _ := ss.startMockServerIfNeeded([]string{"firewall"}, &models.Config{
 		Hardware: &models.Hardware{
 			AutomateNodeCount:        1,
 			AutomateNodeIps:          []string{"1.2.3.4"},
@@ -982,7 +982,6 @@ func TestStartMockServerIfNeeded(t *testing.T) {
 			OpenSearchNodeIps:        []string{"1.2.3.5", "1.2.3.6"},
 		},
 	})
-	assert.Equal(t, "received no response for status api from any automate nodes", err.Error())
 	assert.Equal(t, 0, len(resp))
 }
 
diff --git a/lib/config_parser/parser_test.go b/lib/config_parser/parser_test.go
deleted file mode 100644
index 8a78c3bf3..000000000
--- a/lib/config_parser/parser_test.go
+++ /dev/null
@@ -1,250 +0,0 @@
-package config_parser
-
-import (
-	"errors"
-	"reflect"
-	"testing"
-
-	sc "github.com/chef/automate/api/config/deployment"
-	w "github.com/chef/automate/api/config/shared/wrappers"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestParseAWSAutomateConfig(t *testing.T) {
-	type args struct {
-		configFile string
-	}
-	tests := []struct {
-		name    string
-		args    args
-		want    *HAAwsConfigToml
-		wantErr bool
-		err     error
-	}{
-		{
-			name: "Parse AWS Config successful",
-			args: args{configFile: "./testdata/AWSConfig.toml"},
-			want: &HAAwsConfigToml{Architecture: struct {
-				ConfigInitials struct {
-					SecretsKeyFile              string "toml:\"secrets_key_file\""
-					SecretsStoreFile            string "toml:\"secrets_store_file\""
-					Architecture                string "toml:\"architecture\""
-					WorkspacePath               string "toml:\"workspace_path\""
-					SSHUser                     string "toml:\"ssh_user\""
-					SSHKeyFile                  string "toml:\"ssh_key_file\""
-					SSHPort                     string "toml:\"ssh_port\""
-					SudoPassword                string "toml:\"sudo_password\""
-					LoggingMonitoringManagement string "toml:\"logging_monitoring_management\""
-					NewElk                      string "toml:\"new_elk\""
-					ExistingElkInstanceIP       string "toml:\"existing_elk_instance_ip\""
-					ExistingElkPort             string "toml:\"existing_elk_port\""
-					ExistingElkCert             string "toml:\"existing_elk_cert\""
-					ExistingElkUsername         string "toml:\"existing_elk_username\""
-					ExistingElkPassword         string "toml:\"existing_elk_password\""
-					BackupMount                 string "toml:\"backup_mount\""
-					BackupConfig                string "toml:\"backup_config\""
-					S3BucketName                string "toml:\"s3_bucketName\""
-					HabitatUIDGid               string "toml:\"habitat_uid_gid\""
-				} "toml:\"aws\""
-			}{
-				ConfigInitials: struct {
-					SecretsKeyFile              string "toml:\"secrets_key_file\""
-					SecretsStoreFile            string "toml:\"secrets_store_file\""
-					Architecture                string "toml:\"architecture\""
-					WorkspacePath               string "toml:\"workspace_path\""
-					SSHUser                     string "toml:\"ssh_user\""
-					SSHKeyFile                  string "toml:\"ssh_key_file\""
-					SSHPort                     string "toml:\"ssh_port\""
-					SudoPassword                string "toml:\"sudo_password\""
-					LoggingMonitoringManagement string "toml:\"logging_monitoring_management\""
-					NewElk                      string "toml:\"new_elk\""
-					ExistingElkInstanceIP       string "toml:\"existing_elk_instance_ip\""
-					ExistingElkPort             string "toml:\"existing_elk_port\""
-					ExistingElkCert             string "toml:\"existing_elk_cert\""
-					ExistingElkUsername         string "toml:\"existing_elk_username\""
-					ExistingElkPassword         string "toml:\"existing_elk_password\""
-					BackupMount                 string "toml:\"backup_mount\""
-					BackupConfig                string "toml:\"backup_config\""
-					S3BucketName                string "toml:\"s3_bucketName\""
-					HabitatUIDGid               string "toml:\"habitat_uid_gid\""
-				}{
-					SecretsKeyFile:   "/hab/a2_deploy_workspace/secrets.key",
-					SecretsStoreFile: "/hab/a2_deploy_workspace/secrets.json",
-					Architecture:     "aws",
-					WorkspacePath:    "/hab/a2_deploy_workspace",
-					BackupMount:      "/mnt/automate_backups",
-				},
-			}},
-			wantErr: false,
-			err:     nil,
-		},
-		{
-			name:    "Parse AWs Config file not found",
-			args:    args{configFile: "AWSConfig.toml"},
-			want:    nil,
-			wantErr: true,
-			err:     errors.New("error in reading config toml file: open AWSConfig.toml: no such file or directory"),
-		},
-		{
-			name:    "Parse AWs Config failed",
-			args:    args{configFile: "./testdata/AWSConfigFailure.toml"},
-			want:    nil,
-			wantErr: true,
-			err:     errors.New("error in unmarshalling config toml file: (30, 21): unescaped control character U+000A"),
-		},
-	}
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			cp := &ConfigParserImpl{}
-			got, err := cp.ParseAWSAutomateConfig(tt.args.configFile)
-			if tt.wantErr {
-				assert.Equal(t, tt.err.Error(), err.Error())
-			}
-			if !reflect.DeepEqual(got, tt.want) {
-				t.Errorf("ConfigParserImpl.ParseAWSAutomateConfig() = %v, want %v", got, tt.want)
-			}
-		})
-	}
-}
-
-func TestParseOnPremConfig(t *testing.T) {
-	type args struct {
-		configFile string
-	}
-	tests := []struct {
-		name    string
-		args    args
-		want    *HAOnPremConfigToml
-		wantErr bool
-		err     error
-	}{
-		{
-			name: "Parse OnPrem Config successful",
-			args: args{configFile: "./testdata/OnPremConfig.toml"},
-			want: &HAOnPremConfigToml{Architecture: struct {
-				ConfigInitials struct {
-					SecretsKeyFile              string "toml:\"secrets_key_file,omitempty\""
-					SecretsStoreFile            string "toml:\"secrets_store_file,omitempty\""
-					Architecture                string "toml:\"architecture,omitempty\""
-					WorkspacePath               string "toml:\"workspace_path,omitempty\""
-					SSHUser                     string "toml:\"ssh_user,omitempty\""
-					SSHKeyFile                  string "toml:\"ssh_key_file,omitempty\""
-					SSHPort                     string "toml:\"ssh_port,omitempty\""
-					SudoPassword                string "toml:\"sudo_password,omitempty\""
-					LoggingMonitoringManagement string "toml:\"logging_monitoring_management,omitempty\""
-					NewElk                      string "toml:\"new_elk,omitempty\""
-					ExistingElkInstanceIP       string "toml:\"existing_elk_instance_ip,omitempty\""
-					ExistingElkPort             string "toml:\"existing_elk_port,omitempty\""
-					ExistingElkCert             string "toml:\"existing_elk_cert,omitempty\""
-					ExistingElkUsername         string "toml:\"existing_elk_username,omitempty\""
-					ExistingElkPassword         string "toml:\"existing_elk_password,omitempty\""
-					BackupMount                 string "toml:\"backup_mount,omitempty\""
-					HabitatUIDGid               string "toml:\"habitat_uid_gid,omitempty\""
-					BackupConfig                string "toml:\"backup_config,omitempty\""
-				} "toml:\"existing_infra\""
-			}{
-				ConfigInitials: struct {
-					SecretsKeyFile              string "toml:\"secrets_key_file,omitempty\""
-					SecretsStoreFile            string "toml:\"secrets_store_file,omitempty\""
-					Architecture                string "toml:\"architecture,omitempty\""
-					WorkspacePath               string "toml:\"workspace_path,omitempty\""
-					SSHUser                     string "toml:\"ssh_user,omitempty\""
-					SSHKeyFile                  string "toml:\"ssh_key_file,omitempty\""
-					SSHPort                     string "toml:\"ssh_port,omitempty\""
-					SudoPassword                string "toml:\"sudo_password,omitempty\""
-					LoggingMonitoringManagement string "toml:\"logging_monitoring_management,omitempty\""
-					NewElk                      string "toml:\"new_elk,omitempty\""
-					ExistingElkInstanceIP       string "toml:\"existing_elk_instance_ip,omitempty\""
-					ExistingElkPort             string "toml:\"existing_elk_port,omitempty\""
-					ExistingElkCert             string "toml:\"existing_elk_cert,omitempty\""
-					ExistingElkUsername         string "toml:\"existing_elk_username,omitempty\""
-					ExistingElkPassword         string "toml:\"existing_elk_password,omitempty\""
-					BackupMount                 string "toml:\"backup_mount,omitempty\""
-					HabitatUIDGid               string "toml:\"habitat_uid_gid,omitempty\""
-					BackupConfig                string "toml:\"backup_config,omitempty\""
-				}{
-					SecretsKeyFile:   "/hab/a2_deploy_workspace/secrets.key",
-					SecretsStoreFile: "/hab/a2_deploy_workspace/secrets.json",
-					Architecture:     "existing_nodes",
-					WorkspacePath:    "/hab/a2_deploy_workspace",
-					SSHPort:          "22",
-					BackupMount:      "/mnt/automate_backups",
-				},
-			}},
-			wantErr: false,
-			err:     nil,
-		},
-		{
-			name:    "Parse OnPrem Config file not found",
-			args:    args{configFile: "OnPremConfig.toml"},
-			want:    nil,
-			wantErr: true,
-			err:     errors.New("error in reading config toml file: open OnPremConfig.toml: no such file or directory"),
-		},
-		{
-			name:    "Parse OnPrem Config failed",
-			args:    args{configFile: "./testdata/OnPremConfigFailure.toml"},
-			want:    nil,
-			wantErr: true,
-			err:     errors.New("error in unmarshalling config toml file: (10, 21): unescaped control character U+000A"),
-		},
-	}
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			cp := &ConfigParserImpl{}
-			got, err := cp.ParseOnPremConfig(tt.args.configFile)
-			if tt.wantErr {
-				assert.Equal(t, tt.err.Error(), err.Error())
-			}
-			if !reflect.DeepEqual(got, tt.want) {
-				t.Errorf("ConfigParserImpl.ParseOnPremConfig() = %v, want %v", got, tt.want)
-			}
-		})
-	}
-}
-
-func TestParseStandaloneConfig(t *testing.T) {
-	Cfg := sc.NewAutomateConfig()
-	Cfg.Global.V1.Fqdn = w.String("Public_DNS_name")
-	type args struct {
-		configFile string
-	}
-	tests := []struct {
-		name    string
-		args    args
-		want    *sc.AutomateConfig
-		wantErr bool
-		err     error
-	}{
-		{
-			name: "Parse Standalone Config successful",
-			args: args{
-				configFile: "./testdata/StandaloneConfig.toml",
-			},
-			want:    Cfg,
-			wantErr: false,
-		},
-		{
-			name: "Parse Standalone Config failed",
-			args: args{
-				configFile: "StandaloneConfig.toml",
-			},
-			want:    &sc.AutomateConfig{},
-			wantErr: true,
-			err:     errors.New("Failed to read config file located at StandaloneConfig.toml: open StandaloneConfig.toml: no such file or directory"),
-		},
-	}
-
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			cp := &ConfigParserImpl{}
-			got, err := cp.ParseStandaloneConfig(tt.args.configFile)
-			if tt.wantErr {
-				assert.Equal(t, tt.err.Error(), err.Error())
-			} else {
-				assert.Equal(t, tt.want.Global.V1.Fqdn.GetValue(), got.Global.V1.Fqdn.GetValue())
-			}
-
-		})
-	}
-}
diff --git a/lib/config_parser/testdata/AWSConfig.toml b/lib/config_parser/testdata/AWSConfig.toml
deleted file mode 100644
index a644d7720..000000000
--- a/lib/config_parser/testdata/AWSConfig.toml
+++ /dev/null
@@ -1,37 +0,0 @@
-# This is a Chef Automate AWS HA mode configuration file. You can run
-# 'chef-automate deploy' with this config file and it should
-# successfully create a new Chef Automate HA instances with default settings.
-
-[architecture.aws]
-## === INPUT NEEDED ===
-# Eg.: ssh_user = "ubuntu"
-ssh_user = ""
-
-# custome ssh port no to connect instances, default will be 22
-# Eg.: ssh_port = "22"
-ssh_port = ""
-
-# Private SSH key file path, which has access to all the instances.
-# Eg.: ssh_key_file = "~/.ssh/A2HA.pem"
-ssh_key_file = ""
-
-# Eg.: backup_config = "efs" or "s3"
-backup_config = ""
-
-#    Note: 1. To create new bucket, make sure to give a unique name
-#          2. User can also add existing bucket 
-#
-# If s3 is selected for backup_config,
-#     uncomment and add the value for following 's3_bucketName' attribute
-
-# s3_bucketName = ""
-## === ===
-
-secrets_key_file = "/hab/a2_deploy_workspace/secrets.key"
-secrets_store_file = "/hab/a2_deploy_workspace/secrets.json"
-architecture = "aws"
-workspace_path = "/hab/a2_deploy_workspace"
-
-# DON'T MODIFY THE BELOW LINE (backup_mount)
-backup_mount = "/mnt/automate_backups"
-
diff --git a/lib/config_parser/testdata/AWSConfigFailure.toml b/lib/config_parser/testdata/AWSConfigFailure.toml
deleted file mode 100644
index d619a0c3f..000000000
--- a/lib/config_parser/testdata/AWSConfigFailure.toml
+++ /dev/null
@@ -1,37 +0,0 @@
-# This is a Chef Automate AWS HA mode configuration file. You can run
-# 'chef-automate deploy' with this config file and it should
-# successfully create a new Chef Automate HA instances with default settings.
-
-[architecture.aws]
-## === INPUT NEEDED ===
-# Eg.: ssh_user = "ubuntu"
-ssh_user = ""
-
-# custome ssh port no to connect instances, default will be 22
-# Eg.: ssh_port = "22"
-ssh_port = ""
-
-# Private SSH key file path, which has access to all the instances.
-# Eg.: ssh_key_file = "~/.ssh/A2HA.pem"
-ssh_key_file = ""
-
-# Eg.: backup_config = "efs" or "s3"
-backup_config = ""
-
-#    Note: 1. To create new bucket, make sure to give a unique name
-#          2. User can also add existing bucket 
-#
-# If s3 is selected for backup_config,
-#     uncomment and add the value for following 's3_bucketName' attribute
-
-# s3_bucketName = ""
-## === ===
-
-secrets_key_file = "/hab/a2_deploy_workspace/secrets.key
-secrets_store_file = "/hab/a2_deploy_workspace/secrets.json"
-architecture = "aws"
-workspace_path = "/hab/a2_deploy_workspace"
-
-# DON'T MODIFY THE BELOW LINE (backup_mount)
-backup_mount = "/mnt/automate_backups"
-
diff --git a/lib/config_parser/testdata/OnPremConfig.toml b/lib/config_parser/testdata/OnPremConfig.toml
deleted file mode 100644
index 6da3a383f..000000000
--- a/lib/config_parser/testdata/OnPremConfig.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-# This is a Chef Automate on-prem HA mode configuration file. You can run
-# 'chef-automate deploy' with this config file, and it should
-# successfully create a new Chef Automate HA instance with default settings.
-[architecture.existing_infra]
-ssh_user = ""
-# private ssh key file path to access instances
-# Eg.: ssh_key_file = "~/.ssh/A2HA.pem"
-ssh_key_file = ""
-ssh_port = "22"
-secrets_key_file = "/hab/a2_deploy_workspace/secrets.key"
-secrets_store_file = "/hab/a2_deploy_workspace/secrets.json"
-architecture = "existing_nodes"
-# DON'T MODIFY THE BELOW LINE (workspace_path)
-workspace_path = "/hab/a2_deploy_workspace"
-backup_mount = "/mnt/automate_backups"
diff --git a/lib/config_parser/testdata/OnPremConfigFailure.toml b/lib/config_parser/testdata/OnPremConfigFailure.toml
deleted file mode 100644
index 751618dbe..000000000
--- a/lib/config_parser/testdata/OnPremConfigFailure.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-# This is a Chef Automate on-prem HA mode configuration file. You can run
-# 'chef-automate deploy' with this config file, and it should
-# successfully create a new Chef Automate HA instance with default settings.
-[architecture.existing_infra]
-ssh_user = ""
-# private ssh key file path to access instances
-# Eg.: ssh_key_file = "~/.ssh/A2HA.pem"
-ssh_key_file = ""
-ssh_port = "22"
-secrets_key_file = "/hab/a2_deploy_workspace/secrets.key
-secrets_store_file = "/hab/a2_deploy_workspace/secrets.json"
-architecture = "existing_nodes"
-# DON'T MODIFY THE BELOW LINE (workspace_path)
-workspace_path = "/hab/a2_deploy_workspace"
-backup_mount = "/mnt/automate_backups"
diff --git a/lib/config_parser/testdata/StandaloneConfig.toml b/lib/config_parser/testdata/StandaloneConfig.toml
deleted file mode 100644
index 4097767d3..000000000
--- a/lib/config_parser/testdata/StandaloneConfig.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-# This is a default Chef Automate configuration file. You can run
-# 'chef-automate deploy' with this config file and it should
-# successfully create a new Chef Automate instance with default settings.
-
-[global.v1]
-fqdn = "Public_DNS_name"
diff --git a/lib/reporting/helperForVerification_test.go b/lib/reporting/helperForVerification_test.go
index a03e4597a..53cc517a6 100644
--- a/lib/reporting/helperForVerification_test.go
+++ b/lib/reporting/helperForVerification_test.go
@@ -1,6 +1,7 @@
 package reporting
 
 import (
+	"fmt"
 	"testing"
 
 	"github.com/chef/automate/components/automate-deployment/pkg/cli"
@@ -38,18 +39,16 @@ func getMockReportingModule(wr *cli.Writer) Reporting {
 	}
 }
 
-var reportChan = make(chan VerificationReport, 10)
 var nodeInfoMap = make(map[string][]Info)
-var done = make(chan bool, 1)
 
 func TestVerificationReports(t *testing.T) {
 	cw := getMockWriterImpl()
 	type args struct {
-		reportChan  chan VerificationReport
+		reports     []VerificationReport
 		reporting   Reporting
 		nodeInfoMap map[string][]Info
-		done        chan bool
 	}
+
 	test := struct {
 		name string
 		args args
@@ -58,35 +57,29 @@ func TestVerificationReports(t *testing.T) {
 
 		name: successStr,
 		args: args{
-			reportChan:  reportChan,
+			reports: []VerificationReport{
+				{
+					TableKey: "",
+					Report: Info{
+						Hostip:        "",
+						Parameter:     "",
+						Status:        "",
+						StatusMessage: &StatusMessage{},
+						SummaryInfo:   &SummaryInfo{},
+					},
+				},
+			},
 			reporting:   getMockReportingModule(cw.CliWriter),
 			nodeInfoMap: nodeInfoMap,
-			done:        done,
 		},
 		want: "Automate\n+-------+-----------------+---------------------------+-----------------+--------------------------------------------------------------+\n|   NO. |      IDENTIFIER |                 PARAMETER |          STATUS |                                                      MESSAGE |\n+-------+-----------------+---------------------------+-----------------+--------------------------------------------------------------+\n+-------+-----------------+---------------------------+-----------------+--------------------------------------------------------------+\nSUMMARY : Automate\n+--------------------------------+-----------------+-----------------+-------------------------------------------------------------------+\n|                      PARAMETER |      SUCCESSFUL |          FAILED |                                                 HOW TO RESOLVE IT |\n+--------------------------------+-----------------+-----------------+-------------------------------------------------------------------+\n+--------------------------------+-----------------+-----------------+-------------------------------------------------------------------+\n",
 	}
 
-	report := VerificationReport{
-		TableKey: "",
-		Report: Info{
-			Hostip:        "",
-			Parameter:     "",
-			Status:        "",
-			StatusMessage: &StatusMessage{},
-			SummaryInfo:   &SummaryInfo{},
-		},
-		TotalReports: 0,
-	}
-
-	reportChan <- report
-	reportChan <- report
-	close(reportChan)
+	VerificationReports(test.args.reports, test.args.reporting, test.args.nodeInfoMap)
 
-	VerificationReports(test.args.reportChan, test.args.reporting, test.args.nodeInfoMap, test.args.done)
-	if <-done {
-		assert.Equal(t, test.want, cw.Output())
+	fmt.Println("output: ", cw.Output())
+	assert.Equal(t, test.want, cw.Output())
 
-	}
 }
 
 func TestCreateStatusTableRows(t *testing.T) {
@@ -237,34 +230,6 @@ func TestCreateSummaryTableRows(t *testing.T) {
 	}
 }
 
-func TestShowProgress(t *testing.T) {
-	type args struct {
-		tableProgess map[string]progress
-		lines        int
-	}
-	test := struct {
-		name string
-		args args
-		want int
-	}{
-		name: successStr,
-		args: args{
-			tableProgess: map[string]progress{
-				automate: {
-					currentCount: 2,
-					totalCount:   3,
-				},
-			},
-			lines: 1,
-		},
-		want: 1,
-	}
-
-	got := showProgress(test.args.tableProgess, test.args.lines)
-	assert.Equal(t, test.want, got)
-
-}
-
 func TestUpdateTableTitle(t *testing.T) {
 	type args struct {
 		reporting Reporting