mirror of
https://github.com/benclaussen/NetboxPS.git
synced 2025-12-13 01:42:28 +00:00
Version 1.3.0 (#3)
* Add `OPTIONS` method validation * Remove parameter validation as workaround for CHOICES API endpoint until further testing * Add help block for Get-NetboxTenant * SkipConnectedCheck for Get-NetboxAPIDefinition * Correct help block for New-NetboxIPAMAddress * Add parameter position 0 for 'Address' in Get-NetboxIPAMAddress * Allow pipeline input for Address parameter in New-NetboxIPAMAddress * Update parameter types * Add parameter sets and logic for ID/Query searches * Add Get-NetboxDCIMSite * Update psproj * Update deploy.ps1 * Move Get-NetboxCircuit * Add Circuit cmdlets - New-NetboxCircuit - Get-NetboxCircuitProvider - Get-NetboxCircuitTermination - Get-NetboxCircuitType * Update deploy script output path * Update Set-NetboxIPAMAddress - Replace Interface parameter with Assigned_Object_Type and Assigned_Object_Id - Add validation logic for Assigned_Object_ parameters - Change Status parameter to string * Add Get-ModelDefinition function * Update psproj * Update deploy.ps1 variables * Update exported files * Remove references to `_choices` API calls * Add Postman collection * Add Postman collection * Update deploy.ps1 * Add Set-NetboxIPAMPrefix function * Increment version to 1.3.0 Co-authored-by: Ben Claussen <claussen@neonet.org>
This commit is contained in:
parent
55510e5f03
commit
cfb53cf933
54 changed files with 3991 additions and 2033 deletions
131
Functions/Circuits/Circuits/Get-NetboxCircuit.ps1
Normal file
131
Functions/Circuits/Circuits/Get-NetboxCircuit.ps1
Normal file
|
|
@ -0,0 +1,131 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
||||||
|
Created on: 3/23/2020 12:15
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Get-NetboxCircuit.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
function Get-NetboxCircuit {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Gets one or more circuits
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
A detailed description of the Get-NetboxCircuit function.
|
||||||
|
|
||||||
|
.PARAMETER Id
|
||||||
|
Database ID of circuit. This will query for exactly the IDs provided
|
||||||
|
|
||||||
|
.PARAMETER CID
|
||||||
|
Circuit ID
|
||||||
|
|
||||||
|
.PARAMETER InstallDate
|
||||||
|
Date of installation
|
||||||
|
|
||||||
|
.PARAMETER CommitRate
|
||||||
|
Committed rate in Kbps
|
||||||
|
|
||||||
|
.PARAMETER Query
|
||||||
|
A raw search query... As if you were searching the web site
|
||||||
|
|
||||||
|
.PARAMETER Provider
|
||||||
|
The name or ID of the provider. Provide either [string] or [int]. String will search provider names, integer will search database IDs
|
||||||
|
|
||||||
|
.PARAMETER Type
|
||||||
|
Type of circuit. Provide either [string] or [int]. String will search provider type names, integer will search database IDs
|
||||||
|
|
||||||
|
.PARAMETER Site
|
||||||
|
Location/site of circuit. Provide either [string] or [int]. String will search site names, integer will search database IDs
|
||||||
|
|
||||||
|
.PARAMETER Tenant
|
||||||
|
Tenant assigned to circuit. Provide either [string] or [int]. String will search tenant names, integer will search database IDs
|
||||||
|
|
||||||
|
.PARAMETER Limit
|
||||||
|
A description of the Limit parameter.
|
||||||
|
|
||||||
|
.PARAMETER Offset
|
||||||
|
A description of the Offset parameter.
|
||||||
|
|
||||||
|
.PARAMETER Raw
|
||||||
|
A description of the Raw parameter.
|
||||||
|
|
||||||
|
.PARAMETER ID__IN
|
||||||
|
Multiple unique DB IDs to retrieve
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
PS C:\> Get-NetboxCircuit
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Additional information about the function.
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'Query')]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(ParameterSetName = 'ById')]
|
||||||
|
[uint16[]]$Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$CID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[datetime]$InstallDate,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$CommitRate,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[object]$Provider,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[object]$Type,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Site,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Tenant,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
|
[switch]$Raw
|
||||||
|
)
|
||||||
|
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
|
foreach ($i in $ID) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuits', $i))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName "Id"
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuits'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
67
Functions/Circuits/Circuits/New-NetboxCircuit.ps1
Normal file
67
Functions/Circuits/Circuits/New-NetboxCircuit.ps1
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.181
|
||||||
|
Created on: 2020-11-04 11:48
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: New-NetboxCircuit.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function New-NetboxCircuit {
|
||||||
|
[CmdletBinding(ConfirmImpact = 'Low',
|
||||||
|
SupportsShouldProcess = $true)]
|
||||||
|
[OutputType([pscustomobject])]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(Mandatory = $true,
|
||||||
|
ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[string]$CID,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[uint32]$Provider,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[uint32]$Type,
|
||||||
|
|
||||||
|
#[ValidateSet('Active', 'Planned', 'Provisioning', 'Offline', 'Deprovisioning', 'Decommissioned ')]
|
||||||
|
[uint16]$Status = 'Active',
|
||||||
|
|
||||||
|
[string]$Description,
|
||||||
|
|
||||||
|
[uint32]$Tenant,
|
||||||
|
|
||||||
|
[string]$Termination_A,
|
||||||
|
|
||||||
|
[datetime]$Install_Date,
|
||||||
|
|
||||||
|
[string]$Termination_Z,
|
||||||
|
|
||||||
|
[ValidateRange(0, 2147483647)]
|
||||||
|
[uint32]$Commit_Rate,
|
||||||
|
|
||||||
|
[string]$Comments,
|
||||||
|
|
||||||
|
[hashtable]$Custom_Fields,
|
||||||
|
|
||||||
|
[switch]$Force,
|
||||||
|
|
||||||
|
[switch]$Raw
|
||||||
|
)
|
||||||
|
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuits'))
|
||||||
|
$Method = 'POST'
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments
|
||||||
|
|
||||||
|
if ($Force -or $PSCmdlet.ShouldProcess($CID, 'Create new circuit')) {
|
||||||
|
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/23/2020 12:15
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: Get-NetboxCircuit.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxCircuit {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Gets one or more circuits
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
A detailed description of the Get-NetboxCircuit function.
|
|
||||||
|
|
||||||
.PARAMETER CID
|
|
||||||
Circuit ID
|
|
||||||
|
|
||||||
.PARAMETER InstallDate
|
|
||||||
Date of installation
|
|
||||||
|
|
||||||
.PARAMETER CommitRate
|
|
||||||
Committed rate in Kbps
|
|
||||||
|
|
||||||
.PARAMETER Query
|
|
||||||
A raw search query... As if you were searching the web site
|
|
||||||
|
|
||||||
.PARAMETER Provider
|
|
||||||
The name or ID of the provider. Provide either [string] or [int]. String will search provider names, integer will search database IDs
|
|
||||||
|
|
||||||
.PARAMETER Type
|
|
||||||
Type of circuit. Provide either [string] or [int]. String will search provider type names, integer will search database IDs
|
|
||||||
|
|
||||||
.PARAMETER Site
|
|
||||||
Location/site of circuit. Provide either [string] or [int]. String will search site names, integer will search database IDs
|
|
||||||
|
|
||||||
.PARAMETER Tenant
|
|
||||||
Tenant assigned to circuit. Provide either [string] or [int]. String will search tenant names, integer will search database IDs
|
|
||||||
|
|
||||||
.PARAMETER Id
|
|
||||||
Database ID of circuit. This will query for exactly the IDs provided
|
|
||||||
|
|
||||||
.PARAMETER ID__IN
|
|
||||||
Multiple unique DB IDs to retrieve
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> Get-NetboxCircuit
|
|
||||||
|
|
||||||
.NOTES
|
|
||||||
Additional information about the function.
|
|
||||||
#>
|
|
||||||
|
|
||||||
[CmdletBinding()]
|
|
||||||
param
|
|
||||||
(
|
|
||||||
[string]$CID,
|
|
||||||
|
|
||||||
[datetime]$InstallDate,
|
|
||||||
|
|
||||||
[uint32]$CommitRate,
|
|
||||||
|
|
||||||
[string]$Query,
|
|
||||||
|
|
||||||
[object]$Provider,
|
|
||||||
|
|
||||||
[object]$Type,
|
|
||||||
|
|
||||||
[string]$Site,
|
|
||||||
|
|
||||||
[string]$Tenant,
|
|
||||||
|
|
||||||
[uint16[]]$Id
|
|
||||||
)
|
|
||||||
|
|
||||||
#TODO: Place script here
|
|
||||||
}
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/23/2020 12:15
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: Get-NetboxCircuitsChoices.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxCircuitsChoices {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Gets the choices associated with circuits
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
A detailed description of the Get-NetboxCircuitsChoices function.
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> Get-NetboxCircuitsChoices
|
|
||||||
|
|
||||||
.NOTES
|
|
||||||
Additional information about the function.
|
|
||||||
#>
|
|
||||||
|
|
||||||
[CmdletBinding()]
|
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "These are literally 'choices' in Netbox")]
|
|
||||||
param ()
|
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('circuits', '_choices'))
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri
|
|
||||||
}
|
|
||||||
72
Functions/Circuits/Providers/Get-NetboxCircuitProvider.ps1
Normal file
72
Functions/Circuits/Providers/Get-NetboxCircuitProvider.ps1
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.181
|
||||||
|
Created on: 2020-11-04 12:06
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Get-NetboxCircuitProvider.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Get-NetboxCircuitProvider {
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'Query')]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(ParameterSetName = 'ById',
|
||||||
|
Mandatory = $true)]
|
||||||
|
[uint16[]]$Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query',
|
||||||
|
Mandatory = $false)]
|
||||||
|
[string]$Name,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Slug,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$ASN,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Account,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
|
[switch]$Raw
|
||||||
|
)
|
||||||
|
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
|
foreach ($i in $ID) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'providers', $i))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName "Id"
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'providers'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.181
|
||||||
|
Created on: 2020-11-04 10:22
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Get-NetboxCircuitTermination.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Get-NetboxCircuitTermination {
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'Query')]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(ParameterSetName = 'ById',
|
||||||
|
ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[uint32[]]$Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Circuit_ID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Term_Side,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Port_Speed,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Site_ID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Site,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$XConnect_ID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
|
[switch]$Raw
|
||||||
|
)
|
||||||
|
|
||||||
|
process {
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
|
foreach ($i in $ID) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuit-terminations', $i))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName "Id"
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuit-terminations'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
64
Functions/Circuits/Types/Get-NetboxCircuitType.ps1
Normal file
64
Functions/Circuits/Types/Get-NetboxCircuitType.ps1
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.181
|
||||||
|
Created on: 2020-11-04 12:34
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Get-NetboxCircuitType.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Get-NetboxCircuitType {
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'Query')]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(ParameterSetName = 'ById')]
|
||||||
|
[uint16[]]$Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Name,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Slug,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
|
[switch]$Raw
|
||||||
|
)
|
||||||
|
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
|
foreach ($i in $ID) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuit_types', $i))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName "Id"
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuit-types'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -64,21 +64,21 @@ function New-NetboxDCIMDevice {
|
||||||
)
|
)
|
||||||
#endregion Parameters
|
#endregion Parameters
|
||||||
|
|
||||||
if ($null -ne $Device_Role) {
|
# if ($null -ne $Device_Role) {
|
||||||
# Validate device role?
|
# # Validate device role?
|
||||||
}
|
# }
|
||||||
|
#
|
||||||
if ($null -ne $Device_Type) {
|
# if ($null -ne $Device_Type) {
|
||||||
# Validate device type?
|
# # Validate device type?
|
||||||
}
|
# }
|
||||||
|
#
|
||||||
if ($null -ne $Status) {
|
# if ($null -ne $Status) {
|
||||||
$PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus
|
# $PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus
|
||||||
}
|
# }
|
||||||
|
#
|
||||||
if ($null -ne $Face) {
|
# if ($null -ne $Face) {
|
||||||
$PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace
|
# $PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace
|
||||||
}
|
# }
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'devices'))
|
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'devices'))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,13 +64,13 @@ function Set-NetboxDCIMDevice {
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
begin {
|
||||||
if ($null -ne $Status) {
|
# if ($null -ne $Status) {
|
||||||
$PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus
|
# $PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus
|
||||||
}
|
# }
|
||||||
|
#
|
||||||
if ($null -ne $Face) {
|
# if ($null -ne $Face) {
|
||||||
$PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace
|
# $PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace
|
||||||
}
|
# }
|
||||||
}
|
}
|
||||||
|
|
||||||
process {
|
process {
|
||||||
|
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/23/2020 12:13
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: Get-NetboxDCIMChoices.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxDCIMChoices {
|
|
||||||
[CmdletBinding()]
|
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "These are literally 'choices' in Netbox")]
|
|
||||||
param ()
|
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('dcim', '_choices'))
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments -Parameters $Parameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri
|
|
||||||
}
|
|
||||||
|
|
@ -47,9 +47,9 @@ function Add-NetboxDCIMInterface {
|
||||||
[uint16[]]$Tagged_VLANs
|
[uint16[]]$Tagged_VLANs
|
||||||
)
|
)
|
||||||
|
|
||||||
if ($null -ne $Form_Factor) {
|
# if ($null -ne $Form_Factor) {
|
||||||
$PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor
|
# $PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor
|
||||||
}
|
# }
|
||||||
|
|
||||||
if (-not [System.String]::IsNullOrWhiteSpace($Mode)) {
|
if (-not [System.String]::IsNullOrWhiteSpace($Mode)) {
|
||||||
$PSBoundParameters.Mode = switch ($Mode) {
|
$PSBoundParameters.Mode = switch ($Mode) {
|
||||||
|
|
|
||||||
|
|
@ -50,9 +50,9 @@ function Set-NetboxDCIMInterface {
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
begin {
|
||||||
if ($null -ne $Form_Factor) {
|
# if ($null -ne $Form_Factor) {
|
||||||
$PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor
|
# $PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor
|
||||||
}
|
# }
|
||||||
|
|
||||||
if (-not [System.String]::IsNullOrWhiteSpace($Mode)) {
|
if (-not [System.String]::IsNullOrWhiteSpace($Mode)) {
|
||||||
$PSBoundParameters.Mode = switch ($Mode) {
|
$PSBoundParameters.Mode = switch ($Mode) {
|
||||||
|
|
|
||||||
|
|
@ -60,9 +60,9 @@ function Set-NetboxDCIMInterfaceConnection {
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
begin {
|
||||||
if ($null -ne $Connection_Status) {
|
# if ($null -ne $Connection_Status) {
|
||||||
$PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus
|
# $PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus
|
||||||
}
|
# }
|
||||||
|
|
||||||
if ((@($ID).Count -gt 1) -and ($Interface_A -or $Interface_B)) {
|
if ((@($ID).Count -gt 1) -and ($Interface_A -or $Interface_B)) {
|
||||||
throw "Cannot set multiple connections to the same interface"
|
throw "Cannot set multiple connections to the same interface"
|
||||||
|
|
|
||||||
108
Functions/DCIM/Sites/Get-NetboxDCIMSite.ps1
Normal file
108
Functions/DCIM/Sites/Get-NetboxDCIMSite.ps1
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.181
|
||||||
|
Created on: 2020-10-02 15:52
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Get-NetboxDCIMSite.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Get-NetboxDCIMSite {
|
||||||
|
[CmdletBinding()]
|
||||||
|
[OutputType([pscustomobject])]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(ParameterSetName = 'ByID', ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[uint32]$Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Name,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Slug,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Facility,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$ASN,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[decimal]$Latitude,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[decimal]$Longitude,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Contact_Name,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Contact_Phone,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Contact_Email,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Tenant_Group_ID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Tenant_Group,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Tenant_ID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Tenant,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Status,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Region_ID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Region,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
|
[switch]$Raw
|
||||||
|
)
|
||||||
|
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
|
foreach ($Site_ID in $ID) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'sites', $Site_Id))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName "Id"
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'sites'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
||||||
function ValidateDCIMChoice {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Internal function to validate provided values for static choices
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
When users connect to the API, choices for each major object are cached to the config variable.
|
|
||||||
These values are then utilized to validate if the provided value from a user is valid.
|
|
||||||
|
|
||||||
.PARAMETER ProvidedValue
|
|
||||||
The value to validate against static choices
|
|
||||||
|
|
||||||
.PARAMETER PowerConnectionStatus
|
|
||||||
Validate against power connection status values
|
|
||||||
|
|
||||||
.PARAMETER InterfaceTemplateFormFactor
|
|
||||||
Validate against interface template form factor values
|
|
||||||
|
|
||||||
.PARAMETER InterfaceConnectionStatus
|
|
||||||
Validate against interface connection status values
|
|
||||||
|
|
||||||
.PARAMETER InterfaceFormFactor
|
|
||||||
Validate against interface form factor values
|
|
||||||
|
|
||||||
.PARAMETER ConsolePortConnectionStatus
|
|
||||||
Validate against console port connection status values
|
|
||||||
|
|
||||||
.PARAMETER DeviceStatus
|
|
||||||
Validate against device status values
|
|
||||||
|
|
||||||
.PARAMETER DeviceFace
|
|
||||||
Validate against device face values
|
|
||||||
|
|
||||||
.PARAMETER RackType
|
|
||||||
Validate against rack type values
|
|
||||||
|
|
||||||
.PARAMETER RackWidth
|
|
||||||
Validate against rack width values.
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> ValidateDCIMChoice -ProvidedValue 'rear' -DeviceFace
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> ValidateDCIMChoice -ProvidedValue 'middle' -DeviceFace
|
|
||||||
>> Invalid value middle for device:face. Must be one of: 0, 1, Front, Rear
|
|
||||||
|
|
||||||
.OUTPUTS
|
|
||||||
This function returns the integer value if valid. Otherwise, it will throw an error.
|
|
||||||
|
|
||||||
.NOTES
|
|
||||||
Additional information about the function.
|
|
||||||
|
|
||||||
.FUNCTIONALITY
|
|
||||||
This cmdlet is intended to be used internally and not exposed to the user
|
|
||||||
#>
|
|
||||||
|
|
||||||
[CmdletBinding()]
|
|
||||||
[OutputType([uint16])]
|
|
||||||
param
|
|
||||||
(
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[object]$ProvidedValue,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'power-port:connection_status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$PowerConnectionStatus,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'interface-template:form_factor',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$InterfaceTemplateFormFactor,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'interface-connection:connection_status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$InterfaceConnectionStatus,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'interface:form_factor',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$InterfaceFormFactor,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'console-port:connection_status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$ConsolePortConnectionStatus,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'device:status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$DeviceStatus,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'device:face',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$DeviceFace,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'rack:type',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$RackType,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'rack:width',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$RackWidth
|
|
||||||
)
|
|
||||||
|
|
||||||
ValidateChoice -MajorObject 'DCIM' -ChoiceName $PSCmdlet.ParameterSetName -ProvidedValue $ProvidedValue
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
function Get-NetboxExtrasChoices {
|
|
||||||
[CmdletBinding()]
|
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "These are literally 'choices' in Netbox")]
|
|
||||||
param ()
|
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('extras', '_choices'))
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri
|
|
||||||
}
|
|
||||||
64
Functions/Helpers/Get-ModelDefinition.ps1
Normal file
64
Functions/Helpers/Get-ModelDefinition.ps1
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.181
|
||||||
|
Created on: 2020-11-04 14:23
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Get-ModelDefinition.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Get-ModelDefinition {
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'ByName')]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(ParameterSetName = 'ByName',
|
||||||
|
Mandatory = $true)]
|
||||||
|
[string]$ModelName,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'ByPath',
|
||||||
|
Mandatory = $true)]
|
||||||
|
[string]$URIPath,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'ByPath')]
|
||||||
|
[string]$Method = "post"
|
||||||
|
)
|
||||||
|
|
||||||
|
switch ($PsCmdlet.ParameterSetName) {
|
||||||
|
'ByName' {
|
||||||
|
$script:NetboxConfig.APIDefinition.definitions.$ModelName
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
'ByPath' {
|
||||||
|
switch ($Method) {
|
||||||
|
"get" {
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
"post" {
|
||||||
|
if (-not $URIPath.StartsWith('/')) {
|
||||||
|
$URIPath = "/$URIPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $URIPath.EndsWith('/')) {
|
||||||
|
$URIPath = "$URIPath/"
|
||||||
|
}
|
||||||
|
|
||||||
|
$ModelName = $script:NetboxConfig.APIDefinition.paths.$URIPath.post.parameters.schema.'$ref'.split('/')[-1]
|
||||||
|
$script:NetboxConfig.APIDefinition.definitions.$ModelName
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/26/2020 14:23
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: GetChoiceValidValues.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function GetChoiceValidValues {
|
|
||||||
[CmdletBinding()]
|
|
||||||
[OutputType([System.Collections.ArrayList])]
|
|
||||||
param
|
|
||||||
(
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[string]$MajorObject,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[object]$Choice
|
|
||||||
)
|
|
||||||
|
|
||||||
$ValidValues = New-Object System.Collections.ArrayList
|
|
||||||
|
|
||||||
if (-not $script:NetboxConfig.Choices.$MajorObject.$Choice) {
|
|
||||||
throw "Missing choices for $Choice"
|
|
||||||
}
|
|
||||||
|
|
||||||
[void]$ValidValues.AddRange($script:NetboxConfig.Choices.$MajorObject.$Choice.value)
|
|
||||||
[void]$ValidValues.AddRange($script:NetboxConfig.Choices.$MajorObject.$Choice.label)
|
|
||||||
|
|
||||||
if ($ValidValues.Count -eq 0) {
|
|
||||||
throw "Missing valid values for $MajorObject.$Choice"
|
|
||||||
}
|
|
||||||
|
|
||||||
return [System.Collections.ArrayList]$ValidValues
|
|
||||||
}
|
|
||||||
|
|
@ -27,7 +27,7 @@ function InvokeNetboxRequest {
|
||||||
[ValidateRange(0, 60)]
|
[ValidateRange(0, 60)]
|
||||||
[uint16]$Timeout = 5,
|
[uint16]$Timeout = 5,
|
||||||
|
|
||||||
[ValidateSet('GET', 'PATCH', 'PUT', 'POST', 'DELETE', IgnoreCase = $true)]
|
[ValidateSet('GET', 'PATCH', 'PUT', 'POST', 'DELETE', 'OPTIONS', IgnoreCase = $true)]
|
||||||
[string]$Method = 'GET',
|
[string]$Method = 'GET',
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
|
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/26/2020 14:23
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: ValidateChoice.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function ValidateChoice {
|
|
||||||
[CmdletBinding()]
|
|
||||||
[OutputType([uint16], [string], [bool])]
|
|
||||||
param
|
|
||||||
(
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[ValidateSet('Circuits', 'DCIM', 'Extras', 'IPAM', 'Virtualization', IgnoreCase = $true)]
|
|
||||||
[string]$MajorObject,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[string]$ChoiceName,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[object]$ProvidedValue
|
|
||||||
)
|
|
||||||
|
|
||||||
$ValidValues = GetChoiceValidValues -MajorObject $MajorObject -Choice $ChoiceName
|
|
||||||
|
|
||||||
Write-Verbose "Validating $ChoiceName"
|
|
||||||
Write-Verbose "Checking '$ProvidedValue' against [$($ValidValues -join ', ')]"
|
|
||||||
|
|
||||||
# Coercing everything to strings for matching...
|
|
||||||
# some values are integers, some are strings, some are booleans
|
|
||||||
# Join the valid values with a pipe as a delimeter, because some values have spaces
|
|
||||||
if (([string]($ValidValues -join '|') -split '\|') -inotcontains [string]$ProvidedValue) {
|
|
||||||
throw "Invalid value '$ProvidedValue' for '$ChoiceName'. Must be one of: $($ValidValues -join ', ')"
|
|
||||||
}
|
|
||||||
|
|
||||||
switch -wildcard ("$MajorObject/$ChoiceName") {
|
|
||||||
"Circuits" {
|
|
||||||
# This has things that are not integers
|
|
||||||
}
|
|
||||||
|
|
||||||
"DCIM/*connection_status" {
|
|
||||||
# This has true/false values instead of integers
|
|
||||||
try {
|
|
||||||
$val = [bool]::Parse($ProvidedValue)
|
|
||||||
} catch {
|
|
||||||
# It must not be a true/false value
|
|
||||||
$val = $script:NetboxConfig.Choices.$MajorObject.$ChoiceName.Where({
|
|
||||||
$_.Label -eq $ProvidedValue
|
|
||||||
}).Value
|
|
||||||
}
|
|
||||||
|
|
||||||
return $val
|
|
||||||
}
|
|
||||||
|
|
||||||
default {
|
|
||||||
# Convert the ProvidedValue to the integer value
|
|
||||||
try {
|
|
||||||
$intVal = [uint16]"$ProvidedValue"
|
|
||||||
} catch {
|
|
||||||
# It must not be a number, get the value from the label
|
|
||||||
$intVal = [uint16]$script:NetboxConfig.Choices.$MajorObject.$ChoiceName.Where({
|
|
||||||
$_.Label -eq $ProvidedValue
|
|
||||||
}).Value
|
|
||||||
}
|
|
||||||
|
|
||||||
return $intVal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,65 +1,93 @@
|
||||||
function Get-NetboxIPAMAddress {
|
function Get-NetboxIPAMAddress {
|
||||||
[CmdletBinding()]
|
[CmdletBinding(DefaultParameterSetName = 'Query')]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
|
[Parameter(ParameterSetName = 'Query',
|
||||||
|
Position = 0)]
|
||||||
[string]$Address,
|
[string]$Address,
|
||||||
|
|
||||||
[uint16[]]$Id,
|
[Parameter(ParameterSetName = 'ByID')]
|
||||||
|
[uint32[]]$Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[string]$Query,
|
[string]$Query,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[object]$Family,
|
[object]$Family,
|
||||||
|
|
||||||
[uint16]$Parent,
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Parent,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[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]$Device,
|
[string]$Device,
|
||||||
|
|
||||||
[uint16]$Device_ID,
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Device_ID,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[string]$Virtual_Machine,
|
[string]$Virtual_Machine,
|
||||||
|
|
||||||
[uint16]$Virtual_Machine_Id,
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Virtual_Machine_Id,
|
||||||
|
|
||||||
[uint16]$Interface_Id,
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint32]$Interface_Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[object]$Status,
|
[object]$Status,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[object]$Role,
|
[object]$Role,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[uint16]$Limit,
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[uint16]$Offset,
|
[uint16]$Offset,
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
if ($null -ne $Family) {
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
$PSBoundParameters.Family = ValidateIPAMChoice -ProvidedValue $Family -IPAddressFamily
|
'ById' {
|
||||||
|
foreach ($IP_ID in $Id) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses', $IP_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', 'ip-addresses'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -ne $Status) {
|
|
||||||
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -IPAddressStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($null -ne $Role) {
|
|
||||||
$PSBoundParameters.Role = ValidateIPAMChoice -ProvidedValue $Role -IPAddressRole
|
|
||||||
}
|
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses'))
|
|
||||||
|
|
||||||
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
|
||||||
}
|
}
|
||||||
|
|
@ -47,6 +47,9 @@ function New-NetboxIPAMAddress {
|
||||||
.PARAMETER Description
|
.PARAMETER Description
|
||||||
Description of IP address
|
Description of IP address
|
||||||
|
|
||||||
|
.PARAMETER Force
|
||||||
|
Do not prompt for confirmation to create IP.
|
||||||
|
|
||||||
.PARAMETER Raw
|
.PARAMETER Raw
|
||||||
Return raw results from API service
|
Return raw results from API service
|
||||||
|
|
||||||
|
|
@ -57,11 +60,13 @@ function New-NetboxIPAMAddress {
|
||||||
Additional information about the function.
|
Additional information about the function.
|
||||||
#>
|
#>
|
||||||
|
|
||||||
[CmdletBinding()]
|
[CmdletBinding(ConfirmImpact = 'Low',
|
||||||
|
SupportsShouldProcess = $true)]
|
||||||
[OutputType([pscustomobject])]
|
[OutputType([pscustomobject])]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[Parameter(Mandatory = $true)]
|
[Parameter(Mandatory = $true,
|
||||||
|
ValueFromPipelineByPropertyName = $true)]
|
||||||
[string]$Address,
|
[string]$Address,
|
||||||
|
|
||||||
[object]$Status = 'Active',
|
[object]$Status = 'Active',
|
||||||
|
|
@ -80,20 +85,35 @@ function New-NetboxIPAMAddress {
|
||||||
|
|
||||||
[string]$Description,
|
[string]$Description,
|
||||||
|
|
||||||
|
[switch]$Force,
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -IPAddressStatus
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses'))
|
||||||
|
$Method = 'POST'
|
||||||
|
|
||||||
if ($null -ne $Role) {
|
# # Value validation
|
||||||
$PSBoundParameters.Role = ValidateIPAMChoice -ProvidedValue $Role -IPAddressRole
|
# $ModelDefinition = GetModelDefinitionFromURIPath -Segments $Segments -Method $Method
|
||||||
}
|
# $EnumProperties = GetModelEnumProperties -ModelDefinition $ModelDefinition
|
||||||
|
#
|
||||||
$segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses'))
|
# foreach ($Property in $EnumProperties.Keys) {
|
||||||
|
# if ($PSBoundParameters.ContainsKey($Property)) {
|
||||||
$URIComponents = BuildURIComponents -URISegments $segments -ParametersDictionary $PSBoundParameters
|
# Write-Verbose "Validating property [$Property] with value [$($PSBoundParameters.$Property)]"
|
||||||
|
# $PSBoundParameters.$Property = ValidateValue -ModelDefinition $ModelDefinition -Property $Property -ProvidedValue $PSBoundParameters.$Property
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
$URI = BuildNewURI -Segments $URIComponents.Segments
|
$URI = BuildNewURI -Segments $URIComponents.Segments
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters -Raw:$Raw
|
if ($Force -or $PSCmdlet.ShouldProcess($Address, 'Create new IP address')) {
|
||||||
}
|
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,6 @@ function Remove-NetboxIPAMAddress {
|
||||||
[switch]$Force
|
[switch]$Force
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
|
||||||
}
|
|
||||||
|
|
||||||
process {
|
process {
|
||||||
foreach ($IPId in $Id) {
|
foreach ($IPId in $Id) {
|
||||||
$CurrentIP = Get-NetboxIPAMAddress -Id $IPId -ErrorAction Stop
|
$CurrentIP = Get-NetboxIPAMAddress -Id $IPId -ErrorAction Stop
|
||||||
|
|
@ -59,7 +56,4 @@ function Remove-NetboxIPAMAddress {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -23,7 +23,7 @@ function Set-NetboxIPAMAddress {
|
||||||
|
|
||||||
[string]$Address,
|
[string]$Address,
|
||||||
|
|
||||||
[object]$Status,
|
[string]$Status,
|
||||||
|
|
||||||
[uint16]$Tenant,
|
[uint16]$Tenant,
|
||||||
|
|
||||||
|
|
@ -35,7 +35,10 @@ function Set-NetboxIPAMAddress {
|
||||||
|
|
||||||
[hashtable]$Custom_Fields,
|
[hashtable]$Custom_Fields,
|
||||||
|
|
||||||
[uint16]$Interface,
|
[ValidateSet('dcim.interface', 'virtualization.vminterface', IgnoreCase = $true)]
|
||||||
|
[string]$Assigned_Object_Type,
|
||||||
|
|
||||||
|
[uint16]$Assigned_Object_Id,
|
||||||
|
|
||||||
[string]$Description,
|
[string]$Description,
|
||||||
|
|
||||||
|
|
@ -43,20 +46,39 @@ function Set-NetboxIPAMAddress {
|
||||||
)
|
)
|
||||||
|
|
||||||
begin {
|
begin {
|
||||||
if ($Status) {
|
# Write-Verbose "Validating enum properties"
|
||||||
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -IPAddressStatus
|
# $Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses', 0))
|
||||||
}
|
$Method = 'PATCH'
|
||||||
|
#
|
||||||
if ($Role) {
|
# # Value validation
|
||||||
$PSBoundParameters.Role = ValidateIPAMChoice -ProvidedValue $Role -IPAddressRole
|
# $ModelDefinition = GetModelDefinitionFromURIPath -Segments $Segments -Method $Method
|
||||||
}
|
# $EnumProperties = GetModelEnumProperties -ModelDefinition $ModelDefinition
|
||||||
|
#
|
||||||
|
# foreach ($Property in $EnumProperties.Keys) {
|
||||||
|
# if ($PSBoundParameters.ContainsKey($Property)) {
|
||||||
|
# Write-Verbose "Validating property [$Property] with value [$($PSBoundParameters.$Property)]"
|
||||||
|
# $PSBoundParameters.$Property = ValidateValue -ModelDefinition $ModelDefinition -Property $Property -ProvidedValue $PSBoundParameters.$Property
|
||||||
|
# } else {
|
||||||
|
# Write-Verbose "User did not provide a value for [$Property]"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Write-Verbose "Finished enum validation"
|
||||||
}
|
}
|
||||||
|
|
||||||
process {
|
process {
|
||||||
foreach ($IPId in $Id) {
|
foreach ($IPId in $Id) {
|
||||||
|
if ($PSBoundParameters.ContainsKey('Assigned_Object_Type') -or $PSBoundParameters.ContainsKey('Assigned_Object_Id')) {
|
||||||
|
if ((-not [string]::IsNullOrWhiteSpace($Assigned_Object_Id)) -and [string]::IsNullOrWhiteSpace($Assigned_Object_Type)) {
|
||||||
|
throw "Assigned_Object_Type is required when specifying Assigned_Object_Id"
|
||||||
|
} elseif ((-not [string]::IsNullOrWhiteSpace($Assigned_Object_Type)) -and [string]::IsNullOrWhiteSpace($Assigned_Object_Id)) {
|
||||||
|
throw "Assigned_Object_Id is required when specifying Assigned_Object_Type"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses', $IPId))
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses', $IPId))
|
||||||
|
|
||||||
Write-Verbose "Obtaining IPs from ID $IPId"
|
Write-Verbose "Obtaining IP from ID $IPId"
|
||||||
$CurrentIP = Get-NetboxIPAMAddress -Id $IPId -ErrorAction Stop
|
$CurrentIP = Get-NetboxIPAMAddress -Id $IPId -ErrorAction Stop
|
||||||
|
|
||||||
if ($Force -or $PSCmdlet.ShouldProcess($CurrentIP.Address, 'Set')) {
|
if ($Force -or $PSCmdlet.ShouldProcess($CurrentIP.Address, 'Set')) {
|
||||||
|
|
@ -64,11 +86,8 @@ function Set-NetboxIPAMAddress {
|
||||||
|
|
||||||
$URI = BuildNewURI -Segments $URIComponents.Segments
|
$URI = BuildNewURI -Segments $URIComponents.Segments
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH
|
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method $Method
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -13,37 +13,67 @@
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxIPAMAggregate {
|
function Get-NetboxIPAMAggregate {
|
||||||
[CmdletBinding()]
|
[CmdletBinding(DefaultParameterSetName = 'Query')]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[uint16]$Limit,
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
|
||||||
[uint16]$Offset,
|
|
||||||
|
|
||||||
[object]$Family,
|
|
||||||
|
|
||||||
[datetime]$Date_Added,
|
|
||||||
|
|
||||||
[uint16[]]$Id,
|
|
||||||
|
|
||||||
[string]$Query,
|
[string]$Query,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'ByID')]
|
||||||
|
[uint16[]]$Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Prefix,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[object]$Family,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[uint16]$RIR_Id,
|
[uint16]$RIR_Id,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
[string]$RIR,
|
[string]$RIR,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[datetime]$Date_Added,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
if ($null -ne $Family) {
|
# if ($null -ne $Family) {
|
||||||
$PSBoundParameters.Family = ValidateIPAMChoice -ProvidedValue $Family -AggregateFamily
|
# $PSBoundParameters.Family = ValidateIPAMChoice -ProvidedValue $Family -AggregateFamily
|
||||||
|
# }
|
||||||
|
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
|
foreach ($IP_ID in $Id) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'aggregates', $IP_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', 'aggregates'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'aggregates'))
|
|
||||||
|
|
||||||
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/19/2020 11:54
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: Get-NetboxIPAMChoices.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxIPAMChoices {
|
|
||||||
[CmdletBinding()]
|
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "These are literally 'choices' in Netbox")]
|
|
||||||
param ()
|
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('ipam', '_choices'))
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments -Parameters $Parameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri
|
|
||||||
}
|
|
||||||
|
|
@ -93,70 +93,113 @@ function Get-NetboxIPAMPrefix {
|
||||||
Additional information about the function.
|
Additional information about the function.
|
||||||
#>
|
#>
|
||||||
|
|
||||||
[CmdletBinding()]
|
[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
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'prefixes'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -ne $Status) {
|
|
||||||
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -PrefixStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'prefixes'))
|
|
||||||
|
|
||||||
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
|
||||||
}
|
}
|
||||||
|
|
@ -40,7 +40,7 @@ function New-NetboxIPAMPrefix {
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -PrefixStatus
|
# $PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -PrefixStatus
|
||||||
|
|
||||||
<#
|
<#
|
||||||
# As of 2018/10/18, this does not appear to be a validated IPAM choice
|
# As of 2018/10/18, this does not appear to be a validated IPAM choice
|
||||||
|
|
|
||||||
92
Functions/IPAM/Prefix/Set-NetboxIPAMPrefix.ps1
Normal file
92
Functions/IPAM/Prefix/Set-NetboxIPAMPrefix.ps1
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2021 v5.8.186
|
||||||
|
Created on: 2021-03-23 13:54
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Set-NetboxIPAMPrefix.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
function Set-NetboxIPAMPrefix {
|
||||||
|
[CmdletBinding(ConfirmImpact = 'Medium',
|
||||||
|
SupportsShouldProcess = $true)]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(Mandatory = $true,
|
||||||
|
ValueFromPipelineByPropertyName = $true)]
|
||||||
|
[uint16[]]$Id,
|
||||||
|
|
||||||
|
[string]$Prefix,
|
||||||
|
|
||||||
|
[string]$Status,
|
||||||
|
|
||||||
|
[uint16]$Tenant,
|
||||||
|
|
||||||
|
[uint16]$Site,
|
||||||
|
|
||||||
|
[uint16]$VRF,
|
||||||
|
|
||||||
|
[uint16]$VLAN,
|
||||||
|
|
||||||
|
[object]$Role,
|
||||||
|
|
||||||
|
[hashtable]$Custom_Fields,
|
||||||
|
|
||||||
|
[string]$Description,
|
||||||
|
|
||||||
|
[switch]$Is_Pool,
|
||||||
|
|
||||||
|
[switch]$Force
|
||||||
|
)
|
||||||
|
|
||||||
|
begin {
|
||||||
|
# Write-Verbose "Validating enum properties"
|
||||||
|
# $Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses', 0))
|
||||||
|
$Method = 'PATCH'
|
||||||
|
#
|
||||||
|
# # Value validation
|
||||||
|
# $ModelDefinition = GetModelDefinitionFromURIPath -Segments $Segments -Method $Method
|
||||||
|
# $EnumProperties = GetModelEnumProperties -ModelDefinition $ModelDefinition
|
||||||
|
#
|
||||||
|
# foreach ($Property in $EnumProperties.Keys) {
|
||||||
|
# if ($PSBoundParameters.ContainsKey($Property)) {
|
||||||
|
# Write-Verbose "Validating property [$Property] with value [$($PSBoundParameters.$Property)]"
|
||||||
|
# $PSBoundParameters.$Property = ValidateValue -ModelDefinition $ModelDefinition -Property $Property -ProvidedValue $PSBoundParameters.$Property
|
||||||
|
# } else {
|
||||||
|
# Write-Verbose "User did not provide a value for [$Property]"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Write-Verbose "Finished enum validation"
|
||||||
|
}
|
||||||
|
|
||||||
|
process {
|
||||||
|
foreach ($PrefixId in $Id) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'prefixes', $PrefixId))
|
||||||
|
|
||||||
|
Write-Verbose "Obtaining Prefix from ID $PrefixId"
|
||||||
|
$CurrentPrefix = Get-NetboxIPAMPrefix -Id $PrefixId -ErrorAction Stop
|
||||||
|
|
||||||
|
if ($Force -or $PSCmdlet.ShouldProcess($CurrentPrefix.Prefix, 'Set')) {
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method $Method
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -41,28 +41,56 @@ function Get-NetboxIPAMRole {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[uint16[]]$Id,
|
[Parameter(ParameterSetName = 'Query',
|
||||||
|
Position = 0)]
|
||||||
[string]$Query,
|
|
||||||
|
|
||||||
[string]$Name,
|
[string]$Name,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
|
[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
|
||||||
)
|
)
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'roles'))
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
foreach ($Role_ID in $Id) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'roles', $Role_ID))
|
||||||
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'roles'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -16,56 +16,96 @@ function Get-NetboxIPAMVLAN {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[uint16]$Limit,
|
[Parameter(ParameterSetName = 'Query',
|
||||||
|
Position = 0)]
|
||||||
[uint16]$Offset,
|
[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,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[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'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'vlans'))
|
|
||||||
|
|
||||||
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,11 +63,11 @@
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
$PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -VLANStatus
|
# $PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -VLANStatus
|
||||||
|
#
|
||||||
if ($null -ne $Role) {
|
# if ($null -ne $Role) {
|
||||||
$PSBoundParameters.Role = ValidateIPAMChoice -ProvidedValue $Role -IPAddressRole
|
# $PSBoundParameters.Role = ValidateIPAMChoice -ProvidedValue $Role -IPAddressRole
|
||||||
}
|
# }
|
||||||
|
|
||||||
$segments = [System.Collections.ArrayList]::new(@('ipam', 'vlans'))
|
$segments = [System.Collections.ArrayList]::new(@('ipam', 'vlans'))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/19/2020 11:54
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: ValidateIPAMChoice.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function ValidateIPAMChoice {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Internal function to verify provided values for static choices
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
When users connect to the API, choices for each major object are cached to the config variable.
|
|
||||||
These values are then utilized to verify if the provided value from a user is valid.
|
|
||||||
|
|
||||||
.PARAMETER ProvidedValue
|
|
||||||
The value to validate against static choices
|
|
||||||
|
|
||||||
.PARAMETER AggregateFamily
|
|
||||||
Verify against aggregate family values
|
|
||||||
|
|
||||||
.PARAMETER PrefixFamily
|
|
||||||
Verify against prefix family values
|
|
||||||
|
|
||||||
.PARAMETER PrefixStatus
|
|
||||||
Verify against prefix status values
|
|
||||||
|
|
||||||
.PARAMETER IPAddressFamily
|
|
||||||
Verify against ip-address family values
|
|
||||||
|
|
||||||
.PARAMETER IPAddressStatus
|
|
||||||
Verify against ip-address status values
|
|
||||||
|
|
||||||
.PARAMETER IPAddressRole
|
|
||||||
Verify against ip-address role values
|
|
||||||
|
|
||||||
.PARAMETER VLANStatus
|
|
||||||
Verify against VLAN status values
|
|
||||||
|
|
||||||
.PARAMETER ServiceProtocol
|
|
||||||
Verify against service protocol values
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> ValidateIPAMChoice -ProvidedValue 'loopback' -IPAddressRole
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> ValidateIPAMChoice -ProvidedValue 'Loopback' -IPAddressFamily
|
|
||||||
>> Invalid value Loopback for ip-address:family. Must be one of: 4, 6, IPv4, IPv6
|
|
||||||
|
|
||||||
.OUTPUTS
|
|
||||||
This function returns the integer value if valid. Otherwise, it will throw an error.
|
|
||||||
|
|
||||||
.NOTES
|
|
||||||
Additional information about the function.
|
|
||||||
|
|
||||||
.FUNCTIONALITY
|
|
||||||
This cmdlet is intended to be used internally and not exposed to the user
|
|
||||||
#>
|
|
||||||
|
|
||||||
[CmdletBinding(DefaultParameterSetName = 'service:protocol')]
|
|
||||||
[OutputType([uint16])]
|
|
||||||
param
|
|
||||||
(
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[object]$ProvidedValue,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'aggregate:family',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$AggregateFamily,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'prefix:family',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$PrefixFamily,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'prefix:status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$PrefixStatus,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'ip-address:family',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$IPAddressFamily,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'ip-address:status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$IPAddressStatus,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'ip-address:role',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$IPAddressRole,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'vlan:status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$VLANStatus,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'service:protocol',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$ServiceProtocol
|
|
||||||
)
|
|
||||||
|
|
||||||
ValidateChoice -MajorObject 'IPAM' -ChoiceName $PSCmdlet.ParameterSetName -ProvidedValue $ProvidedValue
|
|
||||||
}
|
|
||||||
|
|
@ -48,8 +48,6 @@
|
||||||
try {
|
try {
|
||||||
Write-Verbose "Verifying API connectivity..."
|
Write-Verbose "Verifying API connectivity..."
|
||||||
$null = VerifyAPIConnectivity
|
$null = VerifyAPIConnectivity
|
||||||
$script:NetboxConfig.Connected = $true
|
|
||||||
Write-Verbose "Successfully connected!"
|
|
||||||
} catch {
|
} catch {
|
||||||
Write-Verbose "Failed to connect. Generating error"
|
Write-Verbose "Failed to connect. Generating error"
|
||||||
Write-Verbose $_.Exception.Message
|
Write-Verbose $_.Exception.Message
|
||||||
|
|
@ -60,14 +58,25 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Verbose "Caching static choices"
|
Write-Verbose "Caching API definition"
|
||||||
$script:NetboxConfig.Choices.Circuits = Get-NetboxCircuitsChoices
|
$script:NetboxConfig.APIDefinition = Get-NetboxAPIDefinition
|
||||||
$script:NetboxConfig.Choices.DCIM = Get-NetboxDCIMChoices # Not completed yet
|
|
||||||
$script:NetboxConfig.Choices.Extras = Get-NetboxExtrasChoices
|
if ([version]$script:NetboxConfig.APIDefinition.info.version -lt 2.8) {
|
||||||
$script:NetboxConfig.Choices.IPAM = Get-NetboxIPAMChoices
|
$Script:NetboxConfig.Connected = $false
|
||||||
#$script:NetboxConfig.Choices.Secrets = Get-NetboxSecretsChoices # Not completed yet
|
throw "Netbox version is incompatible with this PS module. Requires >=2.8.*, found version $($script:NetboxConfig.APIDefinition.info.version)"
|
||||||
#$script:NetboxConfig.Choices.Tenancy = Get-NetboxTenancyChoices
|
}
|
||||||
$script:NetboxConfig.Choices.Virtualization = Get-NetboxVirtualizationChoices
|
|
||||||
|
$script:NetboxConfig.Connected = $true
|
||||||
|
Write-Verbose "Successfully connected!"
|
||||||
|
|
||||||
|
#Write-Verbose "Caching static choices"
|
||||||
|
#$script:NetboxConfig.Choices.Circuits = Get-NetboxCircuitsChoices
|
||||||
|
#$script:NetboxConfig.Choices.DCIM = Get-NetboxDCIMChoices # Not completed yet
|
||||||
|
#$script:NetboxConfig.Choices.Extras = Get-NetboxExtrasChoices
|
||||||
|
#$script:NetboxConfig.Choices.IPAM = Get-NetboxIPAMChoices
|
||||||
|
##$script:NetboxConfig.Choices.Secrets = Get-NetboxSecretsChoices # Not completed yet
|
||||||
|
##$script:NetboxConfig.Choices.Tenancy = Get-NetboxTenancyChoices
|
||||||
|
#$script:NetboxConfig.Choices.Virtualization = Get-NetboxVirtualizationChoices
|
||||||
|
|
||||||
Write-Verbose "Connection process completed"
|
Write-Verbose "Connection process completed"
|
||||||
}
|
}
|
||||||
29
Functions/Setup/Support/Get-NetboxAPIDefinition.ps1
Normal file
29
Functions/Setup/Support/Get-NetboxAPIDefinition.ps1
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<#
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.174
|
||||||
|
Created on: 4/28/2020 11:57
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: Get-NetboxAPIDefinition.ps1
|
||||||
|
===========================================================================
|
||||||
|
.DESCRIPTION
|
||||||
|
A description of the file.
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Get-NetboxAPIDefinition {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param ()
|
||||||
|
|
||||||
|
#$URI = "https://netbox.neonet.org/api/docs/?format=openapi"
|
||||||
|
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('docs'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary @{'format' = 'openapi'}
|
||||||
|
|
||||||
|
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters -SkipConnectedCheck
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $URI -Timeout 10
|
||||||
|
}
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
'Connected' = $false
|
'Connected' = $false
|
||||||
'Choices' = @{
|
'Choices' = @{
|
||||||
}
|
}
|
||||||
|
'APIDefinition' = $null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param ()
|
param ()
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('extras', '_choices'))
|
$uriSegments = [System.Collections.ArrayList]::new(@('extras'))
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments -SkipConnectedCheck
|
$uri = BuildNewURI -Segments $uriSegments -Parameters @{'format' = 'json'} -SkipConnectedCheck
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri
|
InvokeNetboxRequest -URI $uri
|
||||||
}
|
}
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/19/2020 11:56
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: Get-NetboxTenancyChoices.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxTenancyChoices {
|
|
||||||
[CmdletBinding()]
|
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "These are literally 'choices' in Netbox")]
|
|
||||||
param ()
|
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('tenancy', '_choices'))
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri
|
|
||||||
}
|
|
||||||
|
|
@ -13,33 +13,109 @@
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxTenant {
|
function Get-NetboxTenant {
|
||||||
[CmdletBinding()]
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Get a tenent from Netbox
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
A detailed description of the Get-NetboxTenant function.
|
||||||
|
|
||||||
|
.PARAMETER Name
|
||||||
|
The specific name of the tenant. Must match exactly as is defined in Netbox
|
||||||
|
|
||||||
|
.PARAMETER Id
|
||||||
|
The database ID of the tenant
|
||||||
|
|
||||||
|
.PARAMETER Query
|
||||||
|
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
|
||||||
|
The specific group as defined in Netbox.
|
||||||
|
|
||||||
|
.PARAMETER GroupID
|
||||||
|
The database ID of the group in Netbox
|
||||||
|
|
||||||
|
.PARAMETER CustomFields
|
||||||
|
Hashtable in the format @{"field_name" = "value"} to search
|
||||||
|
|
||||||
|
.PARAMETER Limit
|
||||||
|
Limit the number of results to this number
|
||||||
|
|
||||||
|
.PARAMETER Offset
|
||||||
|
Start the search at this index in results
|
||||||
|
|
||||||
|
.PARAMETER Raw
|
||||||
|
Return the unparsed data from the HTTP request
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
PS C:\> Get-NetboxTenant
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Additional information about the function.
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'Query')]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[uint16]$Limit,
|
[Parameter(ParameterSetName = 'Query',
|
||||||
|
Position = 0)]
|
||||||
[uint16]$Offset,
|
|
||||||
|
|
||||||
[string]$Name,
|
[string]$Name,
|
||||||
|
|
||||||
[uint16[]]$Id,
|
[Parameter(ParameterSetName = 'ByID')]
|
||||||
|
[uint32[]]$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,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'Query')]
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants'))
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
'ById' {
|
||||||
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
foreach ($Tenant_ID in $Id) {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants', $Tenant_ID))
|
||||||
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants'))
|
||||||
|
|
||||||
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
|
|
||||||
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
|
|
||||||
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/19/2020 14:10
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: Get-NetboxVirtualizationChoices.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
function Get-NetboxVirtualizationChoices {
|
|
||||||
[CmdletBinding()]
|
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "These are literally 'choices' in Netbox")]
|
|
||||||
param ()
|
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('virtualization', '_choices'))
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri
|
|
||||||
}
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
<#
|
|
||||||
.NOTES
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
|
|
||||||
Created on: 3/19/2020 14:12
|
|
||||||
Created by: Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: ValidateVirtualizationChoice.ps1
|
|
||||||
===========================================================================
|
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
|
||||||
#>
|
|
||||||
|
|
||||||
function ValidateVirtualizationChoice {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Internal function to verify provided values for static choices
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
When users connect to the API, choices for each major object are cached to the config variable.
|
|
||||||
These values are then utilized to verify if the provided value from a user is valid.
|
|
||||||
|
|
||||||
.PARAMETER ProvidedValue
|
|
||||||
The value to validate against static choices
|
|
||||||
|
|
||||||
.PARAMETER AggregateFamily
|
|
||||||
Verify against aggregate family values
|
|
||||||
|
|
||||||
.PARAMETER PrefixFamily
|
|
||||||
Verify against prefix family values
|
|
||||||
|
|
||||||
.PARAMETER PrefixStatus
|
|
||||||
Verify against prefix status values
|
|
||||||
|
|
||||||
.PARAMETER IPAddressFamily
|
|
||||||
Verify against ip-address family values
|
|
||||||
|
|
||||||
.PARAMETER IPAddressStatus
|
|
||||||
Verify against ip-address status values
|
|
||||||
|
|
||||||
.PARAMETER IPAddressRole
|
|
||||||
Verify against ip-address role values
|
|
||||||
|
|
||||||
.PARAMETER VLANStatus
|
|
||||||
Verify against VLAN status values
|
|
||||||
|
|
||||||
.PARAMETER ServiceProtocol
|
|
||||||
Verify against service protocol values
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> VerifyIPAMChoices -ProvidedValue 'loopback' -IPAddressRole
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
PS C:\> VerifyIPAMChoices -ProvidedValue 'Loopback' -IPAddressFamily
|
|
||||||
>> Invalid value Loopback for ip-address:family. Must be one of: 4, 6, IPv4, IPv6
|
|
||||||
|
|
||||||
.FUNCTIONALITY
|
|
||||||
This cmdlet is intended to be used internally and not exposed to the user
|
|
||||||
|
|
||||||
.OUTPUT
|
|
||||||
This function returns nothing if the value is valid. Otherwise, it will throw an error.
|
|
||||||
#>
|
|
||||||
|
|
||||||
[CmdletBinding()]
|
|
||||||
param
|
|
||||||
(
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[object]$ProvidedValue,
|
|
||||||
|
|
||||||
[Parameter(ParameterSetName = 'virtual-machine:status',
|
|
||||||
Mandatory = $true)]
|
|
||||||
[switch]$VirtualMachineStatus
|
|
||||||
)
|
|
||||||
|
|
||||||
ValidateChoice -MajorObject 'Virtualization' -ChoiceName $PSCmdlet.ParameterSetName -ProvidedValue $ProvidedValue
|
|
||||||
}
|
|
||||||
|
|
@ -46,7 +46,14 @@ function New-NetboxVirtualMachine {
|
||||||
[string]$Comments
|
[string]$Comments
|
||||||
)
|
)
|
||||||
|
|
||||||
$PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
|
# $ModelDefinition = $script:NetboxConfig.APIDefinition.definitions.WritableVirtualMachineWithConfigContext
|
||||||
|
#
|
||||||
|
# # Validate the status against the APIDefinition
|
||||||
|
# if ($ModelDefinition.properties.status.enum -inotcontains $Status) {
|
||||||
|
# throw ("Invalid value [] for Status. Must be one of []" -f $Status, ($ModelDefinition.properties.status.enum -join ', '))
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
#$PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
|
||||||
|
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines'))
|
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines'))
|
||||||
|
|
||||||
|
|
@ -55,4 +62,8 @@ function New-NetboxVirtualMachine {
|
||||||
$URI = BuildNewURI -Segments $URIComponents.Segments
|
$URI = BuildNewURI -Segments $URIComponents.Segments
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters
|
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,19 +50,19 @@ function Set-NetboxVirtualMachine {
|
||||||
[switch]$Force
|
[switch]$Force
|
||||||
)
|
)
|
||||||
|
|
||||||
if ($null -ne $Status) {
|
# if ($null -ne $Status) {
|
||||||
$PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
|
# $PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
|
||||||
}
|
# }
|
||||||
|
#
|
||||||
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines', $Id))
|
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines', $Id))
|
||||||
|
|
||||||
Write-Verbose "Obtaining VM from ID $Id"
|
Write-Verbose "Obtaining VM from ID $Id"
|
||||||
|
|
||||||
$CurrentVM = Get-NetboxVirtualMachine -Id $Id -ErrorAction Stop
|
#$CurrentVM = Get-NetboxVirtualMachine -Id $Id -ErrorAction Stop
|
||||||
|
|
||||||
Write-Verbose "Finished obtaining VM"
|
Write-Verbose "Finished obtaining VM"
|
||||||
|
|
||||||
if ($Force -or $pscmdlet.ShouldProcess($CurrentVM.Name, "Set")) {
|
if ($Force -or $pscmdlet.ShouldProcess($ID, "Set properties on VM ID")) {
|
||||||
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
|
||||||
|
|
||||||
$URI = BuildNewURI -Segments $URIComponents.Segments
|
$URI = BuildNewURI -Segments $URIComponents.Segments
|
||||||
|
|
|
||||||
|
|
@ -60,15 +60,13 @@ function Get-NetboxVirtualMachineInterface {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[uint16]$Limit,
|
|
||||||
|
|
||||||
[uint16]$Offset,
|
|
||||||
|
|
||||||
[Parameter(ValueFromPipeline = $true)]
|
[Parameter(ValueFromPipeline = $true)]
|
||||||
[uint16]$Id,
|
[uint16]$Id,
|
||||||
|
|
||||||
[string]$Name,
|
[string]$Name,
|
||||||
|
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
[boolean]$Enabled,
|
[boolean]$Enabled,
|
||||||
|
|
||||||
[uint16]$MTU,
|
[uint16]$MTU,
|
||||||
|
|
@ -79,6 +77,10 @@ function Get-NetboxVirtualMachineInterface {
|
||||||
|
|
||||||
[string]$MAC_Address,
|
[string]$MAC_Address,
|
||||||
|
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,16 +66,11 @@ function Get-NetboxVirtualizationCluster {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[uint16]$Limit,
|
[string]$Name,
|
||||||
|
|
||||||
[uint16]$Offset,
|
|
||||||
|
|
||||||
[Alias('q')]
|
[Alias('q')]
|
||||||
[string]$Query,
|
[string]$Query,
|
||||||
|
|
||||||
[string]$Name,
|
|
||||||
|
|
||||||
[Alias('id__in')]
|
|
||||||
[uint16[]]$Id,
|
[uint16[]]$Id,
|
||||||
|
|
||||||
[string]$Group,
|
[string]$Group,
|
||||||
|
|
@ -90,36 +85,18 @@ function Get-NetboxVirtualizationCluster {
|
||||||
|
|
||||||
[uint16]$Site_Id,
|
[uint16]$Site_Id,
|
||||||
|
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('virtualization', 'clusters'))
|
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'clusters'))
|
||||||
|
|
||||||
$URIParameters = @{
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($CmdletParameterName in $PSBoundParameters.Keys) {
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
if ($CmdletParameterName -in $CommonParameterNames) {
|
|
||||||
# These are common parameters and should not be appended to the URI
|
|
||||||
Write-Debug "Skipping parameter $CmdletParameterName"
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($CmdletParameterName -eq 'Id') {
|
|
||||||
# Check if there is one or more values for Id and build a URI or query as appropriate
|
|
||||||
if (@($PSBoundParameters[$CmdletParameterName]).Count -gt 1) {
|
|
||||||
$URIParameters['id__in'] = $Id -join ','
|
|
||||||
} else {
|
|
||||||
[void]$uriSegments.Add($PSBoundParameters[$CmdletParameterName])
|
|
||||||
}
|
|
||||||
} elseif ($CmdletParameterName -eq 'Query') {
|
|
||||||
$URIParameters['q'] = $PSBoundParameters[$CmdletParameterName]
|
|
||||||
} else {
|
|
||||||
$URIParameters[$CmdletParameterName.ToLower()] = $PSBoundParameters[$CmdletParameterName]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments -Parameters $URIParameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
}
|
}
|
||||||
|
|
@ -16,33 +16,28 @@ function Get-NetboxVirtualizationClusterGroup {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param
|
param
|
||||||
(
|
(
|
||||||
[uint16]$Limit,
|
|
||||||
|
|
||||||
[uint16]$Offset,
|
|
||||||
|
|
||||||
[string]$Name,
|
[string]$Name,
|
||||||
|
|
||||||
[string]$Slug,
|
[string]$Slug,
|
||||||
|
|
||||||
|
[string]$Description,
|
||||||
|
|
||||||
|
[string]$Query,
|
||||||
|
|
||||||
|
[uint32[]]$Id,
|
||||||
|
|
||||||
|
[uint16]$Limit,
|
||||||
|
|
||||||
|
[uint16]$Offset,
|
||||||
|
|
||||||
[switch]$Raw
|
[switch]$Raw
|
||||||
)
|
)
|
||||||
|
|
||||||
$uriSegments = [System.Collections.ArrayList]::new(@('virtualization', 'cluster-groups'))
|
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'cluster-groups'))
|
||||||
|
|
||||||
$URIParameters = @{
|
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($CmdletParameterName in $PSBoundParameters.Keys) {
|
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
|
||||||
if ($CmdletParameterName -in $CommonParameterNames) {
|
|
||||||
# These are common parameters and should not be appended to the URI
|
|
||||||
Write-Debug "Skipping parameter $CmdletParameterName"
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
$URIParameters[$CmdletParameterName.ToLower()] = $PSBoundParameters[$CmdletParameterName]
|
|
||||||
}
|
|
||||||
|
|
||||||
$uri = BuildNewURI -Segments $uriSegments -Parameters $URIParameters
|
|
||||||
|
|
||||||
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
InvokeNetboxRequest -URI $uri -Raw:$Raw
|
||||||
}
|
}
|
||||||
251
NetboxPS.psd1
251
NetboxPS.psd1
|
|
@ -1,127 +1,132 @@
|
||||||
<#
|
#
|
||||||
===========================================================================
|
# Module manifest for module 'NetboxPS'
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2018 v5.5.148
|
#
|
||||||
Created on: 2/28/2018 11:04 AM
|
# Generated by: Ben Claussen
|
||||||
Created by: Ben Claussen
|
#
|
||||||
Organization: NEOnet
|
# Generated on: 2021-03-25
|
||||||
Filename: NetboxPS.psd1
|
#
|
||||||
-------------------------------------------------------------------------
|
|
||||||
Module Manifest
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
Module Name: NetboxPS
|
|
||||||
===========================================================================
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
@{
|
@{
|
||||||
|
|
||||||
# Script module or binary module file associated with this manifest
|
# Script module or binary module file associated with this manifest.
|
||||||
RootModule = 'NetboxPS.psm1'
|
RootModule = 'NetboxPS.psm1'
|
||||||
|
|
||||||
# Version number of this module.
|
# Version number of this module.
|
||||||
ModuleVersion = '1.0.4'
|
ModuleVersion = '1.3.0'
|
||||||
|
|
||||||
# ID used to uniquely identify this module
|
# Supported PSEditions
|
||||||
GUID = 'bba9b06c-49c8-47cf-8358-aca7c4e78896'
|
# CompatiblePSEditions = @()
|
||||||
|
|
||||||
# Author of this module
|
# ID used to uniquely identify this module
|
||||||
Author = 'Ben Claussen'
|
GUID = 'bba9b06c-49c8-47cf-8358-aca7c4e78896'
|
||||||
|
|
||||||
# Company or vendor of this module
|
# Author of this module
|
||||||
CompanyName = 'NEOnet'
|
Author = 'Ben Claussen'
|
||||||
|
|
||||||
# Copyright statement for this module
|
# Company or vendor of this module
|
||||||
Copyright = '(c) 2018. All rights reserved.'
|
CompanyName = 'NEOnet'
|
||||||
|
|
||||||
# Description of the functionality provided by this module
|
# Copyright statement for this module
|
||||||
Description = 'A Powershell wrapper for Netbox API'
|
Copyright = '(c) 2018. All rights reserved.'
|
||||||
|
|
||||||
# Minimum version of the Windows PowerShell engine required by this module
|
# Description of the functionality provided by this module
|
||||||
PowerShellVersion = '5.0'
|
Description = 'A Powershell wrapper for Netbox API'
|
||||||
|
|
||||||
# Name of the Windows PowerShell host required by this module
|
# Minimum version of the Windows PowerShell engine required by this module
|
||||||
PowerShellHostName = ''
|
PowerShellVersion = '5.0'
|
||||||
|
|
||||||
# Minimum version of the Windows PowerShell host required by this module
|
# Name of the Windows PowerShell host required by this module
|
||||||
PowerShellHostVersion = ''
|
# PowerShellHostName = ''
|
||||||
|
|
||||||
# Minimum version of the .NET Framework required by this module
|
# Minimum version of the Windows PowerShell host required by this module
|
||||||
DotNetFrameworkVersion = '2.0'
|
# PowerShellHostVersion = ''
|
||||||
|
|
||||||
# Minimum version of the common language runtime (CLR) required by this module
|
# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||||
CLRVersion = '2.0.50727'
|
DotNetFrameworkVersion = '2.0'
|
||||||
|
|
||||||
# Processor architecture (None, X86, Amd64, IA64) required by this module
|
# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||||
ProcessorArchitecture = 'None'
|
CLRVersion = '2.0.50727'
|
||||||
|
|
||||||
# Modules that must be imported into the global environment prior to importing
|
# Processor architecture (None, X86, Amd64) required by this module
|
||||||
# this module
|
# ProcessorArchitecture = ''
|
||||||
RequiredModules = @()
|
|
||||||
|
# Modules that must be imported into the global environment prior to importing this module
|
||||||
# Assemblies that must be loaded prior to importing this module
|
# RequiredModules = @()
|
||||||
RequiredAssemblies = @('System.Web')
|
|
||||||
|
# Assemblies that must be loaded prior to importing this module
|
||||||
# Script files (.ps1) that are run in the caller's environment prior to
|
RequiredAssemblies = 'System.Web'
|
||||||
# importing this module
|
|
||||||
ScriptsToProcess = @()
|
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
|
||||||
|
# ScriptsToProcess = @()
|
||||||
# Type files (.ps1xml) to be loaded when importing this module
|
|
||||||
TypesToProcess = @()
|
# Type files (.ps1xml) to be loaded when importing this module
|
||||||
|
# TypesToProcess = @()
|
||||||
# Format files (.ps1xml) to be loaded when importing this module
|
|
||||||
FormatsToProcess = @()
|
# Format files (.ps1xml) to be loaded when importing this module
|
||||||
|
# FormatsToProcess = @()
|
||||||
# Modules to import as nested modules of the module specified in
|
|
||||||
# ModuleToProcess
|
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
|
||||||
NestedModules = @()
|
NestedModules = @()
|
||||||
|
|
||||||
# Functions to export from this module
|
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
|
||||||
FunctionsToExport = @('*') #For performanace, list functions explicity
|
FunctionsToExport = '*'
|
||||||
|
|
||||||
# Cmdlets to export from this module
|
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
|
||||||
CmdletsToExport = '*'
|
CmdletsToExport = '*'
|
||||||
|
|
||||||
# Variables to export from this module
|
# Variables to export from this module
|
||||||
VariablesToExport = '*'
|
VariablesToExport = '*'
|
||||||
|
|
||||||
# Aliases to export from this module
|
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
|
||||||
AliasesToExport = '*' #For performanace, list alias explicity
|
AliasesToExport = '*'
|
||||||
|
|
||||||
# List of all modules packaged with this module
|
# DSC resources to export from this module
|
||||||
ModuleList = @()
|
# DscResourcesToExport = @()
|
||||||
|
|
||||||
# List of all files packaged with this module
|
# List of all modules packaged with this module
|
||||||
FileList = @()
|
# ModuleList = @()
|
||||||
|
|
||||||
# Private data to pass to the module specified in ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
|
# List of all files packaged with this module
|
||||||
PrivateData = @{
|
# FileList = @()
|
||||||
|
|
||||||
#Support for PowerShellGet galleries.
|
# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
|
||||||
PSData = @{
|
PrivateData = @{
|
||||||
|
|
||||||
# Tags applied to this module. These help with module discovery in online galleries.
|
PSData = @{
|
||||||
Tags = @('Netbox', 'API', 'DCIM', 'IPAM')
|
|
||||||
|
# Tags applied to this module. These help with module discovery in online galleries.
|
||||||
# A URL to the license for this module.
|
Tags = 'Netbox','API','DCIM','IPAM'
|
||||||
# LicenseUri = ''
|
|
||||||
|
# A URL to the license for this module.
|
||||||
# A URL to the main website for this project.
|
# LicenseUri = ''
|
||||||
ProjectUri = 'https://github.com/benclaussen/NetboxPS'
|
|
||||||
|
# A URL to the main website for this project.
|
||||||
# A URL to an icon representing this module.
|
ProjectUri = 'https://github.com/benclaussen/NetboxPS'
|
||||||
# IconUri = ''
|
|
||||||
|
# A URL to an icon representing this module.
|
||||||
# ReleaseNotes of this module
|
# IconUri = ''
|
||||||
# ReleaseNotes = ''
|
|
||||||
|
# ReleaseNotes of this module
|
||||||
} # End of PSData hashtable
|
# ReleaseNotes = ''
|
||||||
|
|
||||||
} # End of PrivateData hashtable
|
# Prerelease string of this module
|
||||||
|
# Prerelease = ''
|
||||||
|
|
||||||
|
# Flag to indicate whether the module requires explicit user acceptance for install/update/save
|
||||||
|
# RequireLicenseAcceptance = $false
|
||||||
|
|
||||||
|
# External dependent modules of this module
|
||||||
|
# ExternalModuleDependencies = @()
|
||||||
|
|
||||||
|
} # End of PSData hashtable
|
||||||
|
|
||||||
|
} # End of PrivateData hashtable
|
||||||
|
|
||||||
|
# HelpInfo URI of this module
|
||||||
|
# HelpInfoURI = ''
|
||||||
|
|
||||||
|
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
|
||||||
|
# DefaultCommandPrefix = ''
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,5 +18,5 @@ $script:CommonParameterNames = New-Object System.Collections.ArrayList
|
||||||
|
|
||||||
SetupNetboxConfigVariable
|
SetupNetboxConfigVariable
|
||||||
|
|
||||||
#Export-ModuleMember -Function *
|
Export-ModuleMember -Function *
|
||||||
Export-ModuleMember -Function *-*
|
#Export-ModuleMember -Function *-*
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
<Folders>
|
<Folders>
|
||||||
<Folder>Functions</Folder>
|
<Folder>Functions</Folder>
|
||||||
<Folder>Functions\DCIM</Folder>
|
<Folder>Functions\DCIM</Folder>
|
||||||
<Folder>Functions\Extras</Folder>
|
|
||||||
<Folder>Functions\Circuits</Folder>
|
<Folder>Functions\Circuits</Folder>
|
||||||
<Folder>Functions\Virtualization</Folder>
|
<Folder>Functions\Virtualization</Folder>
|
||||||
<Folder>Functions\IPAM</Folder>
|
<Folder>Functions\IPAM</Folder>
|
||||||
|
|
@ -24,6 +23,11 @@
|
||||||
<Folder>Functions\Setup</Folder>
|
<Folder>Functions\Setup</Folder>
|
||||||
<Folder>Functions\Setup\Support</Folder>
|
<Folder>Functions\Setup\Support</Folder>
|
||||||
<Folder>Tests</Folder>
|
<Folder>Tests</Folder>
|
||||||
|
<Folder>Functions\DCIM\Sites</Folder>
|
||||||
|
<Folder>Functions\Circuits\Circuits</Folder>
|
||||||
|
<Folder>Functions\Circuits\Providers</Folder>
|
||||||
|
<Folder>Functions\Circuits\Types</Folder>
|
||||||
|
<Folder>Functions\Circuits\Terminations</Folder>
|
||||||
</Folders>
|
</Folders>
|
||||||
<Files>
|
<Files>
|
||||||
<File Build="2">NetboxPS.psd1</File>
|
<File Build="2">NetboxPS.psd1</File>
|
||||||
|
|
@ -42,8 +46,6 @@
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-CheckNetboxIsConnected_ps1" ExportFunctions="True">Functions\Helpers\CheckNetboxIsConnected.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-CheckNetboxIsConnected_ps1" ExportFunctions="True">Functions\Helpers\CheckNetboxIsConnected.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-BuildNewURI_ps1" ExportFunctions="True">Functions\Helpers\BuildNewURI.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-BuildNewURI_ps1" ExportFunctions="True">Functions\Helpers\BuildNewURI.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-BuildURIComponents_ps1" ExportFunctions="True">Functions\Helpers\BuildURIComponents.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-BuildURIComponents_ps1" ExportFunctions="True">Functions\Helpers\BuildURIComponents.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-GetChoiceValidValues_ps1" ExportFunctions="True">Functions\Helpers\GetChoiceValidValues.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-ValidateChoice_ps1" ExportFunctions="True">Functions\Helpers\ValidateChoice.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-GetNetboxAPIErrorBody_ps1" ExportFunctions="True">Functions\Helpers\GetNetboxAPIErrorBody.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-GetNetboxAPIErrorBody_ps1" ExportFunctions="True">Functions\Helpers\GetNetboxAPIErrorBody.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-InvokeNetboxRequest_ps1" ExportFunctions="True">Functions\Helpers\InvokeNetboxRequest.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-InvokeNetboxRequest_ps1" ExportFunctions="True">Functions\Helpers\InvokeNetboxRequest.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-ThrowNetboxRESTError_ps1" ExportFunctions="True">Functions\Helpers\ThrowNetboxRESTError.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-ThrowNetboxRESTError_ps1" ExportFunctions="True">Functions\Helpers\ThrowNetboxRESTError.ps1</File>
|
||||||
|
|
@ -56,8 +58,6 @@
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxCredential_ps1" ExportFunctions="True">Functions\Setup\Set-NetboxCredential.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxCredential_ps1" ExportFunctions="True">Functions\Setup\Set-NetboxCredential.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCredential_ps1" ExportFunctions="True">Functions\Setup\Get-NetboxCredential.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCredential_ps1" ExportFunctions="True">Functions\Setup\Get-NetboxCredential.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Connect-NetboxAPI_ps1" ExportFunctions="True">Functions\Setup\Connect-NetboxAPI.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Connect-NetboxAPI_ps1" ExportFunctions="True">Functions\Setup\Connect-NetboxAPI.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxExtrasChoices_ps1" ExportFunctions="True">Functions\Extras\Get-NetboxExtrasChoices.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-ValidateDCIMChoice_ps1" ExportFunctions="False">Functions\DCIM\ValidateDCIMChoice.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxIPAMVLAN_ps1" ExportFunctions="True">Functions\IPAM\VLAN\Get-NetboxIPAMVLAN.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxIPAMVLAN_ps1" ExportFunctions="True">Functions\IPAM\VLAN\Get-NetboxIPAMVLAN.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-New-NetboxIPAMVLAN_ps1" ExportFunctions="True">Functions\IPAM\VLAN\New-NetboxIPAMVLAN.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-New-NetboxIPAMVLAN_ps1" ExportFunctions="True">Functions\IPAM\VLAN\New-NetboxIPAMVLAN.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxIPAMRole_ps1" ExportFunctions="True">Functions\IPAM\Role\Get-NetboxIPAMRole.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxIPAMRole_ps1" ExportFunctions="True">Functions\IPAM\Role\Get-NetboxIPAMRole.ps1</File>
|
||||||
|
|
@ -69,10 +69,7 @@
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-New-NetboxIPAMPrefix_ps1" ExportFunctions="True">Functions\IPAM\Prefix\New-NetboxIPAMPrefix.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-New-NetboxIPAMPrefix_ps1" ExportFunctions="True">Functions\IPAM\Prefix\New-NetboxIPAMPrefix.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Remove-NetboxIPAMAddress_ps1" ExportFunctions="True">Functions\IPAM\Address\Remove-NetboxIPAMAddress.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Remove-NetboxIPAMAddress_ps1" ExportFunctions="True">Functions\IPAM\Address\Remove-NetboxIPAMAddress.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxIPAMAddress_ps1" ExportFunctions="True">Functions\IPAM\Address\Set-NetboxIPAMAddress.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxIPAMAddress_ps1" ExportFunctions="True">Functions\IPAM\Address\Set-NetboxIPAMAddress.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-ValidateIPAMChoice_ps1" ExportFunctions="True">Functions\IPAM\ValidateIPAMChoice.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxIPAMChoices_ps1" ExportFunctions="True">Functions\IPAM\Get-NetboxIPAMChoices.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxTenant_ps1" ExportFunctions="True">Functions\Tenancy\Get-NetboxTenant.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxTenant_ps1" ExportFunctions="True">Functions\Tenancy\Get-NetboxTenant.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxTenancyChoices_ps1" ExportFunctions="True">Functions\Tenancy\Get-NetboxTenancyChoices.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualMachine_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachine\Get-NetboxVirtualMachine.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualMachine_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachine\Get-NetboxVirtualMachine.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-New-NetboxVirtualMachine_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachine\New-NetboxVirtualMachine.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-New-NetboxVirtualMachine_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachine\New-NetboxVirtualMachine.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxVirtualMachine_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachine\Set-NetboxVirtualMachine.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxVirtualMachine_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachine\Set-NetboxVirtualMachine.ps1</File>
|
||||||
|
|
@ -80,10 +77,8 @@
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Add-NetboxVirtualMachineInterface_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachineInterface\Add-NetboxVirtualMachineInterface.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Add-NetboxVirtualMachineInterface_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachineInterface\Add-NetboxVirtualMachineInterface.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualMachineInterface_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachineInterface\Get-NetboxVirtualMachineInterface.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualMachineInterface_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachineInterface\Get-NetboxVirtualMachineInterface.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxVirtualMachineInterface_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachineInterface\Set-NetboxVirtualMachineInterface.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxVirtualMachineInterface_ps1" ExportFunctions="True">Functions\Virtualization\VirtualMachineInterface\Set-NetboxVirtualMachineInterface.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualizationChoices_ps1" ExportFunctions="True">Functions\Virtualization\Get-NetboxVirtualizationChoices.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualizationCluster_ps1" ExportFunctions="True">Functions\Virtualization\VirtualizationCluster\Get-NetboxVirtualizationCluster.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualizationCluster_ps1" ExportFunctions="True">Functions\Virtualization\VirtualizationCluster\Get-NetboxVirtualizationCluster.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualizationClusterGroup_ps1" ExportFunctions="True">Functions\Virtualization\VirtualizationCluster\Get-NetboxVirtualizationClusterGroup.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxVirtualizationClusterGroup_ps1" ExportFunctions="True">Functions\Virtualization\VirtualizationCluster\Get-NetboxVirtualizationClusterGroup.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-ValidateVirtualizationChoice_ps1" ExportFunctions="True">Functions\Virtualization\ValidateVirtualizationChoice.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMDevice_ps1" ExportFunctions="True">Functions\DCIM\Devices\Get-NetboxDCIMDevice.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMDevice_ps1" ExportFunctions="True">Functions\DCIM\Devices\Get-NetboxDCIMDevice.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMDeviceType_ps1" ExportFunctions="True">Functions\DCIM\Devices\Get-NetboxDCIMDeviceType.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMDeviceType_ps1" ExportFunctions="True">Functions\DCIM\Devices\Get-NetboxDCIMDeviceType.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMDeviceRole_ps1" ExportFunctions="True">Functions\DCIM\Devices\Get-NetboxDCIMDeviceRole.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMDeviceRole_ps1" ExportFunctions="True">Functions\DCIM\Devices\Get-NetboxDCIMDeviceRole.ps1</File>
|
||||||
|
|
@ -99,10 +94,16 @@
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Remove-NetboxDCIMInterface_ps1" ExportFunctions="True">Functions\DCIM\Interfaces\Remove-NetboxDCIMInterface.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Remove-NetboxDCIMInterface_ps1" ExportFunctions="True">Functions\DCIM\Interfaces\Remove-NetboxDCIMInterface.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Remove-NetboxDCIMInterfaceConnection_ps1" ExportFunctions="True">Functions\DCIM\Interfaces\Remove-NetboxDCIMInterfaceConnection.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Remove-NetboxDCIMInterfaceConnection_ps1" ExportFunctions="True">Functions\DCIM\Interfaces\Remove-NetboxDCIMInterfaceConnection.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMPlatform_ps1" ExportFunctions="True">Functions\DCIM\Get-NetboxDCIMPlatform.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMPlatform_ps1" ExportFunctions="True">Functions\DCIM\Get-NetboxDCIMPlatform.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMChoices_ps1" ExportFunctions="True">Functions\DCIM\Get-NetboxDCIMChoices.ps1</File>
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCircuit_ps1" ExportFunctions="True">Functions\Circuits\Circuits\Get-NetboxCircuit.ps1</File>
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCircuitsChoices_ps1" ExportFunctions="True">Functions\Circuits\Get-NetboxCircuitsChoices.ps1</File>
|
|
||||||
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCircuit_ps1" ExportFunctions="True">Functions\Circuits\Get-NetboxCircuit.ps1</File>
|
|
||||||
<File Build="2" Shared="True" ReferenceFunction="Invoke-deploy_ps1" ExportFunctions="False">deploy.ps1</File>
|
<File Build="2" Shared="True" ReferenceFunction="Invoke-deploy_ps1" ExportFunctions="False">deploy.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxAPIDefinition_ps1" ExportFunctions="True">Functions\Setup\Support\Get-NetboxAPIDefinition.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxDCIMSite_ps1" ExportFunctions="True">Functions\DCIM\Sites\Get-NetboxDCIMSite.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCircuitTermination_ps1" ExportFunctions="True">Functions\Circuits\Terminations\Get-NetboxCircuitTermination.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-New-NetboxCircuit_ps1" ExportFunctions="True">Functions\Circuits\Circuits\New-NetboxCircuit.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCircuitProvider_ps1" ExportFunctions="True">Functions\Circuits\Providers\Get-NetboxCircuitProvider.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-NetboxCircuitType_ps1" ExportFunctions="True">Functions\Circuits\Types\Get-NetboxCircuitType.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Get-ModelDefinition_ps1" ExportFunctions="True">Functions\Helpers\Get-ModelDefinition.ps1</File>
|
||||||
|
<File Build="0" Shared="True" ReferenceFunction="Invoke-Set-NetboxIPAMPrefix_ps1" ExportFunctions="True">Functions\IPAM\Prefix\Set-NetboxIPAMPrefix.ps1</File>
|
||||||
</Files>
|
</Files>
|
||||||
<StartupScript>R:\Netbox\NetboxPS\Test-Module.ps1</StartupScript>
|
<StartupScript>R:\Netbox\NetboxPS\Test-Module.ps1</StartupScript>
|
||||||
</Project>
|
</Project>
|
||||||
132
NetboxPS/NetboxPS.psd1
Normal file
132
NetboxPS/NetboxPS.psd1
Normal file
|
|
@ -0,0 +1,132 @@
|
||||||
|
#
|
||||||
|
# Module manifest for module 'NetboxPS'
|
||||||
|
#
|
||||||
|
# Generated by: Ben Claussen
|
||||||
|
#
|
||||||
|
# Generated on: 2021-03-25
|
||||||
|
#
|
||||||
|
|
||||||
|
@{
|
||||||
|
|
||||||
|
# Script module or binary module file associated with this manifest.
|
||||||
|
RootModule = 'NetboxPS.psm1'
|
||||||
|
|
||||||
|
# Version number of this module.
|
||||||
|
ModuleVersion = '1.3.0'
|
||||||
|
|
||||||
|
# Supported PSEditions
|
||||||
|
# CompatiblePSEditions = @()
|
||||||
|
|
||||||
|
# ID used to uniquely identify this module
|
||||||
|
GUID = 'bba9b06c-49c8-47cf-8358-aca7c4e78896'
|
||||||
|
|
||||||
|
# Author of this module
|
||||||
|
Author = 'Ben Claussen'
|
||||||
|
|
||||||
|
# Company or vendor of this module
|
||||||
|
CompanyName = 'NEOnet'
|
||||||
|
|
||||||
|
# Copyright statement for this module
|
||||||
|
Copyright = '(c) 2018. All rights reserved.'
|
||||||
|
|
||||||
|
# Description of the functionality provided by this module
|
||||||
|
Description = 'A Powershell wrapper for Netbox API'
|
||||||
|
|
||||||
|
# Minimum version of the Windows PowerShell engine required by this module
|
||||||
|
PowerShellVersion = '5.0'
|
||||||
|
|
||||||
|
# Name of the Windows PowerShell host required by this module
|
||||||
|
# PowerShellHostName = ''
|
||||||
|
|
||||||
|
# Minimum version of the Windows PowerShell host required by this module
|
||||||
|
# PowerShellHostVersion = ''
|
||||||
|
|
||||||
|
# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||||
|
DotNetFrameworkVersion = '2.0'
|
||||||
|
|
||||||
|
# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||||
|
CLRVersion = '2.0.50727'
|
||||||
|
|
||||||
|
# Processor architecture (None, X86, Amd64) required by this module
|
||||||
|
# ProcessorArchitecture = ''
|
||||||
|
|
||||||
|
# Modules that must be imported into the global environment prior to importing this module
|
||||||
|
# RequiredModules = @()
|
||||||
|
|
||||||
|
# Assemblies that must be loaded prior to importing this module
|
||||||
|
RequiredAssemblies = 'System.Web'
|
||||||
|
|
||||||
|
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
|
||||||
|
# ScriptsToProcess = @()
|
||||||
|
|
||||||
|
# Type files (.ps1xml) to be loaded when importing this module
|
||||||
|
# TypesToProcess = @()
|
||||||
|
|
||||||
|
# Format files (.ps1xml) to be loaded when importing this module
|
||||||
|
# FormatsToProcess = @()
|
||||||
|
|
||||||
|
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
|
||||||
|
NestedModules = @()
|
||||||
|
|
||||||
|
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
|
||||||
|
FunctionsToExport = '*'
|
||||||
|
|
||||||
|
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
|
||||||
|
CmdletsToExport = '*'
|
||||||
|
|
||||||
|
# Variables to export from this module
|
||||||
|
VariablesToExport = '*'
|
||||||
|
|
||||||
|
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
|
||||||
|
AliasesToExport = '*'
|
||||||
|
|
||||||
|
# DSC resources to export from this module
|
||||||
|
# DscResourcesToExport = @()
|
||||||
|
|
||||||
|
# List of all modules packaged with this module
|
||||||
|
# ModuleList = @()
|
||||||
|
|
||||||
|
# List of all files packaged with this module
|
||||||
|
# FileList = @()
|
||||||
|
|
||||||
|
# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
|
||||||
|
PrivateData = @{
|
||||||
|
|
||||||
|
PSData = @{
|
||||||
|
|
||||||
|
# Tags applied to this module. These help with module discovery in online galleries.
|
||||||
|
Tags = 'Netbox','API','DCIM','IPAM'
|
||||||
|
|
||||||
|
# A URL to the license for this module.
|
||||||
|
# LicenseUri = ''
|
||||||
|
|
||||||
|
# A URL to the main website for this project.
|
||||||
|
ProjectUri = 'https://github.com/benclaussen/NetboxPS'
|
||||||
|
|
||||||
|
# A URL to an icon representing this module.
|
||||||
|
# IconUri = ''
|
||||||
|
|
||||||
|
# ReleaseNotes of this module
|
||||||
|
# ReleaseNotes = ''
|
||||||
|
|
||||||
|
# Prerelease string of this module
|
||||||
|
# Prerelease = ''
|
||||||
|
|
||||||
|
# Flag to indicate whether the module requires explicit user acceptance for install/update/save
|
||||||
|
# RequireLicenseAcceptance = $false
|
||||||
|
|
||||||
|
# External dependent modules of this module
|
||||||
|
# ExternalModuleDependencies = @()
|
||||||
|
|
||||||
|
} # End of PSData hashtable
|
||||||
|
|
||||||
|
} # End of PrivateData hashtable
|
||||||
|
|
||||||
|
# HelpInfo URI of this module
|
||||||
|
# HelpInfoURI = ''
|
||||||
|
|
||||||
|
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
|
||||||
|
# DefaultCommandPrefix = ''
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load diff
1189
Postman/Netbox.postman_collection.json
Normal file
1189
Postman/Netbox.postman_collection.json
Normal file
File diff suppressed because it is too large
Load diff
135
deploy.ps1
135
deploy.ps1
|
|
@ -1,45 +1,132 @@
|
||||||
<#
|
<#
|
||||||
.NOTES
|
.SYNOPSIS
|
||||||
===========================================================================
|
A brief description of the Invoke-deploy_ps1 file.
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.174
|
|
||||||
Created on: 4/9/2020 09:43
|
.DESCRIPTION
|
||||||
Created by: Claussen
|
A description of the file.
|
||||||
Organization: NEOnet
|
|
||||||
Filename: deploy.ps1
|
.PARAMETER SkipVersion
|
||||||
===========================================================================
|
A description of the SkipVersion parameter.
|
||||||
.DESCRIPTION
|
|
||||||
A description of the file.
|
.PARAMETER VersionIncrease
|
||||||
|
A description of the VersionIncrease parameter.
|
||||||
|
|
||||||
|
.PARAMETER NewVersion
|
||||||
|
A description of the NewVersion parameter.
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
===========================================================================
|
||||||
|
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.174
|
||||||
|
Created on: 4/9/2020 09:43
|
||||||
|
Created by: Claussen
|
||||||
|
Organization: NEOnet
|
||||||
|
Filename: deploy.ps1
|
||||||
|
===========================================================================
|
||||||
#>
|
#>
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'IncreaseVersion')]
|
||||||
|
param
|
||||||
|
(
|
||||||
|
[Parameter(ParameterSetName = 'SkipVersion')]
|
||||||
|
[switch]$SkipVersion,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'IncreaseVersion')]
|
||||||
|
[version]$VersionIncrease = "0.0.1",
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName = 'SetVersion')]
|
||||||
|
[version]$NewVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
Import-Module "Microsoft.PowerShell.Utility" -ErrorAction Stop
|
||||||
|
|
||||||
Write-Host "Beginning deployment" -ForegroundColor Green
|
Write-Host "Beginning deployment" -ForegroundColor Green
|
||||||
|
|
||||||
$PS1Files = Get-ChildItem "$PSScriptRoot\Functions" -Filter "*.ps1" -Recurse | Sort-Object Name
|
$ModuleName = 'NetboxPS'
|
||||||
|
$ConcatenatedFilePath = "$PSScriptRoot\concatenated.ps1"
|
||||||
|
$FunctionPath = "$PSScriptRoot\Functions"
|
||||||
|
$OutputDirectory = "$PSScriptRoot\$ModuleName"
|
||||||
|
$PSD1OutputPath = "$OutputDirectory\$ModuleName.psd1"
|
||||||
|
$PSM1OutputPath = "$OutputDirectory\$ModuleName.psm1"
|
||||||
|
|
||||||
"" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8
|
$PS1Files = Get-ChildItem $FunctionPath -Filter "*.ps1" -Recurse | Sort-Object Name
|
||||||
|
|
||||||
|
"" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8
|
||||||
|
|
||||||
$Counter = 0
|
$Counter = 0
|
||||||
|
Write-Host "Concatenating [$($PS1Files.Count)] PS1 files from $FunctionPath"
|
||||||
foreach ($File in $PS1Files) {
|
foreach ($File in $PS1Files) {
|
||||||
$Counter++
|
$Counter++
|
||||||
Write-Host (" Adding file {0:D2}/{1:D2}: $($File.Name)" -f $Counter, $PS1Files.Count)
|
|
||||||
|
|
||||||
"`r`n#region File $($File.Name)`r`n" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append
|
try {
|
||||||
|
Write-Host (" Adding file {0:D2}/{1:D2}: $($File.Name)" -f $Counter, $PS1Files.Count)
|
||||||
Get-Content $File.FullName -Encoding UTF8 | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append
|
|
||||||
|
"`r`n#region File $($File.Name)`r`n" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append -ErrorAction Stop
|
||||||
"`r`n#endregion" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append
|
|
||||||
|
Get-Content $File.FullName -Encoding UTF8 -ErrorAction Stop | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append -ErrorAction Stop
|
||||||
|
|
||||||
|
"`r`n#endregion" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append -ErrorAction Stop
|
||||||
|
} catch {
|
||||||
|
Write-Host "FAILED TO WRITE CONCATENATED FILE: $($_.Exception.Message): $($_.TargetObject)" -ForegroundColor Red
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append
|
"" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append
|
||||||
|
|
||||||
Write-Host " Adding psm1"
|
Write-Host " Adding psm1"
|
||||||
Get-Content .\NetboxPS.psm1 | Out-File -FilePath .\concatenated.ps1 -Encoding UTF8 -Append
|
Get-Content "$PSScriptRoot\$ModuleName.psm1" | Out-File -FilePath $ConcatenatedFilePath -Encoding UTF8 -Append
|
||||||
|
|
||||||
|
$PSDManifest = Import-PowerShellDataFile -Path "$PSScriptRoot\$ModuleName.psd1"
|
||||||
|
# Get the version from the PSD1
|
||||||
|
#[version]$CurrentVersion = [regex]::matches($PSDContent, "\s*ModuleVersion\s=\s'(\d*.\d*.\d*)'\s*").groups[1].value
|
||||||
|
[version]$CurrentVersion = $PSDManifest.ModuleVersion
|
||||||
|
|
||||||
|
|
||||||
|
switch ($PSCmdlet.ParameterSetName) {
|
||||||
|
"SkipVersion" {
|
||||||
|
# Dont do anything with the PSD
|
||||||
|
Write-Host " Skipping version update, maintaining version [$CurrentVersion]"
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
"IncreaseVersion" {
|
||||||
|
# Calculate the new version
|
||||||
|
[version]$NewVersion = "{0}.{1}.{2}" -f ($CurrentVersion.Major + $VersionIncrease.Major), ($CurrentVersion.Minor + $VersionIncrease.Minor), ($CurrentVersion.Build + $VersionIncrease.Build)
|
||||||
|
|
||||||
|
Write-Host " Updating version in PSD1 from [$CurrentVersion] to [$NewVersion]"
|
||||||
|
|
||||||
|
# Replace the version number in the content
|
||||||
|
#$PSDContent -replace $CurrentVersion, $NewVersion | Out-File $PSScriptRoot\$ModuleName.psd1 -Encoding UTF8
|
||||||
|
Update-ModuleManifest -Path "$PSScriptRoot\$ModuleName.psd1" -ModuleVersion $NewVersion
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
"SetVersion" {
|
||||||
|
Write-Host " Updating version in PSD1 from [$CurrentVersion] to [$NewVersion]"
|
||||||
|
|
||||||
|
# Replace the version number in the content
|
||||||
|
#$PSDContent -replace $CurrentVersion, $NewVersion | Out-File $PSScriptRoot\$ModuleName.psd1 -Encoding UTF8
|
||||||
|
Update-ModuleManifest -Path "$PSScriptRoot\$ModuleName.psd1" -ModuleVersion $NewVersion
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (-not (Test-Path $OutputDirectory)) {
|
||||||
|
try {
|
||||||
|
Write-Warning "Creating path [$OutputDirectory]"
|
||||||
|
$null = New-Item -Path $OutputDirectory -ItemType Directory -Force
|
||||||
|
} catch {
|
||||||
|
throw "Failed to create directory [$OutputDirectory]: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host " Copying psd1"
|
Write-Host " Copying psd1"
|
||||||
Copy-Item -Path .\NetboxPS.psd1 -Destination .\dist\NetboxPS.psd1 -Force
|
Copy-Item -Path "$PSScriptRoot\$ModuleName.psd1" -Destination $PSD1OutputPath -Force
|
||||||
|
|
||||||
Write-Host " Copying psm1"
|
Write-Host " Copying psm1"
|
||||||
Copy-Item -Path .\concatenated.ps1 -Destination .\dist\NetboxPS.psm1 -Force
|
Copy-Item -Path $ConcatenatedFilePath -Destination $PSM1OutputPath -Force
|
||||||
|
|
||||||
Write-Host "Deployment complete" -ForegroundColor Green
|
Write-Host "Deployment complete" -ForegroundColor Green
|
||||||
127
dist/NetboxPS.psd1
vendored
127
dist/NetboxPS.psd1
vendored
|
|
@ -1,127 +0,0 @@
|
||||||
<#
|
|
||||||
===========================================================================
|
|
||||||
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2018 v5.5.148
|
|
||||||
Created on: 2/28/2018 11:04 AM
|
|
||||||
Created by: Ben Claussen
|
|
||||||
Organization: NEOnet
|
|
||||||
Filename: NetboxPS.psd1
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
Module Manifest
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
Module Name: NetboxPS
|
|
||||||
===========================================================================
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
@{
|
|
||||||
|
|
||||||
# Script module or binary module file associated with this manifest
|
|
||||||
RootModule = 'NetboxPS.psm1'
|
|
||||||
|
|
||||||
# Version number of this module.
|
|
||||||
ModuleVersion = '1.0.4'
|
|
||||||
|
|
||||||
# ID used to uniquely identify this module
|
|
||||||
GUID = 'bba9b06c-49c8-47cf-8358-aca7c4e78896'
|
|
||||||
|
|
||||||
# Author of this module
|
|
||||||
Author = 'Ben Claussen'
|
|
||||||
|
|
||||||
# Company or vendor of this module
|
|
||||||
CompanyName = 'NEOnet'
|
|
||||||
|
|
||||||
# Copyright statement for this module
|
|
||||||
Copyright = '(c) 2018. All rights reserved.'
|
|
||||||
|
|
||||||
# Description of the functionality provided by this module
|
|
||||||
Description = 'A Powershell wrapper for Netbox API'
|
|
||||||
|
|
||||||
# Minimum version of the Windows PowerShell engine required by this module
|
|
||||||
PowerShellVersion = '5.0'
|
|
||||||
|
|
||||||
# Name of the Windows PowerShell host required by this module
|
|
||||||
PowerShellHostName = ''
|
|
||||||
|
|
||||||
# Minimum version of the Windows PowerShell host required by this module
|
|
||||||
PowerShellHostVersion = ''
|
|
||||||
|
|
||||||
# Minimum version of the .NET Framework required by this module
|
|
||||||
DotNetFrameworkVersion = '2.0'
|
|
||||||
|
|
||||||
# Minimum version of the common language runtime (CLR) required by this module
|
|
||||||
CLRVersion = '2.0.50727'
|
|
||||||
|
|
||||||
# Processor architecture (None, X86, Amd64, IA64) required by this module
|
|
||||||
ProcessorArchitecture = 'None'
|
|
||||||
|
|
||||||
# Modules that must be imported into the global environment prior to importing
|
|
||||||
# this module
|
|
||||||
RequiredModules = @()
|
|
||||||
|
|
||||||
# Assemblies that must be loaded prior to importing this module
|
|
||||||
RequiredAssemblies = @('System.Web')
|
|
||||||
|
|
||||||
# Script files (.ps1) that are run in the caller's environment prior to
|
|
||||||
# importing this module
|
|
||||||
ScriptsToProcess = @()
|
|
||||||
|
|
||||||
# Type files (.ps1xml) to be loaded when importing this module
|
|
||||||
TypesToProcess = @()
|
|
||||||
|
|
||||||
# Format files (.ps1xml) to be loaded when importing this module
|
|
||||||
FormatsToProcess = @()
|
|
||||||
|
|
||||||
# Modules to import as nested modules of the module specified in
|
|
||||||
# ModuleToProcess
|
|
||||||
NestedModules = @()
|
|
||||||
|
|
||||||
# Functions to export from this module
|
|
||||||
FunctionsToExport = @('*') #For performanace, list functions explicity
|
|
||||||
|
|
||||||
# Cmdlets to export from this module
|
|
||||||
CmdletsToExport = '*'
|
|
||||||
|
|
||||||
# Variables to export from this module
|
|
||||||
VariablesToExport = '*'
|
|
||||||
|
|
||||||
# Aliases to export from this module
|
|
||||||
AliasesToExport = '*' #For performanace, list alias explicity
|
|
||||||
|
|
||||||
# List of all modules packaged with this module
|
|
||||||
ModuleList = @()
|
|
||||||
|
|
||||||
# List of all files packaged with this module
|
|
||||||
FileList = @()
|
|
||||||
|
|
||||||
# Private data to pass to the module specified in ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
|
|
||||||
PrivateData = @{
|
|
||||||
|
|
||||||
#Support for PowerShellGet galleries.
|
|
||||||
PSData = @{
|
|
||||||
|
|
||||||
# Tags applied to this module. These help with module discovery in online galleries.
|
|
||||||
Tags = @('Netbox', 'API', 'DCIM', 'IPAM')
|
|
||||||
|
|
||||||
# A URL to the license for this module.
|
|
||||||
# LicenseUri = ''
|
|
||||||
|
|
||||||
# A URL to the main website for this project.
|
|
||||||
ProjectUri = 'https://github.com/benclaussen/NetboxPS'
|
|
||||||
|
|
||||||
# A URL to an icon representing this module.
|
|
||||||
# IconUri = ''
|
|
||||||
|
|
||||||
# ReleaseNotes of this module
|
|
||||||
# ReleaseNotes = ''
|
|
||||||
|
|
||||||
} # End of PSData hashtable
|
|
||||||
|
|
||||||
} # End of PrivateData hashtable
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Add table
Reference in a new issue