Migration/openshift/openshiftUtil.psm1

Import-Module -Name @(Join-Path $PSScriptRoot .. | Join-Path -ChildPath .. | Join-Path -ChildPath Common | Join-Path -ChildPath Wrappers | Join-Path -ChildPath Wrappers)

function Read-RMInstanceType {
    param (
        [System.Object] $TargetInventory
    )
    
    while ($true) {
        $ReadValue = Read-RMString -UserMessage "Enter instance type, e.g. cx1.large" `
            -ParameterName "Instance type" -DefaultValue "None" -IsRequired $false

        $InstanceTypeArray = $TargetInventory.attributes.openshift.instance_types.name

        if ("" -ne $ReadValue -and $InstanceTypeArray -notcontains $ReadValue) {
            Write-RMError -Message "Instance type '$ReadValue' does not exist."
            continue
        }

        return $ReadValue
    }
}

function  Read-RMRAMOrCPU {
    param (
        [int] $MinValue,
        [string] $ErrorMessage,
        [string] $UserMessage,
        [string] $DefaultValue,
        [string] $ParameterName
    )
    
    while ($true) {
        $ReadValue = Read-RMInt -UserMessage $UserMessage -DefaultValue $DefaultValue `
            -ParameterName $ParameterName -IsRequired $false
        if ($ReadValue -lt $MinValue) {
            Write-RMError -Message $ErrorMessage
            continue
        }

        return $ReadValue
    }
}

function Read-RMTargetVMName {
    param (
        [System.Object] $DefaultValue
    )

    while($true) {
        $ReadValue = Read-RMString -UserMessage "Enter target VM Name" -DefaultValue $DefaultValue `
            -ParameterName "Target VM Name" -IsRequired $false
        $IsValidTargetVMName = Confirm-RMTargetVMName -TargetVMName $ReadValue
        if (!$IsValidTargetVMName) {
            Write-RMError -Message "Target VM Name '$ReadValue' must contain lowercase alphanumeric characters and may contain hyphens."
            continue
        }
        return $ReadValue
    }
}

function Confirm-RMTargetVMName{
    param(
        [string] $TargetVMName
    )

    $Regex = "^(?-i)[a-z0-9]([a-z0-9\-]{0,251}[a-z0-9])?$"
    $IsValidTargetName = $true
    if ($TargetVMName -notmatch $Regex) {
        $IsValidTargetName  = $false
    }

    return $IsValidTargetName
}