Repository: chef/automate
Pull request #7840 (2023-04-25 11:21:36)

Chef 2127 verification service start via cli sub command
### :nut_and_bolt: Description: What code changed, and why?

<!-- /!\ Please ensure that you are NOT disclosing any customer information without their consent /!\ -->

### :chains: Related Resources

### :+1: Definition of Done

### :athletic_shoe: How to Build and Test the Change

### :white_check_mark: Checklist

**All PRs** must tick these:

- [x] I have read the [CONTRIBUTING document](https://github.com/chef/automate/blob/master/CONTRIBUTING.md).
- [x] 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


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


|  Name | Link |
|:-:|------------------------|
|<span aria-hidden="true">🔨</span> Latest commit | c05802f7fc2a7685dc90ca1f913b62fa00dfdf88 |
|<span aria-hidden="true">🔍</span> Latest deploy log | https://app.netlify.com/sites/chef-automate/deploys/6447b7c22cd2f90008adcbfd |
sonarcloud[bot]: SonarCloud Quality Gate failed.&nbsp; &nbsp; [![Quality Gate failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonarcloud.io/dashboard?id=chef_automate&pullRequest=7840)

[![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG)  
[![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY)  
[![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT)  
[![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL)

[![7.7%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/0-16px.png '7.7%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list) [7.7% Coverage](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list)  
[![0.0%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3-16px.png '0.0%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: SonarCloud Quality Gate failed.&nbsp; &nbsp; [![Quality Gate failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonarcloud.io/dashboard?id=chef_automate&pullRequest=7840)

[![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG)  
[![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY)  
[![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT)  
[![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL)

[![5.9%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/0-16px.png '5.9%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list) [5.9% Coverage](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list)  
[![0.0%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3-16px.png '0.0%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: SonarCloud Quality Gate failed.&nbsp; &nbsp; [![Quality Gate failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/failed-16px.png 'Quality Gate failed')](https://sonarcloud.io/dashboard?id=chef_automate&pullRequest=7840)

[![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG)  
[![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY)  
[![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT)  
[![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL)

[![5.9%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/0-16px.png '5.9%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list) [5.9% Coverage](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list)  
[![0.0%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3-16px.png '0.0%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=chef_automate&pullRequest=7840)

[![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG)  
[![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY)  
[![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT)  
[![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL)

[![20.0%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/0-16px.png '20.0%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list) [20.0% Coverage](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list)  
[![0.0%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3-16px.png '0.0%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=chef_automate&pullRequest=7840)

[![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=BUG)  
[![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=VULNERABILITY)  
[![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=chef_automate&pullRequest=7840&resolved=false&types=SECURITY_HOTSPOT)  
[![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=chef_automate&pullRequest=7840&resolved=false&types=CODE_SMELL)

[![36.0%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/25-16px.png '36.0%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list) [36.0% Coverage](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_coverage&view=list)  
[![0.0%](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3-16px.png '0.0%')](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=chef_automate&pullRequest=7840&metric=new_duplicated_lines_density&view=list)


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=7840)

[![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=7840) [![17.1%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '17.1%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 17.14% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![17.1%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '17.1%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 17.14% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![17.1%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '17.1%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 17.14% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![17.9%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '17.9%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 17.92% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![17.8%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '17.8%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 17.76% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![17.8%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '17.8%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 17.76% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![18.1%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '18.1%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 18.1% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![18.1%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '18.1%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 18.1% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![0.0%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '0.0%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 0.0% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![18.1%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '18.1%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 18.1% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![18.1%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/0-16px.png '18.1%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 18.1% Coverage on New Code (is less than 80%)  

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


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=7840)

[![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=7840) [![35.7%](https://raw.githubusercontent.com/SonarSource/sonarqube-static-resources/master/v97/checks/CoverageChart/25-16px.png '35.7%')](https://sonar.progress.com/dashboard?id=chef_automate_AYeOVEbqJ4YHsO5MtKWC&pullRequest=7840) 35.65% Coverage on New Code (is less than 80%)  

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



Patch:
diff --git a/.gitignore b/.gitignore
index 4669650e6..259da9bcd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -110,6 +110,7 @@ e2e/cypress/screenshots
 e2e/cypress/videos
 components/automate-grpc/protoc-gen-a2-config/protoc-gen-a2-config
 components/event-gateway/cmd/event-gateway/event-gateway
+components/automate-cli/pkg/verifyserver/tmp
 tools/bldr-config-gen/bldr-config-gen
 
 # default output file written when running `chef-automate debug profile $service_name`
diff --git a/.license_scout.yml b/.license_scout.yml
index 7c2c789b4..6e14ec776 100644
--- a/.license_scout.yml
+++ b/.license_scout.yml
@@ -332,6 +332,9 @@ fallbacks:
     - name: github.com/globalsign/mgo
       license_id: Unlicense
       license_content: https://github.com/globalsign/mgo/blob/master/LICENSE
+    - name: github.com/ansrivas/fiberprometheus
+      license_id: MIT
+      license_content: https://github.com/ansrivas/fiberprometheus/blob/master/LICENSE
 
   habitat:
     - name: chef/mlsa
diff --git a/VERSION b/VERSION
index c31253be1..4dc5aa499 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-4.5.166
\ No newline at end of file
+4.5.170
\ No newline at end of file
diff --git a/components/automate-cli/Makefile b/components/automate-cli/Makefile
index aac029745..d9c1a2946 100644
--- a/components/automate-cli/Makefile
+++ b/components/automate-cli/Makefile
@@ -64,3 +64,11 @@ linux darwin windows:
 
 unit:
 	@go test --count 1 ./...
+
+verify-serve:
+	docker run -it --rm \
+	-w "/go/src/github.com/chef/automate/components/automate-cli" \
+	-v $$(dirname $$(dirname $$(pwd))):/go/src/github.com/chef/automate \
+	-p 7799:7799 \
+	cosmtrek/air:v1.15.1 \
+	-c /go/src/github.com/chef/automate/components/automate-cli/pkg/verifyserver/rundev/.air.toml
diff --git a/components/automate-cli/cmd/chef-automate/verify.go b/components/automate-cli/cmd/chef-automate/verify.go
index 56e3c9f83..d3191e908 100644
--- a/components/automate-cli/cmd/chef-automate/verify.go
+++ b/components/automate-cli/cmd/chef-automate/verify.go
@@ -2,13 +2,18 @@ package main
 
 import (
 	"fmt"
+	"os"
+	"strconv"
 
 	"github.com/chef/automate/components/automate-cli/pkg/docs"
 	"github.com/chef/automate/components/automate-cli/pkg/status"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/server"
 	verification "github.com/chef/automate/lib/verification"
 	"github.com/spf13/cobra"
 )
 
+const VERIFY_SERVER_PORT = "VERIFY_SERVER_PORT"
+
 type verifyCmdFlags struct {
 	file                      string
 	haAWSProvision            bool
@@ -20,6 +25,7 @@ type verifyCmdFlags struct {
 	haAWSManagedDeploy        bool
 	standaloneDeploy          bool
 	certificates              bool
+	debug                     bool
 }
 
 type verifyCmdFlow struct {
@@ -28,6 +34,8 @@ type verifyCmdFlow struct {
 	ManagedServicesOn bool
 }
 
+type verifyServeCmdFlow struct{}
+
 func init() {
 	flagsObj := verifyCmdFlags{}
 
@@ -38,8 +46,20 @@ func init() {
 		Annotations: map[string]string{
 			docs.Compatibility: docs.Compatibility,
 		},
-		Args: cobra.RangeArgs(0, 1),
-		RunE: verifyCmdFunc(&flagsObj),
+		Args:   cobra.RangeArgs(0, 1),
+		RunE:   verifyCmdFunc(&flagsObj),
+		Hidden: true,
+	}
+
+	verifyServeCmd := &cobra.Command{
+		Use:   "serve",
+		Short: "Start verify server",
+		Long:  "Start verify server for running checks",
+		Annotations: map[string]string{
+			docs.Compatibility: docs.Compatibility,
+		},
+		Args: cobra.ExactArgs(0),
+		RunE: verifyServeCmdFunc(&flagsObj),
 	}
 
 	// flags for Verify Command
@@ -93,9 +113,36 @@ func init() {
 		"file",
 		"",
 		"Config file that needs to be verified")
+	verifyServeCmd.Flags().BoolVarP(
+		&flagsObj.debug,
+		"debug",
+		"d",
+		false,
+		"enable debugging")
+	verifyCmd.AddCommand(verifyServeCmd)
 	RootCmd.AddCommand(verifyCmd)
 }
 
+func verifyServeCmdFunc(flagsObj *verifyCmdFlags) func(cmd *cobra.Command, args []string) error {
+	return func(cmd *cobra.Command, args []string) error {
+		c := verifyServeCmdFlow{}
+		return c.runVerifyServeCmd(cmd, args, flagsObj.debug)
+	}
+}
+
+func (v *verifyServeCmdFlow) runVerifyServeCmd(cmd *cobra.Command, args []string, debug bool) error {
+	port := server.DEFAULT_PORT
+	env_port := os.Getenv(VERIFY_SERVER_PORT)
+	if env_port != "" {
+		if _, err := strconv.Atoi(env_port); err == nil {
+			port = env_port
+		}
+	}
+	writer.Println("Using port " + port)
+	vs := server.NewVerifyServer(port, debug)
+	return vs.Start()
+}
+
 func verifyCmdFunc(flagsObj *verifyCmdFlags) func(cmd *cobra.Command, args []string) error {
 	return func(cmd *cobra.Command, args []string) error {
 		c := verifyCmdFlow{
diff --git a/components/automate-cli/pkg/verifyserver/logger/logger.go b/components/automate-cli/pkg/verifyserver/logger/logger.go
new file mode 100644
index 000000000..9d9929496
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/logger/logger.go
@@ -0,0 +1,43 @@
+package logger
+
+import (
+	"os"
+
+	"github.com/sirupsen/logrus"
+)
+
+type ILogger interface {
+	Info(args ...interface{})
+	Error(args ...interface{})
+	GetLevel() logrus.Level
+}
+
+type LogActions struct {
+	log logrus.Logger
+}
+
+func NewLogger(debug bool) ILogger {
+	level := logrus.InfoLevel
+	if debug {
+		level = logrus.DebugLevel
+	}
+	lg := &logrus.Logger{
+		Out:       os.Stderr,
+		Formatter: &logrus.TextFormatter{TimestampFormat: "2006-01-02 15:04:05.000", FullTimestamp: true},
+		Hooks:     make(logrus.LevelHooks),
+		Level:     level,
+	}
+	return lg
+}
+
+func (la *LogActions) Info(args ...interface{}) {
+	la.log.Info()
+}
+
+func (la *LogActions) Error(args ...interface{}) {
+	la.log.Error()
+}
+
+func (la *LogActions) GetLevel() string {
+	return la.log.GetLevel().String()
+}
diff --git a/components/automate-cli/pkg/verifyserver/models/status.go b/components/automate-cli/pkg/verifyserver/models/status.go
new file mode 100644
index 000000000..e1bbebda4
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/models/status.go
@@ -0,0 +1,12 @@
+package models
+
+type ServiceDetails struct {
+	ServiceName string `json:"service_name"`
+	Status      string `json:"status"`
+	Version     string `json:"version"`
+}
+
+type StatusDetails struct {
+	Status   string           `json:"status"`
+	Services []ServiceDetails `json:"services"`
+}
diff --git a/components/automate-cli/pkg/verifyserver/response/response.go b/components/automate-cli/pkg/verifyserver/response/response.go
new file mode 100644
index 000000000..08b1274f4
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/response/response.go
@@ -0,0 +1,22 @@
+package response
+
+import "github.com/gofiber/fiber"
+
+const (
+	SUCCESS = "SUCCESS"
+	FAILED  = "FAILED"
+)
+
+type ResponseBody struct {
+	Status string       `json:"status"`
+	Result interface{}  `json:"result"`
+	Error  *fiber.Error `json:"error,omitempty"`
+}
+
+func BuildSuccessResponse(response interface{}) *ResponseBody {
+	return &ResponseBody{SUCCESS, response, nil}
+}
+
+func BuildFailedResponse(err *fiber.Error) *ResponseBody {
+	return &ResponseBody{FAILED, nil, err}
+}
diff --git a/components/automate-cli/pkg/verifyserver/rundev/.air.toml b/components/automate-cli/pkg/verifyserver/rundev/.air.toml
new file mode 100644
index 000000000..69a20b0a6
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/rundev/.air.toml
@@ -0,0 +1,37 @@
+root = "/go/src/github.com/chef/automate/components/automate-cli/pkg/verifyserver"
+testdata_dir = "testdata"
+tmp_dir = "tmp"
+
+[build]
+  args_bin = []
+  bin = "/bin/sleep 1 && /usr/local/go/bin/go run pkg/verifyserver/rundev/main.go"
+  cmd = "echo skipping build..."
+  delay = 1000
+  exclude_dir = []
+  exclude_file = []
+  exclude_regex = ["_test.go"]
+  exclude_unchanged = false
+  follow_symlink = false
+  full_bin = ""
+  include_dir = []
+  include_ext = ["go", "tpl", "tmpl", "html"]
+  kill_delay = "0s"
+  log = "build-errors.log"
+  send_interrupt = false
+  stop_on_error = true
+
+[color]
+  app = ""
+  build = "yellow"
+  main = "magenta"
+  runner = "green"
+  watcher = "cyan"
+
+[log]
+  time = false
+
+[misc]
+  clean_on_exit = false
+
+[screen]
+  clear_on_rebuild = false
\ No newline at end of file
diff --git a/components/automate-cli/pkg/verifyserver/rundev/main.go b/components/automate-cli/pkg/verifyserver/rundev/main.go
new file mode 100644
index 000000000..e1fbcf340
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/rundev/main.go
@@ -0,0 +1,8 @@
+package main
+
+import "github.com/chef/automate/components/automate-cli/pkg/verifyserver/server"
+
+func main() {
+	vs := server.NewVerifyServer(server.DEFAULT_PORT, true)
+	vs.Start()
+}
diff --git a/components/automate-cli/pkg/verifyserver/server/api/v1/fqdn.go b/components/automate-cli/pkg/verifyserver/server/api/v1/fqdn.go
new file mode 100644
index 000000000..03203ade1
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/server/api/v1/fqdn.go
@@ -0,0 +1,7 @@
+package v1
+
+import (
+	"github.com/gofiber/fiber"
+)
+
+func (h *Handler) CheckFqdn(c *fiber.Ctx) {}
diff --git a/components/automate-cli/pkg/verifyserver/server/api/v1/handler.go b/components/automate-cli/pkg/verifyserver/server/api/v1/handler.go
new file mode 100644
index 000000000..e264a1b5f
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/server/api/v1/handler.go
@@ -0,0 +1,20 @@
+package v1
+
+import (
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/logger"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/services/statusservice"
+)
+
+type Handler struct {
+	Logger        logger.ILogger
+	StatusService statusservice.IStatusService
+}
+
+func NewHandler(logger logger.ILogger) *Handler {
+	return &Handler{Logger: logger}
+}
+
+func (h *Handler) AddStatusService(ss statusservice.IStatusService) *Handler {
+	h.StatusService = ss
+	return h
+}
diff --git a/components/automate-cli/pkg/verifyserver/server/api/v1/status.go b/components/automate-cli/pkg/verifyserver/server/api/v1/status.go
new file mode 100644
index 000000000..c1fd389e6
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/server/api/v1/status.go
@@ -0,0 +1,15 @@
+package v1
+
+import (
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/models"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/response"
+	"github.com/gofiber/fiber"
+)
+
+func (h *Handler) GetStatus(c *fiber.Ctx) {
+	services := h.StatusService.GetServices()
+	c.JSON(response.BuildSuccessResponse(&models.StatusDetails{
+		Status:   "ok",
+		Services: services,
+	}))
+}
diff --git a/components/automate-cli/pkg/verifyserver/server/routes.go b/components/automate-cli/pkg/verifyserver/server/routes.go
new file mode 100644
index 000000000..fe1449b20
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/server/routes.go
@@ -0,0 +1,17 @@
+package server
+
+import (
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/utils/fiberutils"
+)
+
+func (vs *VerifyServer) SetupRoutes() {
+	// Status
+	vs.App.Get("/status", vs.Handler.GetStatus)
+
+	apiGroup := vs.App.Group("/api")
+	apiV1Group := apiGroup.Group("/v1")
+	apiChecksGroup := apiV1Group.Group("/checks")
+	apiChecksGroup.Get("/fqdn", vs.Handler.CheckFqdn)
+
+	fiberutils.LogResgisteredRoutes(vs.App.Stack(), vs.Log)
+}
diff --git a/components/automate-cli/pkg/verifyserver/server/server.go b/components/automate-cli/pkg/verifyserver/server/server.go
new file mode 100644
index 000000000..8b8718ade
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/server/server.go
@@ -0,0 +1,69 @@
+package server
+
+import (
+	"strings"
+
+	"github.com/ansrivas/fiberprometheus"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/logger"
+	v1 "github.com/chef/automate/components/automate-cli/pkg/verifyserver/server/api/v1"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/services/statusservice"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/utils/fiberutils"
+	"github.com/gofiber/cors"
+	"github.com/gofiber/fiber"
+	"github.com/gofiber/fiber/middleware"
+)
+
+const (
+	SERVICE      = "verify-server"
+	DEFAULT_PORT = "7799"
+)
+
+type VerifyServer struct {
+	Port    string
+	Log     logger.ILogger
+	App     *fiber.App
+	Handler *v1.Handler
+}
+
+func NewVerifyServer(port string, debug bool) *VerifyServer {
+	log := logger.NewLogger(debug)
+	fconf := &fiber.Settings{
+		ServerHeader: SERVICE,
+		ErrorHandler: fiberutils.CustomErrorHandler,
+	}
+	app := fiber.New(fconf)
+	handler := v1.NewHandler(log).
+		AddStatusService(statusservice.NewStatusService())
+	vs := &VerifyServer{
+		Port:    port,
+		Log:     log,
+		App:     app,
+		Handler: handler,
+	}
+	vs.Setup()
+	return vs
+}
+
+func (vs *VerifyServer) Start() error {
+	err := vs.App.Listen(":" + vs.Port)
+	if err != nil {
+		if strings.Contains(err.Error(), "address already in use") {
+			vs.Log.Error("Service could not start on port " + DEFAULT_PORT + " as it is already in use.")
+		}
+		return err
+	}
+	return nil
+}
+
+func (vs *VerifyServer) Setup() {
+	vs.App.Use(cors.New())
+
+	// Define middleware to log all requests
+	vs.App.Use(middleware.Logger(fiberutils.GetLogConfig(vs.Log)))
+
+	prometheus := fiberprometheus.New(SERVICE)
+	prometheus.RegisterAt(vs.App, "/metrics")
+	vs.App.Use(prometheus.Middleware)
+
+	vs.SetupRoutes()
+}
diff --git a/components/automate-cli/pkg/verifyserver/services/statusservice/mockstatusservice.go b/components/automate-cli/pkg/verifyserver/services/statusservice/mockstatusservice.go
new file mode 100644
index 000000000..958f025ee
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/services/statusservice/mockstatusservice.go
@@ -0,0 +1,11 @@
+package statusservice
+
+import "github.com/chef/automate/components/automate-cli/pkg/verifyserver/models"
+
+type MockStatusService struct {
+	GetServicesFunc func() []models.ServiceDetails
+}
+
+func (mss *MockStatusService) GetServices() []models.ServiceDetails {
+	return mss.GetServicesFunc()
+}
diff --git a/components/automate-cli/pkg/verifyserver/services/statusservice/statusservice.go b/components/automate-cli/pkg/verifyserver/services/statusservice/statusservice.go
new file mode 100644
index 000000000..19c591af3
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/services/statusservice/statusservice.go
@@ -0,0 +1,19 @@
+package statusservice
+
+import (
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/models"
+)
+
+type IStatusService interface {
+	GetServices() []models.ServiceDetails
+}
+
+type StatusService struct{}
+
+func NewStatusService() IStatusService {
+	return &StatusService{}
+}
+
+func (ss *StatusService) GetServices() []models.ServiceDetails {
+	return []models.ServiceDetails{}
+}
diff --git a/components/automate-cli/pkg/verifyserver/utils/fiberutils/fiber.go b/components/automate-cli/pkg/verifyserver/utils/fiberutils/fiber.go
new file mode 100644
index 000000000..43e546a5e
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/utils/fiberutils/fiber.go
@@ -0,0 +1,37 @@
+package fiberutils
+
+import (
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/logger"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/response"
+	"github.com/gofiber/fiber"
+	"github.com/gofiber/utils"
+)
+
+func LogResgisteredRoutes(stack [][]*fiber.Route, logger logger.ILogger) {
+	// Log all registered routes
+	logger.Info("List of Routes registered:")
+	registerdRoutes := map[string]*fiber.Route{}
+	for _, rl := range stack {
+		for _, r := range rl {
+			key := r.Method + " " + r.Path
+			if _, ok := registerdRoutes[key]; !ok {
+				registerdRoutes[key] = r
+			}
+		}
+	}
+	for r := range registerdRoutes {
+		logger.Info(r)
+	}
+}
+
+func CustomErrorHandler(ctx *fiber.Ctx, err error) {
+	// Status code defaults to 500
+	code := fiber.StatusInternalServerError
+	msg := utils.StatusMessage(fiber.StatusInternalServerError)
+	// Retrieve the custom status code if it's an fiber.*Error
+	if e, ok := err.(*fiber.Error); ok {
+		code = e.Code
+		msg = e.Message
+	}
+	ctx.Status(code).JSON(response.BuildFailedResponse(fiber.NewError(code, msg)))
+}
diff --git a/components/automate-cli/pkg/verifyserver/utils/fiberutils/logconfig.go b/components/automate-cli/pkg/verifyserver/utils/fiberutils/logconfig.go
new file mode 100644
index 000000000..852264b7c
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/utils/fiberutils/logconfig.go
@@ -0,0 +1,42 @@
+package fiberutils
+
+import (
+	"strings"
+	"time"
+
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/logger"
+	"github.com/gofiber/fiber/middleware"
+	"github.com/sirupsen/logrus"
+)
+
+func GetLogConfig(log logger.ILogger) (lc middleware.LoggerConfig) {
+	lc = middleware.LoggerConfig{
+		TimeFormat: time.RFC3339,
+		TimeZone:   "Asia/Kolkata",
+	}
+	if log.GetLevel() <= logrus.DebugLevel {
+		lc.Format = generateLogFormat(
+			"${magenta}"+strings.ToUpper(log.GetLevel().String())+"${reset}",
+			"time", "pid", "status", "method", "path", "latency", "error", "bytesReceived", "bytesSent", "body",
+		)
+	} else {
+		lc.Format = generateLogFormat(
+			"${green}"+strings.ToUpper(log.GetLevel().String())+"${reset}",
+			"time", "pid", "status", "method", "path", "latency", "error", "bytesReceived", "bytesSent",
+		)
+	}
+	return lc
+}
+
+func generateLogFormat(prefix string, fields ...string) string {
+	color := []string{
+		"red", "green", "yellow", "blue", "magenta", "cyan", "white",
+	}
+	logFormat := "| " + prefix + " | "
+	for i, v := range fields {
+		c := color[i%7]
+		logFormat += "${" + c + "}${" + v + "}${reset}  |  "
+	}
+	logFormat += "\n"
+	return logFormat
+}
diff --git a/components/infra-proxy-service/server/orgs.go b/components/infra-proxy-service/server/orgs.go
index 8606d70f2..1b727642d 100644
--- a/components/infra-proxy-service/server/orgs.go
+++ b/components/infra-proxy-service/server/orgs.go
@@ -46,6 +46,7 @@ func (s *Server) CreateOrg(ctx context.Context, req *request.CreateOrg) (*respon
 		return nil, service.ParseStorageError(err, *req, "org")
 	}
 
+
 	return &response.CreateOrg{
 		Org: fromStorageOrg(org),
 	}, nil
diff --git a/go.mod b/go.mod
index 706b701d0..079c846af 100644
--- a/go.mod
+++ b/go.mod
@@ -16,6 +16,7 @@ require (
 	github.com/Masterminds/squirrel v1.1.0
 	github.com/Microsoft/go-winio v0.4.14 // indirect
 	github.com/alexedwards/scs v1.4.1
+	github.com/ansrivas/fiberprometheus v0.3.2
 	github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7 // indirect
 	github.com/apoydence/onpar v0.0.0-20190519213022-ee068f8ea4d1 // indirect
 	github.com/armon/go-metrics v0.3.2 // indirect
@@ -47,6 +48,9 @@ require (
 	github.com/go-delve/delve v1.3.1
 	github.com/go-gorp/gorp v2.0.1-0.20180410155428-6032c66e0f5f+incompatible
 	github.com/gocarina/gocsv v0.0.0-20170928100509-7099e67763c2
+	github.com/gofiber/cors v0.2.2
+	github.com/gofiber/fiber v1.14.6
+	github.com/gofiber/utils v0.0.10
 	github.com/gofrs/uuid v3.3.0+incompatible
 	github.com/golang-migrate/migrate v3.5.4+incompatible
 	github.com/golang/mock v1.4.4
@@ -74,7 +78,6 @@ require (
 	github.com/leanovate/gopter v0.2.4
 	github.com/lib/pq v1.8.0
 	github.com/lyft/protoc-gen-star v0.4.16-0.20200805193024-077ca8f98fb2
-	github.com/mattn/go-isatty v0.0.12 // indirect
 	github.com/mattn/go-sqlite3 v1.11.0 // indirect
 	github.com/minio/minio-go/v7 v7.0.14
 	github.com/mitchellh/go-homedir v1.1.0
@@ -97,8 +100,7 @@ require (
 	github.com/pmezard/go-difflib v1.0.0
 	github.com/poy/onpar v0.0.0-20190519213022-ee068f8ea4d1 // indirect
 	github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 // indirect
-	github.com/prometheus/client_golang v1.5.1
-	github.com/prometheus/procfs v0.0.11 // indirect
+	github.com/prometheus/client_golang v1.7.1
 	github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect
 	github.com/russellhaering/goxmldsig v1.1.0 // indirect
 	github.com/schollz/closestmatch v2.1.1-0.20170908204616-19d3b334fdfc+incompatible
diff --git a/go.sum b/go.sum
index a71edd28b..5a8b7af3f 100644
--- a/go.sum
+++ b/go.sum
@@ -108,6 +108,10 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF
 github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 github.com/alexedwards/scs v1.4.1 h1:/5L5a07IlqApODcEfZyMsu8Smd1S7Q4nBjEyKxIRTp0=
 github.com/alexedwards/scs v1.4.1/go.mod h1:JRIFiXthhMSivuGbxpzUa0/hT5rz2hpyw61Bmd+S1bg=
+github.com/andybalholm/brotli v1.0.0 h1:7UCwP93aiSfvWpapti8g88vVVGp2qqtGyePsSuDafo4=
+github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
+github.com/ansrivas/fiberprometheus v0.3.2 h1:2pqHjRQqQhveNo+1DmxjZdyG/jcqN1NEP57WyConr58=
+github.com/ansrivas/fiberprometheus v0.3.2/go.mod h1:NB+BT3NTXlz0oHVJby5FJWvQPSS93QAIUbggW5YsxsI=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7 h1:Fv9bK1Q+ly/ROk4aJsVMeuIwPel4bEnD8EPiI91nZMg=
 github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
@@ -274,6 +278,15 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
 github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
 github.com/gocarina/gocsv v0.0.0-20170928100509-7099e67763c2 h1:IE/s9J8WNZM4UJbKNDCkDANte0sBL7371kl0nPvp2po=
 github.com/gocarina/gocsv v0.0.0-20170928100509-7099e67763c2/go.mod h1:/oj50ZdPq/cUjA02lMZhijk5kR31SEydKyqah1OgBuo=
+github.com/gofiber/cors v0.2.2 h1:NQgLeNq8SWCKsdGotodyFCqLdSnxGLISsp9OU01k/cs=
+github.com/gofiber/cors v0.2.2/go.mod h1:lAXoymRHZKASLfydSAtsRGVrukWi3KefFnfxmCEAH5o=
+github.com/gofiber/fiber v1.13.3/go.mod h1:KxRvVkqzfZOO6A7mBu+j7ncX2AcT6Sm6F7oeGR3Kgmw=
+github.com/gofiber/fiber v1.14.4/go.mod h1:Yw2ekF1YDPreO9V6TMYjynu94xRxZBdaa8X5HhHsjCM=
+github.com/gofiber/fiber v1.14.6 h1:QRUPvPmr8ijQuGo1MgupHBn8E+wW0IKqiOvIZPtV70o=
+github.com/gofiber/fiber v1.14.6/go.mod h1:Yw2ekF1YDPreO9V6TMYjynu94xRxZBdaa8X5HhHsjCM=
+github.com/gofiber/utils v0.0.9/go.mod h1:9J5aHFUIjq0XfknT4+hdSMG6/jzfaAgCu4HEbWDeBlo=
+github.com/gofiber/utils v0.0.10 h1:3Mr7X7JdCUo7CWf/i5sajSaDmArEDtti8bM1JUVso2U=
+github.com/gofiber/utils v0.0.10/go.mod h1:9J5aHFUIjq0XfknT4+hdSMG6/jzfaAgCu4HEbWDeBlo=
 github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84=
 github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@@ -377,6 +390,8 @@ github.com/gorilla/handlers v1.3.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/
 github.com/gorilla/mux v0.0.0-20181024020800-521ea7b17d02/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
 github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc=
 github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY=
+github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c=
 github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
@@ -490,6 +505,7 @@ github.com/keybase/go-ps v0.0.0-20190827175125-91aafc93ba19/go.mod h1:hY+WOq6m2F
 github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
 github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
 github.com/klauspost/compress v1.10.10 h1:a/y8CglcM7gLGYmlbP/stPE5sR3hbhFRUjCBfd/0B3I=
 github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
 github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
@@ -534,6 +550,8 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO
 github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-colorable v0.1.7 h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw=
+github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149 h1:HfxbT6/JcvIljmERptWhwa8XzP7H3T+Z2N26gTsaDaA=
 github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
 github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
@@ -660,8 +678,8 @@ github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4
 github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
 github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.5.1 h1:bdHYieyGlH+6OLEk2YQha8THib30KP0/yD0YH9m6xcA=
-github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
+github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA=
+github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -674,13 +692,15 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U=
 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
+github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc=
+github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.0.11 h1:DhHlBtkHWPYi8O2y31JkK0TF+DGM+51OopZjH/Ia5qI=
-github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
+github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
+github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
 github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 github.com/r3labs/diff v0.0.0-20191120142937-b4ed99a31f5a h1:2v4Ipjxa3sh+xn6GvtgrMub2ci4ZLQMvTaYIba2lfdc=
 github.com/r3labs/diff v0.0.0-20191120142937-b4ed99a31f5a/go.mod h1:ozniNEFS3j1qCwHKdvraMn1WJOsUxHd7lYfukEIS4cs=
@@ -776,6 +796,13 @@ github.com/uber/jaeger-client-go v2.11.2+incompatible h1:D2idO5gYBl+40qnsowJaqtw
 github.com/uber/jaeger-client-go v2.11.2+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
 github.com/uber/jaeger-lib v1.3.1 h1:QaTh7g9oG56uB4I2MiwJbh/svRjHhZogAiQozBzxL3g=
 github.com/uber/jaeger-lib v1.3.1/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasthttp v1.15.1/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA=
+github.com/valyala/fasthttp v1.16.0 h1:9zAqOYLl8Tuy3E5R6ckzGDJ1g8+pw15oQp2iL9Jl6gQ=
+github.com/valyala/fasthttp v1.16.0/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA=
+github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a h1:0R4NLDRDZX6JcmhJgXi5E4b8Wg84ihbmUKp/GvSPEzc=
+github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
 github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
@@ -903,6 +930,7 @@ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/
 golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
@@ -971,6 +999,8 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
diff --git a/lib/mockserver/mockserver.go b/lib/mockserver/mockserver.go
new file mode 100644
index 000000000..a280a50a3
--- /dev/null
+++ b/lib/mockserver/mockserver.go
@@ -0,0 +1,53 @@
+package mockserver
+
+import (
+	"fmt"
+	"net/http"
+	"net/http/httptest"
+	"testing"
+	"time"
+)
+
+type APIBuilder struct {
+	mux *http.ServeMux
+	t   *testing.T
+
+	server *httptest.Server
+}
+
+// NewAPI creates new APIBuilder
+func NewAPI(t *testing.T) *APIBuilder {
+	result := &APIBuilder{
+		mux: http.NewServeMux(),
+		t:   t,
+	}
+	// fallback to show not implemented routes
+	result.mux.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		w.WriteHeader(404)
+		fmt.Fprintf(w, `{ "error": "Not supported route %q"}`, r.URL.Path)
+		result.t.Errorf("Not Supported route %q", r.URL.Path)
+	}))
+	return result
+}
+
+func (b *APIBuilder) WithHandler(pattern string, handler http.HandlerFunc) *APIBuilder {
+	b.mux.HandleFunc(pattern, handler)
+	return b
+}
+
+// Build returns new http.Server hosting API mocks
+func (b *APIBuilder) Build() *httptest.Server {
+	b.server = httptest.NewServer(b.mux)
+	return b.server
+}
+
+func (b *APIBuilder) HttpReqMock(endpoint string, code int, response []byte, wait time.Duration) *APIBuilder {
+	b.mux.Handle(endpoint,
+		http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+			time.Sleep(wait)
+			w.WriteHeader(code)
+			w.Header().Set("Content-Type", "application/json")
+			w.Write(response)
+		}))
+	return b
+}
diff --git a/sonar-project.properties b/sonar-project.properties
index ab4799208..16f2d5c6e 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -14,5 +14,5 @@ sonar.go.coverage.reportPaths=Coverage_report/cover.out
 sonar.javascript.lcov.reportPaths=components/automate-ui/lcov.info
 # Encoding of the source code. Default is default system encoding
 
-sonar.exclusions=**/*.pb.*.go, **/*.pb.go, *test.go, **/test*/**, .gitignore, .git/**, .semgrep/**, **/*.bindata.go, **/*.spec.ts, dev-docs/**, .buildkite/*, .expeditor/**, .studio/*,e2e/*,benchmarks/*, bin/*, cache/*, dev/*, ec2/*, protovendor/*, results/*, scripts/*, terraform/*, tools/*, **/*.sql, **/*.docs-chef-io, **/*.md
+sonar.exclusions=**/*.pb.*.go, **/*.pb.go, **/*test.go, **/test*/**, .gitignore, .git/**, .semgrep/**, **/*.bindata.go, **/*.spec.ts, dev-docs/**, .buildkite/*, .expeditor/**, .studio/*,e2e/*,benchmarks/*, bin/*, cache/*, dev/*, ec2/*, protovendor/*, results/*, scripts/*, terraform/*, tools/*, **/*.sql, **/*.docs-chef-io, **/*.md
 #sonar.sourceEncoding=UTF-8


Test patch:
diff --git a/components/automate-cli/pkg/verifyserver/server/api/v1/status_test.go b/components/automate-cli/pkg/verifyserver/server/api/v1/status_test.go
new file mode 100644
index 000000000..6d42bd061
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/server/api/v1/status_test.go
@@ -0,0 +1,80 @@
+package v1_test
+
+import (
+	"io/ioutil"
+	"net/http/httptest"
+	"testing"
+
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/logger"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/models"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/server"
+	v1 "github.com/chef/automate/components/automate-cli/pkg/verifyserver/server/api/v1"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/services/statusservice"
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/utils/fiberutils"
+	"github.com/gofiber/fiber"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func SetupMockStatusService() statusservice.IStatusService {
+	return &statusservice.MockStatusService{
+		GetServicesFunc: func() []models.ServiceDetails {
+			return []models.ServiceDetails{
+				{
+					ServiceName: "automate",
+					Version:     "4.5.20",
+					Status:      "up",
+				},
+			}
+		},
+	}
+}
+
+func SetupDefaultHandlers(ss statusservice.IStatusService) *fiber.App {
+	log := logger.NewLogger(true)
+	fconf := &fiber.Settings{
+		ServerHeader: server.SERVICE,
+		ErrorHandler: fiberutils.CustomErrorHandler,
+	}
+	app := fiber.New(fconf)
+	handler := v1.NewHandler(log).
+		AddStatusService(ss)
+	vs := &server.VerifyServer{
+		Port:    server.DEFAULT_PORT,
+		Log:     log,
+		App:     app,
+		Handler: handler,
+	}
+	vs.Setup()
+	return vs.App
+}
+
+func TestStatusAPI(t *testing.T) {
+	tests := []struct {
+		description  string
+		expectedCode int
+		expectedBody string
+	}{
+		{
+			description:  "200:success status route",
+			expectedCode: 200,
+			expectedBody: "{\"status\":\"SUCCESS\",\"result\":{\"status\":\"ok\",\"services\":[{\"service_name\":\"automate\",\"status\":\"healthy\",\"version\":\"4.5.20\"}]}}",
+		},
+	}
+	statusEndpoint := "/status"
+	// Setup the app as it is done in the main function
+	app := SetupDefaultHandlers(SetupMockStatusService())
+
+	for _, test := range tests {
+		t.Run(test.description, func(t *testing.T) {
+			req := httptest.NewRequest("GET", statusEndpoint, nil)
+			req.Header.Add("Content-Type", "application/json")
+			res, err := app.Test(req, -1)
+			assert.NoError(t, err)
+			body, err := ioutil.ReadAll(res.Body)
+			assert.NoError(t, err, test.description)
+			assert.Contains(t, string(body), test.expectedBody)
+			assert.Equal(t, res.StatusCode, test.expectedCode)
+		})
+	}
+}
diff --git a/components/automate-cli/pkg/verifyserver/services/statusservice/statusservice_test.go b/components/automate-cli/pkg/verifyserver/services/statusservice/statusservice_test.go
new file mode 100644
index 000000000..505726074
--- /dev/null
+++ b/components/automate-cli/pkg/verifyserver/services/statusservice/statusservice_test.go
@@ -0,0 +1,14 @@
+package statusservice
+
+import (
+	"testing"
+
+	"github.com/chef/automate/components/automate-cli/pkg/verifyserver/models"
+	"github.com/stretchr/testify/assert"
+)
+
+func TestStatusService(t *testing.T) {
+	ss := NewStatusService()
+	services := ss.GetServices()
+	assert.Equal(t, []models.ServiceDetails{}, services)
+}
diff --git a/lib/mockserver/mockserver_test.go b/lib/mockserver/mockserver_test.go
new file mode 100644
index 000000000..3bb448f5a
--- /dev/null
+++ b/lib/mockserver/mockserver_test.go
@@ -0,0 +1,56 @@
+package mockserver_test
+
+import (
+	"io/ioutil"
+	"net/http"
+	"testing"
+	"time"
+
+	"github.com/chef/automate/lib/mockserver"
+	"github.com/stretchr/testify/assert"
+)
+
+func TestMockServer(t *testing.T) {
+
+	tests := []struct {
+		description  string
+		resBody      string
+		expectedCode int
+		expectedBody string
+		wait         time.Duration
+	}{
+		{
+			description:  "200:success route",
+			expectedCode: 200,
+			resBody:      "{\"data\": \"test\"}",
+			expectedBody: "{\"data\": \"test\"}",
+		},
+	}
+	keyEndpoint := "/api/v1/test"
+
+	for _, test := range tests {
+		t.Run(test.description, func(t *testing.T) {
+
+			ts := mockserver.NewAPI(t).HttpReqMock(keyEndpoint, test.expectedCode, []byte(test.resBody), test.wait).Build()
+
+			//ts.URL gives the mock server endpoint
+			resp, err := http.Get(ts.URL + keyEndpoint)
+			if err != nil {
+				t.Fatalf("Failed to make GET request: %v", err)
+			}
+			defer resp.Body.Close()
+
+			assert.NoError(t, err)
+
+			// Read the response body
+			body, err := ioutil.ReadAll(resp.Body)
+
+			// Reading the response body should work everytime, such that
+			// the err variable should be nil
+			assert.NoError(t, err, test.description)
+
+			// Verify, that the reponse body equals the expected body
+			assert.Equalf(t, test.expectedBody, string(body), test.description)
+		})
+	}
+}