Functions/Public/Get-vRAApplianceServiceStatus.psm1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
function Get-vRAApplianceServiceStatus {
<#
    .SYNOPSIS
    Get information about vRA services
    
    .DESCRIPTION
    Get information about vRA services. These are the same services that you will see via the service tab
    
    .PARAMETER Name
    The name of the service to query

    .PARAMETER Limit
    The number of entries returned per page from the API. This has a default value of 100.

    .INPUTS
    System.String

    .OUTPUTS
    System.Management.Automation.PSObject

    .EXAMPLE
     Get-vRAApplianceServiceStatus

    .EXAMPLE
     Get-vRAApplianceServiceStatus -Limit 9999
    
    .EXAMPLE
     Get-vRAApplianceServiceStatus -Name iaas-service
#>

[CmdletBinding()][OutputType('System.Management.Automation.PSObject')]

    Param (

    [parameter(Mandatory=$false,ValueFromPipeline=$false)]
    [ValidateNotNullOrEmpty()]
    [String[]]$Name,
    
    [parameter(Mandatory=$false,ValueFromPipeline=$false)]
    [ValidateNotNullOrEmpty()]
    [String]$Limit = "100"    
       
    )   

    try {

        # --- Build base URI with limit
        $URI =  "/component-registry/services/status/current?limit=$($Limit)"

        # --- If the name parameter is passed returned detailed information about the service
        if ($PSBoundParameters.ContainsKey("Name")){
                    
            foreach ($ServiceName in $Name) {
            
                $Filter = "name%20eq%20'$($ServiceName)'" 

                Write-Verbose -Message "Preparing GET to $($URI)&`$filter=$($Filter)"

                $Response = Invoke-vRARestMethod -Method GET -URI "$($URI)&`$filter=$($Filter)"

                Write-Verbose -Message "SUCCESS"

                if ($Response.content.Length -eq 0) {

                    throw "Could not find service"

                }

                [pscustomobject]@{

                    Id = $Response.content.serviceId
                    Name = $Response.content.serviceName
                    TypeId = $Response.content.serviceTypeId
                    NotAvailable = $Response.content.notAvailable
                    LastUpdated = $Response.content.lastUpdated
                    EndpointUrl = $Response.content.statusEndPointUrl

                    Initialized = $Response.content.serviceStatus.initialized
                    SolutionUser = $Response.content.serviceStatus.solutionUser
                    StartedTime = $Response.content.serviceStatus.startedTime
                    Status = $Response.content.serviceStatus.serviceInitializationStatus
                    ErrorMessage = $Response.content.serviceStatus.errorMessage
                    IdentityCertificateInfo = $Response.content.serviceStatus.identityCertificateInfo
                    ServiceRegistrationId = $Response.content.serviceStatus.serviceRegistrationId
                    SSLCertificateInfo = $Response.content.serviceStatus.sslCertificateInfo
                    DefaultServiceEndpointType = $Response.content.serviceStatus.defaultServiceEndpointType

                }

            }

        }
        else {
            
            Write-Verbose -Message "Preparing GET to $($URI)"

            $Response = Invoke-vRARestMethod -Method GET -URI $URI

            Write-Verbose -Message "SUCCESS"
            
            Write-Verbose -Message "Response contains $($Response.content.Length) records"

            foreach ($Service in $Response.content) {

                [pscustomobject]@{

                    Id = $Service.serviceId
                    Name = $Service.serviceName
                    TypeId = $Service.serviceTypeId
                    NotAvailable = $Service.notAvailable
                    LastUpdated = $Service.lastUpdated
                    EndpointUrl = $Response.content.statusEndPointUrl

                    Initialized = $Service.serviceStatus.initialized
                    SolutionUser = $Service.serviceStatus.solutionUser
                    StartedTime = $Service.serviceStatus.startedTime
                    Status = $Service.serviceStatus.serviceInitializationStatus
                    ErrorMessage = $Service.serviceStatus.errorMessage
                    IdentityCertificateInfo = $Service.serviceStatus.identityCertificateInfo
                    ServiceRegistrationId = $Service.serviceStatus.serviceRegistrationId
                    SSLCertificateInfo = $Service.serviceStatus.sslCertificateInfo
                    DefaultServiceEndpointType = $Service.serviceStatus.defaultServiceEndpointType

                }

            }
    
        }
           
    }
    catch [Exception]{
        
        throw

    }   
     
}