Modules/networks.psm1
#GET/rest/v2.0/dd-systems/{SYSTEM-ID}/networks function Get-DDnetworks { [CmdletBinding()] param ( [CmdletBinding()] [Parameter(Mandatory = $true, ParameterSetName = 'host-names' )] [switch]$hostnames, [Parameter(Mandatory = $true, ParameterSetName = 'domain-names' )] [switch]$domainnames, [Parameter(Mandatory = $true, ParameterSetName = 'search-domains' )] [switch]$searchdomains, [Parameter(Mandatory = $true, ParameterSetName = 'dns-servers' )] [switch]$dnsservers, [Parameter(Mandatory = $true, ParameterSetName = 'gateways' )] [switch]$Gateways, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces' )] [switch]$Interfaces, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces/physicals' )] [switch]$PhysicalInterfaces, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces/vlans' )] [switch]$VlanInterfaces, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces/aliases' )] [switch]$AliasInterfaces, [Parameter(Mandatory = $true, ParameterSetName = 'nics' )] [switch]$nics, [Parameter(Mandatory = $false, ParameterSetName = 'default')] [Parameter(Mandatory = $false, ParameterSetName = 'host-names' )] [Parameter(Mandatory = $false, ParameterSetName = 'domain-names' )] [Parameter(Mandatory = $false, ParameterSetName = 'search-domains' )] [Parameter(Mandatory = $false, ParameterSetName = 'dns-servers' )] [Parameter(Mandatory = $false, ParameterSetName = 'gateways' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces/physicals' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces/vlans' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces/aliases' )] [Parameter(Mandatory = $false, ParameterSetName = 'nics' )] [string] $SYSTEM_ID = $Global:DD_UUID, $body = @{} ) begin { $Response = @() $METHOD = "GET" $apiver = "api/v3" } process { switch ($PsCmdlet.ParameterSetName) { $PsCmdlet.ParameterSetName { $uri = "dd-systems/$($SYSTEM_ID)/networks/$($PsCmdlet.ParameterSetName)" } 'default' { $uri = "dd-systems/$($SYSTEM_ID)/networks" } 'nics' { $apiver = "rest/v2.0" $uri = "dd-systems/$($SYSTEM_ID)/networks/nics" } } $parameters = @{ uri = $uri apiver = $apiver Method = $METHOD body = $body RequestMethod = "REST" Verbose = $PSBoundParameters['Verbose'] -eq $true Debug = $PSBoundParameters['Debug'] -eq $true } try { $Response += Invoke-DDapirequest @Parameters } catch { Get-DDWebException -ExceptionMessage $_ break } write-verbose ($response | Out-String) } end { switch ($PsCmdlet.ParameterSetName) { default { $response | Select-Object -ExcludeProperty link, paging_info } 'nics' { $response.nics | Select-Object -ExcludeProperty link, paging_info } 'interfaces' { $response.interfaces | Select-Object -ExcludeProperty link, paging_info } 'gateways' { $response.defaultGateways | Select-Object -ExcludeProperty link, paging_info } 'search-domains' { $response | Select-Object -ExcludeProperty link, paging_info } 'interfaces/physicals' { $response.physicalInterfaces | Select-Object -ExcludeProperty link, paging_info } } } } function Reset-DDnetworks { [CmdletBinding()] param ( [CmdletBinding()] [Parameter(Mandatory = $true, ParameterSetName = 'host-names' )] [switch]$hostnames, [Parameter(Mandatory = $true, ParameterSetName = 'domain-names' )] [switch]$domainnames, [Parameter(Mandatory = $true, ParameterSetName = 'search-domains' )] [switch]$searchdomains, [Parameter(Mandatory = $true, ParameterSetName = 'dns-servers' )] [switch]$dnsservers, [Parameter(Mandatory = $true, ParameterSetName = 'gateways' )] [switch]$Gateways, [Parameter(Mandatory = $false, ParameterSetName = 'host-names' )] [Parameter(Mandatory = $false, ParameterSetName = 'domain-names' )] [Parameter(Mandatory = $false, ParameterSetName = 'search-domains' )] [Parameter(Mandatory = $false, ParameterSetName = 'dns-servers' )] [Parameter(Mandatory = $false, ParameterSetName = 'gateways' )] [string] $SYSTEM_ID = $Global:DD_UUID, $body = @{} ) begin { $Response = @() $METHOD = "PUT" $apiver = "api/v3" } process { switch ($PsCmdlet.ParameterSetName) { $PsCmdlet.ParameterSetName { $uri = "dd-systems/$($SYSTEM_ID)/networks/$($PsCmdlet.ParameterSetName)/reset" } } $parameters = @{ uri = $uri apiver = $apiver Method = $METHOD body = $body RequestMethod = "REST" Verbose = $PSBoundParameters['Verbose'] -eq $true Debug = $PSBoundParameters['Debug'] -eq $true } try { $Response += Invoke-DDapirequest @Parameters } catch { Get-DDWebException -ExceptionMessage $_ break } write-verbose ($response | Out-String) } end { switch ($PsCmdlet.ParameterSetName) { default { $response | Select-Object -ExcludeProperty link, paging_info } } } } #PUT/rest/v2.0/dd-systems/{SYSTEM-ID}/networks function Set-DDnetworks { [CmdletBinding()] param ( [CmdletBinding()] [Parameter(Mandatory = $true, ParameterSetName = 'host-names' )] [string]$hostName, [Parameter(Mandatory = $true, ParameterSetName = 'domain-names' )] [string]$domainName, [Parameter(Mandatory = $true, ParameterSetName = 'search-domains' )] [string[]]$searchDomain, [Parameter(Mandatory = $true, ParameterSetName = 'dns-servers' )] [ValidateCount(1, 3)] [string[]]$dnsServerIpAddresses, [Parameter(Mandatory = $true, ParameterSetName = 'gateways' )] [switch]$Gateways, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces' )] [switch]$Interfaces, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces/physicals' )] [switch]$PhysicalInterfaces, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces/vlans' )] [switch]$VlanInterfaces, [Parameter(Mandatory = $true, ParameterSetName = 'interfaces/aliases' )] [switch]$AliasInterfaces, [Parameter(Mandatory = $true, ParameterSetName = 'nics' )] [switch]$nics, [Parameter(Mandatory = $false, ParameterSetName = 'default')] [Parameter(Mandatory = $false, ParameterSetName = 'host-names' )] [Parameter(Mandatory = $false, ParameterSetName = 'domain-names' )] [Parameter(Mandatory = $false, ParameterSetName = 'search-domains' )] [Parameter(Mandatory = $false, ParameterSetName = 'dns-servers' )] [Parameter(Mandatory = $false, ParameterSetName = 'gateways' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces/physicals' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces/vlans' )] [Parameter(Mandatory = $false, ParameterSetName = 'interfaces/aliases' )] [Parameter(Mandatory = $false, ParameterSetName = 'nics' )] [string] $SYSTEM_ID = $Global:DD_UUID, $body = @{} ) begin { $Response = @() $METHOD = "PUT" $apiver = "api/v3" } process { switch ($PsCmdlet.ParameterSetName) { 'dns-servers' { $uri = "dd-systems/$($SYSTEM_ID)/networks/$($PsCmdlet.ParameterSetName)" $body.Add('dnsServerIpAddresses', $dnsServerIpAddresses) $body = $body | ConvertTo-Json } 'domain-names' { $uri = "dd-systems/$($SYSTEM_ID)/networks/$($PsCmdlet.ParameterSetName)" $body.Add('domainName', $domainName) $body = $body | ConvertTo-Json } 'host-names' { $uri = "dd-systems/$($SYSTEM_ID)/networks/$($PsCmdlet.ParameterSetName)" $body.Add('hostName', $hostName) $body = $body | ConvertTo-Json } 'search-domains' { $uri = "dd-systems/$($SYSTEM_ID)/networks/$($PsCmdlet.ParameterSetName)" $body.Add('searchDomains', $searchDomain) $body = $body | ConvertTo-Json } default { $uri = "dd-systems/$($SYSTEM_ID)/networks" } 'nics' { $apiver = "rest/v2.0" $uri = "dd-systems/$($SYSTEM_ID)/networks/nics" } } Write-Verbose ($body | Out-String) $parameters = @{ uri = $uri apiver = $apiver Method = $METHOD body = $body RequestMethod = "REST" Verbose = $PSBoundParameters['Verbose'] -eq $true Debug = $PSBoundParameters['Debug'] -eq $true } try { $Response += Invoke-DDapirequest @Parameters } catch { Get-DDWebException -ExceptionMessage $_ break } write-verbose ($response | Out-String) } end { switch ($PsCmdlet.ParameterSetName) { default { $response | Select-Object -ExcludeProperty link, paging_info } 'nics' { $responsev | Select-Object -ExcludeProperty link, paging_info } 'interfaces' { $response | Select-Object -ExcludeProperty link, paging_info } 'gateways' { $response | Select-Object -ExcludeProperty link, paging_info } 'search-domains' { $response | Select-Object -ExcludeProperty link, paging_info } 'interfaces/physicals' { $response.physicalInterfaces | Select-Object -ExcludeProperty link, paging_info } } } } <# { "description": "Network DNS Servers Modify", "required": [ "dnsServerIpAddresses" ], "type": "object", "properties": { "dnsServerIpAddresses": { "type": "array", "minItems": 1, "maxItems": 3, "items": { "type": "string" } } } }#> |