Files
ZertoApiWrapper/ZertoApiWrapper/Public/Get-ZertoVirtualizationSite.ps1
T
Wes Carroll e3cba682c7 DRY Refactor
2020-04-09 10:37:36 -04:00

186 lines
6.6 KiB
PowerShell

<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
function Get-ZertoVirtualizationSite {
[cmdletbinding( DefaultParameterSetName = "main" )]
param(
[Parameter(
ParameterSetName = "siteIdentifier",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "datastoreClusters",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "datastores",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "hostClusters",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "hosts",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "networks",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "resourcePools",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "vms",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "devices",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "folders",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[Parameter(
ParameterSetName = "repositories",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[ValidateNotNullOrEmpty()]
[Alias("siteId")]
[string]$siteIdentifier,
[Parameter(
ParameterSetName = "datastoreClusters",
Mandatory = $true,
HelpMessage = "When selected, will return all datastore clusters at the specified site."
)]
[switch]$datastoreClusters,
[Parameter(
ParameterSetName = "datastores",
Mandatory = $true,
HelpMessage = "When selected, will return all datastores at the specified site."
)]
[switch]$datastores,
[Parameter(
ParameterSetName = "devices",
Mandatory = $true,
HelpMessage = "When selected, will return all devices at the specified site."
)]
[switch]$devices,
[Parameter(
ParameterSetName = "devices",
Mandatory = $false,
HelpMessage = "The identifier of the host for which to return all devices."
)]
[Parameter(
ParameterSetName = "hosts",
Mandatory = $false,
HelpMessage = "The identifier of the host at the selected site to return information for only one host."
)]
[ValidateNotNullOrEmpty()]
[Alias("hostId")]
[string]$hostIdentifier,
[Parameter(
ParameterSetName = "folders",
Mandatory = $true,
HelpMessage = "Return all folders at the selected site."
)]
[switch]$folders,
[Parameter(
ParameterSetName = "hostClusters",
Mandatory = $true,
HelpMessage = "Return all host clusters at the selected site."
)]
[switch]$hostClusters,
[Parameter(
ParameterSetName = "hosts",
Mandatory = $true,
HelpMessage = "Return all hosts at the selected site. If a host identifier is provided, return only that host."
)]
[switch]$hosts,
[Parameter(
ParameterSetName = "networks",
Mandatory = $true,
HelpMessage = "Return all networks at the selected site."
)]
[switch]$networks,
[Parameter(
ParameterSetName = "resourcePools",
Mandatory = $true,
HelpMessage = "Return all resource pools at the selected site."
)]
[switch]$resourcePools,
[Parameter(
ParameterSetName = "vms",
Mandatory = $true,
HelpMessage = "Return all VMs at the selected site."
)]
[switch]$vms,
[Parameter(
ParameterSetName = "repositories",
Mandatory = $true,
HelpMessage = "The identifier of the Zerto Virtual Manager site."
)]
[switch]$repositories
)
begin {
}
process {
# Return information based on ParameterSetName invoked.
$baseUri = "virtualizationsites"
switch ( $PSCmdlet.ParameterSetName ) {
# If no ParameterSetName is specified, return all data
"main" {
$uri = $baseUri
}
# If devices is specified along with a hostId, build return just that host information, otherwise return all devices at the site
"devices" {
if ( $PSBoundParameters.ContainsKey( "hostIdentifier" ) ) {
$uri = "{0}/{1}/devices?hostIdentifier={2}" -f $baseUri, $siteIdentifier, $hostIdentifier
} else {
$uri = "{0}/{1}/devices" -f $baseUri, $siteIdentifier
}
}
# If hosts is specified along with a hostID, build and return just that host information, otherwise return all hosts at the site
"hosts" {
if ( $PSBoundParameters.ContainsKey( "hostIdentifier" ) ) {
$uri = "{0}/{1}/hosts/{2}" -f $baseUri, $siteIdentifier, $hostIdentifier
} else {
$uri = "{0}/{1}/hosts" -f $baseUri, $siteIdentifier
}
}
# If siteIdentifier is specified, return information for that site.
"siteIdentifier" {
$uri = "{0}/{1}" -f $baseUri, $siteIdentifier
}
# If a different ParameterSetName is selected, use that information to build the URI and return that information
default {
$uri = "{0}/{1}/{2}" -f $baseUri, $siteIdentifier, $PSCmdlet.ParameterSetName.ToLower()
}
}
Invoke-ZertoRestRequest -uri $uri
}
end {
}
}