Add parameter sets and logic for ID/Query searches

This commit is contained in:
Ben Claussen 2020-10-05 10:43:22 -04:00
parent b72684709a
commit 18852aa990
4 changed files with 201 additions and 60 deletions

View file

@ -96,62 +96,101 @@ function Get-NetboxIPAMPrefix {
[CmdletBinding(DefaultParameterSetName = 'Query')] [CmdletBinding(DefaultParameterSetName = 'Query')]
param param
( (
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Prefix, [string]$Prefix,
[Parameter(ParameterSetName = 'Query')]
[string]$Query, [string]$Query,
[uint16[]]$Id, [Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Family, [object]$Family,
[Parameter(ParameterSetName = 'Query')]
[boolean]$Is_Pool, [boolean]$Is_Pool,
[Parameter(ParameterSetName = 'Query')]
[string]$Within, [string]$Within,
[Parameter(ParameterSetName = 'Query')]
[string]$Within_Include, [string]$Within_Include,
[Parameter(ParameterSetName = 'Query')]
[string]$Contains, [string]$Contains,
[Parameter(ParameterSetName = 'Query')]
[ValidateRange(0, 127)] [ValidateRange(0, 127)]
[byte]$Mask_Length, [byte]$Mask_Length,
[Parameter(ParameterSetName = 'Query')]
[string]$VRF, [string]$VRF,
[uint16]$VRF_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$VRF_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Tenant, [string]$Tenant,
[uint16]$Tenant_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Site, [string]$Site,
[uint16]$Site_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Site_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Vlan_VId, [string]$Vlan_VId,
[uint16]$Vlan_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Vlan_Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Status, [object]$Status,
[Parameter(ParameterSetName = 'Query')]
[string]$Role, [string]$Role,
[uint16]$Role_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Role_Id,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit, [uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset, [uint16]$Offset,
[switch]$Raw [switch]$Raw
) )
if ($null -ne $Family) { # if ($null -ne $Family) {
$PSBoundParameters.Family = ValidateIPAMChoice -ProvidedValue $Family -PrefixFamily # $PSBoundParameters.Family = ValidateIPAMChoice -ProvidedValue $Family -PrefixFamily
# }
#
# if ($null -ne $Status) {
# $PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -PrefixStatus
# }
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($Prefix_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'prefixes', $Prefix_ID))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
} }
if ($null -ne $Status) { break
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -PrefixStatus
} }
default {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'prefixes')) $Segments = [System.Collections.ArrayList]::new(@('ipam', 'prefixes'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
@ -159,4 +198,8 @@ function Get-NetboxIPAMPrefix {
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
} }

View file

@ -41,23 +41,47 @@ function Get-NetboxIPAMRole {
[CmdletBinding()] [CmdletBinding()]
param param
( (
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Name, [string]$Name,
[Parameter(ParameterSetName = 'Query')]
[string]$Query, [string]$Query,
[uint16[]]$Id, [Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Slug, [string]$Slug,
[Parameter(ParameterSetName = 'Query')]
[switch]$Brief, [switch]$Brief,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit, [uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset, [uint16]$Offset,
[switch]$Raw [switch]$Raw
) )
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($Role_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'roles', $Role_ID))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
break
}
default {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'roles')) $Segments = [System.Collections.ArrayList]::new(@('ipam', 'roles'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
@ -65,4 +89,8 @@ function Get-NetboxIPAMRole {
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
} }

View file

@ -16,49 +16,85 @@ function Get-NetboxIPAMVLAN {
[CmdletBinding()] [CmdletBinding()]
param param
( (
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[ValidateRange(1, 4096)]
[uint16]$VID, [uint16]$VID,
[uint16[]]$Id, [Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query, [string]$Query,
[Parameter(ParameterSetName = 'Query')]
[string]$Name, [string]$Name,
[Parameter(ParameterSetName = 'Query')]
[string]$Tenant, [string]$Tenant,
[uint16]$Tenant_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$TenantGroup, [string]$TenantGroup,
[uint16]$TenantGroup_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$TenantGroup_Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Status, [object]$Status,
[Parameter(ParameterSetName = 'Query')]
[string]$Region, [string]$Region,
[Parameter(ParameterSetName = 'Query')]
[string]$Site, [string]$Site,
[uint16]$Site_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Site_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Group, [string]$Group,
[uint16]$Group_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Group_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Role, [string]$Role,
[uint16]$Role_Id, [Parameter(ParameterSetName = 'Query')]
[uint32]$Role_Id,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit, [uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset, [uint16]$Offset,
[switch]$Raw [switch]$Raw
) )
if ($null -ne $Status) { # if ($null -ne $Status) {
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -VLANStatus # $PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -VLANStatus
# }
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($VLAN_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'vlans', $VLAN_ID))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
} }
break
}
default {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'vlans')) $Segments = [System.Collections.ArrayList]::new(@('ipam', 'vlans'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
@ -66,6 +102,10 @@ function Get-NetboxIPAMVLAN {
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
} }

View file

@ -23,15 +23,15 @@ function Get-NetboxTenant {
.PARAMETER Name .PARAMETER Name
The specific name of the tenant. Must match exactly as is defined in Netbox The specific name of the tenant. Must match exactly as is defined in Netbox
.PARAMETER Slug
The specific slug of the tenant. Must match exactly as is defined in Netbox
.PARAMETER Id .PARAMETER Id
The database ID of the tenant The database ID of the tenant
.PARAMETER Query .PARAMETER Query
A standard search query that will match one or more tenants. A standard search query that will match one or more tenants.
.PARAMETER Slug
The specific slug of the tenant. Must match exactly as is defined in Netbox
.PARAMETER Group .PARAMETER Group
The specific group as defined in Netbox. The specific group as defined in Netbox.
@ -57,30 +57,56 @@ function Get-NetboxTenant {
Additional information about the function. Additional information about the function.
#> #>
[CmdletBinding()] [CmdletBinding(DefaultParameterSetName = 'Query')]
param param
( (
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Name, [string]$Name,
[string]$Slug, [Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[uint16[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query, [string]$Query,
[Parameter(ParameterSetName = 'Query')]
[string]$Slug,
[Parameter(ParameterSetName = 'Query')]
[string]$Group, [string]$Group,
[Parameter(ParameterSetName = 'Query')]
[uint16]$GroupID, [uint16]$GroupID,
[Parameter(ParameterSetName = 'Query')]
[hashtable]$CustomFields, [hashtable]$CustomFields,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit, [uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset, [uint16]$Offset,
[switch]$Raw [switch]$Raw
) )
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($Tenant_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants', $Tenant_ID))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
break
}
default {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants')) $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
@ -88,4 +114,8 @@ function Get-NetboxTenant {
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
} }