functions/kubernetes/secrets/AskForSecretValue.ps1

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

function AskForSecretValue()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        $secretname
        ,
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        $prompt
        ,
        [AllowEmptyString()]
        [string]
        $namespace
        ,
        [AllowEmptyString()]
        [string]
        $defaultvalue
    )

    Write-Verbose "AskForSecretValue: Starting ($secretname)"

    [hashtable]$Return = @{}

    if ([string]::IsNullOrWhiteSpace($namespace)) { $namespace = "default"}
    if ([string]::IsNullOrWhiteSpace($(kubectl get secret $secretname -n $namespace -o jsonpath='{.data}' --ignore-not-found=true))) {

        $certhostname = ""
        Do {
            $certhostname = Read-host "$prompt"
            if (!$certhostname) {
                if ($defaultvalue) {
                    $certhostname = $defaultvalue
                }
            }
        }
        while ($certhostname.Length -lt 1 )

        kubectl create secret generic $secretname --namespace=$namespace --from-literal=value=$certhostname
    }
    else {
        Write-Information -MessageData "$secretname secret already set so will reuse it"
    }

    Write-Verbose 'AskForSecretValue: Done'

    return $Return
}

Export-ModuleMember -Function 'AskForSecretValue'