Public/RADIUSProfile.ps1

#
# Copyright 2020, Alexis La Goutte <alexis dot lagoutte at gmail dot com>
#
# SPDX-License-Identifier: Apache-2.0
#

function Get-ArubaSWRadiusProfile {

    <#
        .SYNOPSIS
        Get RADIUS Profile information.

        .DESCRIPTION
        Get RADIUS Profile information (retry, retransmit, dead time...) configured on the device.

        .EXAMPLE
        Get-ArubaSWRadiusProfile

        This function give you all the informations about the radius profile parameters configured on the switch.

    #>


    Param(
        [Parameter (Mandatory = $False)]
        [ValidateNotNullOrEmpty()]
        [PSObject]$connection = $DefaultArubaSWConnection
    )

    Begin {
    }

    Process {
        $uri = "rest/v4/radius_profile"

        $response = Invoke-ArubaSWWebRequest -method "GET" -uri $uri -connection $connection

        $run = ($response | ConvertFrom-Json)

        $run
    }

    End {
    }
}

function Set-ArubaSWRadiusProfile {

    <#
        .SYNOPSIS
        Set a RADIUS Profile.

        .DESCRIPTION
        Set a RADIUS Profile (retry, retransmit, dead time...) parameters.

        .EXAMPLE
        Set-ArubaSWRadiusProfile -retry_interval 15 -retransmit_attempts 1 -dead_time 30

        Configure RADIUS Profile settings retry interval to 15 (secs), retransmit attempts to 1 and dead time to 30 (secs)

        .EXAMPLE
        Set-ArubaSWRadiusProfile -key powerarubasw -dyn_autz_port 3800

        Configure Dynamic Authorization Port to 3800 and key to powerarubasw

        .EXAMPLE
        Set-ArubaSWRadiusProfile -is_tracking_enabled

        Enable RADIUS Tracking
    #>


    Param(
        [Parameter (Mandatory = $false)]
        [ValidateRange(1, 15)]
        [int]$retry_interval,
        [Parameter (Mandatory = $false)]
        [ValidateRange(1, 5)]
        [int]$retransmit_attempts,
        [Parameter (Mandatory = $false)]
        [ValidateRange(1, 1440)]
        [int]$dead_time,
        [Parameter (Mandatory = $false)]
        [ValidateLength(0, 32)]
        [string]$key,
        [Parameter (Mandatory = $false)]
        [ValidateRange(1024, 49151)]
        [int]$dyn_autz_port,
        [Parameter (Mandatory = $false)]
        [ValidateLength(1, 64)]
        [string]$tracking_uname,
        [Parameter (Mandatory = $false)]
        [switch]$is_tracking_enabled,
        [Parameter (Mandatory = $False)]
        [ValidateNotNullOrEmpty()]
        [PSObject]$connection = $DefaultArubaSWConnection
    )

    Begin {
    }

    Process {

        $uri = "rest/v4/radius_profile"

        $conf = New-Object -TypeName PSObject

        if ($PsBoundParameters.ContainsKey('retry_interval')) {
            $conf | Add-Member -name "retry_interval" -MemberType NoteProperty -Value $retry_interval
        }

        if ($PsBoundParameters.ContainsKey('retransmit_attempts')) {
            $conf | Add-Member -name "retransmit_attempts" -membertype NoteProperty -Value $retransmit_attempts
        }

        if ($PsBoundParameters.ContainsKey('dead_time')) {
            $conf | Add-Member -name "dead_time" -membertype NoteProperty -Value $dead_time
        }

        if ($PsBoundParameters.ContainsKey('key')) {
            $conf | Add-Member -name "key" -membertype NoteProperty -Value $key
        }

        if ($PsBoundParameters.ContainsKey('dyn_autz_port')) {
            $conf | Add-Member -name "dyn_autz_port" -membertype NoteProperty -Value $dyn_autz_port
        }

        if ($PsBoundParameters.ContainsKey('tracking_uname')) {
            $conf | Add-Member -name "tracking_uname" -membertype NoteProperty -Value $tracking_uname
        }

        if ($PsBoundParameters.ContainsKey('is_tracking_enabled')) {
            if ($is_tracking_enabled) {
                $conf | Add-Member -name "is_tracking_enabled" -membertype NoteProperty -Value $true
            }
            else {
                $conf | Add-Member -name "is_tracking_enabled" -membertype NoteProperty -Value $false
            }
        }

        $response = Invoke-ArubaSWWebRequest -method "PUT" -body $conf -uri $uri -connection $connection

        $run = $response | ConvertFrom-Json

        $run
    }

    End {
    }
}