NetboxPS/Functions/DCIM/Interfaces/Add-NetboxDCIMInterface.ps1

70 lines
3 KiB
PowerShell
Raw Normal View History

2022-12-06 13:34:52 -05:00

2020-03-23 12:18:01 -04:00
function Add-NetboxDCIMInterface {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true)]
v1.8.4 (#50) * Fixing Interface Type parameter (#42) * Fixing #41 * Update `deploy.ps1` to remove trailing whitespaces from psd1 * Increase version to 1.7.3 * Fix location of whitespace cleanup in `deploy.ps1` * Device port support (#44) * Fixing #41 * Correct for OTBS * Start work on Front and Rear ports * Revert "Start work on Front and Rear ports" This reverts commit 257709fe2af5af5fbe4496b2d5b68481d80bf101. * Fixing #41 * Add-NetboxDCIMRearPort function * Revert "Revert "Start work on Front and Rear ports"" This reverts commit 4f6625af2dd95a5797da0efcff40774095ad2e95. * Fix incorrect parameter variable types * Parameter type adjustments * Create function to get tag information * Added Mark_Connected parameter * Add Set-NetboxDCIMRearPort function * Added Remove-NetboxDCIMRearPort function * Added validate pattern for Color parameter * Added Add-NetboxDCIMFrontPort function * Fixed param list missing Force parameter * Added Set-NetboxDCIMFrontPort function * Added Remove-NetboxDCIMFrontPort function * Init. functions for cables and cable terminations * Reformatting using OTBS Also working on defining tags by slug as an extra parameter, which appears only in Add-NetboxDCIMRearPort currently * Remove Tags_Slug parameter In hindsight implementing would create extra work that could be hard to maintain. Can be easily achieved outside of the function. * Update psproj * Fix braces * Update Postman for Netbox v3.4.5 * Update vscode settings * Update version 1.8.0 * Update psproj * Update `uint16` to `uint64` where applicable for #49 * dev v1.8.1 * More `uint64` updates for #49 * `[uint64]` updates * Add IPAMAddressRange functions * Move limit/offset parameters to end of list * Update psproj with IPAMAddressRange files * Remove whitespaces * Update version to 1.8.3 * Add Set-NetboxIPAMAddressRange * Remove incorrect parameter * Update version to 1.8.4 --------- Co-authored-by: SheffSix <jbeck1867@gmail.com> Co-authored-by: James Beck <jim@beck81.co.uk>
2023-11-07 10:30:05 -05:00
[uint64]$Device,
2020-03-23 12:18:01 -04:00
[Parameter(Mandatory = $true)]
[string]$Name,
[ValidateSet('virtual', 'bridge', 'lag', '100base-tx', '1000base-t', '2.5gbase-t', '5gbase-t', '10gbase-t', '10gbase-cx4', '1000base-x-gbic', '1000base-x-sfp', '10gbase-x-sfpp', '10gbase-x-xfp', '10gbase-x-xenpak', '10gbase-x-x2', '25gbase-x-sfp28', '50gbase-x-sfp56', '40gbase-x-qsfpp', '50gbase-x-sfp28', '100gbase-x-cfp', '100gbase-x-cfp2', '200gbase-x-cfp2', '100gbase-x-cfp4', '100gbase-x-cpak', '100gbase-x-qsfp28', '200gbase-x-qsfp56', '400gbase-x-qsfpdd', '400gbase-x-osfp', '1000base-kx', '10gbase-kr', '10gbase-kx4', '25gbase-kr', '40gbase-kr4', '50gbase-kr', '100gbase-kp4', '100gbase-kr2', '100gbase-kr4', 'ieee802.11a', 'ieee802.11g', 'ieee802.11n', 'ieee802.11ac', 'ieee802.11ad', 'ieee802.11ax', 'ieee802.11ay', 'ieee802.15.1', 'other-wireless', 'gsm', 'cdma', 'lte', 'sonet-oc3', 'sonet-oc12', 'sonet-oc48', 'sonet-oc192', 'sonet-oc768', 'sonet-oc1920', 'sonet-oc3840', '1gfc-sfp', '2gfc-sfp', '4gfc-sfp', '8gfc-sfpp', '16gfc-sfpp', '32gfc-sfp28', '64gfc-qsfpp', '128gfc-qsfp28', 'infiniband-sdr', 'infiniband-ddr', 'infiniband-qdr', 'infiniband-fdr10', 'infiniband-fdr', 'infiniband-edr', 'infiniband-hdr', 'infiniband-ndr', 'infiniband-xdr', 't1', 'e1', 't3', 'e3', 'xdsl', 'docsis', 'gpon', 'xg-pon', 'xgs-pon', 'ng-pon2', 'epon', '10g-epon', 'cisco-stackwise', 'cisco-stackwise-plus', 'cisco-flexstack', 'cisco-flexstack-plus', 'cisco-stackwise-80', 'cisco-stackwise-160', 'cisco-stackwise-320', 'cisco-stackwise-480', 'juniper-vcp', 'extreme-summitstack', 'extreme-summitstack-128', 'extreme-summitstack-256', 'extreme-summitstack-512', 'other', IgnoreCase = $true)]
[string]$Type,
2020-03-23 12:18:01 -04:00
[bool]$Enabled,
2020-03-23 12:18:01 -04:00
[object]$Form_Factor,
2020-03-23 12:18:01 -04:00
[uint16]$MTU,
2020-03-23 12:18:01 -04:00
[string]$MAC_Address,
2020-03-23 12:18:01 -04:00
[bool]$MGMT_Only,
v1.8.4 (#50) * Fixing Interface Type parameter (#42) * Fixing #41 * Update `deploy.ps1` to remove trailing whitespaces from psd1 * Increase version to 1.7.3 * Fix location of whitespace cleanup in `deploy.ps1` * Device port support (#44) * Fixing #41 * Correct for OTBS * Start work on Front and Rear ports * Revert "Start work on Front and Rear ports" This reverts commit 257709fe2af5af5fbe4496b2d5b68481d80bf101. * Fixing #41 * Add-NetboxDCIMRearPort function * Revert "Revert "Start work on Front and Rear ports"" This reverts commit 4f6625af2dd95a5797da0efcff40774095ad2e95. * Fix incorrect parameter variable types * Parameter type adjustments * Create function to get tag information * Added Mark_Connected parameter * Add Set-NetboxDCIMRearPort function * Added Remove-NetboxDCIMRearPort function * Added validate pattern for Color parameter * Added Add-NetboxDCIMFrontPort function * Fixed param list missing Force parameter * Added Set-NetboxDCIMFrontPort function * Added Remove-NetboxDCIMFrontPort function * Init. functions for cables and cable terminations * Reformatting using OTBS Also working on defining tags by slug as an extra parameter, which appears only in Add-NetboxDCIMRearPort currently * Remove Tags_Slug parameter In hindsight implementing would create extra work that could be hard to maintain. Can be easily achieved outside of the function. * Update psproj * Fix braces * Update Postman for Netbox v3.4.5 * Update vscode settings * Update version 1.8.0 * Update psproj * Update `uint16` to `uint64` where applicable for #49 * dev v1.8.1 * More `uint64` updates for #49 * `[uint64]` updates * Add IPAMAddressRange functions * Move limit/offset parameters to end of list * Update psproj with IPAMAddressRange files * Remove whitespaces * Update version to 1.8.3 * Add Set-NetboxIPAMAddressRange * Remove incorrect parameter * Update version to 1.8.4 --------- Co-authored-by: SheffSix <jbeck1867@gmail.com> Co-authored-by: James Beck <jim@beck81.co.uk>
2023-11-07 10:30:05 -05:00
[uint64]$LAG,
2020-03-23 12:18:01 -04:00
[string]$Description,
2020-03-23 12:18:01 -04:00
[ValidateSet('Access', 'Tagged', 'Tagged All', '100', '200', '300', IgnoreCase = $true)]
[string]$Mode,
2020-03-23 12:18:01 -04:00
[ValidateRange(1, 4094)]
[uint16]$Untagged_VLAN,
2020-03-23 12:18:01 -04:00
[ValidateRange(1, 4094)]
[uint16[]]$Tagged_VLANs
)
2020-03-23 12:18:01 -04:00
if (-not [System.String]::IsNullOrWhiteSpace($Mode)) {
$PSBoundParameters.Mode = switch ($Mode) {
'Access' {
100
break
}
2020-03-23 12:18:01 -04:00
'Tagged' {
200
break
}
2020-03-23 12:18:01 -04:00
'Tagged All' {
300
break
}
2020-03-23 12:18:01 -04:00
default {
$_
}
}
}
2020-03-23 12:18:01 -04:00
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'interfaces'))
2020-03-23 12:18:01 -04:00
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
2020-03-23 12:18:01 -04:00
$URI = BuildNewURI -Segments $URIComponents.Segments
2020-03-23 12:18:01 -04:00
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method POST
}