From bde7dc1f6e7f20e515ac88c0557b5b4376514546 Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 09:00:32 +1100
Subject: [PATCH 1/9] fix: rebrand fullstack-network-manager as solo

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 .gitignore                                    |   2 +-
 .../test/e2e/setup-e2e.sh                     |   9 ----
 .../.eslintrc.yml                             |   0
 .../.npmignore                                |   0
 .../.remarkrc.yml                             |   0
 {fullstack-network-manager => solo}/README.md |  47 +++++++++---------
 .../jest.config.mjs                           |   0
 .../package-lock.json                         |   6 +--
 .../package.json                              |  19 +++----
 .../resources/extract-jar.sh                  |   0
 .../resources/templates/config.template       |   0
 .../resources/templates/hedera.crt            |   0
 .../resources/templates/hedera.key            |   0
 .../resources/templates/log4j2.xml            |   0
 .../templates/node-keys/private-node0.pfx     | Bin
 .../templates/node-keys/private-node1.pfx     | Bin
 .../templates/node-keys/private-node2.pfx     | Bin
 .../templates/node-keys/private-node3.pfx     | Bin
 .../resources/templates/node-keys/public.pfx  | Bin
 .../properties/api-permission.properties      |   0
 .../properties/application.properties         |   0
 .../templates/properties/bootstrap.properties |   0
 .../resources/templates/settings.txt          |   0
 .../fsnetman.mjs => solo/solo.mjs             |   0
 .../src/commands/base.mjs                     |   0
 .../src/commands/cluster.mjs                  |   0
 .../src/commands/flags.mjs                    |   0
 .../src/commands/index.mjs                    |   0
 .../src/commands/init.mjs                     |   0
 .../src/commands/network.mjs                  |   0
 .../src/commands/node.mjs                     |   0
 .../src/commands/prompts.mjs                  |   0
 .../src/commands/relay.mjs                    |   0
 .../src/core/chart_manager.mjs                |   0
 .../src/core/config_manager.mjs               |   0
 .../src/core/constants.mjs                    |   6 +--
 .../src/core/dependency_manager.mjs           |   0
 .../src/core/errors.mjs                       |   0
 .../src/core/helm.mjs                         |   0
 .../src/core/helpers.mjs                      |   0
 .../src/core/index.mjs                        |   0
 .../src/core/k8.mjs                           |   2 +-
 .../src/core/logging.mjs                      |   2 +-
 .../src/core/package_downloader.mjs           |   0
 .../src/core/platform_installer.mjs           |   0
 .../src/core/shell_runner.mjs                 |   0
 .../src/core/templates.mjs                    |   0
 .../src/core/zippy.mjs                        |   0
 .../src/index.mjs                             |   5 +-
 .../test/data/.empty                          |   0
 .../test/data/fsnetman-test-1.config          |   0
 .../test/data/fsnetman-test-2.config          |   0
 .../test/e2e/commands/node.test.mjs           |   0
 .../test/e2e/core/k8_e2e.test.mjs             |   0
 .../e2e/core/package_downloader_e2e.test.mjs  |   0
 .../e2e/core/platform_installer_e2e.test.mjs  |   0
 solo/test/e2e/setup-e2e.sh                    |   9 ++++
 .../test/test_util.js                         |   0
 .../test/unit/commands/base.test.mjs          |   0
 .../test/unit/commands/init.test.mjs          |   0
 .../test/unit/core/config_manager.test.mjs    |   6 +--
 .../unit/core/dependency_manager.test.mjs     |   0
 .../test/unit/core/errors.test.mjs            |   0
 .../test/unit/core/helm.test.mjs              |   0
 .../test/unit/core/logging.test.mjs           |   0
 .../unit/core/package_downloader.test.mjs     |   0
 .../unit/core/platform_installer.test.mjs     |   0
 .../test/unit/core/shell_runner.test.mjs      |   0
 .../test/unit/core/zippy.test.mjs             |   0
 solo/unused/private-alice.pfx                 | Bin 0 -> 7732 bytes
 solo/unused/private-bob.pfx                   | Bin 0 -> 4936 bytes
 solo/unused/private-node0.pfx                 | Bin 0 -> 7732 bytes
 solo/unused/public.pfx                        | Bin 0 -> 2966 bytes
 73 files changed, 56 insertions(+), 57 deletions(-)
 delete mode 100755 fullstack-network-manager/test/e2e/setup-e2e.sh
 rename {fullstack-network-manager => solo}/.eslintrc.yml (100%)
 rename {fullstack-network-manager => solo}/.npmignore (100%)
 rename {fullstack-network-manager => solo}/.remarkrc.yml (100%)
 rename {fullstack-network-manager => solo}/README.md (61%)
 rename {fullstack-network-manager => solo}/jest.config.mjs (100%)
 rename {fullstack-network-manager => solo}/package-lock.json (99%)
 rename {fullstack-network-manager => solo}/package.json (77%)
 rename {fullstack-network-manager => solo}/resources/extract-jar.sh (100%)
 rename {fullstack-network-manager => solo}/resources/templates/config.template (100%)
 rename {fullstack-network-manager => solo}/resources/templates/hedera.crt (100%)
 rename {fullstack-network-manager => solo}/resources/templates/hedera.key (100%)
 rename {fullstack-network-manager => solo}/resources/templates/log4j2.xml (100%)
 rename {fullstack-network-manager => solo}/resources/templates/node-keys/private-node0.pfx (100%)
 rename {fullstack-network-manager => solo}/resources/templates/node-keys/private-node1.pfx (100%)
 rename {fullstack-network-manager => solo}/resources/templates/node-keys/private-node2.pfx (100%)
 rename {fullstack-network-manager => solo}/resources/templates/node-keys/private-node3.pfx (100%)
 rename {fullstack-network-manager => solo}/resources/templates/node-keys/public.pfx (100%)
 rename {fullstack-network-manager => solo}/resources/templates/properties/api-permission.properties (100%)
 rename {fullstack-network-manager => solo}/resources/templates/properties/application.properties (100%)
 rename {fullstack-network-manager => solo}/resources/templates/properties/bootstrap.properties (100%)
 rename {fullstack-network-manager => solo}/resources/templates/settings.txt (100%)
 rename fullstack-network-manager/fsnetman.mjs => solo/solo.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/base.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/cluster.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/flags.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/index.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/init.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/network.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/node.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/prompts.mjs (100%)
 rename {fullstack-network-manager => solo}/src/commands/relay.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/chart_manager.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/config_manager.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/constants.mjs (94%)
 rename {fullstack-network-manager => solo}/src/core/dependency_manager.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/errors.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/helm.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/helpers.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/index.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/k8.mjs (99%)
 rename {fullstack-network-manager => solo}/src/core/logging.mjs (99%)
 rename {fullstack-network-manager => solo}/src/core/package_downloader.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/platform_installer.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/shell_runner.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/templates.mjs (100%)
 rename {fullstack-network-manager => solo}/src/core/zippy.mjs (100%)
 rename {fullstack-network-manager => solo}/src/index.mjs (87%)
 rename {fullstack-network-manager => solo}/test/data/.empty (100%)
 rename {fullstack-network-manager => solo}/test/data/fsnetman-test-1.config (100%)
 rename {fullstack-network-manager => solo}/test/data/fsnetman-test-2.config (100%)
 rename {fullstack-network-manager => solo}/test/e2e/commands/node.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/e2e/core/k8_e2e.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/e2e/core/package_downloader_e2e.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/e2e/core/platform_installer_e2e.test.mjs (100%)
 create mode 100755 solo/test/e2e/setup-e2e.sh
 rename {fullstack-network-manager => solo}/test/test_util.js (100%)
 rename {fullstack-network-manager => solo}/test/unit/commands/base.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/commands/init.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/config_manager.test.mjs (95%)
 rename {fullstack-network-manager => solo}/test/unit/core/dependency_manager.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/errors.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/helm.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/logging.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/package_downloader.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/platform_installer.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/shell_runner.test.mjs (100%)
 rename {fullstack-network-manager => solo}/test/unit/core/zippy.test.mjs (100%)
 create mode 100644 solo/unused/private-alice.pfx
 create mode 100644 solo/unused/private-bob.pfx
 create mode 100644 solo/unused/private-node0.pfx
 create mode 100644 solo/unused/public.pfx

diff --git a/.gitignore b/.gitignore
index 4a91b2ba8..39e228e07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -514,5 +514,5 @@ dev/local-node/config.txt
 dev/temp/.env
 charts/deleteme.yaml
 node_modules
-fullstack-network-manager/coverage
+solo/coverage
 dev/resources/nmt/version.properties
diff --git a/fullstack-network-manager/test/e2e/setup-e2e.sh b/fullstack-network-manager/test/e2e/setup-e2e.sh
deleted file mode 100755
index ebb955bcc..000000000
--- a/fullstack-network-manager/test/e2e/setup-e2e.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-FST_CLUSTER_NAME=fst-local
-FST_NAMESPACE=fst-local
-kind delete cluster -n "${FST_CLUSTER_NAME}" || true
-kind create cluster -n "${FST_CLUSTER_NAME}" || exit 1
-kubectl create ns "${FST_NAMESPACE}" || exit 1
-fsnetman init -d ../charts --namespace "${FST_NAMESPACE}" || exit 1 # cache args for subsequent commands
-fsnetman cluster setup --cert-manager --cert-manager-crds --minio || exit 1
-fsnetman network deploy --no-enable-prometheus-svc-monitor --enable-hedera-explorer-tls || exit 1
diff --git a/fullstack-network-manager/.eslintrc.yml b/solo/.eslintrc.yml
similarity index 100%
rename from fullstack-network-manager/.eslintrc.yml
rename to solo/.eslintrc.yml
diff --git a/fullstack-network-manager/.npmignore b/solo/.npmignore
similarity index 100%
rename from fullstack-network-manager/.npmignore
rename to solo/.npmignore
diff --git a/fullstack-network-manager/.remarkrc.yml b/solo/.remarkrc.yml
similarity index 100%
rename from fullstack-network-manager/.remarkrc.yml
rename to solo/.remarkrc.yml
diff --git a/fullstack-network-manager/README.md b/solo/README.md
similarity index 61%
rename from fullstack-network-manager/README.md
rename to solo/README.md
index 2cf899015..5d136715d 100644
--- a/fullstack-network-manager/README.md
+++ b/solo/README.md
@@ -1,6 +1,6 @@
 # Full Stack Network Manager CLI
 
-Full Stack Network Manager (fsnetman) is a CLI tool to manage and deploy a Hedera Network using the FS Helm Charts.
+Full Stack Network Manager (solo) is a CLI tool to manage and deploy a Hedera Network using the FS Helm Charts.
 
 ## Install
 
@@ -15,7 +15,7 @@ Full Stack Network Manager (fsnetman) is a CLI tool to manage and deploy a Heder
   your [Github access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic)
   and setup an environment variable GITHUB\_TOKEN.
 
-* Run `npm install -g @hashgraph/fullstack-network-manager`
+* Run `npm install -g @hashgraph/solo`
 
 * Ensure you have a valid kubernetes context, cluster and namespace. You may use `kind` and `kubectl` CLIs to create
   cluster and namespace as below (See [`test/e2e/setup-e2e.sh`](test/e2e/setup_e2e.sh)):
@@ -25,30 +25,29 @@ export FST_CLUSTER_NAME=fst-local
 export FST_NAMESPACE=fst-local
 kind create cluster -n "${FST_CLUSTER_NAME}" 
 kubectl create ns "${FST_NAMESPACE}"
-fsnetman init -d ../charts --namespace "${FST_NAMESPACE}" # cache args for subsequent commands
+solo init -d ../charts --namespace "${FST_NAMESPACE}" # cache args for subsequent commands
 ```
 
-* Run `fsnetman` from a terminal, It may show usage options as shown below:
+* Run `solo` from a terminal, It may show usage options as shown below:
 
 ```
-❯ fsnetman
-
--------------------------------------------------------------------------------
-*** Fullstack Network Manager (FsNetMan) ***
-Version                 : 0.16.0
-Kubernetes Context      : kind-fst-local
-Kubernetes Cluster      : kind-fst-local
--------------------------------------------------------------------------------
-
+❯ solo
+
+******************************* Solo *********************************************
+Version                 : 0.18.0
+Kubernetes Context      : kind-kind
+Kubernetes Cluster      : kind-kind
+Kubernetes Namespace    : undefined
+**********************************************************************************
 Usage:
-  fsnetman <command> [options]
+  solo <command> [options]
 
 Commands:
-  fsnetman init     Perform dependency checks and initialize local environment
-  fsnetman cluster  Manage cluster
-  fsnetman chart    Manage chart deployment
-  fsnetman node     Manage a node running Hedera platform
-  fsnetman relay    Manage JSON RPC relays
+  solo init     Initialize local environment
+  solo cluster  Manage fullstack testing cluster
+  solo network  Manage fullstack testing network deployment
+  solo node     Manage Hedera platform node in fullstack testing network
+  solo relay    Manage JSON RPC relays in fullstack testing network
 
 Options:
       --dev      Enable developer mode                                                        [boolean] [default: false]
@@ -67,12 +66,12 @@ Select a command
     * `Run->Edit Configurations->Edit Configuration Templates->Jest` and then set `--experimental-vm-modules`
       in `Node Options`.
 * Run `npm i` to install the required packages
-* Run `npm link` to install `fsnetman` as the CLI
-  * Note: you need to do it once. If `fsnetman` already exists in your path, you will need to remove it first.
-  * Alternative way would be to run `npm run fsnetman -- <COMMAND> <ARGS>`
+* Run `npm link` to install `solo` as the CLI
+  * Note: you need to do it once. If `solo` already exists in your path, you will need to remove it first.
+  * Alternative way would be to run `npm run solo -- <COMMAND> <ARGS>`
 * Run `npm test` or `npm run test` to run the unit tests
-* Run `fsnetman` to access the CLI as shown above.
-* Note that debug logs are stored at `~/.fsnetman/logs/fst.log`. So you may use `tail -f ~/.fsnetman/logs/fst.log | jq
+* Run `solo` to access the CLI as shown above.
+* Note that debug logs are stored at `~/.solo/logs/fst.log`. So you may use `tail -f ~/.solo/logs/fst.log | jq
   ` in a separate terminal to keep an eye on the logs.
 * Before making a commit run `npm run format`
 
diff --git a/fullstack-network-manager/jest.config.mjs b/solo/jest.config.mjs
similarity index 100%
rename from fullstack-network-manager/jest.config.mjs
rename to solo/jest.config.mjs
diff --git a/fullstack-network-manager/package-lock.json b/solo/package-lock.json
similarity index 99%
rename from fullstack-network-manager/package-lock.json
rename to solo/package-lock.json
index c125bef97..eb3970761 100644
--- a/fullstack-network-manager/package-lock.json
+++ b/solo/package-lock.json
@@ -1,11 +1,11 @@
 {
-  "name": "@hashgraph/fullstack-network-manager",
+  "name": "@hashgraph/solo",
   "version": "0.18.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "@hashgraph/fullstack-network-manager",
+      "name": "@hashgraph/solo",
       "version": "0.18.0",
       "license": "Apache2.0",
       "os": [
@@ -32,7 +32,7 @@
         "yargs": "^17.7.2"
       },
       "bin": {
-        "fsnetman": "fsnetman.mjs"
+        "solo": "solo.mjs"
       },
       "devDependencies": {
         "@jest/globals": "^29.7.0",
diff --git a/fullstack-network-manager/package.json b/solo/package.json
similarity index 77%
rename from fullstack-network-manager/package.json
rename to solo/package.json
index 16342ad1b..812033b51 100644
--- a/fullstack-network-manager/package.json
+++ b/solo/package.json
@@ -1,27 +1,28 @@
 {
-  "name": "@hashgraph/fullstack-network-manager",
+  "name": "@hashgraph/solo",
   "version": "0.18.0",
-  "description": "Fullstack-Network-Manager is a CLI tool to manage and deploy a Hedera Network using Helm chart for local testing.",
+  "description": "SOLO is a CLI tool to manage a private Hedera Network using Helm chart.",
   "main": "src/index.mjs",
   "type": "module",
   "publishConfig": {
     "registry": "https://npm.pkg.github.com"
   },
   "bin": {
-    "fsnetman": "fsnetman.mjs"
+    "solo": "solo.mjs"
   },
   "scripts": {
     "test": "NODE_OPTIONS=--experimental-vm-modules jest --runInBand --detectOpenHandles --forceExit --testPathIgnorePatterns=\".*/e2e/.*\"",
     "test-e2e": "NODE_OPTIONS=--experimental-vm-modules jest --runInBand --detectOpenHandles --forceExit --testPathIgnorePatterns=\\\".*/unit/.*\\\"",
-    "fsnetman": "NODE_OPTIONS=--experimental-vm-modules node fsnetman.mjs",
+    "solo": "NODE_OPTIONS=--experimental-vm-modules node solo.mjs",
     "check": "remark . --quiet --frail && eslint .",
     "format": "remark . --quiet --frail --output && eslint --fix ."
   },
   "keywords": [
-    "fullstack-network-manager",
-    "full-stack-testing"
+    "solo",
+    "full-stack-testing",
+    "fullstack-network-manager"
   ],
-  "author": "Lenin Mehedy",
+  "author": "Swirlds Labs",
   "license": "Apache2.0",
   "dependencies": {
     "@hashgraph/sdk": "^2.40.0",
@@ -57,8 +58,8 @@
   },
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/hashgraph/full-stack-testing.git",
-    "directory": "fullstack-network-manager"
+    "url": "git+https://github.com/hashgraph/solo.git",
+    "directory": "solo"
   },
   "os": [
     "darwin",
diff --git a/fullstack-network-manager/resources/extract-jar.sh b/solo/resources/extract-jar.sh
similarity index 100%
rename from fullstack-network-manager/resources/extract-jar.sh
rename to solo/resources/extract-jar.sh
diff --git a/fullstack-network-manager/resources/templates/config.template b/solo/resources/templates/config.template
similarity index 100%
rename from fullstack-network-manager/resources/templates/config.template
rename to solo/resources/templates/config.template
diff --git a/fullstack-network-manager/resources/templates/hedera.crt b/solo/resources/templates/hedera.crt
similarity index 100%
rename from fullstack-network-manager/resources/templates/hedera.crt
rename to solo/resources/templates/hedera.crt
diff --git a/fullstack-network-manager/resources/templates/hedera.key b/solo/resources/templates/hedera.key
similarity index 100%
rename from fullstack-network-manager/resources/templates/hedera.key
rename to solo/resources/templates/hedera.key
diff --git a/fullstack-network-manager/resources/templates/log4j2.xml b/solo/resources/templates/log4j2.xml
similarity index 100%
rename from fullstack-network-manager/resources/templates/log4j2.xml
rename to solo/resources/templates/log4j2.xml
diff --git a/fullstack-network-manager/resources/templates/node-keys/private-node0.pfx b/solo/resources/templates/node-keys/private-node0.pfx
similarity index 100%
rename from fullstack-network-manager/resources/templates/node-keys/private-node0.pfx
rename to solo/resources/templates/node-keys/private-node0.pfx
diff --git a/fullstack-network-manager/resources/templates/node-keys/private-node1.pfx b/solo/resources/templates/node-keys/private-node1.pfx
similarity index 100%
rename from fullstack-network-manager/resources/templates/node-keys/private-node1.pfx
rename to solo/resources/templates/node-keys/private-node1.pfx
diff --git a/fullstack-network-manager/resources/templates/node-keys/private-node2.pfx b/solo/resources/templates/node-keys/private-node2.pfx
similarity index 100%
rename from fullstack-network-manager/resources/templates/node-keys/private-node2.pfx
rename to solo/resources/templates/node-keys/private-node2.pfx
diff --git a/fullstack-network-manager/resources/templates/node-keys/private-node3.pfx b/solo/resources/templates/node-keys/private-node3.pfx
similarity index 100%
rename from fullstack-network-manager/resources/templates/node-keys/private-node3.pfx
rename to solo/resources/templates/node-keys/private-node3.pfx
diff --git a/fullstack-network-manager/resources/templates/node-keys/public.pfx b/solo/resources/templates/node-keys/public.pfx
similarity index 100%
rename from fullstack-network-manager/resources/templates/node-keys/public.pfx
rename to solo/resources/templates/node-keys/public.pfx
diff --git a/fullstack-network-manager/resources/templates/properties/api-permission.properties b/solo/resources/templates/properties/api-permission.properties
similarity index 100%
rename from fullstack-network-manager/resources/templates/properties/api-permission.properties
rename to solo/resources/templates/properties/api-permission.properties
diff --git a/fullstack-network-manager/resources/templates/properties/application.properties b/solo/resources/templates/properties/application.properties
similarity index 100%
rename from fullstack-network-manager/resources/templates/properties/application.properties
rename to solo/resources/templates/properties/application.properties
diff --git a/fullstack-network-manager/resources/templates/properties/bootstrap.properties b/solo/resources/templates/properties/bootstrap.properties
similarity index 100%
rename from fullstack-network-manager/resources/templates/properties/bootstrap.properties
rename to solo/resources/templates/properties/bootstrap.properties
diff --git a/fullstack-network-manager/resources/templates/settings.txt b/solo/resources/templates/settings.txt
similarity index 100%
rename from fullstack-network-manager/resources/templates/settings.txt
rename to solo/resources/templates/settings.txt
diff --git a/fullstack-network-manager/fsnetman.mjs b/solo/solo.mjs
similarity index 100%
rename from fullstack-network-manager/fsnetman.mjs
rename to solo/solo.mjs
diff --git a/fullstack-network-manager/src/commands/base.mjs b/solo/src/commands/base.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/base.mjs
rename to solo/src/commands/base.mjs
diff --git a/fullstack-network-manager/src/commands/cluster.mjs b/solo/src/commands/cluster.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/cluster.mjs
rename to solo/src/commands/cluster.mjs
diff --git a/fullstack-network-manager/src/commands/flags.mjs b/solo/src/commands/flags.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/flags.mjs
rename to solo/src/commands/flags.mjs
diff --git a/fullstack-network-manager/src/commands/index.mjs b/solo/src/commands/index.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/index.mjs
rename to solo/src/commands/index.mjs
diff --git a/fullstack-network-manager/src/commands/init.mjs b/solo/src/commands/init.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/init.mjs
rename to solo/src/commands/init.mjs
diff --git a/fullstack-network-manager/src/commands/network.mjs b/solo/src/commands/network.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/network.mjs
rename to solo/src/commands/network.mjs
diff --git a/fullstack-network-manager/src/commands/node.mjs b/solo/src/commands/node.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/node.mjs
rename to solo/src/commands/node.mjs
diff --git a/fullstack-network-manager/src/commands/prompts.mjs b/solo/src/commands/prompts.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/prompts.mjs
rename to solo/src/commands/prompts.mjs
diff --git a/fullstack-network-manager/src/commands/relay.mjs b/solo/src/commands/relay.mjs
similarity index 100%
rename from fullstack-network-manager/src/commands/relay.mjs
rename to solo/src/commands/relay.mjs
diff --git a/fullstack-network-manager/src/core/chart_manager.mjs b/solo/src/core/chart_manager.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/chart_manager.mjs
rename to solo/src/core/chart_manager.mjs
diff --git a/fullstack-network-manager/src/core/config_manager.mjs b/solo/src/core/config_manager.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/config_manager.mjs
rename to solo/src/core/config_manager.mjs
diff --git a/fullstack-network-manager/src/core/constants.mjs b/solo/src/core/constants.mjs
similarity index 94%
rename from fullstack-network-manager/src/core/constants.mjs
rename to solo/src/core/constants.mjs
index 2b6b4c00d..6135659d6 100644
--- a/fullstack-network-manager/src/core/constants.mjs
+++ b/solo/src/core/constants.mjs
@@ -4,17 +4,17 @@ import { dirname, normalize } from 'path'
 import { fileURLToPath } from 'url'
 import chalk from 'chalk'
 
-// -------------------- fsnetman related constants ---------------------------------------------------------------------
+// -------------------- solo related constants ---------------------------------------------------------------------
 export const CUR_FILE_DIR = dirname(fileURLToPath(import.meta.url))
 export const USER = `${process.env.USER}`
 export const USER_SANITIZED = USER.replace(/[\W_]+/g, '-')
-export const FST_HOME_DIR = `${process.env.HOME}/.fsnetman`
+export const FST_HOME_DIR = `${process.env.HOME}/.solo`
 export const FST_LOGS_DIR = `${FST_HOME_DIR}/logs`
 export const FST_CACHE_DIR = `${FST_HOME_DIR}/cache`
 export const DEFAULT_NAMESPACE = 'default'
 export const HELM = 'helm'
 export const CWD = process.cwd()
-export const FST_CONFIG_FILE = `${FST_HOME_DIR}/fsnetman.config`
+export const FST_CONFIG_FILE = `${FST_HOME_DIR}/solo.config`
 export const RESOURCES_DIR = normalize(CUR_FILE_DIR + '/../../resources')
 
 export const ROOT_CONTAINER = 'root-container'
diff --git a/fullstack-network-manager/src/core/dependency_manager.mjs b/solo/src/core/dependency_manager.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/dependency_manager.mjs
rename to solo/src/core/dependency_manager.mjs
diff --git a/fullstack-network-manager/src/core/errors.mjs b/solo/src/core/errors.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/errors.mjs
rename to solo/src/core/errors.mjs
diff --git a/fullstack-network-manager/src/core/helm.mjs b/solo/src/core/helm.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/helm.mjs
rename to solo/src/core/helm.mjs
diff --git a/fullstack-network-manager/src/core/helpers.mjs b/solo/src/core/helpers.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/helpers.mjs
rename to solo/src/core/helpers.mjs
diff --git a/fullstack-network-manager/src/core/index.mjs b/solo/src/core/index.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/index.mjs
rename to solo/src/core/index.mjs
diff --git a/fullstack-network-manager/src/core/k8.mjs b/solo/src/core/k8.mjs
similarity index 99%
rename from fullstack-network-manager/src/core/k8.mjs
rename to solo/src/core/k8.mjs
index 379f66978..662276459 100644
--- a/fullstack-network-manager/src/core/k8.mjs
+++ b/solo/src/core/k8.mjs
@@ -10,7 +10,7 @@ import * as tar from 'tar'
 import { v4 as uuid4 } from 'uuid'
 
 /**
- * A kubernetes API wrapper class providing custom functionalities required by fsnetman
+ * A kubernetes API wrapper class providing custom functionalities required by solo
  *
  * Note: Take care if the same instance is used for parallel execution, as the behaviour may be unpredictable.
  * For parallel execution, create separate instances by invoking clone()
diff --git a/fullstack-network-manager/src/core/logging.mjs b/solo/src/core/logging.mjs
similarity index 99%
rename from fullstack-network-manager/src/core/logging.mjs
rename to solo/src/core/logging.mjs
index 9f4d41177..136c1aa4d 100644
--- a/fullstack-network-manager/src/core/logging.mjs
+++ b/solo/src/core/logging.mjs
@@ -60,7 +60,7 @@ export const Logger = class {
         // - Write all logs with importance level of `error` or less to `error.log`
         // - Write all logs with importance level of `info` or less to `fst.log`
         //
-        new winston.transports.File({ filename: `${constants.FST_LOGS_DIR}/fst.log` })
+        new winston.transports.File({ filename: `${constants.FST_LOGS_DIR}/solo.log` })
         // new winston.transports.File({filename: constants.TMP_DIR + "/logs/error.log", level: 'error'}),
         // new winston.transports.Console({format: customFormat})
       ]
diff --git a/fullstack-network-manager/src/core/package_downloader.mjs b/solo/src/core/package_downloader.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/package_downloader.mjs
rename to solo/src/core/package_downloader.mjs
diff --git a/fullstack-network-manager/src/core/platform_installer.mjs b/solo/src/core/platform_installer.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/platform_installer.mjs
rename to solo/src/core/platform_installer.mjs
diff --git a/fullstack-network-manager/src/core/shell_runner.mjs b/solo/src/core/shell_runner.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/shell_runner.mjs
rename to solo/src/core/shell_runner.mjs
diff --git a/fullstack-network-manager/src/core/templates.mjs b/solo/src/core/templates.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/templates.mjs
rename to solo/src/core/templates.mjs
diff --git a/fullstack-network-manager/src/core/zippy.mjs b/solo/src/core/zippy.mjs
similarity index 100%
rename from fullstack-network-manager/src/core/zippy.mjs
rename to solo/src/core/zippy.mjs
diff --git a/fullstack-network-manager/src/index.mjs b/solo/src/index.mjs
similarity index 87%
rename from fullstack-network-manager/src/index.mjs
rename to solo/src/index.mjs
index b9b255f95..175214432 100644
--- a/fullstack-network-manager/src/index.mjs
+++ b/solo/src/index.mjs
@@ -38,13 +38,12 @@ export function main (argv) {
     }
     configManager.persist()
 
-    logger.showUser(chalk.green('\n-------------------------------------------------------------------------------'))
-    logger.showUser(chalk.cyan('*** Fullstack Network Manager (FsNetMan) ***'))
+    logger.showUser(chalk.cyan('\n******************************* Solo *********************************************'))
     logger.showUser(chalk.cyan('Version\t\t\t:'), chalk.yellow(configManager.getVersion()))
     logger.showUser(chalk.cyan('Kubernetes Context\t:'), chalk.yellow(context.name))
     logger.showUser(chalk.cyan('Kubernetes Cluster\t:'), chalk.yellow(configManager.getFlag(flags.clusterName)))
     logger.showUser(chalk.cyan('Kubernetes Namespace\t:'), chalk.yellow(configManager.getFlag(flags.namespace)))
-    logger.showUser(chalk.green('-------------------------------------------------------------------------------\n'))
+    logger.showUser(chalk.cyan('**********************************************************************************'))
 
     const opts = {
       logger,
diff --git a/fullstack-network-manager/test/data/.empty b/solo/test/data/.empty
similarity index 100%
rename from fullstack-network-manager/test/data/.empty
rename to solo/test/data/.empty
diff --git a/fullstack-network-manager/test/data/fsnetman-test-1.config b/solo/test/data/fsnetman-test-1.config
similarity index 100%
rename from fullstack-network-manager/test/data/fsnetman-test-1.config
rename to solo/test/data/fsnetman-test-1.config
diff --git a/fullstack-network-manager/test/data/fsnetman-test-2.config b/solo/test/data/fsnetman-test-2.config
similarity index 100%
rename from fullstack-network-manager/test/data/fsnetman-test-2.config
rename to solo/test/data/fsnetman-test-2.config
diff --git a/fullstack-network-manager/test/e2e/commands/node.test.mjs b/solo/test/e2e/commands/node.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/e2e/commands/node.test.mjs
rename to solo/test/e2e/commands/node.test.mjs
diff --git a/fullstack-network-manager/test/e2e/core/k8_e2e.test.mjs b/solo/test/e2e/core/k8_e2e.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/e2e/core/k8_e2e.test.mjs
rename to solo/test/e2e/core/k8_e2e.test.mjs
diff --git a/fullstack-network-manager/test/e2e/core/package_downloader_e2e.test.mjs b/solo/test/e2e/core/package_downloader_e2e.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/e2e/core/package_downloader_e2e.test.mjs
rename to solo/test/e2e/core/package_downloader_e2e.test.mjs
diff --git a/fullstack-network-manager/test/e2e/core/platform_installer_e2e.test.mjs b/solo/test/e2e/core/platform_installer_e2e.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/e2e/core/platform_installer_e2e.test.mjs
rename to solo/test/e2e/core/platform_installer_e2e.test.mjs
diff --git a/solo/test/e2e/setup-e2e.sh b/solo/test/e2e/setup-e2e.sh
new file mode 100755
index 000000000..4d26b3a1f
--- /dev/null
+++ b/solo/test/e2e/setup-e2e.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+FST_CLUSTER_NAME=fst-local
+FST_NAMESPACE=fst-local
+kind delete cluster -n "${FST_CLUSTER_NAME}" || true
+kind create cluster -n "${FST_CLUSTER_NAME}" || exit 1
+kubectl create ns "${FST_NAMESPACE}" || exit 1
+solo init -d ../charts --namespace "${FST_NAMESPACE}" || exit 1 # cache args for subsequent commands
+solo cluster setup --cert-manager --cert-manager-crds --minio || exit 1
+solo network deploy --no-enable-prometheus-svc-monitor --enable-hedera-explorer-tls || exit 1
diff --git a/fullstack-network-manager/test/test_util.js b/solo/test/test_util.js
similarity index 100%
rename from fullstack-network-manager/test/test_util.js
rename to solo/test/test_util.js
diff --git a/fullstack-network-manager/test/unit/commands/base.test.mjs b/solo/test/unit/commands/base.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/commands/base.test.mjs
rename to solo/test/unit/commands/base.test.mjs
diff --git a/fullstack-network-manager/test/unit/commands/init.test.mjs b/solo/test/unit/commands/init.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/commands/init.test.mjs
rename to solo/test/unit/commands/init.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/config_manager.test.mjs b/solo/test/unit/core/config_manager.test.mjs
similarity index 95%
rename from fullstack-network-manager/test/unit/core/config_manager.test.mjs
rename to solo/test/unit/core/config_manager.test.mjs
index 62d745161..48cb21c44 100644
--- a/fullstack-network-manager/test/unit/core/config_manager.test.mjs
+++ b/solo/test/unit/core/config_manager.test.mjs
@@ -36,7 +36,7 @@ describe('ConfigManager', () => {
   })
   describe('ConfigManager with loaded configs', () => {
     const testLogger = logging.NewLogger('debug')
-    const configFilePath = process.cwd() + '/test/data/fsnetman-test-1.config'
+    const configFilePath = process.cwd() + '/test/data/solo-test-1.config'
     const cm = new ConfigManager(testLogger, configFilePath, false)
 
     it('should be able to load a config file override in the constructor',
@@ -83,7 +83,7 @@ describe('ConfigManager', () => {
   })
   describe('ConfigManager with loaded configs and argv overrides', () => {
     const testLogger = logging.NewLogger('debug')
-    const configFilePath = process.cwd() + '/test/data/fsnetman-test-2.config'
+    const configFilePath = process.cwd() + '/test/data/solo-test-2.config'
     const cm = new ConfigManager(testLogger, configFilePath)
     const clusterName = ''
     const namespace = ''
@@ -91,7 +91,7 @@ describe('ConfigManager', () => {
     argv[flags.clusterName.name] = clusterName
     argv[flags.namespace.name] = namespace
     cm.load(argv)
-    const configJSON = fs.readFileSync(process.cwd() + '/test/data/fsnetman-test-2.config')
+    const configJSON = fs.readFileSync(process.cwd() + '/test/data/solo-test-2.config')
     const newConfig = JSON.parse(configJSON.toString())
 
     it('config file takes precedence over empty namespace', () => {
diff --git a/fullstack-network-manager/test/unit/core/dependency_manager.test.mjs b/solo/test/unit/core/dependency_manager.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/dependency_manager.test.mjs
rename to solo/test/unit/core/dependency_manager.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/errors.test.mjs b/solo/test/unit/core/errors.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/errors.test.mjs
rename to solo/test/unit/core/errors.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/helm.test.mjs b/solo/test/unit/core/helm.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/helm.test.mjs
rename to solo/test/unit/core/helm.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/logging.test.mjs b/solo/test/unit/core/logging.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/logging.test.mjs
rename to solo/test/unit/core/logging.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/package_downloader.test.mjs b/solo/test/unit/core/package_downloader.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/package_downloader.test.mjs
rename to solo/test/unit/core/package_downloader.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/platform_installer.test.mjs b/solo/test/unit/core/platform_installer.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/platform_installer.test.mjs
rename to solo/test/unit/core/platform_installer.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/shell_runner.test.mjs b/solo/test/unit/core/shell_runner.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/shell_runner.test.mjs
rename to solo/test/unit/core/shell_runner.test.mjs
diff --git a/fullstack-network-manager/test/unit/core/zippy.test.mjs b/solo/test/unit/core/zippy.test.mjs
similarity index 100%
rename from fullstack-network-manager/test/unit/core/zippy.test.mjs
rename to solo/test/unit/core/zippy.test.mjs
diff --git a/solo/unused/private-alice.pfx b/solo/unused/private-alice.pfx
new file mode 100644
index 0000000000000000000000000000000000000000..62022a5078faa33e05d0ee5d501220740e658cdd
GIT binary patch
literal 7732
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
PE@p{RrNrd_bLI9Ql>J<`

literal 0
HcmV?d00001

diff --git a/solo/unused/private-bob.pfx b/solo/unused/private-bob.pfx
new file mode 100644
index 0000000000000000000000000000000000000000..ac80503c5cf90472943c8f76257bce07a6954609
GIT binary patch
literal 4936
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

literal 0
HcmV?d00001

diff --git a/solo/unused/private-node0.pfx b/solo/unused/private-node0.pfx
new file mode 100644
index 0000000000000000000000000000000000000000..c49257a731f45466098a32bf9ba4ac55b270c1cb
GIT binary patch
literal 7732
zcmbW6Wl$W<m-PpC_u%d@xD!0M26xY3gS!qI+#N#D;1*nh26xv41`RF)!S~sExBgpO
zwN<<Oe(LIT>h_1<y;Y~H8wjBS!owi|A(ZRLXlzl6QTJGIC~!p($_YdW<;XwsAP|Bs
z`d=(`c0>p|^FJ~@5Q4IVjPV~;nCNiuMG%zGf5bqb-M=c3uz-d@;s4xX0@)D>CFqR-
zfw;}*G#E?$D`Ku&sS8{%cz9-9csLp$CNk>(I}siY2>_%-Mze@ggtJ9JgkwX*wOQaT
zdA3FL+Bgj=;9{b#LWH2;l1awa@xy8H&9TqBoqp<YFQf>j!s}o0bqFBNSv69bLG8kg
zyWuPZmksBzh42}Y{N#$^5$!#2D<4FK1CfJ|Ax!%Fk*g*3fH;xBC+g2_Y!KmM=UhZp
zl}0GY<}{Ee!Wnu(MX~-M1cDMBfm_syvud)-3t%t~`cr4f$JhDI{ov;l#tfv@qk60;
zuSdZM0_>K*G4kTClq2X80=ID!S}gaW8`hj{u&$_Pe0}k_f?!()_gIBpC?(QTSnJco
zII{e2F=8{d^vz<di!)?N$<m|CYA(F%Bv~5!m*jZbqQBcm)%O^b!SRXLjf@s0pmz+q
zDO-AIWmvD=KZNfsb&1s#Y~`)poT4S3l4%=#Im}2Kv5tb5ipLDMzZ2OSX$na;2nMNr
zi9r{hLS;#ut>W<-3gkqMg{1?AdrvdKk2S*fm*?L3?V{!-sWnO3>nlHnj`5%SPD1k!
z$WCEorzI_aWF=!$9+T}%9iE)cJsw)qm*h>B;#`$|3TSBtLLQr2bHfW4EZ9kE)1Tqz
zerj0waAq)=Kpqt5E(?jlhkpf<aHz4aDkk7N$L)9B1|1aqQ#pdtOZURbJ8lt(-XE(?
z(kVgXMjo1$qs!YRj4Twt(oq*mV=_%&m2MMfcv(yjK9GDNl3H(x_FT=Y_W(G{EPW1R
zI~-;(JuM*|6~7*DVa%M_tCz+k{h?;2w=74Ar$I~YStp;R5kCY|VyQXdMR29zetA9P
z+*-0ySkGSupXR<nQS=T7((WZ{rFMDG3n;_ab2PUT-nMRO6rz20p`e!3X*`1YEjqYj
z*_XwM8N;4IH$5f~ye+@VAU{~3@2-CS-;AJY1r8bi5S2-o$Z6pOnMraq;>{9rME<kL
zkGko~IrMv<f=2J74{~Y^#eB;stNw<Mrg$zygeR1v-w9}Jx<5*XIo-uQig~{3+eYR$
zEGW8!$SDQEBhs)fc{D7%6GW{X+%u?UMQNxktI7PF(D!%Dy_(Ve>%!!=K@SR6ay0Ih
zI*OPJVSoxGf#JAXmqx5<^oOMb8ZooPl_hE)H8PDyRN9xQ@m1OON&IALKAAKaEORA1
zApnruiw{Eek8d^yUCc-)#e@vJ87K&@_j{<3F(-<@|LS;91Z=G&<ds?9@#UPE7_P!7
z&jtMw9*y{!ci5UFbtSw*GL`B;W4F*~&=9RA3<WUfN#GQ5i)KP`@zpWbhC0*C&ojb-
zevTW!QV#PtHeI6vFAA5>lS?Mp@^c$m?*^MhVHlM8_J4hyO8@HcuwgXA$ur4P6FKBk
zU6UxghV$ABKhKPJO&&LdV0Q}v;E^)|QlI^D!GnXVo^8QsK{UxfquL$V7`otPdpUGn
zO?18$&T`?4Pgz|79OTP>yo|Iz2uC(U@oD8p=J-fL@dQh<4%VFY9Ap|!zkcpW=xr-_
zeb1Qqz|npYXY1Whd{i56c_taFAOG9ZYi=8v@4zqW+MSKz$dN_&xwRgyYPiGgT_#HQ
zq+r#&G_OOwhAPs`!4Y)BW_U`2Z8qf7<0~4LllIUrmCuK}T3Gg%ypmbyt;|<C-kyc9
z@DE;qlIb*tOiAz!$F~Cr5?8UogAJ^h*r%FWI;=4HuF@q*2l}y}ziY*JQV*-c6(xq9
zNV`N5upuChTe;nGW;D$Qt0n7fZAQz$;c+Arjz2ZKT$B_-o<Sa)bHg!Zm@f0WT|AAv
zbp63Hp?t^s)JKe&BOa|t@533ZkAS|LCKiOyhQq!6uDOx>88oEPeqJdg4=5~FO<?Pq
zT{5gTssZ%kU})H`pol8Hzf7GTK2!SM%!$<38)(>{^6+>uD@%P6NN>m3oz^i)+iefU
zhAkEvxbqBtyDHpBjt*QPPk3nw>G~Qckm025o>*T8y2c<d`)>GNk!Z@K5Qb9oQg6O|
zENaq9^~9SRd=u~@rV6>_ka{Qc!zR4f;KG_7yUkCDE>BIHmJ$UHqlA8T_y}p9&KuCe
zKHMN70;6&3F7VDJt`bzA;0Jqi6y1><nK@7nlw!oO7&n2>Y*1^NIx8`x#G=SpPRi8D
z#8H7f1L)G~k5{^g3%40HP2`DSPy(-&YFc0TquI93Nkks>VT{GB4T4H@jB_sBNkQj_
zj)wbbxv)8g@1p5E7I3f01JC)pl|U6V3X8@2#=6q}y&LiEYOyykT=5rRM<gim?_2-D
zshj}gfaKfJCs#DzdLMUWvVZzUwIkY8C7}6mdcq(9N|v#p;n<Fu?nH~8vIvwKM8rWV
z#DLeZ>-%&tot%H4r}M3~JlXhCd5v!(l-OPFh!7IGQ9~(}v1c!dzq~yov%{@)jjqGy
zK4<H1=AqQ3m{P0d*aaNOV~)D+qV`8Nmm{i}zhKi>i*~#<3OP@0-qe>_>}i;u&w`0{
zC4+fn{yjARBb3nyd2p$)0UiKOfC~T&umRWtfI!;+w262K5%E8QoNZ}%gn)wlBK$x;
z9wA{7AOw!~zXp5Q6fkW3e~NXqy0!}4ci5|*I7YHxtY*9y)#sD`H?cmKgX8MwUozEi
zy(ax^9JhyPG549VFc-k%uh`<&VR<X(KwI?@zunu-lYjj4x;$)tdPEcNmMmYJz-X81
zt0N7o^vAkU&ri`)+@HCc>+}tSxs~_ZF$EZ9HmMD6ckyF5G2w%AiTT^&AI^<6%6+bA
zaQ-_;mj4Gxydr|Y|4&E=OFxY~#ku_b-KEqYfBi8sgxyyDZy+@kO|pu7RP6i`kCNhN
z?X`nw(MIheO{Z%g)?g8!5IZilq!4JVY}sN$Ds|k*N2)_-X_go{&DMt_hpN2%ILlK}
zO<@X~jA$Je5F)^|szw!SCL*?8HuqK~`vLSh8V}S$`1yx8gVvd9-z#v~bNl<9=zj;v
z_WuBhk6(Zn2q6gj*SMh|7eNTz|B+na;Q;?E_W$X?{ZF&?H=J2nT8Thn_aoCt<qX;k
zB+^;+e}nC)%tkC{t$b*}qYsx`&fq2#f`6G}?gz^<=5o|DKWmD&ynC{<C3ztiq8@dI
zlXAl7%sf5>-zB)%ZN20fKZrV=l&PG2z0Sfu6E@fx777YW6zA+AUH5Rnt9G|M1Mp-?
zXv;C)##Sd<@QqoswQ)$pJvOeUKz|c<v8E6SyOmr2>6u{)KmPNW@vD>U+>;a4taiQ+
zVwbEHs`C3I#-*#Rgko}ftIZG69?L^$inqZ2{(PP+^fO{i`4nXdv)j2)apuyQbwcue
zFqT_$QM+rr$wso0mx2UuYesccux*hNX#IO&rN1?K+^}ZB_nCIQd(?d%wP@q4Z<wfv
zFMa8VL=_#;lRq*e@udoH{XTSa%E!lyALmVn+J2?HUQH$l&#oLZQ9duM;f@l(Z?QG=
z;?o_xZ(q~*g5ON(nGI!Enpq?8VhB2a7cNxzuv^GJLV|lQ1~+`#Ks3%3vl*E8MP*o;
z^^&%+QO#7GQ4~4PPWMd3xoJv@_ork`F<Fdz-Y@3_*i(yE(;&sv<8kR3U6ig3I4N<c
z={Z?P(>3++P$c8k4YNnUc~lGdazq7}of%Y96^p0LT9bD2V^$DhcxFdOJv<fjwZW!h
zFXns@T+^0cL()9>4i5ZFCDPl#kDa~~6lxxZu7i#J)&49xe>&6b0`C~K^-gEjLTm4x
z+FyoS__r%~St_KPJ-LozO1Jj4IX^a7bdfq^$<ZA>z5n>*5YxCx!kQ>wV`SC%v60WP
zadu?l@d=&X_H<}dUe1`XzyB+5w+Q`m4mv~&&Iywv9F0NQ@<4Zb(1F(Nq2E!(QQ!8u
z&K-pcyef;cp%uQ{{=^Nn9?3+V0r$<3GmEhbCiwfy^#YZM?2%|uq%y9*H1sN@Ln|iH
z^BNnh46w~lXQOjN)SXKMR_C1En%$sjMr}}Zk0y5*-Z59CQ$ok^`ZHd6f<cCIsOQfB
zE%Jftbj^*S4l%Rn{3wrM{(?n}kN0=09e922k9!2vUue+rzQn@j*q;`DDm2su??lS7
z9jP%zx{;oP+_%#Mo~?*p+lICG{DZL){aWqmzMvumTCQP*hnWOf8gvI4ip4;08Jx4e
z4yg7`jTP8hC)9|{PTEQaKaJ`Ap<c++=2iFFwa()B$Vbk!a6@*q<JiY&u0h3`lu0D<
zmBr?rbKfg@sR>>mE1@}!#p9u6aU3p}ago(>?1et3`j5Jot$vi+(O-g0-(tY)c5(2+
z#=al;^ysgTa~WKfOEkM&m?c`!a**Undg*BD??k2s>ju{9GW5{e#by3FW=pW#Z0D#T
z-u!t@bn!%OBjw>{zm-91MpQiva=X+*ZodH)&}dev@AWrOd%AY?(BKW}4g@bD;L<6>
zmIAOn)g|CCL<cQH#tTA(?BtqU&)V)z&eJ#o-5Rk~rmbB@vW14}BE){>9`x<Chv>CO
zo6P(%<{aZKxz8>1BACZng2;M5m1lkJ$d(SEJ3Ucetag044Y4m;=SyQwAG1AX#Arf6
zq3sGCp%8oL!$NQb-{-lkRoTZEeD|s?VPoYyZG<-w%gGq!N7{Ma{V;2?m997f-oLtz
zP!na_RhqS~R2bU0_AGT$JE}IUWdN#2r^yK}ZQ2y{L^{}MX)4b6X-E>uzF%ycBLgI^
zStfDZecre#jSnFK_+Si4db{C(0ryEh61Q~k;_k$AQ`aryfA7F04jzUYWmz;pPh0lq
zY}xtA=qFDV<y{wsdhmd#gCmq0sjmEhs+jwuUAhoM1ax9`UcH7c^{)|bp%DRhp{{Kv
zfd0mIv|a9=<_8U(<F5sJa%yh+ZizZSMN!fIx!E$ewvdZh-2>rm$@?2BG~_|{i*!~j
zu0|r?a*mM+B>H2t-_w7X3QjE6-RZyw2P)>QS1a@48XVc$eK^F!P$(Ho7Kt<av_un5
z$#S!KK?;T6|8?vh5y*7qI)Npv?$(7kfTOEXXCUm;Ni>!>BRK4Pz80OwGC!bsY_EH{
zWy!n8@jINVck!f-wRG03<U`u;X{xOi8D2@W=V_sO02e%XkLm6stNXL0Cr_EtE%fPt
z5Tm5vcTakYS!2ZCy`p7b8#t?t*f%2%EK9fziXW%T1S;pWdlomY2q*H#&VDgRdLP2o
ziu&^N^AoAQu|o(1!#5guyLS2B60|6Cr@|1XV;Mea7FvjcTB)rJb5D0GNX>RaaOgUK
z4W0xfVIFN$F$2yMweVig?^-70vQwSjuck4kkl~CgS6nV&^SU0$eDl%VSLWUd%YX*3
z?igDX8W8pffgBLR9D}!FF!eI|SLB)hf(`D-T$Orh;3Y*4LCKlmR0cTnZ;wCPTDS*v
zYfzQZ{}OzDBgQbfZnfKd-ev6|>sfcC%x#EWmTKmno(gcFtgkSjC?NPSW2;LkA=w|#
zM*^Yv{-ICw<ENY8WrCsCXjTBFJWGq;)!%;pwJ*whIyDbcvCQPCPNiuBW{cggwDeMk
zOX%o08$BjIK=GXz_T6)CDq<bS3HjVvnbRIb8f9iwGYw`g7n{JgwWbvbQVCzow{x-`
zsC=>pK*1sz`w|}4#Azi_62;HKPnkN|f2u6-&70uZ{!oOy@I_z&oUK`GdB!395R7F|
z6!meuDDuff8Q*ZVYp>#*&Z)9L>mcOB+;>X*By5bm@3*3)iXHQ(Vt=*Uw&54tyR3G?
zt=Megkp7AlG(yeHcCFxFHOOgI7>Mtu{j+!K;ngwI?h=8f*Ca?cPAb<R^oy}fZD&Cb
z`$X&q<4UpC6$kzO+?sFvNC@-ZhL;->lmg;B6;-A58kfOlU=d7JcO{}VUpb9>qXy#p
zYuT3!%T&Qm+C9%c#N@`;Jb9L&gF}^v0vN&O;Il&@#i20<vcNb=P;GNrdk(WmSYbh3
zQD1M11(6zZ49`iROLuSzDuhK`>`>Lz@K~k!APe<_icgd}4YDgUJxkDDH%dkmhivAE
z|C)N;ks;?kUBHPp_ol5UdvJEe-nJq8CR{Xb9P>#-Q50&GPkWA}-EX|A&dMcv1D$~i
z`$7TaKhW?mOtS<z3i&PRL82jRb=kJK*qrIsMG|7G+~rQ(2REFx8TQHp7I4>K@=(pI
z<AgVEj{P-dZIq*%v1Ipgc9@Fss4<^$)xGRSvMcyi?BSw%wCEh6%x={h^Hq<D!8;g$
ztqE{L5K@E;>FYfA))oirWb!q?UEJ)`L6jueLYyvX0QpJp@erH9cB$;se0P19?Qi?j
z6m}wPpBgjx-twA8TaAi2gv7r;ZTM(NiQwq%Ld@|3lm}s?SeJ%BgN<-*w;g_K>^d>)
zO{Vgn`CS{9A;}@j1y}xHvS`5^7bcU^#N`9&c9<UYge{Z^2<k%_iQMz&tU$qA8M=U*
z8EH!wJCl!PRUijH?Y?2Fmn&_RRNc&ng*p;>oM;<9i?%;v6X}Hm^K4k=8|I~#?H+Ju
zqMKJY4Chpti0Th{hHY;>2Id-S$c-;m^p1?f2jqV1&k-Hx-&Vr7g%d1bAHa4`Wrw(Z
z^sEn}9a@omp3(J)?T?$nVIdV|KwVmuzJyHpOpu_#*CQ+)NoPil=_VbuDV&+wmN;3>
z6cYfQZ+E;{DTU`Bu3e*U`O?^9D{BmU<ldVuD!=tVQ#$Ge)*|r^kW=I(7JiTB*i<ZP
zXMv}3btq)cJr!e=VmNk>iPDg&$?`jo7D*Fy?x~S`L!xfC_1L?p>0?XopX)+<3i5oP
zm{Uqj<f0PcLSHPW^-!?<u&;B)Ie!7Dv_{Mgw|5X71(!qxDq_!}{rq67L4}Q*n)Q-l
z|4bX`UMuG3&_zBz?2yqthQJH2D%t3#BA5`rIgI7&kW?a~rQ$J{PS<dpw6AEgXZJlC
zxC%!&kh12;uZ?4|NxAoZ+zaG)r*wSD*=Dt%CG{ry`SXd!YlCci;vC=2F=|Cx<<>T0
ztZ*;nnNg+a(m+i4s;pivn06s@OQ1p$Z7PWXz_j9j&umg8!EgvqQ884zEM&OjULZok
z=s7|MHzH@{9adICQ2RGqsk<q*D=f;m^bODSOOGLH6{2P)TN!4KkpJ~`b@(Ui__$a#
z_ZRIRi3+!qH(5wm_u$T>Ru7~Y`JEn$a<$}b%lQDY1-`;tY@UT4-3(S*zx|=DqFpbV
zc>+|{{DA3kz$f505tuvz-!WAk?AuMSRK0(P(!ap3(~>M&2Q<p0hz?-8iq^|_MipKx
z>n!6qCe7w`O2JS#qh@UuP*jlYC}Z(fGhAJ8stZodJWk;}v~3jU40J9omWKg~E(=(U
zQm*ygZ7(e!R!s79-V6hLdeZ0iShqG>cmMDsNfaZ>oRzpc=kBy4pHf8-MR<a&Wld4o
z4xWt}+n)S!Mh3azl8(e&n)zGpd4D$&o#U8Ocl+Cu(fT~#2z7rK*r91ZGynTN@rUk2
zDw>mDm7ZTN0@UiRGX&W_)Ea+Jw)E}u=&MNy^>;WN{HL+OmOr73->0YtAiCMK#V*>j
ztKYSh8ef3i&8c<s?{jkz`wfFM!(7?J%_kavy=5WyW$aMKvBZmU34exW4t+tGz9qa~
zs6;tQ(4kiBSuv)jOdz6}6mZ`Y8VQjEAI+{HJbRbPR^njAfX655g5(*Q2CZUS@T=5c
zW>H5!-!@C%-fBQau8H!!)jnNd)Tt1(T^>ORL44&LmUd9iCc@dCkhe4K%5TASnD?3S
z)Ox;3bQ!DR$Xnl-o4*{Fs#?d^^D_HsC3ZIGt(LHB_IKu)upf{{h2`GQL-UN!W)sF5
z#z1k;2f3~eN23czg3T=)32n8A>6EUR#>pgHAld%Ebu`81I{EsgMh6?X%oXz%D4y-8
z9&OnhIkFb3X>6kEu<M+t#&Yp6{>2QkR8DC!FtMzPJqW%W=H$~Q`WtcVrXp;o*k%&p
zNiSNdgRi=o4t@LO^e2xE+TDYAqraQB0>$t;dSZraXqNO)Pq0FFSnKFKu{3%DZkYTh
zdE0k5ZI(@*saZu9yV^!t5r)(5!5U>vTO$uYcZN(cFfEogKakGkGP2$4)F*x<#l?}F
ze#4(VlUY^}b<&EDlB+>&+F}zK<7i&I%mwH;#Ti;8rNg#02D~;k*Ko5}vbo)(-cYSX
z;<*uyk#~DbtA0~7=9@077Lm?3Pc;>&BY+q*FCwDJZ7C2`+p0`a8!Ip;-%pGE@$+i1
zBYns>WZRT$8hY>g7e%-~I4qO}UkH4*KAZRBd+V&rRgF!jdAkiu!_nk$!Nt@lMA=|D
z-jrT&ig8-@fROrG*&B+xWG9D`hjtN{zM3EOJC3~Y@eT3PU$cW?_}654R`RLs@G6}I
z+awf^zctd}Y4YF$>(L^rV{^&nlTi*o7OuCJyk}pOCyXD&Z*G=eZiklyN}*66OSjNo
z!%f#K?DAS8!MpU}?+(LK^bM*jDgz~7Iej6hLz~-k>@wI$%c)sB+i$sBH5zL3XLApI
z{uY-Al2+UdSh;!geBN2zcQfJFQ?43Rl(Z42Tywl`ih1Z8<sRuR&q;cER-H7~^7}af
z4SCI(MvWa=d5<eR$wMJvkFc9rl$XS*7<kIyXpTxL{U+!@pQ|t3!Dng}CFb;;d)K4q
z!4O0S6W8yK09%yv{9>l;yn7BYy_xx$MskbfGv5CPW$8k20S6+9fIY~?K>vY^ru#Kp
z5;`!fvPwwI5VI>K<=QV5hVw9LsMr~80~~j`3@MlSWbL~tlO!BB(Lt)xaB;=WG<xg2
z;z0aqX~H%&UmEwKsy=wj+iq9N0QRKhyqA&&<>pDLx~3AMcQ_*1*~*qc&{`5^gM_o6
z9q-4i4Yj0u1_^i<&6u(?Z0l#&Mr<aQ!Oxm{4TfMv6$tzi8VM@NugJ5R|GWpv9PGE_
zT;02`hWkkn<JnU30kJbo+ny<M7(8{ajP}l5C?6irMlrr}g3xrj<cB*mdcl^Uq#n31
z7rD{Jr*nni)xj-=YmdkYxOT6hI=DtUy5Yow=tRx_w-rbUBT!ey?fpYjRE%w$4;G;r
z|5ctvswU=^`MhUorsp}4=FwB7??&`a52=ZAMNOvbbq<LI%LUKPPp@czdo|UYXB|mg
z*FgDLS>VfP+zcFz33<4KcVdNl@|dA&w=uU><jhhvO+_B4avnol#qB7pMrp3#C#?G=
zwyimflXBXiAFF;;Z#YV0&1hlFd{d0?BYF~f|9f`QR*OeJ_dgd@)C?idszP7yy3$=$
zH<CTQ#I!8MOf@9)0FXM7shuh3I_>6ckyZwcZj8s^i0(%3@+3bFJo-jD3C-nd6)m1P
z#h<oE#QIi_xcxEp-&YR&xvmoJD{BKbw7`-BCee%q-4|mA^Q6BMh2D9LaGJy*{ifA2
zLEEQhcnP~j;q<EpF*?350dU6bBU3nUF_VjUf;9$>K}r&1K|N<wF}-<^=w}jPwkP+K
zfb7rL(l6%l^opQpHI8fs?<cBNL+vBv9OM&0r9EM!mbOxx@rI_Q4`)C%AP*4hUq7kv
za7X||nzV=^(Wc==ZGWO45SiAGi)v;|*9mV!EDg#o{)qdUH;9B>J=&@{l`5N(tuIdo
PO3)8_Dwzxa{^a&=Exb@=

literal 0
HcmV?d00001

diff --git a/solo/unused/public.pfx b/solo/unused/public.pfx
new file mode 100644
index 0000000000000000000000000000000000000000..19fdb968952362a02e252d4126f13d0269c0d022
GIT binary patch
literal 2966
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
M7b9`8i2?#A5M^VX4FCWD

literal 0
HcmV?d00001


From 0d7f49aec3271545b80252a654b2d7911eb9f244 Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 09:04:59 +1100
Subject: [PATCH 2/9] doc: update solo description

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 solo/README.md    | 2 +-
 solo/package.json | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/solo/README.md b/solo/README.md
index 5d136715d..1693772de 100644
--- a/solo/README.md
+++ b/solo/README.md
@@ -1,6 +1,6 @@
 # Full Stack Network Manager CLI
 
-Full Stack Network Manager (solo) is a CLI tool to manage and deploy a Hedera Network using the FS Helm Charts.
+Solo is a CLI tool to manage and deploy a private Hedera Network.
 
 ## Install
 
diff --git a/solo/package.json b/solo/package.json
index 812033b51..8d09a966d 100644
--- a/solo/package.json
+++ b/solo/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@hashgraph/solo",
   "version": "0.18.0",
-  "description": "SOLO is a CLI tool to manage a private Hedera Network using Helm chart.",
+  "description": "Solo is a CLI tool to manage and deploy a private Hedera Network.",
   "main": "src/index.mjs",
   "type": "module",
   "publishConfig": {

From 1ae2880dfcb5f77abc0f3b849435eab36b5166bd Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 09:05:33 +1100
Subject: [PATCH 3/9] fix: rename

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 solo/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/solo/README.md b/solo/README.md
index 1693772de..23e174b06 100644
--- a/solo/README.md
+++ b/solo/README.md
@@ -1,4 +1,4 @@
-# Full Stack Network Manager CLI
+# Solo 
 
 Solo is a CLI tool to manage and deploy a private Hedera Network.
 

From 3a3623e5d73e1aab8619d1f49a83911b3c3b2bbf Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 10:45:41 +1100
Subject: [PATCH 4/9] ci: fix directory names for solo

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 .github/workflows/flow-deploy-release-artifact.yaml       | 6 +++---
 .../{zxc-fsnetman-tests.yaml => zxc-solo-tests.yaml}      | 8 ++++----
 2 files changed, 7 insertions(+), 7 deletions(-)
 rename .github/workflows/{zxc-fsnetman-tests.yaml => zxc-solo-tests.yaml} (96%)

diff --git a/.github/workflows/flow-deploy-release-artifact.yaml b/.github/workflows/flow-deploy-release-artifact.yaml
index ad4af0402..5d29b0da8 100644
--- a/.github/workflows/flow-deploy-release-artifact.yaml
+++ b/.github/workflows/flow-deploy-release-artifact.yaml
@@ -270,13 +270,13 @@ jobs:
           npm install -g marked-mangle@1.0.1 marked-gfm-heading-id@3.0.4 semantic-release-conventional-commits@3.0.0
 
       - name: Install Dependencies
-        working-directory: fullstack-network-manager
+        working-directory: solo
         run: npm ci
 
       - name: Setup NPM Authentication
-        working-directory: fullstack-network-manager
+        working-directory: solo
         run: |
-          # create .npmrc file to publish fullstack-network-manager to Github NPM registry
+          # create .npmrc file to publish solo to Github NPM registry
           rm -f .npmrc || true
           echo '//npm.pkg.github.com/:_authToken=${NPM_TOKEN}' > ".npmrc"
           echo '@hashgraph:registry=https://npm.pkg.github.com' >> ".npmrc"
diff --git a/.github/workflows/zxc-fsnetman-tests.yaml b/.github/workflows/zxc-solo-tests.yaml
similarity index 96%
rename from .github/workflows/zxc-fsnetman-tests.yaml
rename to .github/workflows/zxc-solo-tests.yaml
index 86a410cf7..3570dbe63 100644
--- a/.github/workflows/zxc-fsnetman-tests.yaml
+++ b/.github/workflows/zxc-solo-tests.yaml
@@ -55,7 +55,7 @@ jobs:
         uses: tj-actions/changed-files@90a06d6ba9543371ab4df8eeca0be07ca6054959 #v42.0.2
         with:
           files: |
-            fullstack-network-manager/**
+            solo/**
 
       - name: List all related changed files
         id: check-changed-files
@@ -121,7 +121,7 @@ jobs:
 
       - name: NodeJS CLI Unit Tests
         id: nodejs-test
-        working-directory: fullstack-network-manager
+        working-directory: solo
         if: ${{ steps.check-changed-files.outputs.run-tests && !cancelled() && !failure() }}
         run: |
           which npm
@@ -132,7 +132,7 @@ jobs:
 
       - name: NodeJS CLI E2E Tests
         id: nodejs-test-e2e
-        working-directory: fullstack-network-manager
+        working-directory: solo
         if: ${{ steps.check-changed-files.outputs.run-tests && !cancelled() && !failure() }}
         run: |
           npm i
@@ -145,7 +145,7 @@ jobs:
 
       - name: Output logs
         id: nodejs-test-e2e-logs
-        working-directory: fullstack-network-manager
+        working-directory: solo
         if: ${{ steps.check-changed-files.outputs.run-tests && !cancelled() }}
         run: |
           cat ~/.fsnetman/logs/fst.log

From 9a6a3870addce0f1af2c360812fa986a764b2108 Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 11:07:10 +1100
Subject: [PATCH 5/9] fix: rename FST with SOLO

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 solo/README.md                                | 12 ++---
 solo/src/commands/cluster.mjs                 | 16 +++---
 solo/src/commands/flags.mjs                   |  2 +-
 solo/src/commands/init.mjs                    |  6 +--
 solo/src/commands/network.mjs                 | 22 ++++----
 solo/src/commands/prompts.mjs                 |  2 +-
 solo/src/commands/relay.mjs                   |  4 +-
 solo/src/core/config_manager.mjs              |  4 +-
 solo/src/core/constants.mjs                   | 50 +++++++++----------
 solo/src/core/logging.mjs                     |  2 +-
 ...etman-test-1.config => solo-test-1.config} |  2 +-
 ...etman-test-2.config => solo-test-2.config} |  2 +-
 solo/test/e2e/commands/node.test.mjs          |  2 +-
 solo/test/e2e/setup-e2e.sh                    | 12 ++---
 solo/test/unit/core/config_manager.test.mjs   |  6 +--
 15 files changed, 71 insertions(+), 73 deletions(-)
 rename solo/test/data/{fsnetman-test-1.config => solo-test-1.config} (91%)
 rename solo/test/data/{fsnetman-test-2.config => solo-test-2.config} (91%)

diff --git a/solo/README.md b/solo/README.md
index 23e174b06..5bce544f2 100644
--- a/solo/README.md
+++ b/solo/README.md
@@ -21,11 +21,11 @@ Solo is a CLI tool to manage and deploy a private Hedera Network.
   cluster and namespace as below (See [`test/e2e/setup-e2e.sh`](test/e2e/setup_e2e.sh)):
 
 ```
-export FST_CLUSTER_NAME=fst-local
-export FST_NAMESPACE=fst-local
-kind create cluster -n "${FST_CLUSTER_NAME}" 
-kubectl create ns "${FST_NAMESPACE}"
-solo init -d ../charts --namespace "${FST_NAMESPACE}" # cache args for subsequent commands
+export SOLO_CLUSTER_NAME=solo-local
+export SOLO_NAMESPACE=solo-local
+kind create cluster -n "${SOLO_CLUSTER_NAME}" 
+kubectl create ns "${SOLO_NAMESPACE}"
+solo init -d ../charts --namespace "${SOLO_NAMESPACE}" # cache args for subsequent commands
 ```
 
 * Run `solo` from a terminal, It may show usage options as shown below:
@@ -71,7 +71,7 @@ Select a command
   * Alternative way would be to run `npm run solo -- <COMMAND> <ARGS>`
 * Run `npm test` or `npm run test` to run the unit tests
 * Run `solo` to access the CLI as shown above.
-* Note that debug logs are stored at `~/.solo/logs/fst.log`. So you may use `tail -f ~/.solo/logs/fst.log | jq
+* Note that debug logs are stored at `~/.solo/logs/solo.log`. So you may use `tail -f ~/.solo/logs/solo.log | jq
   ` in a separate terminal to keep an eye on the logs.
 * Before making a commit run `npm run format`
 
diff --git a/solo/src/commands/cluster.mjs b/solo/src/commands/cluster.mjs
index ca1649b97..aa046c94b 100644
--- a/solo/src/commands/cluster.mjs
+++ b/solo/src/commands/cluster.mjs
@@ -76,7 +76,7 @@ export class ClusterCommand extends BaseCommand {
 
           self.logger.debug('Prepare ctx.config', { config: ctx.config, argv })
 
-          ctx.isChartInstalled = await this.chartManager.isChartInstalled(ctx.config.namespace, constants.CHART_FST_SETUP_NAME)
+          ctx.isChartInstalled = await this.chartManager.isChartInstalled(ctx.config.namespace, constants.FULLSTACK_CLUSTER_SETUP_CHART)
         }
       },
       {
@@ -94,7 +94,7 @@ export class ClusterCommand extends BaseCommand {
         skip: (ctx, _) => ctx.isChartInstalled
       },
       {
-        title: `Install '${constants.CHART_FST_SETUP_NAME}' chart`,
+        title: `Install '${constants.FULLSTACK_CLUSTER_SETUP_CHART}' chart`,
         task: async (ctx, _) => {
           const namespace = ctx.config.namespace
           const version = ctx.config.version
@@ -103,12 +103,12 @@ export class ClusterCommand extends BaseCommand {
           const valuesArg = ctx.valuesArg
 
           try {
-            await self.chartManager.install(namespace, constants.CHART_FST_SETUP_NAME, chartPath, version, valuesArg)
+            await self.chartManager.install(namespace, constants.FULLSTACK_CLUSTER_SETUP_CHART, chartPath, version, valuesArg)
           } catch (e) {
             // if error, uninstall the chart and rethrow the error
-            self.logger.debug(`Error on installing ${constants.CHART_FST_SETUP_NAME}. attempting to rollback by uninstalling the chart`, e)
+            self.logger.debug(`Error on installing ${constants.FULLSTACK_CLUSTER_SETUP_CHART}. attempting to rollback by uninstalling the chart`, e)
             try {
-              await self.chartManager.uninstall(namespace, constants.CHART_FST_SETUP_NAME)
+              await self.chartManager.uninstall(namespace, constants.FULLSTACK_CLUSTER_SETUP_CHART)
             } catch (ex) {
               // ignore error during uninstall since we are doing the best-effort uninstall here
             }
@@ -155,14 +155,14 @@ export class ClusterCommand extends BaseCommand {
             namespace
           }
 
-          ctx.isChartInstalled = await this.chartManager.isChartInstalled(ctx.config.namespace, constants.CHART_FST_SETUP_NAME)
+          ctx.isChartInstalled = await this.chartManager.isChartInstalled(ctx.config.namespace, constants.FULLSTACK_CLUSTER_SETUP_CHART)
         }
       },
       {
-        title: `Uninstall '${constants.CHART_FST_SETUP_NAME}' chart`,
+        title: `Uninstall '${constants.FULLSTACK_CLUSTER_SETUP_CHART}' chart`,
         task: async (ctx, _) => {
           const namespace = ctx.config.namespace
-          await self.chartManager.uninstall(namespace, constants.CHART_FST_SETUP_NAME)
+          await self.chartManager.uninstall(namespace, constants.FULLSTACK_CLUSTER_SETUP_CHART)
           await self.showInstalledChartList(namespace)
         },
         skip: (ctx, _) => !ctx.isChartInstalled
diff --git a/solo/src/commands/flags.mjs b/solo/src/commands/flags.mjs
index d8e6dda0e..f7bc32f3b 100644
--- a/solo/src/commands/flags.mjs
+++ b/solo/src/commands/flags.mjs
@@ -171,7 +171,7 @@ export const cacheDir = {
   definition: {
     describe: 'Local cache directory containing platform release artifacts',
     alias: 'd',
-    default: core.constants.FST_CACHE_DIR,
+    default: core.constants.SOLO_CACHE_DIR,
     type: 'string'
   }
 }
diff --git a/solo/src/commands/init.mjs b/solo/src/commands/init.mjs
index 7999c8540..6446e863b 100644
--- a/solo/src/commands/init.mjs
+++ b/solo/src/commands/init.mjs
@@ -15,9 +15,9 @@ export class InitCommand extends BaseCommand {
    * @param dirs a list of directories that need to be created in sequence
    */
   setupHomeDirectory (dirs = [
-    constants.FST_HOME_DIR,
-    constants.FST_LOGS_DIR,
-    constants.FST_CACHE_DIR
+    constants.SOLO_HOME_DIR,
+    constants.SOLO_LOGS_DIR,
+    constants.SOLO_CACHE_DIR
   ]) {
     const self = this
 
diff --git a/solo/src/commands/network.mjs b/solo/src/commands/network.mjs
index 6527f095b..d9f3fadd9 100644
--- a/solo/src/commands/network.mjs
+++ b/solo/src/commands/network.mjs
@@ -104,7 +104,7 @@ export class NetworkCommand extends BaseCommand {
 
     // compute values
     config.chartPath = await this.prepareChartPath(config.chartDir,
-      constants.CHART_FST_REPO_NAME, constants.CHART_FST_DEPLOYMENT_NAME)
+      constants.FULLSTACK_TESTING_CHART, constants.FULLSTACK_DEPLOYMENT_CHART)
 
     config.valuesArg = this.prepareValuesArg(config.chartDir,
       config.valuesFile, config.deployMirrorNode, config.deployHederaExplorer,
@@ -130,15 +130,15 @@ export class NetworkCommand extends BaseCommand {
         }
       },
       {
-        title: `Install chart '${constants.CHART_FST_DEPLOYMENT_NAME}'`,
+        title: `Install chart '${constants.FULLSTACK_DEPLOYMENT_CHART}'`,
         task: async (ctx, _) => {
-          if (await self.chartManager.isChartInstalled(ctx.config.namespace, constants.CHART_FST_DEPLOYMENT_NAME)) {
-            await self.chartManager.uninstall(ctx.config.namespace, constants.CHART_FST_DEPLOYMENT_NAME)
+          if (await self.chartManager.isChartInstalled(ctx.config.namespace, constants.FULLSTACK_DEPLOYMENT_CHART)) {
+            await self.chartManager.uninstall(ctx.config.namespace, constants.FULLSTACK_DEPLOYMENT_CHART)
           }
 
           await this.chartManager.install(
             ctx.config.namespace,
-            constants.CHART_FST_DEPLOYMENT_NAME,
+            constants.FULLSTACK_DEPLOYMENT_CHART,
             ctx.config.chartPath,
             ctx.config.version,
             ctx.config.valuesArg)
@@ -178,7 +178,7 @@ export class NetworkCommand extends BaseCommand {
     try {
       await tasks.run()
     } catch (e) {
-      throw new FullstackTestingError(`Error installing chart ${constants.CHART_FST_DEPLOYMENT_NAME}`, e)
+      throw new FullstackTestingError(`Error installing chart ${constants.FULLSTACK_DEPLOYMENT_CHART}`, e)
     }
 
     return true
@@ -218,9 +218,9 @@ export class NetworkCommand extends BaseCommand {
         }
       },
       {
-        title: `Uninstall chart ${constants.CHART_FST_DEPLOYMENT_NAME}`,
+        title: `Uninstall chart ${constants.FULLSTACK_DEPLOYMENT_CHART}`,
         task: async (ctx, _) => {
-          await self.chartManager.uninstall(ctx.config.namespace, constants.CHART_FST_DEPLOYMENT_NAME)
+          await self.chartManager.uninstall(ctx.config.namespace, constants.FULLSTACK_DEPLOYMENT_CHART)
         }
       },
       {
@@ -271,11 +271,11 @@ export class NetworkCommand extends BaseCommand {
         }
       },
       {
-        title: `Upgrade chart '${constants.CHART_FST_DEPLOYMENT_NAME}'`,
+        title: `Upgrade chart '${constants.FULLSTACK_DEPLOYMENT_CHART}'`,
         task: async (ctx, _) => {
           await this.chartManager.upgrade(
             ctx.config.namespace,
-            constants.CHART_FST_DEPLOYMENT_NAME,
+            constants.FULLSTACK_DEPLOYMENT_CHART,
             ctx.config.chartPath,
             ctx.config.valuesArg)
         }
@@ -296,7 +296,7 @@ export class NetworkCommand extends BaseCommand {
     try {
       await tasks.run()
     } catch (e) {
-      throw new FullstackTestingError(`Error upgrading chart ${constants.CHART_FST_DEPLOYMENT_NAME}`, e)
+      throw new FullstackTestingError(`Error upgrading chart ${constants.FULLSTACK_DEPLOYMENT_CHART}`, e)
     }
 
     return true
diff --git a/solo/src/commands/prompts.mjs b/solo/src/commands/prompts.mjs
index c5e4afaf4..e1da7285d 100644
--- a/solo/src/commands/prompts.mjs
+++ b/solo/src/commands/prompts.mjs
@@ -121,7 +121,7 @@ export async function promptCacheDir (task, input) {
     if (!input) {
       input = await task.prompt(ListrEnquirerPromptAdapter).run({
         type: 'text',
-        default: constants.FST_CACHE_DIR,
+        default: constants.SOLO_CACHE_DIR,
         message: 'Enter local cache directory path:'
       })
     }
diff --git a/solo/src/commands/relay.mjs b/solo/src/commands/relay.mjs
index 2c74e78be..6e95ebc14 100644
--- a/solo/src/commands/relay.mjs
+++ b/solo/src/commands/relay.mjs
@@ -17,7 +17,7 @@ export class RelayCommand extends BaseCommand {
       })
     }
 
-    valuesArg += ` --set config.MIRROR_NODE_URL=${constants.CHART_FST_DEPLOYMENT_NAME}-rest`
+    valuesArg += ` --set config.MIRROR_NODE_URL=${constants.FULLSTACK_DEPLOYMENT_CHART}-rest`
 
     if (chainID) {
       valuesArg += ` --set config.CHAIN_ID=${chainID}`
@@ -109,7 +109,7 @@ export class RelayCommand extends BaseCommand {
       {
         title: 'Prepare chart values',
         task: async (ctx, _) => {
-          ctx.chartPath = await this.prepareChartPath(ctx.config.chartDir, constants.CHART_JSON_RPC_RELAY_REPO_NAME, constants.CHART_JSON_RPC_RELAY_NAME)
+          ctx.chartPath = await this.prepareChartPath(ctx.config.chartDir, constants.JSON_RPC_RELAY_CHART, constants.CHART_JSON_RPC_RELAY_NAME)
           ctx.valuesArg = this.prepareValuesArg(
             ctx.config.valuesFile,
             ctx.config.nodeIds,
diff --git a/solo/src/core/config_manager.mjs b/solo/src/core/config_manager.mjs
index 56773a585..0fbc2be9d 100644
--- a/solo/src/core/config_manager.mjs
+++ b/solo/src/core/config_manager.mjs
@@ -10,10 +10,10 @@ import { fileURLToPath } from 'url'
 const CUR_FILE_DIR = paths.dirname(fileURLToPath(import.meta.url))
 
 export class ConfigManager {
-  constructor (logger, fstConfigFile = constants.FST_CONFIG_FILE, persistMode = true) {
+  constructor (logger, fstConfigFile = constants.SOLO_CONFIG_FILE, persistMode = true) {
     if (!logger || !(logger instanceof Logger)) throw new MissingArgumentError('An instance of core/Logger is required')
 
-    if (fstConfigFile === constants.FST_CONFIG_FILE) {
+    if (fstConfigFile === constants.SOLO_CONFIG_FILE) {
       this.fstConfigFile = fstConfigFile
     } else {
       if (this.verifyConfigFile(fstConfigFile)) {
diff --git a/solo/src/core/constants.mjs b/solo/src/core/constants.mjs
index 6135659d6..10ad2b897 100644
--- a/solo/src/core/constants.mjs
+++ b/solo/src/core/constants.mjs
@@ -8,19 +8,19 @@ import chalk from 'chalk'
 export const CUR_FILE_DIR = dirname(fileURLToPath(import.meta.url))
 export const USER = `${process.env.USER}`
 export const USER_SANITIZED = USER.replace(/[\W_]+/g, '-')
-export const FST_HOME_DIR = `${process.env.HOME}/.solo`
-export const FST_LOGS_DIR = `${FST_HOME_DIR}/logs`
-export const FST_CACHE_DIR = `${FST_HOME_DIR}/cache`
+export const SOLO_HOME_DIR = `${process.env.HOME}/.solo`
+export const SOLO_LOGS_DIR = `${SOLO_HOME_DIR}/logs`
+export const SOLO_CACHE_DIR = `${SOLO_HOME_DIR}/cache`
 export const DEFAULT_NAMESPACE = 'default'
 export const HELM = 'helm'
 export const CWD = process.cwd()
-export const FST_CONFIG_FILE = `${FST_HOME_DIR}/solo.config`
+export const SOLO_CONFIG_FILE = `${SOLO_HOME_DIR}/solo.config`
 export const RESOURCES_DIR = normalize(CUR_FILE_DIR + '/../../resources')
 
 export const ROOT_CONTAINER = 'root-container'
 
 // --------------- Hedera network and node related constants --------------------------------------------------------------------
-export const HEDERA_CHAIN_ID = process.env.FST_CHAIN_ID || '298'
+export const HEDERA_CHAIN_ID = process.env.SOLO_CHAIN_ID || '298'
 export const HEDERA_HGCAPP_DIR = '/opt/hgcapp'
 export const HEDERA_SERVICES_PATH = `${HEDERA_HGCAPP_DIR}/services-hedera`
 export const HEDERA_HAPI_PATH = `${HEDERA_SERVICES_PATH}/HapiApp2.0`
@@ -29,13 +29,13 @@ export const HEDERA_DATA_LIB_DIR = 'data/lib'
 export const HEDERA_USER_HOME_DIR = '/home/hedera'
 export const HEDERA_APP_NAME = 'HederaNode.jar'
 export const HEDERA_BUILDS_URL = 'https://builds.hedera.com'
-export const HEDERA_NODE_ACCOUNT_ID_START = AccountId.fromString(process.env.FST_NODE_ACCOUNT_ID_START || '0.0.3')
-export const HEDERA_NODE_INTERNAL_GOSSIP_PORT = process.env.FST_NODE_INTERNAL_GOSSIP_PORT || '50111'
-export const HEDERA_NODE_EXTERNAL_GOSSIP_PORT = process.env.FST_NODE_EXTERNAL_GOSSIP_PORT || '50111'
+export const HEDERA_NODE_ACCOUNT_ID_START = AccountId.fromString(process.env.SOLO_NODE_ACCOUNT_ID_START || '0.0.3')
+export const HEDERA_NODE_INTERNAL_GOSSIP_PORT = process.env.SOLO_NODE_INTERNAL_GOSSIP_PORT || '50111'
+export const HEDERA_NODE_EXTERNAL_GOSSIP_PORT = process.env.SOLO_NODE_EXTERNAL_GOSSIP_PORT || '50111'
 
-export const HEDERA_NODE_GRPC_PORT = process.env.FST_NODE_GRPC_PORT || '50211'
-export const HEDERA_NODE_GRPCS_PORT = process.env.FST_NODE_GRPC_PORT || '50212'
-export const HEDERA_NODE_DEFAULT_STAKE_AMOUNT = process.env.FST_NODE_DEFAULT_STAKE_AMOUNT || 1
+export const HEDERA_NODE_GRPC_PORT = process.env.SOLO_NODE_GRPC_PORT || '50211'
+export const HEDERA_NODE_GRPCS_PORT = process.env.SOLO_NODE_GRPC_PORT || '50212'
+export const HEDERA_NODE_DEFAULT_STAKE_AMOUNT = process.env.SOLO_NODE_DEFAULT_STAKE_AMOUNT || 1
 
 // --------------- Logging related constants ---------------------------------------------------------------------------
 export const LOG_STATUS_PROGRESS = chalk.cyan('>>')
@@ -43,24 +43,22 @@ export const LOG_STATUS_DONE = chalk.green('OK')
 export const LOG_GROUP_DIVIDER = chalk.yellow('----------------------------------------------------------------------------')
 
 // --------------- Charts related constants ----------------------------------------------------------------------------
-export const CHART_REPO_FST_URL = 'https://hashgraph.github.io/full-stack-testing/charts'
-export const CHART_FST_REPO_NAME = 'full-stack-testing'
-export const CHART_FST_SETUP_NAME = 'fullstack-cluster-setup'
-export const CHART_FST_DEPLOYMENT_NAME = 'fullstack-deployment'
-export const CHART_REPO_JSON_RPC_RELAY_URL = 'https://hashgraph.github.io/hedera-json-rpc-relay/charts'
-export const CHART_JSON_RPC_RELAY_REPO_NAME = 'hedera-json-rpc-relay'
-export const CHART_JSON_RPC_RELAY_NAME = 'hedera-json-rpc-relay'
-export const CHART_MIRROR_NODE_URL = 'https://hashgraph.github.io/hedera-mirror-node/charts'
-export const CHART_MIRROR_NODE_REPO_NAME = 'hedera-mirror'
-export const CHART_MIRROR_NODE_NAME = 'hedera-mirror'
+export const FULLSTACK_TESTING_CHART_URL = 'https://hashgraph.github.io/full-stack-testing/charts'
+export const FULLSTACK_TESTING_CHART = 'full-stack-testing'
+export const FULLSTACK_CLUSTER_SETUP_CHART = 'fullstack-cluster-setup'
+export const FULLSTACK_DEPLOYMENT_CHART = 'fullstack-deployment'
+export const JSON_RPC_RELAY_CHART_URL = 'https://hashgraph.github.io/hedera-json-rpc-relay/charts'
+export const JSON_RPC_RELAY_CHART = 'hedera-json-rpc-relay'
+export const MIRROR_NODE_CHART_URL = 'https://hashgraph.github.io/hedera-mirror-node/charts'
+export const MIRROR_NODE_CHART = 'hedera-mirror'
 export const DEFAULT_CHART_REPO = new Map()
-  .set(CHART_FST_REPO_NAME, CHART_REPO_FST_URL)
-  .set(CHART_JSON_RPC_RELAY_REPO_NAME, CHART_REPO_JSON_RPC_RELAY_URL)
-  .set(CHART_MIRROR_NODE_REPO_NAME, CHART_MIRROR_NODE_URL)
+  .set(FULLSTACK_TESTING_CHART, FULLSTACK_TESTING_CHART_URL)
+  .set(JSON_RPC_RELAY_CHART, JSON_RPC_RELAY_CHART_URL)
+  .set(MIRROR_NODE_CHART, MIRROR_NODE_CHART_URL)
 
 // ------------------- Hedera Account related ---------------------------------------------------------------------------------
-export const OPERATOR_ID = process.env.FST_OPERATOR_ID || '0.0.2'
-export const OPERATOR_KEY = process.env.FST_OPERATOR_KEY || '302e020100300506032b65700422042091132178e72057a1d7528025956fe39b0b847f200ab59b2fdd367017f3087137'
+export const OPERATOR_ID = process.env.SOLO_OPERATOR_ID || '0.0.2'
+export const OPERATOR_KEY = process.env.SOLO_OPERATOR_KEY || '302e020100300506032b65700422042091132178e72057a1d7528025956fe39b0b847f200ab59b2fdd367017f3087137'
 
 export const POD_STATUS_RUNNING = 'Running'
 export const POD_STATUS_READY = 'Ready'
diff --git a/solo/src/core/logging.mjs b/solo/src/core/logging.mjs
index 136c1aa4d..3a36b92a3 100644
--- a/solo/src/core/logging.mjs
+++ b/solo/src/core/logging.mjs
@@ -60,7 +60,7 @@ export const Logger = class {
         // - Write all logs with importance level of `error` or less to `error.log`
         // - Write all logs with importance level of `info` or less to `fst.log`
         //
-        new winston.transports.File({ filename: `${constants.FST_LOGS_DIR}/solo.log` })
+        new winston.transports.File({ filename: `${constants.SOLO_LOGS_DIR}/solo.log` })
         // new winston.transports.File({filename: constants.TMP_DIR + "/logs/error.log", level: 'error'}),
         // new winston.transports.Console({format: customFormat})
       ]
diff --git a/solo/test/data/fsnetman-test-1.config b/solo/test/data/solo-test-1.config
similarity index 91%
rename from solo/test/data/fsnetman-test-1.config
rename to solo/test/data/solo-test-1.config
index cb0ad235b..454d1a211 100644
--- a/solo/test/data/fsnetman-test-1.config
+++ b/solo/test/data/solo-test-1.config
@@ -1,7 +1,7 @@
 {
   "flags": {
     "dev": false,
-    "namespace": "fst-user",
+    "namespace": "solo-user",
     "chart-dir": "",
     "cluster-name": "kind-kind",
     "prometheus-stack": false,
diff --git a/solo/test/data/fsnetman-test-2.config b/solo/test/data/solo-test-2.config
similarity index 91%
rename from solo/test/data/fsnetman-test-2.config
rename to solo/test/data/solo-test-2.config
index cb0ad235b..454d1a211 100644
--- a/solo/test/data/fsnetman-test-2.config
+++ b/solo/test/data/solo-test-2.config
@@ -1,7 +1,7 @@
 {
   "flags": {
     "dev": false,
-    "namespace": "fst-user",
+    "namespace": "solo-user",
     "chart-dir": "",
     "cluster-name": "kind-kind",
     "prometheus-stack": false,
diff --git a/solo/test/e2e/commands/node.test.mjs b/solo/test/e2e/commands/node.test.mjs
index 3115c45d4..d7c35bcc9 100644
--- a/solo/test/e2e/commands/node.test.mjs
+++ b/solo/test/e2e/commands/node.test.mjs
@@ -158,7 +158,7 @@ describe('NodeCommand', () => {
           testLogger.showUserError(e)
         }
 
-        await nodeCmd.run(`tail ${constants.FST_LOGS_DIR}/fst.log`)
+        await nodeCmd.run(`tail ${constants.SOLO_LOGS_DIR}/fst.log`)
       }
     }, 60000)
 
diff --git a/solo/test/e2e/setup-e2e.sh b/solo/test/e2e/setup-e2e.sh
index 4d26b3a1f..56ef765b9 100755
--- a/solo/test/e2e/setup-e2e.sh
+++ b/solo/test/e2e/setup-e2e.sh
@@ -1,9 +1,9 @@
 #!/bin/bash
-FST_CLUSTER_NAME=fst-local
-FST_NAMESPACE=fst-local
-kind delete cluster -n "${FST_CLUSTER_NAME}" || true
-kind create cluster -n "${FST_CLUSTER_NAME}" || exit 1
-kubectl create ns "${FST_NAMESPACE}" || exit 1
-solo init -d ../charts --namespace "${FST_NAMESPACE}" || exit 1 # cache args for subsequent commands
+SOLO_CLUSTER_NAME=solo-local
+SOLO_NAMESPACE=solo-local
+kind delete cluster -n "${SOLO_CLUSTER_NAME}" || true
+kind create cluster -n "${SOLO_CLUSTER_NAME}" || exit 1
+kubectl create ns "${SOLO_NAMESPACE}" || exit 1
+solo init -d ../charts --namespace "${SOLO_NAMESPACE}" || exit 1 # cache args for subsequent commands
 solo cluster setup --cert-manager --cert-manager-crds --minio || exit 1
 solo network deploy --no-enable-prometheus-svc-monitor --enable-hedera-explorer-tls || exit 1
diff --git a/solo/test/unit/core/config_manager.test.mjs b/solo/test/unit/core/config_manager.test.mjs
index 48cb21c44..2c653cf63 100644
--- a/solo/test/unit/core/config_manager.test.mjs
+++ b/solo/test/unit/core/config_manager.test.mjs
@@ -47,8 +47,8 @@ describe('ConfigManager', () => {
     it('config file match, dev=false', () => {
       expect(cm.config.flags[flags.devMode.name]).toBeFalsy()
     })
-    it('config file match, namespace=fst-user', () => {
-      expect(cm.config.flags[flags.namespace.name]).toBe('fst-user')
+    it('config file match, namespace=solo-user', () => {
+      expect(cm.config.flags[flags.namespace.name]).toBe('solo-user')
     })
     it('config file match, chartDirectory is empty', () => {
       expect(cm.config.flags[flags.chartDirectory.name]).toBe('')
@@ -95,7 +95,7 @@ describe('ConfigManager', () => {
     const newConfig = JSON.parse(configJSON.toString())
 
     it('config file takes precedence over empty namespace', () => {
-      expect(newConfig.flags[flags.namespace.name]).toBe('fst-user')
+      expect(newConfig.flags[flags.namespace.name]).toBe('solo-user')
     })
     it('config file takes precedence over empty cluster name', () => {
       expect(newConfig.flags[flags.clusterName.name]).toBe('kind-kind')

From e3710378237fe4e04623e590194a42f84bc21371 Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 11:18:42 +1100
Subject: [PATCH 6/9] test: fix loading config in e2e test

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 solo/README.md                                     | 2 +-
 solo/test/e2e/core/k8_e2e.test.mjs                 | 6 +++++-
 solo/test/e2e/core/platform_installer_e2e.test.mjs | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/solo/README.md b/solo/README.md
index 5bce544f2..a937b5961 100644
--- a/solo/README.md
+++ b/solo/README.md
@@ -1,4 +1,4 @@
-# Solo 
+# Solo
 
 Solo is a CLI tool to manage and deploy a private Hedera Network.
 
diff --git a/solo/test/e2e/core/k8_e2e.test.mjs b/solo/test/e2e/core/k8_e2e.test.mjs
index baf87e394..ac212ae6f 100644
--- a/solo/test/e2e/core/k8_e2e.test.mjs
+++ b/solo/test/e2e/core/k8_e2e.test.mjs
@@ -1,4 +1,4 @@
-import { describe, expect, it } from '@jest/globals'
+import { beforeAll, describe, expect, it } from '@jest/globals'
 import fs from 'fs'
 import net from 'net'
 import os from 'os'
@@ -14,6 +14,10 @@ describe('K8', () => {
   const k8 = new K8(configManager, testLogger)
   const downloader = new PackageDownloader(testLogger)
 
+  beforeAll(async () => {
+    await configManager.load()
+  })
+
   it('should be able to list clusters', async () => {
     const clusters = await k8.getClusters()
     expect(clusters).not.toHaveLength(0)
diff --git a/solo/test/e2e/core/platform_installer_e2e.test.mjs b/solo/test/e2e/core/platform_installer_e2e.test.mjs
index 5138d32be..43a7dc7e3 100644
--- a/solo/test/e2e/core/platform_installer_e2e.test.mjs
+++ b/solo/test/e2e/core/platform_installer_e2e.test.mjs
@@ -23,10 +23,12 @@ describe('PackageInstallerE2E', () => {
   const packageTag = 'v0.42.5'
   let packageFile = ''
 
-  beforeAll(() => {
+  beforeAll(async () => {
     if (!fs.existsSync(testCacheDir)) {
       fs.mkdirSync(testCacheDir)
     }
+
+    await configManager.load()
   })
 
   describe('setupHapiDirectories', () => {

From 541510d3582a093f6cb0ad525e058cec1bcc5ecf Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 11:19:50 +1100
Subject: [PATCH 7/9] fix: remove unused keys

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 solo/unused/private-alice.pfx | Bin 7732 -> 0 bytes
 solo/unused/private-bob.pfx   | Bin 4936 -> 0 bytes
 solo/unused/private-node0.pfx | Bin 7732 -> 0 bytes
 solo/unused/public.pfx        | Bin 2966 -> 0 bytes
 4 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 solo/unused/private-alice.pfx
 delete mode 100644 solo/unused/private-bob.pfx
 delete mode 100644 solo/unused/private-node0.pfx
 delete mode 100644 solo/unused/public.pfx

diff --git a/solo/unused/private-alice.pfx b/solo/unused/private-alice.pfx
deleted file mode 100644
index 62022a5078faa33e05d0ee5d501220740e658cdd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7732
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
PE@p{RrNrd_bLI9Ql>J<`

diff --git a/solo/unused/private-bob.pfx b/solo/unused/private-bob.pfx
deleted file mode 100644
index ac80503c5cf90472943c8f76257bce07a6954609..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4936
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

diff --git a/solo/unused/private-node0.pfx b/solo/unused/private-node0.pfx
deleted file mode 100644
index c49257a731f45466098a32bf9ba4ac55b270c1cb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7732
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
PO3)8_Dwzxa{^a&=Exb@=

diff --git a/solo/unused/public.pfx b/solo/unused/public.pfx
deleted file mode 100644
index 19fdb968952362a02e252d4126f13d0269c0d022..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2966
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
M7b9`8i2?#A5M^VX4FCWD


From 29bacb369ee06b68bac1275a489fadf110097f24 Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 11:27:13 +1100
Subject: [PATCH 8/9] ci: rename fsnetman in workflow files

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 .github/workflows/flow-pull-request-checks.yaml |  6 +++---
 .github/workflows/zxc-solo-tests.yaml           | 10 +++++-----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/flow-pull-request-checks.yaml b/.github/workflows/flow-pull-request-checks.yaml
index 6e190392b..d110e5846 100644
--- a/.github/workflows/flow-pull-request-checks.yaml
+++ b/.github/workflows/flow-pull-request-checks.yaml
@@ -1,5 +1,5 @@
 ##
-# Copyright (C) 2023 Hedera Hashgraph, LLC
+# Copyright (C) 2023-2024 Hedera Hashgraph, LLC
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -65,9 +65,9 @@ jobs:
     with:
       custom-job-label: Standard
 
-  fsnetman-tests:
+  solo-tests:
     name: FS Network Manager Tests
-    uses: ./.github/workflows/zxc-fsnetman-tests.yaml
+    uses: ./.github/workflows/zxc-solo-tests.yaml
     with:
       custom-job-label: Standard
 
diff --git a/.github/workflows/zxc-solo-tests.yaml b/.github/workflows/zxc-solo-tests.yaml
index 3570dbe63..dc448f4a3 100644
--- a/.github/workflows/zxc-solo-tests.yaml
+++ b/.github/workflows/zxc-solo-tests.yaml
@@ -26,7 +26,7 @@ on:
         description: "Custom Job Label:"
         type: string
         required: false
-        default: "fsnetman Test"
+        default: "solo Test"
       node-version:
         description: "NodeJS Version:"
         type: string
@@ -47,7 +47,7 @@ permissions:
 
 jobs:
   test:
-    name: ${{ inputs.custom-job-label || 'fsnetman Test' }}
+    name: ${{ inputs.custom-job-label || 'solo Test' }}
     runs-on: [ self-hosted, Linux, medium, ephemeral ]
     steps:
       - name: Get related changed files
@@ -68,9 +68,9 @@ jobs:
           echo ""
           if [ "${{ steps.changed-files.outputs.any_changed }}" == "true" ]; then
             echo "run-tests=true" >> "${GITHUB_OUTPUT}"
-            echo "Executing fsnetman tests...."
+            echo "Scheduled solo tests...."
           else
-            echo ">> No relevant files are changed. No need to run fsnetman tests"
+            echo ">> No relevant files are changed. No need to run solo tests"
           fi
 
       - name: Checkout Code
@@ -148,4 +148,4 @@ jobs:
         working-directory: solo
         if: ${{ steps.check-changed-files.outputs.run-tests && !cancelled() }}
         run: |
-          cat ~/.fsnetman/logs/fst.log
+          cat ~/.solo/logs/solo.log

From ae7ac4754b10fc729718fdce74036d5f8c99f619 Mon Sep 17 00:00:00 2001
From: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
Date: Wed, 31 Jan 2024 11:39:56 +1100
Subject: [PATCH 9/9] fix: rename fst with solo

Signed-off-by: Lenin Mehedy <lenin.mehedy@swirldslabs.com>
---
 solo/src/core/logging.mjs            | 4 ++--
 solo/test/e2e/commands/node.test.mjs | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/solo/src/core/logging.mjs b/solo/src/core/logging.mjs
index 3a36b92a3..e2cc76da7 100644
--- a/solo/src/core/logging.mjs
+++ b/solo/src/core/logging.mjs
@@ -5,7 +5,7 @@ import * as util from 'util'
 import chalk from 'chalk'
 
 const customFormat = winston.format.combine(
-  winston.format.label({ label: 'FST', message: false }),
+  winston.format.label({ label: 'SOLO', message: false }),
 
   winston.format.splat(),
 
@@ -58,7 +58,7 @@ export const Logger = class {
       transports: [
         //
         // - Write all logs with importance level of `error` or less to `error.log`
-        // - Write all logs with importance level of `info` or less to `fst.log`
+        // - Write all logs with importance level of `info` or less to `solo.log`
         //
         new winston.transports.File({ filename: `${constants.SOLO_LOGS_DIR}/solo.log` })
         // new winston.transports.File({filename: constants.TMP_DIR + "/logs/error.log", level: 'error'}),
diff --git a/solo/test/e2e/commands/node.test.mjs b/solo/test/e2e/commands/node.test.mjs
index d7c35bcc9..f44e675ff 100644
--- a/solo/test/e2e/commands/node.test.mjs
+++ b/solo/test/e2e/commands/node.test.mjs
@@ -158,7 +158,7 @@ describe('NodeCommand', () => {
           testLogger.showUserError(e)
         }
 
-        await nodeCmd.run(`tail ${constants.SOLO_LOGS_DIR}/fst.log`)
+        await nodeCmd.run(`tail ${constants.SOLO_LOGS_DIR}/solo.log`)
       }
     }, 60000)