From 03f1271781ef329b85652a06f36954c2fd1cc007 Mon Sep 17 00:00:00 2001 From: Pascal Liehne Date: Sun, 6 Oct 2024 18:24:08 +0200 Subject: [PATCH] add NetboxDCIMVirtualDeviceContext --- .../Add-NetboxDCIMVirtualDeviceContext.ps1 | 36 ++++ .../Get-NetboxDCIMVirtualDeviceContext.ps1 | 39 ++++ .../Remove-NetboxDCIMVirtualDeviceContext.ps1 | 34 ++++ .../Set-NetboxDCIMVirtualDeviceContext.ps1 | 45 +++++ NetboxPS.psd1 | 34 ++-- NetboxPS/NetboxPS.psd1 | 34 ++-- NetboxPS/NetboxPS.psm1 | 174 ++++++++++++++++++ 7 files changed, 364 insertions(+), 32 deletions(-) create mode 100644 Functions/DCIM/Virtual Device Contexts/Add-NetboxDCIMVirtualDeviceContext.ps1 create mode 100644 Functions/DCIM/Virtual Device Contexts/Get-NetboxDCIMVirtualDeviceContext.ps1 create mode 100644 Functions/DCIM/Virtual Device Contexts/Remove-NetboxDCIMVirtualDeviceContext.ps1 create mode 100644 Functions/DCIM/Virtual Device Contexts/Set-NetboxDCIMVirtualDeviceContext.ps1 diff --git a/Functions/DCIM/Virtual Device Contexts/Add-NetboxDCIMVirtualDeviceContext.ps1 b/Functions/DCIM/Virtual Device Contexts/Add-NetboxDCIMVirtualDeviceContext.ps1 new file mode 100644 index 0000000..cd6810f --- /dev/null +++ b/Functions/DCIM/Virtual Device Contexts/Add-NetboxDCIMVirtualDeviceContext.ps1 @@ -0,0 +1,36 @@ +function Add-NetboxDCIMVirtualDeviceContext { + [CmdletBinding()] + [OutputType([pscustomobject])] + param + ( + [Parameter(Mandatory = $true)] + [uint64]$Device, + + [Parameter(Mandatory = $true)] + [string]$Name, + + [object]$Status = 'active', + + [uint16]$Identifier, + + [uint64]$Primary_IP4, + + [uint64]$Primary_IP6, + + [uint64]$Tenant, + + [string]$Comments + ) + + if (-not $PSBoundParameters.ContainsKey('Status')) { + $PSBoundParameters['Status'] = $Status + } + + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts')) + + $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters + + $URI = BuildNewURI -Segments $URIComponents.Segments + + InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method POST +} \ No newline at end of file diff --git a/Functions/DCIM/Virtual Device Contexts/Get-NetboxDCIMVirtualDeviceContext.ps1 b/Functions/DCIM/Virtual Device Contexts/Get-NetboxDCIMVirtualDeviceContext.ps1 new file mode 100644 index 0000000..3bfd484 --- /dev/null +++ b/Functions/DCIM/Virtual Device Contexts/Get-NetboxDCIMVirtualDeviceContext.ps1 @@ -0,0 +1,39 @@ +function Get-NetboxDCIMVirtualDeviceContext { + [CmdletBinding()] + [OutputType([pscustomobject])] + param + ( + [Parameter(ValueFromPipelineByPropertyName = $true)] + [uint64]$Id, + + [string]$Name, + + [object]$Status, + + [uint16]$Identifier, + + [string]$Device, + + [uint64]$Device_Id, + + [uint64]$Tenant_Id, + + [string]$Tenant, + + [uint16]$Limit, + + [uint16]$Offset, + + [switch]$Raw + ) + + process { + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts')) + + $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters + + $URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters + + InvokeNetboxRequest -URI $URI -Raw:$Raw + } +} \ No newline at end of file diff --git a/Functions/DCIM/Virtual Device Contexts/Remove-NetboxDCIMVirtualDeviceContext.ps1 b/Functions/DCIM/Virtual Device Contexts/Remove-NetboxDCIMVirtualDeviceContext.ps1 new file mode 100644 index 0000000..45e9ca2 --- /dev/null +++ b/Functions/DCIM/Virtual Device Contexts/Remove-NetboxDCIMVirtualDeviceContext.ps1 @@ -0,0 +1,34 @@ +function Remove-NetboxDCIMVirtualDeviceContext { + [CmdletBinding(ConfirmImpact = 'High', + SupportsShouldProcess = $true)] + param + ( + [Parameter(Mandatory = $true, + ValueFromPipelineByPropertyName = $true)] + [uint64[]]$Id, + + [switch]$Force + ) + + begin { + + } + + process { + foreach ($VirtualDeviceContextId in $Id) { + $CurrentVirtualDeviceContext = Get-NetboxDCIMVirtualDeviceContext -Id $VirtualDeviceContextId -ErrorAction Stop + + if ($Force -or $pscmdlet.ShouldProcess("Name: $($CurrentVirtualDeviceContext.Name) | ID: $($CurrentVirtualDeviceContext.Id)", "Remove")) { + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts', $CurrentVirtualDeviceContext.Id)) + + $URI = BuildNewURI -Segments $Segments + + InvokeNetboxRequest -URI $URI -Method DELETE + } + } + } + + end { + + } +} \ No newline at end of file diff --git a/Functions/DCIM/Virtual Device Contexts/Set-NetboxDCIMVirtualDeviceContext.ps1 b/Functions/DCIM/Virtual Device Contexts/Set-NetboxDCIMVirtualDeviceContext.ps1 new file mode 100644 index 0000000..c3f8f75 --- /dev/null +++ b/Functions/DCIM/Virtual Device Contexts/Set-NetboxDCIMVirtualDeviceContext.ps1 @@ -0,0 +1,45 @@ +function Set-NetboxDCIMVirtualDeviceContext { + [CmdletBinding(ConfirmImpact = 'Medium', + SupportsShouldProcess = $true)] + [OutputType([pscustomobject])] + param + ( + [Parameter(Mandatory = $true, + ValueFromPipelineByPropertyName = $true)] + [uint64[]]$Id, + + [string]$Name, + + [object]$Status, + + [uint16]$Identifier, + + [uint64]$Device, + + [uint64]$Primary_IP4, + + [uint64]$Primary_IP6, + + [uint64]$Tenant, + + [string]$Comments, + + [switch]$Force + ) + + process { + foreach ($VirtualDeviceContextId in $Id) { + $CurrentVirtualDeviceContext = Get-NetboxDCIMVirtualDeviceContext -Id $VirtualDeviceContextId -ErrorAction Stop + + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts', $CurrentVirtualDeviceContext.Id)) + + $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id' + + $URI = BuildNewURI -Segments $Segments + + if ($Force -or $pscmdlet.ShouldProcess("Virtual Device Context ID $($CurrentVirtualDeviceContext.Id)", "Set")) { + InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH + } + } + } +} \ No newline at end of file diff --git a/NetboxPS.psd1 b/NetboxPS.psd1 index 22fc1f7..915433d 100644 --- a/NetboxPS.psd1 +++ b/NetboxPS.psd1 @@ -3,7 +3,7 @@ # # Generated by: Ben Claussen # -# Generated on: 01/09/2024 +# Generated on: 10/6/2024 # @{ @@ -71,6 +71,7 @@ CLRVersion = '2.0.50727' # 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 = 'Add-NetboxDCIMFrontPort', 'Add-NetboxDCIMInterface', 'Add-NetboxDCIMInterfaceConnection', 'Add-NetboxDCIMRearPort', + 'Add-NetboxDCIMVirtualDeviceContext', 'Add-NetboxVirtualMachineInterface', 'BuildNewURI', 'BuildURIComponents', 'CheckNetboxIsConnected', 'Clear-NetboxCredential', 'Connect-NetboxAPI', 'CreateEnum', @@ -85,14 +86,14 @@ FunctionsToExport = 'Add-NetboxDCIMFrontPort', 'Add-NetboxDCIMInterface', 'Get-NetboxDCIMDeviceType', 'Get-NetboxDCIMFrontPort', 'Get-NetboxDCIMInterface', 'Get-NetboxDCIMInterfaceConnection', 'Get-NetboxDCIMPlatform', 'Get-NetboxDCIMRearPort', - 'Get-NetboxDCIMSite', 'Get-NetboxHostname', 'Get-NetboxHostPort', - 'Get-NetboxHostScheme', 'Get-NetboxInvokeParams', - 'Get-NetboxIPAMAddress', 'Get-NetboxIPAMAddressRange', - 'Get-NetboxIPAMAggregate', 'Get-NetboxIPAMAvailableIP', - 'Get-NetboxIPAMPrefix', 'Get-NetboxIPAMRole', 'Get-NetboxIPAMVLAN', - 'Get-NetboxObjectType', 'Get-NetboxTag', 'Get-NetboxTenant', - 'Get-NetboxTimeout', 'Get-NetboxVersion', - 'Get-NetboxVirtualizationCluster', + 'Get-NetboxDCIMSite', 'Get-NetboxDCIMVirtualDeviceContext', + 'Get-NetboxHostname', 'Get-NetboxHostPort', 'Get-NetboxHostScheme', + 'Get-NetboxInvokeParams', 'Get-NetboxIPAMAddress', + 'Get-NetboxIPAMAddressRange', 'Get-NetboxIPAMAggregate', + 'Get-NetboxIPAMAvailableIP', 'Get-NetboxIPAMPrefix', + 'Get-NetboxIPAMRole', 'Get-NetboxIPAMVLAN', 'Get-NetboxObjectType', + 'Get-NetboxTag', 'Get-NetboxTenant', 'Get-NetboxTimeout', + 'Get-NetboxVersion', 'Get-NetboxVirtualizationCluster', 'Get-NetboxVirtualizationClusterGroup', 'Get-NetboxVirtualMachine', 'Get-NetboxVirtualMachineInterface', 'InvokeNetboxRequest', 'New-NetboxCircuit', 'New-NetboxContact', @@ -103,13 +104,14 @@ FunctionsToExport = 'Add-NetboxDCIMFrontPort', 'Add-NetboxDCIMInterface', 'Remove-NetboxDCIMDevice', 'Remove-NetboxDCIMFrontPort', 'Remove-NetboxDCIMInterface', 'Remove-NetboxDCIMInterfaceConnection', 'Remove-NetboxDCIMRearPort', - 'Remove-NetboxDCIMSite', 'Remove-NetboxIPAMAddress', - 'Remove-NetboxIPAMAddressRange', 'Remove-NetboxVirtualMachine', - 'Set-NetboxCipherSSL', 'Set-NetboxContact', - 'Set-NetboxContactAssignment', 'Set-NetboxContactRole', - 'Set-NetboxCredential', 'Set-NetboxDCIMDevice', - 'Set-NetboxDCIMFrontPort', 'Set-NetboxDCIMInterface', - 'Set-NetboxDCIMInterfaceConnection', 'Set-NetboxDCIMRearPort', + 'Remove-NetboxDCIMSite', 'Remove-NetboxDCIMVirtualDeviceContext', + 'Remove-NetboxIPAMAddress', 'Remove-NetboxIPAMAddressRange', + 'Remove-NetboxVirtualMachine', 'Set-NetboxCipherSSL', + 'Set-NetboxContact', 'Set-NetboxContactAssignment', + 'Set-NetboxContactRole', 'Set-NetboxCredential', + 'Set-NetboxDCIMDevice', 'Set-NetboxDCIMFrontPort', + 'Set-NetboxDCIMInterface', 'Set-NetboxDCIMInterfaceConnection', + 'Set-NetboxDCIMRearPort', 'Set-NetboxDCIMVirtualDeviceContext', 'Set-NetboxHostName', 'Set-NetboxHostPort', 'Set-NetboxHostScheme', 'Set-NetboxInvokeParams', 'Set-NetboxIPAMAddress', 'Set-NetboxIPAMAddressRange', 'Set-NetboxIPAMPrefix', diff --git a/NetboxPS/NetboxPS.psd1 b/NetboxPS/NetboxPS.psd1 index 22fc1f7..915433d 100644 --- a/NetboxPS/NetboxPS.psd1 +++ b/NetboxPS/NetboxPS.psd1 @@ -3,7 +3,7 @@ # # Generated by: Ben Claussen # -# Generated on: 01/09/2024 +# Generated on: 10/6/2024 # @{ @@ -71,6 +71,7 @@ CLRVersion = '2.0.50727' # 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 = 'Add-NetboxDCIMFrontPort', 'Add-NetboxDCIMInterface', 'Add-NetboxDCIMInterfaceConnection', 'Add-NetboxDCIMRearPort', + 'Add-NetboxDCIMVirtualDeviceContext', 'Add-NetboxVirtualMachineInterface', 'BuildNewURI', 'BuildURIComponents', 'CheckNetboxIsConnected', 'Clear-NetboxCredential', 'Connect-NetboxAPI', 'CreateEnum', @@ -85,14 +86,14 @@ FunctionsToExport = 'Add-NetboxDCIMFrontPort', 'Add-NetboxDCIMInterface', 'Get-NetboxDCIMDeviceType', 'Get-NetboxDCIMFrontPort', 'Get-NetboxDCIMInterface', 'Get-NetboxDCIMInterfaceConnection', 'Get-NetboxDCIMPlatform', 'Get-NetboxDCIMRearPort', - 'Get-NetboxDCIMSite', 'Get-NetboxHostname', 'Get-NetboxHostPort', - 'Get-NetboxHostScheme', 'Get-NetboxInvokeParams', - 'Get-NetboxIPAMAddress', 'Get-NetboxIPAMAddressRange', - 'Get-NetboxIPAMAggregate', 'Get-NetboxIPAMAvailableIP', - 'Get-NetboxIPAMPrefix', 'Get-NetboxIPAMRole', 'Get-NetboxIPAMVLAN', - 'Get-NetboxObjectType', 'Get-NetboxTag', 'Get-NetboxTenant', - 'Get-NetboxTimeout', 'Get-NetboxVersion', - 'Get-NetboxVirtualizationCluster', + 'Get-NetboxDCIMSite', 'Get-NetboxDCIMVirtualDeviceContext', + 'Get-NetboxHostname', 'Get-NetboxHostPort', 'Get-NetboxHostScheme', + 'Get-NetboxInvokeParams', 'Get-NetboxIPAMAddress', + 'Get-NetboxIPAMAddressRange', 'Get-NetboxIPAMAggregate', + 'Get-NetboxIPAMAvailableIP', 'Get-NetboxIPAMPrefix', + 'Get-NetboxIPAMRole', 'Get-NetboxIPAMVLAN', 'Get-NetboxObjectType', + 'Get-NetboxTag', 'Get-NetboxTenant', 'Get-NetboxTimeout', + 'Get-NetboxVersion', 'Get-NetboxVirtualizationCluster', 'Get-NetboxVirtualizationClusterGroup', 'Get-NetboxVirtualMachine', 'Get-NetboxVirtualMachineInterface', 'InvokeNetboxRequest', 'New-NetboxCircuit', 'New-NetboxContact', @@ -103,13 +104,14 @@ FunctionsToExport = 'Add-NetboxDCIMFrontPort', 'Add-NetboxDCIMInterface', 'Remove-NetboxDCIMDevice', 'Remove-NetboxDCIMFrontPort', 'Remove-NetboxDCIMInterface', 'Remove-NetboxDCIMInterfaceConnection', 'Remove-NetboxDCIMRearPort', - 'Remove-NetboxDCIMSite', 'Remove-NetboxIPAMAddress', - 'Remove-NetboxIPAMAddressRange', 'Remove-NetboxVirtualMachine', - 'Set-NetboxCipherSSL', 'Set-NetboxContact', - 'Set-NetboxContactAssignment', 'Set-NetboxContactRole', - 'Set-NetboxCredential', 'Set-NetboxDCIMDevice', - 'Set-NetboxDCIMFrontPort', 'Set-NetboxDCIMInterface', - 'Set-NetboxDCIMInterfaceConnection', 'Set-NetboxDCIMRearPort', + 'Remove-NetboxDCIMSite', 'Remove-NetboxDCIMVirtualDeviceContext', + 'Remove-NetboxIPAMAddress', 'Remove-NetboxIPAMAddressRange', + 'Remove-NetboxVirtualMachine', 'Set-NetboxCipherSSL', + 'Set-NetboxContact', 'Set-NetboxContactAssignment', + 'Set-NetboxContactRole', 'Set-NetboxCredential', + 'Set-NetboxDCIMDevice', 'Set-NetboxDCIMFrontPort', + 'Set-NetboxDCIMInterface', 'Set-NetboxDCIMInterfaceConnection', + 'Set-NetboxDCIMRearPort', 'Set-NetboxDCIMVirtualDeviceContext', 'Set-NetboxHostName', 'Set-NetboxHostPort', 'Set-NetboxHostScheme', 'Set-NetboxInvokeParams', 'Set-NetboxIPAMAddress', 'Set-NetboxIPAMAddressRange', 'Set-NetboxIPAMPrefix', diff --git a/NetboxPS/NetboxPS.psm1 b/NetboxPS/NetboxPS.psm1 index f8e63e0..7954f0d 100644 --- a/NetboxPS/NetboxPS.psm1 +++ b/NetboxPS/NetboxPS.psm1 @@ -230,6 +230,47 @@ function Add-NetboxDCIMRearPort { #endregion +#region File Add-NetboxDCIMVirtualDeviceContext.ps1 + +function Add-NetboxDCIMVirtualDeviceContext { + [CmdletBinding()] + [OutputType([pscustomobject])] + param + ( + [Parameter(Mandatory = $true)] + [uint64]$Device, + + [Parameter(Mandatory = $true)] + [string]$Name, + + [object]$Status = 'active', + + [uint16]$Identifier, + + [uint64]$Primary_IP4, + + [uint64]$Primary_IP6, + + [uint64]$Tenant, + + [string]$Comments + ) + + if (-not $PSBoundParameters.ContainsKey('Status')) { + $PSBoundParameters['Status'] = $Status + } + + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts')) + + $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters + + $URI = BuildNewURI -Segments $URIComponents.Segments + + InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method POST +} + +#endregion + #region File Add-NetboxVirtualMachineInterface.ps1 @@ -2041,6 +2082,50 @@ function Get-NetboxDCIMSite { #endregion +#region File Get-NetboxDCIMVirtualDeviceContext.ps1 + +function Get-NetboxDCIMVirtualDeviceContext { + [CmdletBinding()] + [OutputType([pscustomobject])] + param + ( + [Parameter(ValueFromPipelineByPropertyName = $true)] + [uint64]$Id, + + [string]$Name, + + [object]$Status, + + [uint16]$Identifier, + + [string]$Device, + + [uint64]$Device_Id, + + [uint64]$Tenant_Id, + + [string]$Tenant, + + [uint16]$Limit, + + [uint16]$Offset, + + [switch]$Raw + ) + + process { + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts')) + + $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters + + $URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters + + InvokeNetboxRequest -URI $URI -Raw:$Raw + } +} + +#endregion + #region File Get-NetboxHostname.ps1 function Get-NetboxHostname { @@ -4871,6 +4956,45 @@ function Remove-NetboxDCIMSite { #endregion +#region File Remove-NetboxDCIMVirtualDeviceContext.ps1 + +function Remove-NetboxDCIMVirtualDeviceContext { + [CmdletBinding(ConfirmImpact = 'High', + SupportsShouldProcess = $true)] + param + ( + [Parameter(Mandatory = $true, + ValueFromPipelineByPropertyName = $true)] + [uint64[]]$Id, + + [switch]$Force + ) + + begin { + + } + + process { + foreach ($VirtualDeviceContextId in $Id) { + $CurrentVirtualDeviceContext = Get-NetboxDCIMVirtualDeviceContext -Id $VirtualDeviceContextId -ErrorAction Stop + + if ($Force -or $pscmdlet.ShouldProcess("Name: $($CurrentVirtualDeviceContext.Name) | ID: $($CurrentVirtualDeviceContext.Id)", "Remove")) { + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts', $CurrentVirtualDeviceContext.Id)) + + $URI = BuildNewURI -Segments $Segments + + InvokeNetboxRequest -URI $URI -Method DELETE + } + } + } + + end { + + } +} + +#endregion + #region File Remove-NetboxIPAMAddress.ps1 @@ -5767,6 +5891,56 @@ function Set-NetboxDCIMRearPort { #endregion +#region File Set-NetboxDCIMVirtualDeviceContext.ps1 + +function Set-NetboxDCIMVirtualDeviceContext { + [CmdletBinding(ConfirmImpact = 'Medium', + SupportsShouldProcess = $true)] + [OutputType([pscustomobject])] + param + ( + [Parameter(Mandatory = $true, + ValueFromPipelineByPropertyName = $true)] + [uint64[]]$Id, + + [string]$Name, + + [object]$Status, + + [uint16]$Identifier, + + [uint64]$Device, + + [uint64]$Primary_IP4, + + [uint64]$Primary_IP6, + + [uint64]$Tenant, + + [string]$Comments, + + [switch]$Force + ) + + process { + foreach ($VirtualDeviceContextId in $Id) { + $CurrentVirtualDeviceContext = Get-NetboxDCIMVirtualDeviceContext -Id $VirtualDeviceContextId -ErrorAction Stop + + $Segments = [System.Collections.ArrayList]::new(@('dcim', 'virtual-device-contexts', $CurrentVirtualDeviceContext.Id)) + + $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id' + + $URI = BuildNewURI -Segments $Segments + + if ($Force -or $pscmdlet.ShouldProcess("Virtual Device Context ID $($CurrentVirtualDeviceContext.Id)", "Set")) { + InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH + } + } + } +} + +#endregion + #region File Set-NetboxHostName.ps1 function Set-NetboxHostName {