Private/class-OceanstorHostinitiatorNVMe.ps1

[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingCmdletAliases', '')]
class OceanstorHostinitiatorNVMe {
    hidden [pscustomobject]${Session}
    hidden [pscustomobject]${WebSession}
    [string]${Id}
    [string]${Name}
    [string]${Host Id}
    [string]${Host Name}
    [string]${Type}
    [string]${Health Status}
    [string]${Running Status}
    [boolean]${Is Free}
    [string]${Host IP}
    [string]${vStore ID}
    [string]${vStore Name}

    OceanstorHostinitiatorNVMe([array]$initiator, [pscustomobject]$WebSession) {
        $this.Session = $WebSession
        $this.WebSession = $WebSession
        $this.Id = $initiator.ID
        $this.Name = $initiator.NAME
        $this.{Host Id} = $initiator.PARENTID
        $this.{Host Name} = $initiator.PARENTNAME
        $this.{Host IP} = $initiator.hostIP
        $this.{vStore ID} = $initiator.vstoreId
        $this.{vStore Name} = $initiator.vstoreName
        $this.{Is Free} = [string]$initiator.ISFREE -match '^(?i:true|1)$'

        if ([string]$initiator.TYPE -eq '57870') { $this.Type = 'NVMe over RoCE Initiator' }
        if ([string]$initiator.HEALTHSTATUS -eq '1') { $this.{Health Status} = 'Normal' }
        switch ([string]$initiator.RUNNINGSTATUS) {
            '0' { $this.{Running Status} = 'Unknown' }
            '27' { $this.{Running Status} = 'Online' }
            '28' { $this.{Running Status} = 'Offline' }
        }
    }
}