functions/Menus/ShowNlpMenu.ps1

<#
.SYNOPSIS
ShowNlpMenu
 
.DESCRIPTION
ShowNlpMenu
 
.INPUTS
ShowNlpMenu - The name of ShowNlpMenu
 
.OUTPUTS
None
 
.EXAMPLE
ShowNlpMenu
 
.EXAMPLE
ShowNlpMenu
 
 
#>

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
function ShowNlpMenu()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        $baseUrl
        ,
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        $namespace
        ,
        [Parameter(Mandatory = $true)]
        [bool]
        $local
        ,
        [bool]
        $isAzure = $true
    )

    Write-Verbose 'ShowNlpMenu: Starting'

    $userinput = ""
    while ($userinput -ne "q") {
        Write-Host "================ $namespace menu ================"
        Write-Host "------ Install -------"
        Write-Host "1: Install $namespace"
        Write-Host "------ Status --------"
        Write-Host "2: Show status of $namespace"
        Write-Host "3: Show $namespace urls & passwords"
        Write-Host "5: Show $namespace detailed status"
        Write-Host "6: Show $namespace logs"
        # Write-Host "8: Show DNS entries for /etc/hosts"
        Write-Host "9: Troubleshoot Ingresses"
        Write-Host "11: Show commands to SSH to $namespace containers"
        Write-Host "------ Delete data --------"
        Write-Host "12: Delete all data in $namespace"
        Write-Host "------ Testers --------"
        Write-Host "-----------"
        Write-Host "q: Go back to main menu"
        $userinput = Read-Host "Please make a selection"
        switch ($userinput) {
            '1' {
                $packageUrl = $kubeGlobals.nlpPackageUrl
                if ($local) {
                    $packageUrl = "$here\..\..\..\helm.nlp\fabricnlp"
                    Write-Host "Loading package from $packageUrl"
                }
                $VerbosePreference = 'Continue'

                InstallNlp -namespace $namespace -package "fabricnlp" -packageUrl $packageUrl -local $local -isAzure $isAzure
            }
            '2' {
                kubectl get 'deployments,pods,services,ingress,secrets,persistentvolumeclaims,persistentvolumes,nodes' --namespace=$namespace -o wide
            }
            '3' {
                $loadBalancerIPResult = $(GetLoadBalancerIPs)
                $loadBalancerIP = $loadBalancerIPResult.ExternalIP
                $loadBalancerInternalIP = $loadBalancerIPResult.InternalIP

                Write-Host "Solr UI is at http://$loadBalancerInternalIP/solr in the web browser"
                Start-Process -FilePath "http://$loadBalancerInternalIP/solr";
                Write-Host "NLP web UI is at http://$loadBalancerIP/nlpweb in the web browser (ndepthuser/password)"
                Start-Process -FilePath "http://$loadBalancerIP/nlpweb";
                Write-Host "NLP job UI is at http://$loadBalancerIP/nlp in the web browser"
                Start-Process -FilePath "http://$loadBalancerIP/nlp";

                $secrets = $(kubectl get secrets -n $namespace -o jsonpath="{.items[?(@.type=='Opaque')].metadata.name}")
                Write-Host "All secrets in $namespace : $secrets"
                WriteSecretPasswordToOutput -namespace $namespace -secretname "mysqlrootpassword"
                WriteSecretPasswordToOutput -namespace $namespace -secretname "mysqlpassword"
                WriteSecretPasswordToOutput -namespace $namespace -secretname "smtprelaypassword"
                WriteSecretValueToOutput  -namespace $namespace -secretname "jobserver-external-url"
                WriteSecretValueToOutput  -namespace $namespace -secretname "nlpweb-external-url"
            }
            '5' {
                ShowStatusOfAllPodsInNameSpace "$namespace"
            }
            '6' {
                ShowLogsOfAllPodsInNameSpace "$namespace"
            }
            '9' {
                TroubleshootIngress "$namespace"
            }
            '11' {
                ShowSSHCommandsToContainers -namespace $namespace
            }
            '12' {
                Write-Warning "This will delete all data in this namespace and clear out any secrets"
                Do { $confirmation = Read-Host "Do you want to continue? (y/n)"}
                while ([string]::IsNullOrWhiteSpace($confirmation))

                if ($confirmation -eq "y") {

                    DeleteHelmPackage -package $namespace -Verbose

                    if($isAzure){

                        DeleteNamespaceAndData -namespace "$namespace" -isAzure $isAzure -Verbose
                    }
                    else
                    {
                        CleanOutNamespace -namespace $namespace

                        if ($isAzure) {
                            DeleteAzureStorage -namespace $namespace
                        }
                        else {
                            DeleteOnPremStorage -namespace $namespace
                        }

                        DeleteAllSecretsInNamespace -namespace $namespace -Verbose
                    }
                }
            }
            'q' {
                return
            }
        }
        $userinput = Read-Host -Prompt "Press Enter to continue or q to go back to top menu"
        if ($userinput -eq "q") {
            return
        }
        [Console]::ResetColor()
        Clear-Host
    }

    Write-Verbose 'ShowNlpMenu: Done'

}

Export-ModuleMember -Function 'ShowNlpMenu'